mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-15 09:04:04 +02:00
2f14832c34
* Add `escape` to go back from Dropbox Login screen * Add .vscode/ to .gitignore * Remove call to enexXmlToMd * The 2 enex importers have distinct functionality! * Add tmp #deleteAllNotebooks * checkbox state still not persisting * images now fixed, but checkboxes still broken * Figured out that #ipcProxySendToHost is important for handling checkbox * cleanup closing br and en-todo tags + add notes * Handle en-media, add NOTEs & TODOs, & format html * Clean up some of the logging * cleanHtml is a nice beautifier, but callback hell ensues... * Rm #htmlFormat * Recreating the xml actually seems to work * Add test (not functional rn) * Add test for checkboxes * Add test for image en-media * Separate tests into 2 function calls * Clean up test * Add `en-media-audio` test * Add bad resource test * Misc cleanup * Rm SlateEditor files * Misc cleanup * Remove #deleteAllNotebooks button * Add names to tests * Extract resourceUtils * Rm DropboxLoginScreen esc behavior, part of another PR * Misc cleanup * Improve audioElement, add attachment import support * Misc cleanup * Add svg test for enex_to_html * Clean up test * Set markup_language to MARKUP_LANGUAGE_HTML to tell renderer that the content is only HTML * Rename to newModuleByFormat_ for clarity * Add comment to clarify newModuleFromPath_
85 lines
1.9 KiB
JavaScript
85 lines
1.9 KiB
JavaScript
const imageMimeTypes = [
|
|
'image/cgm',
|
|
'image/fits',
|
|
'image/g3fax',
|
|
'image/gif',
|
|
'image/ief',
|
|
'image/jp2',
|
|
'image/jpeg',
|
|
'image/jpm',
|
|
'image/jpx',
|
|
'image/naplps',
|
|
'image/png',
|
|
'image/prs.btif',
|
|
'image/prs.pti',
|
|
'image/t38',
|
|
'image/tiff',
|
|
'image/tiff-fx',
|
|
'image/vnd.adobe.photoshop',
|
|
'image/vnd.cns.inf2',
|
|
'image/vnd.djvu',
|
|
'image/vnd.dwg',
|
|
'image/vnd.dxf',
|
|
'image/vnd.fastbidsheet',
|
|
'image/vnd.fpx',
|
|
'image/vnd.fst',
|
|
'image/vnd.fujixerox.edmics-mmr',
|
|
'image/vnd.fujixerox.edmics-rlc',
|
|
'image/vnd.globalgraphics.pgb',
|
|
'image/vnd.microsoft.icon',
|
|
'image/vnd.mix',
|
|
'image/vnd.ms-modi',
|
|
'image/vnd.net-fpx',
|
|
'image/vnd.sealed.png',
|
|
'image/vnd.sealedmedia.softseal.gif',
|
|
'image/vnd.sealedmedia.softseal.jpg',
|
|
'image/vnd.svf',
|
|
'image/vnd.wap.wbmp',
|
|
'image/vnd.xiff',
|
|
];
|
|
|
|
const escapeQuotes = (str) => str.replace(/"/g, '"');
|
|
|
|
const attributesToStr = (attributes) =>
|
|
Object.entries(attributes)
|
|
.map(([key, value]) => ` ${key}="${escapeQuotes(value)}"`)
|
|
.join('');
|
|
|
|
const ipcProxySendToHost = (id) =>
|
|
`onclick="ipcProxySendToHost('joplin://${id}'); return false;"`;
|
|
|
|
const attachmentElement = ({src, attributes, id}) =>
|
|
[
|
|
`<a href='#' ${attributesToStr(attributes)} ${ipcProxySendToHost(id)}>`,
|
|
` ${attributes.alt || src}`,
|
|
'</a>',
|
|
].join('');
|
|
|
|
const imgElement = ({src, attributes}) =>
|
|
`<img src="${src}" ${attributesToStr(attributes)} />`;
|
|
|
|
const audioElement = ({src, alt, id}) =>
|
|
[
|
|
'<audio controls preload="none" style="width:480px;">',
|
|
` <source src="${src}" type="audio/mp4" />`,
|
|
' <p>',
|
|
' Your browser does not support HTML5 audio.',
|
|
' </p>',
|
|
'</audio>',
|
|
'<p>',
|
|
` <a href="${src}" ${ipcProxySendToHost(id)}>`,
|
|
` ${alt || src || id || 'Download audio'}`,
|
|
' </a>',
|
|
'</p>',
|
|
].join('');
|
|
|
|
const resourceUtils = {
|
|
imgElement,
|
|
audioElement,
|
|
attachmentElement,
|
|
attributesToStr,
|
|
isImageMimeType: (m) => imageMimeTypes.indexOf(m) >= 0,
|
|
};
|
|
|
|
module.exports = resourceUtils;
|