From 3c56325fa6bf82f17c920e2d13a76e7289b56df7 Mon Sep 17 00:00:00 2001 From: Ammar Ahmed Date: Fri, 17 Nov 2023 14:20:06 +0500 Subject: [PATCH] mobile: fix image download --- apps/mobile/app/screens/editor/index.tsx | 2 +- .../app/screens/editor/tiptap/commands.ts | 30 +- .../app/screens/editor/tiptap/picker.js | 19 +- packages/editor-mobile/package-lock.json | 302 +++++++++++++----- packages/editor-mobile/package.json | 1 + .../editor-mobile/src/components/editor.tsx | 3 + packages/editor-mobile/src/index.tsx | 2 +- packages/editor-mobile/src/utils/index.ts | 1 + 8 files changed, 262 insertions(+), 98 deletions(-) diff --git a/apps/mobile/app/screens/editor/index.tsx b/apps/mobile/app/screens/editor/index.tsx index 766a3305e..621067a2b 100755 --- a/apps/mobile/app/screens/editor/index.tsx +++ b/apps/mobile/app/screens/editor/index.tsx @@ -115,7 +115,7 @@ const Editor = React.memo( } else { editor.commands.updateImage({ hash: hash, - src: src + dataurl: src }); } }, diff --git a/apps/mobile/app/screens/editor/tiptap/commands.ts b/apps/mobile/app/screens/editor/tiptap/commands.ts index 5eb97def9..60b051c91 100644 --- a/apps/mobile/app/screens/editor/tiptap/commands.ts +++ b/apps/mobile/app/screens/editor/tiptap/commands.ts @@ -211,9 +211,20 @@ typeof globalThis.statusBar !== "undefined" && statusBar.current.set({date:"",sa ); }; - insertImage = async (image: ImageAttributes) => { + insertImage = async ( + image: Omit & { + dataurl: string; + } + ) => { await this.doAsync( - `editor && editor.commands.insertImage(${JSON.stringify(image)})` + `const image = toBlobURL("${image.dataurl}", "${image.hash}"); + editor && editor.commands.insertImage({ + ...${JSON.stringify({ + ...image, + dataurl: undefined + })}, + bloburl: image + })` ); }; @@ -225,11 +236,20 @@ typeof globalThis.statusBar !== "undefined" && statusBar.current.set({date:"",sa ); }; - updateImage = async ({ src, hash }: Partial) => { + updateImage = async ({ + hash, + dataurl + }: Partial> & { + dataurl: string; + }) => { await this.doAsync( - `editor && editor.commands.updateImage(${JSON.stringify({ + `const image = toBlobURL("${dataurl}", "${hash}"); + editor && editor.commands.updateImage(${JSON.stringify({ hash - })},${JSON.stringify({ dataurl: src, hash, preventUpdate: true })})` + })}, { + ...${JSON.stringify({ hash, preventUpdate: true })}, + bloburl: image + })` ); }; diff --git a/apps/mobile/app/screens/editor/tiptap/picker.js b/apps/mobile/app/screens/editor/tiptap/picker.js index ba8b987a9..07f1e2302 100644 --- a/apps/mobile/app/screens/editor/tiptap/picker.js +++ b/apps/mobile/app/screens/editor/tiptap/picker.js @@ -230,6 +230,16 @@ const handleImageResponse = async (response, options) => { }); let fileName = image.originalFileName || image.fileName; + + editorController.current?.commands.insertImage({ + hash: hash, + mime: image.type, + title: fileName, + dataurl: b64, + size: image.fileSize, + filename: fileName + }); + if (!(await attachFile(uri, hash, image.type, fileName, options))) return; const isPng = /(png)/g.test(image.type); const isJpeg = /(jpeg|jpg)/g.test(image.type); @@ -243,15 +253,6 @@ const handleImageResponse = async (response, options) => { } if (Platform.OS === "ios") await RNFetchBlob.fs.unlink(uri); - - editorController.current?.commands.insertImage({ - hash: hash, - mime: image.type, - title: fileName, - dataurl: b64, - size: image.fileSize, - filename: fileName - }); }; export async function attachFile(uri, hash, type, filename, options) { diff --git a/packages/editor-mobile/package-lock.json b/packages/editor-mobile/package-lock.json index 59a0f4cd6..55333d517 100644 --- a/packages/editor-mobile/package-lock.json +++ b/packages/editor-mobile/package-lock.json @@ -14,6 +14,7 @@ "@mdi/react": "^1.6.0", "@notesnook/editor": "file:../editor", "@notesnook/theme": "file:../theme", + "buffer": "^6.0.3", "framer-motion": "^6.5.1", "mdi-react": "9.1.0", "react": "^17.0.2", @@ -50,28 +51,28 @@ "@social-embed/lib": "^0.0.2-next.1", "@theme-ui/components": ">=0.14.0", "@theme-ui/core": ">=0.14.0", - "@tiptap/core": "2.1.7", - "@tiptap/extension-character-count": "2.1.7", - "@tiptap/extension-color": "2.1.7", - "@tiptap/extension-font-family": "2.1.7", - "@tiptap/extension-history": "2.1.7", - "@tiptap/extension-horizontal-rule": "2.1.7", - "@tiptap/extension-link": "2.1.7", - "@tiptap/extension-list-keymap": "2.1.7", - "@tiptap/extension-placeholder": "2.1.7", - "@tiptap/extension-subscript": "2.1.7", - "@tiptap/extension-superscript": "2.1.7", - "@tiptap/extension-table": "2.1.7", - "@tiptap/extension-table-cell": "2.1.7", - "@tiptap/extension-table-header": "2.1.7", - "@tiptap/extension-table-row": "2.1.7", - "@tiptap/extension-task-item": "2.1.7", - "@tiptap/extension-task-list": "2.1.7", - "@tiptap/extension-text-align": "2.1.7", - "@tiptap/extension-text-style": "2.1.7", - "@tiptap/extension-underline": "2.1.7", - "@tiptap/pm": "2.1.7", - "@tiptap/starter-kit": "2.1.7", + "@tiptap/core": "2.1.12", + "@tiptap/extension-character-count": "2.1.12", + "@tiptap/extension-color": "2.1.12", + "@tiptap/extension-font-family": "2.1.12", + "@tiptap/extension-history": "2.1.12", + "@tiptap/extension-horizontal-rule": "2.1.12", + "@tiptap/extension-link": "2.1.12", + "@tiptap/extension-list-keymap": "2.1.12", + "@tiptap/extension-placeholder": "2.1.12", + "@tiptap/extension-subscript": "2.1.12", + "@tiptap/extension-superscript": "2.1.12", + "@tiptap/extension-table": "2.1.12", + "@tiptap/extension-table-cell": "2.1.12", + "@tiptap/extension-table-header": "2.1.12", + "@tiptap/extension-table-row": "2.1.12", + "@tiptap/extension-task-item": "2.1.12", + "@tiptap/extension-task-list": "2.1.12", + "@tiptap/extension-text-align": "2.1.12", + "@tiptap/extension-text-style": "2.1.12", + "@tiptap/extension-underline": "2.1.12", + "@tiptap/pm": "2.1.12", + "@tiptap/starter-kit": "2.1.12", "clipboard-polyfill": "4.0.0", "detect-indent": "^7.0.0", "entities": "^4.5.0", @@ -79,7 +80,7 @@ "nanoid": "^4.0.1", "prism-themes": "^1.9.0", "prosemirror-codemark": "^0.4.2", - "prosemirror-view": "^1.31.7", + "prosemirror-view": "1.32.2", "re-resizable": "^6.9.9", "react-colorful": "^5.5.1", "react-modal": "3.13.1", @@ -5931,6 +5932,25 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -6119,6 +6139,29 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -10120,6 +10163,25 @@ "node": ">=4" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -17872,6 +17934,20 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -20620,13 +20696,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", - "dev": true + "dev": true, + "requires": {} }, "@csstools/selector-specificity": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz", "integrity": "sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==", - "dev": true + "dev": true, + "requires": {} }, "@emotion/babel-plugin": { "version": "11.11.0", @@ -20744,7 +20822,8 @@ "@emotion/use-insertion-effect-with-fallbacks": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==" + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "requires": {} }, "@emotion/utils": { "version": "1.2.1", @@ -21638,28 +21717,28 @@ "@social-embed/lib": "^0.0.2-next.1", "@theme-ui/components": ">=0.14.0", "@theme-ui/core": ">=0.14.0", - "@tiptap/core": "2.1.7", - "@tiptap/extension-character-count": "2.1.7", - "@tiptap/extension-color": "2.1.7", - "@tiptap/extension-font-family": "2.1.7", - "@tiptap/extension-history": "2.1.7", - "@tiptap/extension-horizontal-rule": "2.1.7", - "@tiptap/extension-link": "2.1.7", - "@tiptap/extension-list-keymap": "2.1.7", - "@tiptap/extension-placeholder": "2.1.7", - "@tiptap/extension-subscript": "2.1.7", - "@tiptap/extension-superscript": "2.1.7", - "@tiptap/extension-table": "2.1.7", - "@tiptap/extension-table-cell": "2.1.7", - "@tiptap/extension-table-header": "2.1.7", - "@tiptap/extension-table-row": "2.1.7", - "@tiptap/extension-task-item": "2.1.7", - "@tiptap/extension-task-list": "2.1.7", - "@tiptap/extension-text-align": "2.1.7", - "@tiptap/extension-text-style": "2.1.7", - "@tiptap/extension-underline": "2.1.7", - "@tiptap/pm": "2.1.7", - "@tiptap/starter-kit": "2.1.7", + "@tiptap/core": "2.1.12", + "@tiptap/extension-character-count": "2.1.12", + "@tiptap/extension-color": "2.1.12", + "@tiptap/extension-font-family": "2.1.12", + "@tiptap/extension-history": "2.1.12", + "@tiptap/extension-horizontal-rule": "2.1.12", + "@tiptap/extension-link": "2.1.12", + "@tiptap/extension-list-keymap": "2.1.12", + "@tiptap/extension-placeholder": "2.1.12", + "@tiptap/extension-subscript": "2.1.12", + "@tiptap/extension-superscript": "2.1.12", + "@tiptap/extension-table": "2.1.12", + "@tiptap/extension-table-cell": "2.1.12", + "@tiptap/extension-table-header": "2.1.12", + "@tiptap/extension-table-row": "2.1.12", + "@tiptap/extension-task-item": "2.1.12", + "@tiptap/extension-task-list": "2.1.12", + "@tiptap/extension-text-align": "2.1.12", + "@tiptap/extension-text-style": "2.1.12", + "@tiptap/extension-underline": "2.1.12", + "@tiptap/pm": "2.1.12", + "@tiptap/starter-kit": "2.1.12", "@types/katex": "^0.14.0", "@types/prismjs": "^1.26.0", "@types/react": "17.0.2", @@ -21678,7 +21757,7 @@ "prism-themes": "^1.9.0", "prosemirror-codemark": "^0.4.2", "prosemirror-test-builder": "^1.1.0", - "prosemirror-view": "^1.31.7", + "prosemirror-view": "1.32.2", "re-resizable": "^6.9.9", "react": "17.0.2", "react-colorful": "^5.5.1", @@ -22859,13 +22938,15 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true + "dev": true, + "requires": {} }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "acorn-node": { "version": "1.8.2", @@ -23226,7 +23307,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "json-schema-traverse": { "version": "0.4.1", @@ -23295,7 +23377,8 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", - "dev": true + "dev": true, + "requires": {} }, "babel-plugin-polyfill-corejs2": { "version": "0.3.3", @@ -23401,6 +23484,11 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -23553,6 +23641,15 @@ "node-int64": "^0.4.0" } }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -24017,7 +24114,8 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", - "dev": true + "dev": true, + "requires": {} }, "css-has-pseudo": { "version": "3.0.4", @@ -24117,7 +24215,8 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true + "dev": true, + "requires": {} }, "css-select": { "version": "4.3.0", @@ -24232,7 +24331,8 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true + "dev": true, + "requires": {} }, "csso": { "version": "4.2.0", @@ -25280,7 +25380,8 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true + "dev": true, + "requires": {} }, "eslint-plugin-testing-library": { "version": "5.10.2", @@ -25894,7 +25995,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "chalk": { "version": "4.1.2", @@ -26535,7 +26637,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "requires": {} }, "idb": { "version": "7.1.1", @@ -26552,6 +26655,11 @@ "harmony-reflect": "^1.4.6" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -27874,7 +27982,8 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true + "dev": true, + "requires": {} }, "jest-regex-util": { "version": "27.5.1", @@ -28971,7 +29080,8 @@ "mdi-react": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/mdi-react/-/mdi-react-9.1.0.tgz", - "integrity": "sha512-QFY9BkhX5MaEFpq+0ZGbM7S0iOGkgPb3RLRyzHJIxo8LT8jGu8VY0M+3tfXAaRgYN83t7ksA7D8kuFTt8d/oag==" + "integrity": "sha512-QFY9BkhX5MaEFpq+0ZGbM7S0iOGkgPb3RLRyzHJIxo8LT8jGu8VY0M+3tfXAaRgYN83t7ksA7D8kuFTt8d/oag==", + "requires": {} }, "mdn-data": { "version": "2.0.4", @@ -29686,7 +29796,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-calc": { "version": "8.2.4", @@ -29796,25 +29907,29 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-double-position-gradients": { "version": "3.1.2", @@ -29839,7 +29954,8 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-focus-visible": { "version": "6.0.4", @@ -29863,13 +29979,15 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true + "dev": true, + "requires": {} }, "postcss-gap-properties": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-image-set-function": { "version": "4.0.7", @@ -29895,7 +30013,8 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-js": { "version": "4.0.1", @@ -29967,13 +30086,15 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true + "dev": true, + "requires": {} }, "postcss-media-minmax": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-merge-longhand": { "version": "5.1.7", @@ -30041,7 +30162,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -30106,7 +30228,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -30186,7 +30309,8 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", - "dev": true + "dev": true, + "requires": {} }, "postcss-ordered-values": { "version": "5.1.3", @@ -30211,7 +30335,8 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-place": { "version": "7.0.5", @@ -30311,7 +30436,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-selector-not": { "version": "6.0.1", @@ -31258,7 +31384,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "json-schema-traverse": { "version": "0.4.1", @@ -31733,7 +31860,8 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true + "dev": true, + "requires": {} }, "style-value-types": { "version": "5.0.0", @@ -32216,6 +32344,13 @@ "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "peer": true + }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -32595,7 +32730,8 @@ "version": "8.12.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -33064,7 +33200,8 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true + "dev": true, + "requires": {} }, "xml-name-validator": { "version": "3.0.0", @@ -33131,7 +33268,8 @@ "zustand": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", - "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==" + "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", + "requires": {} } } } diff --git a/packages/editor-mobile/package.json b/packages/editor-mobile/package.json index f5d4d22aa..ada6a6ee0 100644 --- a/packages/editor-mobile/package.json +++ b/packages/editor-mobile/package.json @@ -8,6 +8,7 @@ "@mdi/react": "^1.6.0", "@notesnook/editor": "file:../editor", "@notesnook/theme": "file:../theme", + "buffer": "^6.0.3", "framer-motion": "^6.5.1", "mdi-react": "9.1.0", "react": "^17.0.2", diff --git a/packages/editor-mobile/src/components/editor.tsx b/packages/editor-mobile/src/components/editor.tsx index 0f0349654..ffe3fb5a3 100644 --- a/packages/editor-mobile/src/components/editor.tsx +++ b/packages/editor-mobile/src/components/editor.tsx @@ -42,6 +42,9 @@ import Header from "./header"; import StatusBar from "./statusbar"; import Tags from "./tags"; import Title from "./title"; +import { toBlobURL } from "@notesnook/editor/dist/utils/downloader"; + +globalThis.toBlobURL = toBlobURL; const Tiptap = ({ settings }: { settings: Settings }) => { const [tick, setTick] = useState(0); diff --git a/packages/editor-mobile/src/index.tsx b/packages/editor-mobile/src/index.tsx index 5673a034c..f22dfdbe3 100644 --- a/packages/editor-mobile/src/index.tsx +++ b/packages/editor-mobile/src/index.tsx @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ - +global.Buffer = require("buffer").Buffer; import React from "react"; import ReactDOM from "react-dom"; import "./index.css"; diff --git a/packages/editor-mobile/src/utils/index.ts b/packages/editor-mobile/src/utils/index.ts index b8a3e98f1..577d56be4 100644 --- a/packages/editor-mobile/src/utils/index.ts +++ b/packages/editor-mobile/src/utils/index.ts @@ -62,6 +62,7 @@ declare global { var readonly: boolean; var noToolbar: boolean; var noHeader: boolean; + function toBlobURL(dataurl: string, id?: string): string | undefined; /** * Id of current session */