rescrap


script.js

              const projects = new Promise((resolve, reject) => {
   fetch('https://scrapbox.io/api/projects')
     .then(response => response.json())
     .then(json => json.projects)
     .then(resolve)
     .catch(reject)
 })
 
 const rescrap = project => {
   const { title, lines } = scrapbox.Page
   const body = lines.reduce((acc, { text }) => `${acc}\n${text}`, '').trim() + `\n\nfrom [/${scrapbox.Project.name}/${title}]\n`
   const link = `https://scrapbox.io/${encodeURIComponent(project)}/new?body=${encodeURIComponent(body)}`
   console.log(body)
   window.open(link, '_blank', 'noopener')
 }
 
 const rescrapProjectFilterInput = document.createElement('input')
 rescrapProjectFilterInput.type = 'text'
 rescrapProjectFilterInput.id = 'rescrap-filtering-input'
 rescrapProjectFilterInput.addEventListener('input', async e => {
   scrapbox.PageMenu('re-scrap').removeAllItems()
   const query = rescrapProjectFilterInput.value.toLowerCase()
 	for (const { name, displayName } of await projects) {
     if (!name.toLowerCase().includes(query) && !displayName.toLowerCase().includes(query)) continue
     scrapbox.PageMenu('re-scrap').addItem({
       title: displayName,
       onClick: () => { rescrap(name) }
     })
   }
 })
 
 scrapbox.PageMenu.addMenu({
   title: 're-scrap',
   image: 'https://gyazo.com/024fe39c0328fabb99566c6ad743ee54/raw',
   onClick: async () => {
     scrapbox.PageMenu('re-scrap').addItem({ title: 'Now loading...', onClick: () => null })
     await projects
     scrapbox.PageMenu('re-scrap').removeAllItems()
     for (const { name, displayName } of await projects) {
       scrapbox.PageMenu('re-scrap').addItem({
         title: displayName,
         onClick: () => { rescrap(name) }
       })
     }
     const ul = document.querySelector('ul[aria-labelledby="re-scrap"].dropdown-menu')
     rescrapProjectFilterInput.value = ''
     ul.prepend(rescrapProjectFilterInput)
     rescrapProjectFilterInput.focus()
   }
 })
            

style.css

              ul[aria-labelledby="re-scrap"].dropdown-menu>li>a {
	width: 300px;
    text-overflow: ellipsis;
    display: list-item;
}