diff --git a/.eslintignore b/.eslintignore index e5d7d94093..69e2292fe7 100644 --- a/.eslintignore +++ b/.eslintignore @@ -48,8 +48,10 @@ Server/node_modules/ ElectronClient/app/packageInfo.js ReactNativeClient/pluginAssets/ ReactNativeClient/lib/joplin-renderer/vendor/fountain.min.js +ReactNativeClient/lib/joplin-renderer/assets/ # Ignore files generated from TypeScript files ElectronClient/app/gui/ShareNoteDialog.js ReactNativeClient/lib/JoplinServerApi.js ReactNativeClient/PluginAssetsLoader.js +ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/mermaid.js diff --git a/.gitignore b/.gitignore index 04d887ab6e..67cc93934e 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ Tools/commit_hook.txt ElectronClient/app/gui/ShareNoteDialog.js ReactNativeClient/lib/JoplinServerApi.js ReactNativeClient/PluginAssetsLoader.js +ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/mermaid.js diff --git a/ElectronClient/app/gui/NoteRevisionViewer.jsx b/ElectronClient/app/gui/NoteRevisionViewer.jsx index b02d76f2a3..43f676b6ca 100644 --- a/ElectronClient/app/gui/NoteRevisionViewer.jsx +++ b/ElectronClient/app/gui/NoteRevisionViewer.jsx @@ -12,7 +12,7 @@ const urlUtils = require('lib/urlUtils'); const Setting = require('lib/models/Setting'); const RevisionService = require('lib/services/RevisionService'); const shared = require('lib/components/shared/note-screen-shared.js'); -const { MarkupToHtml, assetsToHeaders } = require('lib/joplin-renderer'); +const { MarkupToHtml } = require('lib/joplin-renderer'); const { time } = require('lib/time-utils.js'); const ReactTooltip = require('react-tooltip'); const { urlDecode, substrWithEllipsis } = require('lib/string-utils'); @@ -132,7 +132,6 @@ class NoteRevisionViewerComponent extends React.PureComponent { this.viewerRef_.current.wrappedInstance.send('setHtml', result.html, { cssFiles: result.cssFiles, pluginAssets: result.pluginAssets, - pluginAssetsHeaders: assetsToHeaders(result.pluginAssets), }); } diff --git a/ElectronClient/app/gui/NoteText.jsx b/ElectronClient/app/gui/NoteText.jsx index 717fa9bc4a..79cdd6d5bb 100644 --- a/ElectronClient/app/gui/NoteText.jsx +++ b/ElectronClient/app/gui/NoteText.jsx @@ -16,7 +16,7 @@ const TagList = require('./TagList.min.js'); const { connect } = require('react-redux'); const { _ } = require('lib/locale.js'); const { reg } = require('lib/registry.js'); -const { MarkupToHtml, assetsToHeaders } = require('lib/joplin-renderer'); +const { MarkupToHtml } = require('lib/joplin-renderer'); const shared = require('lib/components/shared/note-screen-shared.js'); const { bridge } = require('electron').remote.require('./bridge'); const { themeStyle } = require('../theme.js'); @@ -2030,7 +2030,6 @@ class NoteTextComponent extends React.Component { if (htmlHasChanged) { let options = { pluginAssets: this.state.lastRenderPluginAssets, - pluginAssetsHeaders: assetsToHeaders(this.state.lastRenderPluginAssets), downloadResources: Setting.value('sync.resourceDownloadMode'), }; this.webviewRef_.current.wrappedInstance.send('setHtml', html, options); diff --git a/ElectronClient/app/gui/note-viewer/index.html b/ElectronClient/app/gui/note-viewer/index.html index 2968b26869..62c065e3d2 100644 --- a/ElectronClient/app/gui/note-viewer/index.html +++ b/ElectronClient/app/gui/note-viewer/index.html @@ -37,7 +37,7 @@
- + @@ -101,13 +101,24 @@ function addPluginAssets(assets) { if (!assets) return; + const pluginAssetsContainer = document.getElementById('joplin-container-pluginAssetsContainer'); + for (let name in assets) { if (pluginAssetsAdded_[name]) continue; pluginAssetsAdded_[name] = true; - const pluginAssetsContainer = document.createElement('div'); - pluginAssetsContainer.innerHTML = assets[name]; - document.getElementById('joplin-container-styleContainer').appendChild(pluginAssetsContainer); + const asset = assets[name]; + + if (asset.mime === 'application/javascript') { + const script = document.createElement('script'); + script.src = asset.path; + pluginAssetsContainer.appendChild(script); + } else if (asset.mime === 'text/css') { + const link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = asset.path; + pluginAssetsContainer.appendChild(link); + } } } @@ -160,11 +171,13 @@ }, 1); } - addPluginAssets(event.options.pluginAssetsHeaders); + addPluginAssets(event.options.pluginAssets); if (event.options.downloadResources === 'manual') { webviewLib.setupResourceManualDownload(); } + + document.dispatchEvent(new Event('joplin-noteDidUpdate')); } let lastScrollEventTime = 0; @@ -373,6 +386,5 @@ throw error; } -