diff --git a/.dockerignore b/.dockerignore index 786c22ff9..a4e242a99 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,7 +5,6 @@ .prettier* electron* entitlements.plist -forge.config.cjs nodemon.json renovate.json trilium.iml @@ -34,4 +33,10 @@ npm-debug.log # exceptions -!/bin/copy-dist.ts \ No newline at end of file +!/bin/copy-dist.ts + +# temporary exception to make copy-dist inside Docker build not fail +# TriliumNextTODO: make copy-dist *not* requiring to copy this file for builds other than electron-forge +!forge.config.cjs +!/bin/tpl +!/bin/electron-forge/desktop.ejs \ No newline at end of file diff --git a/.github/actions/build-electron/action.yml b/.github/actions/build-electron/action.yml index b5a140efc..51b022bed 100644 --- a/.github/actions/build-electron/action.yml +++ b/.github/actions/build-electron/action.yml @@ -97,7 +97,7 @@ runs: shell: bash run: | echo "Signing DMG file..." - dmg_file=$(find out -name "*.dmg" -print -quit) + dmg_file=$(find ./dist -name "*.dmg" -print -quit) if [ -n "$dmg_file" ]; then echo "Found DMG: $dmg_file" # Get the first valid signing identity from the keychain @@ -125,7 +125,7 @@ runs: # First check the .app bundle echo "Looking for .app bundle..." - app_bundle=$(find out -name "*.app" -print -quit) + app_bundle=$(find ./dist -name "*.app" -print -quit) if [ -n "$app_bundle" ]; then echo "Found app bundle: $app_bundle" echo "Verifying app bundle signing..." @@ -144,7 +144,7 @@ runs: # Then check DMG if it exists echo "Looking for DMG..." - dmg_file=$(find out -name "*.dmg" -print -quit) + dmg_file=$(find ./dist -name "*.dmg" -print -quit) if [ -n "$dmg_file" ]; then echo "Found DMG: $dmg_file" echo "Verifying DMG signing..." @@ -160,7 +160,7 @@ runs: # Finally check ZIP if it exists echo "Looking for ZIP..." - zip_file=$(find out -name "*.zip" -print -quit) + zip_file=$(find ./dist -name "*.zip" -print -quit) if [ -n "$zip_file" ]; then echo "Found ZIP: $zip_file" echo "Note: ZIP files are not code signed, but their contents should be" @@ -177,7 +177,7 @@ runs: # Look for DMG files recursively echo "Looking for DMG files..." - dmg_file=$(find out -name "*.dmg" -print -quit) + dmg_file=$(find ./dist -name "*.dmg" -print -quit) if [ -n "$dmg_file" ]; then echo "Found DMG: $dmg_file" cp "$dmg_file" "upload/TriliumNextNotes-${{ github.ref_name }}-macos-${{ inputs.arch }}.dmg" @@ -187,7 +187,7 @@ runs: # Look for ZIP files recursively echo "Looking for ZIP files..." - zip_file=$(find out -name "*.zip" -print -quit) + zip_file=$(find ./dist -name "*.zip" -print -quit) if [ -n "$zip_file" ]; then echo "Found ZIP: $zip_file" cp "$zip_file" "upload/TriliumNextNotes-${{ github.ref_name }}-macos-${{ inputs.arch }}.zip" @@ -199,7 +199,7 @@ runs: echo "Collecting artifacts for ${{ inputs.os }}..." for ext in ${{ inputs.extension }}; do echo "Looking for .$ext files..." - file=$(find out -name "*.$ext" -print -quit) + file=$(find ./dist -name "*.$ext" -print -quit) if [ -n "$file" ]; then echo "Found $file for extension $ext" cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}.$ext" diff --git a/bin/copy-dist.ts b/bin/copy-dist.ts index 03b0c751b..3b09fec27 100644 --- a/bin/copy-dist.ts +++ b/bin/copy-dist.ts @@ -30,6 +30,9 @@ try { "./package.json", "./LICENSE", "./README.md", + "./forge.config.cjs", + "./bin/tpl/", + "./bin/electron-forge/desktop.ejs", "./src/views/", "./src/etapi/etapi.openapi.yaml", "./src/routes/api/openapi.json", @@ -38,7 +41,8 @@ try { "./src/public/robots.txt", "./src/public/fonts", "./src/public/stylesheets", - "./src/public/translations" + "./src/public/translations", + "./packages/turndown-plugin-gfm/src" ]); for (const asset of assetsToCopy) { @@ -64,7 +68,6 @@ try { "node_modules/katex/dist/contrib/mhchem.min.js", "node_modules/katex/dist/contrib/auto-render.min.js", "node_modules/@highlightjs/cdn-assets/highlight.min.js", - "node_modules/@mind-elixir/node-menu/dist/node-menu.umd.cjs" ]); const nodeModulesFolder = new Set([ @@ -90,7 +93,6 @@ try { "node_modules/codemirror/addon/", "node_modules/codemirror/mode/", "node_modules/codemirror/keymap/", - "node_modules/mind-elixir/dist/", "node_modules/@highlightjs/cdn-assets/languages", "node_modules/@highlightjs/cdn-assets/styles", "node_modules/leaflet/dist" diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index 3761a28f7..6b10f53da 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -1,6 +1,6 @@ { "formatVersion": 2, - "appVersion": "0.92.3-beta", + "appVersion": "0.92.4", "files": [ { "isClone": false, @@ -9,7 +9,7 @@ "pOsGYCXsbNQG" ], "title": "User Guide", - "notePosition": 90, + "notePosition": 130, "prefix": null, "isExpanded": false, "type": "text", @@ -149,14 +149,6 @@ "mime": "image/jpg", "position": 10, "dataFileName": "Attributes_image.png" - }, - { - "attachmentId": "ZuUT0WgJVR2j", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Attributes_image.png" } ], "dirFileName": "Attributes", @@ -795,14 +787,6 @@ "mime": "image/jpg", "position": 10, "dataFileName": "1_Day Notes_image.png" - }, - { - "attachmentId": "H3Iy9PpIDd0Z", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Day Notes_image.png" } ] }, @@ -1287,54 +1271,6 @@ "mime": "image/jpg", "position": 10, "dataFileName": "Manually altering the data.png" - }, - { - "attachmentId": "fJlFqdEOpLrF", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Manually altering the data.png" - }, - { - "attachmentId": "lAsR2tqMXurk", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Manually altering the data.png" - }, - { - "attachmentId": "uvaARhqiU4M5", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "3_Manually altering the data.png" - }, - { - "attachmentId": "W4710rPIeZjF", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "4_Manually altering the data.png" - }, - { - "attachmentId": "wL249F7azfME", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "5_Manually altering the data.png" - }, - { - "attachmentId": "yC5HdtMbAaaF", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Manually altering the data.png" } ], "dirFileName": "Manually altering the database", @@ -1467,4083 +1403,6 @@ } ] }, - { - "isClone": false, - "noteId": "s3YCWHBfmYuM", - "notePath": [ - "pOsGYCXsbNQG", - "s3YCWHBfmYuM" - ], - "title": "Quick Start", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "JXFeNgU8Xnp1", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "poXkQfguuA0U", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "WOcw2SLH6tbX", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "RDslemsQ6gCp", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "cbkrhQjrkKrh", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 60 - }, - { - "type": "label", - "name": "shareAlias", - "value": "quick-start", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-run", - "isInheritable": false, - "position": 40 - } - ], - "format": "markdown", - "dataFileName": "Quick Start.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "gh7bpGYxajRS", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS" - ], - "title": "Basic Concepts", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-help-circle", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "attachments": [], - "dirFileName": "Basic Concepts", - "children": [ - { - "isClone": false, - "noteId": "Vc8PjrjAGuOp", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp" - ], - "title": "UI Elements", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [ - { - "attachmentId": "0CaTtahPNa2i", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "UI Elements_image.png" - }, - { - "attachmentId": "vbrDuqZjshed", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_UI Elements_image.png" - } - ], - "dirFileName": "UI Elements", - "children": [ - { - "isClone": false, - "noteId": "x0JgW8UqGXvq", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "x0JgW8UqGXvq" - ], - "title": "Vertical and horizontal layout", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "xYmIYSP6wE3F", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "oPVyFC7WL2Lp", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "Ms1nauBra7gq", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "x3i7MxGccDuM", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "_lbSettings", - "isInheritable": false, - "position": 50 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-layout", - "isInheritable": false, - "position": 40 - } - ], - "format": "markdown", - "dataFileName": "Vertical and horizontal layout.md", - "attachments": [ - { - "attachmentId": "7VlCImOtpKzK", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Vertical and horizontal la.png" - }, - { - "attachmentId": "9sCZBqokn4vf", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Vertical and horizontal la.png" - }, - { - "attachmentId": "gw3DaUul5ccI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Vertical and horizontal la.png" - }, - { - "attachmentId": "jhiE5DTkLOCK", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "3_Vertical and horizontal la.png" - }, - { - "attachmentId": "JwO3rUNb9tyU", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "4_Vertical and horizontal la.png" - }, - { - "attachmentId": "NVjM5z6IsNZf", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Vertical and horizontal la.png" - }, - { - "attachmentId": "Z2F8ipVjwugg", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Vertical and horizontal la.png" - } - ] - }, - { - "isClone": false, - "noteId": "x3i7MxGccDuM", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "x3i7MxGccDuM" - ], - "title": "Global menu", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "x0JgW8UqGXvq", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Global menu.md", - "attachments": [ - { - "attachmentId": "8fNGILWWQodv", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Global menu_image.png" - }, - { - "attachmentId": "PhNb7G9OgPVt", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Global menu_image.png" - }, - { - "attachmentId": "rCnBqSyldhp9", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Global menu_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "BlN9DFI679QC", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "BlN9DFI679QC" - ], - "title": "Ribbon", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "4TIF1oA4VQRO", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Ribbon.md", - "attachments": [ - { - "attachmentId": "JCiJ3vRhgXY9", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Ribbon_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "4TIF1oA4VQRO", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "4TIF1oA4VQRO" - ], - "title": "Options", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-cog", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Options.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "oPVyFC7WL2Lp", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "oPVyFC7WL2Lp" - ], - "title": "Note Tree", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "sLZ7Bcq9p8E9", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "qL7381ZG0lMK", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "A9Oc6YKKc65v", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "IakOLONlIfGI", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "ivYnonVFBxbQ", - "isInheritable": false, - "position": 50 - }, - { - "type": "label", - "name": "shareAlias", - "value": "tree-manipulation", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-tree-alt", - "isInheritable": false, - "position": 50 - } - ], - "format": "markdown", - "dataFileName": "Note Tree.md", - "attachments": [ - { - "attachmentId": "Bp5BCJRntpyt", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Note Tree_image.png" - }, - { - "attachmentId": "DYf7wm3Yv6EC", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Note Tree_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "xYmIYSP6wE3F", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "xYmIYSP6wE3F" - ], - "title": "Launch Bar", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "x3i7MxGccDuM", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "p9kXRFAkwN4o", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "OR8WJ7Iz9K4U", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "OFXdgB2nNk1F", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "x0JgW8UqGXvq", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "oPVyFC7WL2Lp", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 70 - }, - { - "type": "relation", - "name": "internalLink", - "value": "SynTBQiBsdYJ", - "isInheritable": false, - "position": 80 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-sidebar", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Launch Bar.md", - "attachments": [ - { - "attachmentId": "YsBMjK1g3jd1", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Launch Bar_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "Ms1nauBra7gq", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "Ms1nauBra7gq" - ], - "title": "Quick search", - "notePosition": 80, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-search-alt-2", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Quick search.md", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "BFs8mudNFgCS", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS" - ], - "title": "Note", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "iPIMuisry3hd", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "m523cpzocqaD", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "iRwzGnHPzonm", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GTwFsgaA0lCt", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "IakOLONlIfGI", - "isInheritable": false, - "position": 70 - }, - { - "type": "relation", - "name": "internalLink", - "value": "ODY7qQn5m2FT", - "isInheritable": false, - "position": 80 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CoFPLs3dRlXc", - "isInheritable": false, - "position": 90 - }, - { - "type": "label", - "name": "shareAlias", - "value": "note", - "isInheritable": false, - "position": 30 - } - ], - "format": "markdown", - "dataFileName": "Note.md", - "attachments": [], - "dirFileName": "Note", - "children": [ - { - "isClone": false, - "noteId": "p9kXRFAkwN4o", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "p9kXRFAkwN4o" - ], - "title": "Note Icons", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "iuAfnapzpRCB", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "R1L2vUshJD82", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "note-icons", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Note Icons.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "0vhv7lsOLy82", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "0vhv7lsOLy82" - ], - "title": "Attachments", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "R7abl2fc6Mxi", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "attachments", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Attachments.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "IakOLONlIfGI", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "IakOLONlIfGI" - ], - "title": "Cloning Notes", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "BqvIJUHkWrvH", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "A9Oc6YKKc65v", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "cloning-notes", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Cloning Notes.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "bwg0e8ewQMak", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "bwg0e8ewQMak" - ], - "title": "Protected Notes", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "zaUtPWl8NcCt", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "wX4HbRucYSDD", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "protected-notes", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Protected Notes.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "MKmLg5x6xkor", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "MKmLg5x6xkor" - ], - "title": "Archived Notes", - "notePosition": 80, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "1fkGrskxHx5u", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "bwZpz2ajCEwO", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "eIg8jdvaoNNd", - "isInheritable": false, - "position": 40 - }, - { - "type": "label", - "name": "shareAlias", - "value": "archived-notes", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Archived Notes.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "vZWERwf8U3nx", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "vZWERwf8U3nx" - ], - "title": "Note Revisions", - "notePosition": 90, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "MA2uvkVloWXl", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "note-revisions", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Note Revisions.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "aGlEvb9hyDhS", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "aGlEvb9hyDhS" - ], - "title": "Sorting Notes", - "notePosition": 100, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "shareAlias", - "value": "sorting", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Sorting Notes.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "NRnIZmSMc5sj", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "NRnIZmSMc5sj" - ], - "title": "Export as PDF", - "notePosition": 120, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-file-pdf", - "isInheritable": false, - "position": 30 - } - ], - "format": "markdown", - "dataFileName": "Export as PDF.md", - "attachments": [ - { - "attachmentId": "NfSjRsArIQHy", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Export as PDF_image.png" - }, - { - "attachmentId": "Om2EmdZr54vy", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Export as PDF_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "CoFPLs3dRlXc", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "CoFPLs3dRlXc" - ], - "title": "Read-Only Notes", - "notePosition": 130, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "iPIMuisry3hd", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "read-only-note", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-edit-alt", - "isInheritable": false, - "position": 40 - } - ], - "format": "markdown", - "dataFileName": "Read-Only Notes.md", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "wArbEsdSae6g", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g" - ], - "title": "Navigation", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [], - "dirFileName": "Navigation", - "children": [ - { - "isClone": false, - "noteId": "kBrnXNG3Hplm", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "kBrnXNG3Hplm" - ], - "title": "Tree Concepts", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "IakOLONlIfGI", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "tree-concepts", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Tree Concepts.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "MMiBEQljMQh2", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "MMiBEQljMQh2" - ], - "title": "Note Navigation", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "snfWRIih71MM", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "wpFu8PhUu7e7", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "note-navigation", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Note Navigation.md", - "attachments": [ - { - "attachmentId": "jDuwVaU8bNtG", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Note Navigation_image.png" - }, - { - "attachmentId": "Pae5L9DXlzQW", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Note Navigation_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "eIg8jdvaoNNd", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "eIg8jdvaoNNd" - ], - "title": "Search", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "A9Oc6YKKc65v", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "search", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Search.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "u3YFHC9tQlpm", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "u3YFHC9tQlpm" - ], - "title": "Bookmarks", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "sag6ww9q4pgW", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "HEtnpiQrEvjl", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "bookmarks", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Bookmarks.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "OR8WJ7Iz9K4U", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "OR8WJ7Iz9K4U" - ], - "title": "Note Hoisting", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "AiBOf1LIykMC", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "MMiBEQljMQh2", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "9sRHySam5fXb", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "note-hoisting", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-chevrons-up", - "isInheritable": false, - "position": 40 - } - ], - "format": "markdown", - "dataFileName": "Note Hoisting.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "9sRHySam5fXb", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "9sRHySam5fXb" - ], - "title": "Workspace", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "OR8WJ7Iz9K4U", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "shareAlias", - "value": "workspace", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Workspace.md", - "attachments": [ - { - "attachmentId": "V4TIsmtBh8P7", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Workspace_image.png" - }, - { - "attachmentId": "vZSH2mOKzWBx", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Workspace_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "A9Oc6YKKc65v", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "A9Oc6YKKc65v" - ], - "title": "Keyboard Shortcuts", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "MMiBEQljMQh2", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "IakOLONlIfGI", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "iPIMuisry3hd", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "QEAPj01N5f7w", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "eIg8jdvaoNNd", - "isInheritable": false, - "position": 70 - }, - { - "type": "label", - "name": "shareAlias", - "value": "keyboard-shortcuts", - "isInheritable": false, - "position": 30 - } - ], - "format": "markdown", - "dataFileName": "Keyboard Shortcuts.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "Wy267RK4M69c", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Wy267RK4M69c" - ], - "title": "Themes", - "notePosition": 80, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "zaQnUsJTbvjr", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "uVF9DAmAmEWC", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "VbjZvtUek0Ln", - "isInheritable": false, - "position": 50 - }, - { - "type": "label", - "name": "shareAlias", - "value": "themes", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Themes.md", - "attachments": [ - { - "attachmentId": "rwK3vuBgh7sY", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Themes_image.png" - } - ], - "dirFileName": "Themes", - "children": [ - { - "isClone": false, - "noteId": "VbjZvtUek0Ln", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Wy267RK4M69c", - "VbjZvtUek0Ln" - ], - "title": "Theme Gallery", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "label", - "name": "shareAlias", - "value": "theme-gallery", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Theme Gallery.md", - "attachments": [ - { - "attachmentId": "wob20Q0zLkMq", - "title": "preview.jpg", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Theme Gallery_preview.jpg" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "mHbBMPDPkVV5", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "mHbBMPDPkVV5" - ], - "title": "Import & Export", - "notePosition": 90, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [], - "dirFileName": "Import & Export", - "children": [ - { - "isClone": false, - "noteId": "Oau6X9rCuegd", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "mHbBMPDPkVV5", - "Oau6X9rCuegd" - ], - "title": "Markdown", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "Y9mwMwSGAaSb", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "xMQSqWySvWBZ", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "imageLink", - "value": "QUqKzK4LHMVA", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "imageLink", - "value": "e3qPZSsTbUZP", - "isInheritable": false, - "position": 40 - }, - { - "type": "label", - "name": "shareAlias", - "value": "markdown", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Markdown.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "syuSEKf2rUGr", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "mHbBMPDPkVV5", - "syuSEKf2rUGr" - ], - "title": "Evernote", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "label", - "name": "shareAlias", - "value": "evernote-import", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Evernote.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "GnhlmrATVqcH", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "mHbBMPDPkVV5", - "GnhlmrATVqcH" - ], - "title": "OneNote", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "label", - "name": "shareAlias", - "value": "onenote", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "OneNote.md", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "rC3pL2aptaRE", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "rC3pL2aptaRE" - ], - "title": "Zen mode", - "notePosition": 100, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-yin-yang", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Zen mode.md", - "attachments": [ - { - "attachmentId": "Asn6uBNwt6JI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Zen mode_image.png" - }, - { - "attachmentId": "cOMcKGJQYs8Y", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Zen mode_image.png" - }, - { - "attachmentId": "ghjyT4LkrZrU", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Zen mode_image.png" - }, - { - "attachmentId": "HGcQUOEXJ3Sp", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Zen mode_image.png" - }, - { - "attachmentId": "jtzLZ0J0GMub", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "4_Zen mode_image.png" - }, - { - "attachmentId": "lqQtSNb8loOS", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Zen mode_image.png" - }, - { - "attachmentId": "LX31yc6Jnksw", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Zen mode_image.png" - }, - { - "attachmentId": "NVSyQubZNFy7", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "7_Zen mode_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "KSZ04uQ2D1St", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St" - ], - "title": "Note Types", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-edit", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "attachments": [], - "dirFileName": "Note Types", - "children": [ - { - "isClone": false, - "noteId": "iPIMuisry3hd", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd" - ], - "title": "Text", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "FtmPLgGmgZVC", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "oRWfJLUbb7j7", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CoFPLs3dRlXc", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "S6Xx8QIWTV66", - "isInheritable": false, - "position": 50 - }, - { - "type": "label", - "name": "shareAlias", - "value": "text-notes", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "sorted", - "value": "", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-note", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "sorted", - "value": "", - "isInheritable": false, - "position": 40 - } - ], - "format": "markdown", - "dataFileName": "Text.md", - "attachments": [ - { - "attachmentId": "lHWL7KkEhmM3", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Text_image.png" - }, - { - "attachmentId": "yGknq3nsWpef", - "title": "bx-edit-alt.svg", - "role": "image", - "mime": "image/svg+xml", - "position": 10, - "dataFileName": "Text_bx-edit-alt.svg" - } - ], - "dirFileName": "Text", - "children": [ - { - "isClone": false, - "noteId": "QxEyIjRBizuC", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "QxEyIjRBizuC" - ], - "title": "Code blocks", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "4TIF1oA4VQRO", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "nRhnJkTT8cPs", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "s8alTXmpFR61", - "isInheritable": false, - "position": 40 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-code", - "isInheritable": false, - "position": 50 - } - ], - "format": "markdown", - "dataFileName": "Code blocks.md", - "attachments": [ - { - "attachmentId": "7HhhhyZ4AS0A", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Code blocks_image.png" - }, - { - "attachmentId": "DyHSLO958cdd", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Code blocks_image.png" - }, - { - "attachmentId": "kE8PPw7iyuu9", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Code blocks_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "veGu4faJErEM", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "veGu4faJErEM" - ], - "title": "Content language & Right-to-left support", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-align-right", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Content language & Right-to-le.md", - "attachments": [ - { - "attachmentId": "bqLn4gFZdqfX", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Content language & Right-t.png" - }, - { - "attachmentId": "RlBpP2KTDVIK", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Content language & Right-t.png" - }, - { - "attachmentId": "TlBagKsAj5ax", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Content language & Right-t.png" - }, - { - "attachmentId": "U9e8SLUEALiR", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Content language & Right-t.png" - } - ] - }, - { - "isClone": false, - "noteId": "UYuUB1ZekNQU", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "UYuUB1ZekNQU" - ], - "title": "Formatting", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "nRhnJkTT8cPs", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Formatting.md", - "attachments": [ - { - "attachmentId": "7tX4ckOSF8jq", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Formatting_image.png" - }, - { - "attachmentId": "HP741oAz3ebU", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Formatting_image.png" - }, - { - "attachmentId": "yKVC2F773Mg7", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Formatting_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "nRhnJkTT8cPs", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "nRhnJkTT8cPs" - ], - "title": "Formatting toolbar", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "4TIF1oA4VQRO", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BlN9DFI679QC", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-text", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Formatting toolbar.md", - "attachments": [ - { - "attachmentId": "CZ8ENj2LsBsA", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Formatting toolbar_image.png" - }, - { - "attachmentId": "iu9xb3VivIIl", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Formatting toolbar_image.png" - }, - { - "attachmentId": "MMeih4nJVgNk", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Formatting toolbar_image.png" - }, - { - "attachmentId": "SGaPJHzNyLLV", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "3_Formatting toolbar_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "mT0HEkOsz6i1", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "mT0HEkOsz6i1" - ], - "title": "Images", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "0vhv7lsOLy82", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "kBrnXNG3Hplm", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "images", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-image-alt", - "isInheritable": false, - "position": 30 - } - ], - "format": "markdown", - "dataFileName": "Images.md", - "attachments": [ - { - "attachmentId": "40jG4olRNAlc", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Images_image.png" - }, - { - "attachmentId": "9EQBwdObLpnJ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Images_image.png" - }, - { - "attachmentId": "bDkYm34QEH5a", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Images_image.png" - }, - { - "attachmentId": "Bi9LiB0eMbcH", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "3_Images_image.png" - }, - { - "attachmentId": "dRgFtpOcHwke", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "4_Images_image.png" - }, - { - "attachmentId": "g7xB3E2Dva2q", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Images_image.png" - }, - { - "attachmentId": "HcyBaQS2SjkL", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Images_image.png" - }, - { - "attachmentId": "Ilz9SuEj39RF", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "7_Images_image.png" - }, - { - "attachmentId": "MTsRB4C0yvKX", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "8_Images_image.png" - }, - { - "attachmentId": "NZJRGKS6yDeg", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "9_Images_image.png" - }, - { - "attachmentId": "PUjxzv10IJkx", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "10_Images_image.png" - }, - { - "attachmentId": "qJXx7vPPD4JW", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "11_Images_image.png" - }, - { - "attachmentId": "SoDKgOmDoyc1", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "12_Images_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "QEAPj01N5f7w", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "QEAPj01N5f7w" - ], - "title": "Links", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "N6O1qfBGcbFH", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "dPcRcDZwyGAO", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BCkXAVs63Ttv", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "links", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-link-alt", - "isInheritable": false, - "position": 40 - } - ], - "format": "markdown", - "dataFileName": "Links.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "S6Xx8QIWTV66", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "S6Xx8QIWTV66" - ], - "title": "Lists", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-list-ul", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Lists.md", - "attachments": [ - { - "attachmentId": "5cmICTYfg13g", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Lists_image.png" - }, - { - "attachmentId": "6jl7tboJfutt", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Lists_image.png" - }, - { - "attachmentId": "d4XfLoK5srYZ", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Lists_image.png" - }, - { - "attachmentId": "eL11eZMPwpmH", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "3_Lists_image.png" - }, - { - "attachmentId": "EnkTpdeLJ6Ft", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "4_Lists_image.png" - }, - { - "attachmentId": "If3k6Tt5cPBt", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "5_Lists_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "6f9hih2hXXZk", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk" - ], - "title": "Code", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "iPIMuisry3hd", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "QxEyIjRBizuC", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BlN9DFI679QC", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "4TIF1oA4VQRO", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "s8alTXmpFR61", - "isInheritable": false, - "position": 60 - }, - { - "type": "label", - "name": "shareAlias", - "value": "code-notes", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-code", - "isInheritable": false, - "position": 90 - } - ], - "format": "markdown", - "dataFileName": "Code.md", - "attachments": [ - { - "attachmentId": "hajUVeLs3EOM", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Code_image.png" - }, - { - "attachmentId": "iKJbcEUkME1a", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Code_image.png" - }, - { - "attachmentId": "OTcapNOcNaBL", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Code_image.png" - } - ], - "dirFileName": "Code", - "children": [ - { - "isClone": false, - "noteId": "CdNpE2pqjmI6", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "CdNpE2pqjmI6" - ], - "title": "Scripts", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "DVJl4l3T8EG2", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GLks18SNjxmC", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "wX4HbRucYSDD", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "RDslemsQ6gCp", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "5668rwcirq1t", - "isInheritable": false, - "position": 70 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GPERMystNGTB", - "isInheritable": false, - "position": 80 - }, - { - "type": "label", - "name": "shareAlias", - "value": "scripts", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Scripts.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "GLks18SNjxmC", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "GLks18SNjxmC" - ], - "title": "Script API", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "label", - "name": "shareAlias", - "value": "script-api", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Script API.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "GPERMystNGTB", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "GPERMystNGTB" - ], - "title": "Events", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "events", - "isInheritable": false, - "position": 30 - } - ], - "format": "markdown", - "dataFileName": "Events.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "MgibgPcfeuGz", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "MgibgPcfeuGz" - ], - "title": "Custom Widgets", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "3sCPPL0LEC1S", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "shareAlias", - "value": "custom-widget", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Custom Widgets.md", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "m523cpzocqaD", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "m523cpzocqaD" - ], - "title": "Saved Search", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "rVtYANyVhE9U", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "9sRHySam5fXb", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "saved-search", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-file-find", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Saved Search.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "joqzSrDccPKf", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "joqzSrDccPKf" - ], - "title": "Relation Map", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-network-chart", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Relation Map.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "bdUJEHsAPYQR", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "bdUJEHsAPYQR" - ], - "title": "Note Map", - "notePosition": 80, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-network-chart", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Note Map.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "HcABDtFCkbFN", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "HcABDtFCkbFN" - ], - "title": "Render Note", - "notePosition": 100, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-extension", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Render Note.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "GTwFsgaA0lCt", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "GTwFsgaA0lCt" - ], - "title": "Book", - "notePosition": 120, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "shareAlias", - "value": "book-note", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-book", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Book.md", - "attachments": [ - { - "attachmentId": "BmpgL4ol4jJo", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Book_image.png" - }, - { - "attachmentId": "lpq3QC1C5LWg", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Book_image.png" - } - ], - "dirFileName": "Book", - "children": [ - { - "isClone": false, - "noteId": "xWbu3jpNWapp", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "GTwFsgaA0lCt", - "xWbu3jpNWapp" - ], - "title": "Calendar View", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-calendar", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Calendar View.md", - "attachments": [ - { - "attachmentId": "37CfbqKYcOtd", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Calendar View_image.png" - }, - { - "attachmentId": "6w8hjC47rS2H", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Calendar View_image.png" - }, - { - "attachmentId": "akAHcIEcGnWR", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Calendar View_image.png" - }, - { - "attachmentId": "AU7dnIevWPrz", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Calendar View_image.png" - }, - { - "attachmentId": "AzRAe3io7LxA", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "4_Calendar View_image.png" - }, - { - "attachmentId": "COiR1tnE86i1", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Calendar View_image.png" - }, - { - "attachmentId": "fOdCNTs2BuI0", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Calendar View_image.png" - }, - { - "attachmentId": "GeEGbbeQ1qy9", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "7_Calendar View_image.png" - }, - { - "attachmentId": "gQvwJGB5a4c1", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "8_Calendar View_image.png" - }, - { - "attachmentId": "HfBu0m3WXtn2", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "9_Calendar View_image.png" - }, - { - "attachmentId": "ho00OJTNrxVI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "10_Calendar View_image.png" - }, - { - "attachmentId": "irfNX8n4159U", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "11_Calendar View_image.png" - }, - { - "attachmentId": "KF56rdNuOwWd", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "12_Calendar View_image.png" - }, - { - "attachmentId": "oBWr5GL6cUAZ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "13_Calendar View_image.png" - }, - { - "attachmentId": "oS6yUoQtfhpg", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "14_Calendar View_image.png" - }, - { - "attachmentId": "PYHfGSBQpr0y", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "15_Calendar View_image.png" - }, - { - "attachmentId": "rYaJQN8tjfsG", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "16_Calendar View_image.png" - }, - { - "attachmentId": "u2c09UpZghff", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "17_Calendar View_image.png" - }, - { - "attachmentId": "UCQb1diHfd02", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "18_Calendar View_image.png" - }, - { - "attachmentId": "xqgGyeWWqLyg", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "19_Calendar View_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "s1aBHPd79XYj", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "s1aBHPd79XYj" - ], - "title": "Mermaid Diagrams", - "notePosition": 130, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "r44dpvA1xFu8", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "opAFABmyb3CU", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "mermaid-diagrams", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-selection", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Mermaid Diagrams.md", - "attachments": [], - "dirFileName": "Mermaid Diagrams", - "children": [ - { - "isClone": false, - "noteId": "opAFABmyb3CU", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "s1aBHPd79XYj", - "opAFABmyb3CU" - ], - "title": "ELK on", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "mermaid", - "mime": "text/plain", - "attributes": [], - "dataFileName": "ELK on.txt", - "attachments": [ - { - "attachmentId": "biyznKlYQ7my", - "title": "mermaid-export.svg", - "role": "image", - "mime": "image/svg+xml", - "position": 10, - "dataFileName": "ELK on_mermaid-export.svg" - } - ] - }, - { - "isClone": false, - "noteId": "r44dpvA1xFu8", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "s1aBHPd79XYj", - "r44dpvA1xFu8" - ], - "title": "ELK off", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "mermaid", - "mime": "text/plain", - "attributes": [], - "dataFileName": "ELK off.txt", - "attachments": [ - { - "attachmentId": "rQI7SXljnpJM", - "title": "mermaid-export.svg", - "role": "image", - "mime": "image/svg+xml", - "position": 10, - "dataFileName": "ELK off_mermaid-export.svg" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "grjYqerjn243", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "grjYqerjn243" - ], - "title": "Canvas", - "notePosition": 150, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-pen", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Canvas.md", - "attachments": [ - { - "attachmentId": "DC9fvvootwwZ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Canvas_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "1vHRoWCEjj0L", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "1vHRoWCEjj0L" - ], - "title": "Web View", - "notePosition": 160, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-globe-alt", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Web View.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "gBbsAeiuUxI5", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "gBbsAeiuUxI5" - ], - "title": "Mind Map", - "notePosition": 170, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-sitemap", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Mind Map.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "81SGnPGMk7Xc", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "81SGnPGMk7Xc" - ], - "title": "Geo map", - "notePosition": 180, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-map-alt", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Geo map.md", - "attachments": [ - { - "attachmentId": "1f07O0Z25ZRr", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Geo map_image.png" - }, - { - "attachmentId": "3oh61qhNLu7D", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Geo map_image.png" - }, - { - "attachmentId": "6wUkw5RWE39e", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Geo map_image.png" - }, - { - "attachmentId": "aCSNn9QlgHFi", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Geo map_image.png" - }, - { - "attachmentId": "aCuXZY7WV4li", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "4_Geo map_image.png" - }, - { - "attachmentId": "agH6yREFgsoU", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Geo map_image.png" - }, - { - "attachmentId": "AHyDUM6R5HeG", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Geo map_image.png" - }, - { - "attachmentId": "CcjWLhE3KKfv", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "7_Geo map_image.png" - }, - { - "attachmentId": "DapDey8gMiFc", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "8_Geo map_image.png" - }, - { - "attachmentId": "fQy8R1vxKhwN", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "9_Geo map_image.png" - }, - { - "attachmentId": "gJ4Yz80jxcbn", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "10_Geo map_image.png" - }, - { - "attachmentId": "Mx2xwNIk76ZS", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "11_Geo map_image.png" - }, - { - "attachmentId": "oaahbsMRbqd2", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "12_Geo map_image.png" - }, - { - "attachmentId": "pGf1p74KKGU4", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "13_Geo map_image.png" - }, - { - "attachmentId": "tDWsliJj9ncm", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "14_Geo map_image.png" - }, - { - "attachmentId": "tfa1TRUatWEh", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "15_Geo map_image.png" - }, - { - "attachmentId": "USbvJ38T4AKA", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "16_Geo map_image.png" - }, - { - "attachmentId": "x6yBLIsY2LSv", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "17_Geo map_image.png" - }, - { - "attachmentId": "ZvTlu9WMd37z", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "18_Geo map_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "pKK96zzmvBGf", - "notePath": [ - "pOsGYCXsbNQG", - "pKK96zzmvBGf" - ], - "title": "Theme development", - "notePosition": 100, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-palette", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "attachments": [], - "dirFileName": "Theme development", - "children": [ - { - "isClone": false, - "noteId": "7NfNr5pZpVKV", - "notePath": [ - "pOsGYCXsbNQG", - "pKK96zzmvBGf", - "7NfNr5pZpVKV" - ], - "title": "Creating a custom theme", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "WFGzWeUK6arS", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Creating a custom theme.md", - "attachments": [ - { - "attachmentId": "14xpFnX5GIkZ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Creating a custom theme_im.png" - }, - { - "attachmentId": "EzM9s8bCnJ85", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Creating a custom theme_im.png" - }, - { - "attachmentId": "M3C6oYYIakiS", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Creating a custom theme_im.png" - }, - { - "attachmentId": "PY4a4fueTRUZ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Creating a custom theme_im.png" - }, - { - "attachmentId": "QkaP2Ge0lagI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "4_Creating a custom theme_im.png" - }, - { - "attachmentId": "yJVfT7rjp4tI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Creating a custom theme_im.png" - } - ] - }, - { - "isClone": false, - "noteId": "WFGzWeUK6arS", - "notePath": [ - "pOsGYCXsbNQG", - "pKK96zzmvBGf", - "WFGzWeUK6arS" - ], - "title": "Customize the Next theme", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "dataFileName": "Customize the Next theme.md", - "attachments": [ - { - "attachmentId": "3fAj97aV2noG", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Customize the Next theme_i.png" - } - ] - }, - { - "isClone": false, - "noteId": "WN5z4M8ASACJ", - "notePath": [ - "pOsGYCXsbNQG", - "pKK96zzmvBGf", - "WN5z4M8ASACJ" - ], - "title": "Reference", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "d3fAXQ2diepH", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Reference.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "AlhDUqhENtH7", - "notePath": [ - "pOsGYCXsbNQG", - "pKK96zzmvBGf", - "AlhDUqhENtH7" - ], - "title": "Custom app-wide CSS", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "dataFileName": "Custom app-wide CSS.md", - "attachments": [ - { - "attachmentId": "fkMLaf6reA6I", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Custom app-wide CSS_image.png" - }, - { - "attachmentId": "TIerrMjmeich", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Custom app-wide CSS_image.png" - }, - { - "attachmentId": "YUrNq5vsCwHe", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Custom app-wide CSS_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "k2Gc17NbaAwb", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb" - ], - "title": "Developer Guides", - "notePosition": 120, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxl-javascript", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "attachments": [], - "dirFileName": "Developer Guides", - "children": [ - { - "isClone": false, - "noteId": "yIhgI5H7A2Sm", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "yIhgI5H7A2Sm" - ], - "title": "Frontend Basics", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GLks18SNjxmC", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "SynTBQiBsdYJ", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "frontend-basics", - "isInheritable": false, - "position": 30 - } - ], - "format": "markdown", - "dataFileName": "Frontend Basics.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "SynTBQiBsdYJ", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "SynTBQiBsdYJ" - ], - "title": "Widget Basics", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GLks18SNjxmC", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "widget-basics", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Widget Basics.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "es8OU2GuguFU", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "es8OU2GuguFU" - ], - "title": "Examples", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [], - "dirFileName": "Examples", - "children": [ - { - "isClone": false, - "noteId": "7kZPMD0uFwkH", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "es8OU2GuguFU", - "7kZPMD0uFwkH" - ], - "title": "Downloading responses from Google Forms", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "dataFileName": "Downloading responses from Goo.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "DL92EjAaXT26", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "es8OU2GuguFU", - "DL92EjAaXT26" - ], - "title": "Using promoted attributes to configure scripts", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "dataFileName": "Using promoted attributes to c.md", - "attachments": [ - { - "attachmentId": "7P3jzVEa1mk7", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Using promoted attributes .png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "CXny4YWKsD7z", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z" - ], - "title": "REST API", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [], - "dirFileName": "REST API", - "children": [ - { - "isClone": false, - "noteId": "cqCjxpN8NhbH", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "cqCjxpN8NhbH" - ], - "title": "ETAPI", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [], - "dirFileName": "ETAPI", - "children": [ - { - "isClone": false, - "noteId": "9qPsTWBorUhQ", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "cqCjxpN8NhbH", - "9qPsTWBorUhQ" - ], - "title": "API Reference", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "webView", - "mime": "", - "attributes": [ - { - "type": "label", - "name": "webViewSrc", - "value": "/etapi/docs", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "API Reference.dat", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "0vTSyvhPTAOz", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "0vTSyvhPTAOz" - ], - "title": "Internal API", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [], - "dirFileName": "Internal API", - "children": [ - { - "isClone": false, - "noteId": "z8O2VG4ZZJD7", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "0vTSyvhPTAOz", - "z8O2VG4ZZJD7" - ], - "title": "API Reference", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "webView", - "mime": "", - "attributes": [ - { - "type": "label", - "name": "webViewSrc", - "value": "/api/docs", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "API Reference.dat", - "attachments": [] - } - ] - } - ] - } - ] - }, { "isClone": false, "noteId": "Otzi9La2YAUX", @@ -5552,7 +1411,7 @@ "Otzi9La2YAUX" ], "title": "Installation & Setup", - "notePosition": 160, + "notePosition": 10, "prefix": null, "isExpanded": false, "type": "text", @@ -6477,6 +2336,3864 @@ } ] }, + { + "isClone": false, + "noteId": "gh7bpGYxajRS", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS" + ], + "title": "Basic Concepts", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-help-circle", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "attachments": [], + "dirFileName": "Basic Concepts", + "children": [ + { + "isClone": false, + "noteId": "Vc8PjrjAGuOp", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp" + ], + "title": "UI Elements", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "attachments": [], + "dirFileName": "UI Elements", + "children": [ + { + "isClone": false, + "noteId": "x0JgW8UqGXvq", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "x0JgW8UqGXvq" + ], + "title": "Vertical and horizontal layout", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Ms1nauBra7gq", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x3i7MxGccDuM", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "_lbSettings", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-layout", + "isInheritable": false, + "position": 40 + } + ], + "format": "markdown", + "dataFileName": "Vertical and horizontal layout.md", + "attachments": [ + { + "attachmentId": "9sCZBqokn4vf", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Vertical and horizontal la.png" + }, + { + "attachmentId": "gw3DaUul5ccI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Vertical and horizontal la.png" + }, + { + "attachmentId": "jhiE5DTkLOCK", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Vertical and horizontal la.png" + }, + { + "attachmentId": "JwO3rUNb9tyU", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "3_Vertical and horizontal la.png" + }, + { + "attachmentId": "NVjM5z6IsNZf", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Vertical and horizontal la.png" + }, + { + "attachmentId": "Z2F8ipVjwugg", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Vertical and horizontal la.png" + } + ] + }, + { + "isClone": false, + "noteId": "x3i7MxGccDuM", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "x3i7MxGccDuM" + ], + "title": "Global menu", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "x0JgW8UqGXvq", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Global menu.md", + "attachments": [ + { + "attachmentId": "rCnBqSyldhp9", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Global menu_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "BlN9DFI679QC", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "BlN9DFI679QC" + ], + "title": "Ribbon", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Ribbon.md", + "attachments": [ + { + "attachmentId": "JCiJ3vRhgXY9", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Ribbon_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "4TIF1oA4VQRO", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "4TIF1oA4VQRO" + ], + "title": "Options", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-cog", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Options.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "oPVyFC7WL2Lp", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "oPVyFC7WL2Lp" + ], + "title": "Note Tree", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "sLZ7Bcq9p8E9", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "qL7381ZG0lMK", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "A9Oc6YKKc65v", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ivYnonVFBxbQ", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "tree-manipulation", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-tree-alt", + "isInheritable": false, + "position": 50 + } + ], + "format": "markdown", + "dataFileName": "Note Tree.md", + "attachments": [ + { + "attachmentId": "Bp5BCJRntpyt", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Note Tree_image.png" + }, + { + "attachmentId": "DYf7wm3Yv6EC", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Note Tree_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "xYmIYSP6wE3F", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "xYmIYSP6wE3F" + ], + "title": "Launch Bar", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "x3i7MxGccDuM", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "p9kXRFAkwN4o", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OR8WJ7Iz9K4U", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x0JgW8UqGXvq", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "SynTBQiBsdYJ", + "isInheritable": false, + "position": 80 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-sidebar", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Launch Bar.md", + "attachments": [ + { + "attachmentId": "YsBMjK1g3jd1", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Launch Bar_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "Ms1nauBra7gq", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "Ms1nauBra7gq" + ], + "title": "Quick search", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-search-alt-2", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Quick search.md", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "BFs8mudNFgCS", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS" + ], + "title": "Note", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "m523cpzocqaD", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GTwFsgaA0lCt", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ODY7qQn5m2FT", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CoFPLs3dRlXc", + "isInheritable": false, + "position": 90 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note", + "isInheritable": false, + "position": 30 + } + ], + "format": "markdown", + "dataFileName": "Note.md", + "attachments": [], + "dirFileName": "Note", + "children": [ + { + "isClone": false, + "noteId": "p9kXRFAkwN4o", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "p9kXRFAkwN4o" + ], + "title": "Note Icons", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "iuAfnapzpRCB", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "R1L2vUshJD82", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-icons", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Note Icons.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "0vhv7lsOLy82", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "0vhv7lsOLy82" + ], + "title": "Attachments", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R7abl2fc6Mxi", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "attachments", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Attachments.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "IakOLONlIfGI", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "IakOLONlIfGI" + ], + "title": "Cloning Notes", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "BqvIJUHkWrvH", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "A9Oc6YKKc65v", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "cloning-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Cloning Notes.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "bwg0e8ewQMak", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "bwg0e8ewQMak" + ], + "title": "Protected Notes", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "zaUtPWl8NcCt", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "protected-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Protected Notes.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MKmLg5x6xkor", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "MKmLg5x6xkor" + ], + "title": "Archived Notes", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "1fkGrskxHx5u", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "eIg8jdvaoNNd", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "archived-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Archived Notes.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "vZWERwf8U3nx", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "vZWERwf8U3nx" + ], + "title": "Note Revisions", + "notePosition": 90, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "MA2uvkVloWXl", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-revisions", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Note Revisions.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "aGlEvb9hyDhS", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "aGlEvb9hyDhS" + ], + "title": "Sorting Notes", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "sorting", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Sorting Notes.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "NRnIZmSMc5sj", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "NRnIZmSMc5sj" + ], + "title": "Export as PDF", + "notePosition": 120, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-file-pdf", + "isInheritable": false, + "position": 30 + } + ], + "format": "markdown", + "dataFileName": "Export as PDF.md", + "attachments": [ + { + "attachmentId": "NfSjRsArIQHy", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Export as PDF_image.png" + }, + { + "attachmentId": "Om2EmdZr54vy", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Export as PDF_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "CoFPLs3dRlXc", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "CoFPLs3dRlXc" + ], + "title": "Read-Only Notes", + "notePosition": 130, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "read-only-note", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-edit-alt", + "isInheritable": false, + "position": 40 + } + ], + "format": "markdown", + "dataFileName": "Read-Only Notes.md", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "wArbEsdSae6g", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g" + ], + "title": "Navigation", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "attachments": [], + "dirFileName": "Navigation", + "children": [ + { + "isClone": false, + "noteId": "kBrnXNG3Hplm", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "kBrnXNG3Hplm" + ], + "title": "Tree Concepts", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "tree-concepts", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Tree Concepts.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MMiBEQljMQh2", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "MMiBEQljMQh2" + ], + "title": "Note Navigation", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "snfWRIih71MM", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "wpFu8PhUu7e7", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-navigation", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Note Navigation.md", + "attachments": [ + { + "attachmentId": "jDuwVaU8bNtG", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Note Navigation_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "eIg8jdvaoNNd", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "eIg8jdvaoNNd" + ], + "title": "Search", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "A9Oc6YKKc65v", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "search", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Search.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "u3YFHC9tQlpm", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "u3YFHC9tQlpm" + ], + "title": "Bookmarks", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "sag6ww9q4pgW", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "HEtnpiQrEvjl", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "bookmarks", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Bookmarks.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "OR8WJ7Iz9K4U", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "OR8WJ7Iz9K4U" + ], + "title": "Note Hoisting", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "AiBOf1LIykMC", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "MMiBEQljMQh2", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-hoisting", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-chevrons-up", + "isInheritable": false, + "position": 40 + } + ], + "format": "markdown", + "dataFileName": "Note Hoisting.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "9sRHySam5fXb", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "9sRHySam5fXb" + ], + "title": "Workspace", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "OR8WJ7Iz9K4U", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "workspace", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Workspace.md", + "attachments": [ + { + "attachmentId": "V4TIsmtBh8P7", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Workspace_image.png" + }, + { + "attachmentId": "vZSH2mOKzWBx", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Workspace_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "A9Oc6YKKc65v", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "A9Oc6YKKc65v" + ], + "title": "Keyboard Shortcuts", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "MMiBEQljMQh2", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "QEAPj01N5f7w", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "eIg8jdvaoNNd", + "isInheritable": false, + "position": 70 + }, + { + "type": "label", + "name": "shareAlias", + "value": "keyboard-shortcuts", + "isInheritable": false, + "position": 30 + } + ], + "format": "markdown", + "dataFileName": "Keyboard Shortcuts.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "Wy267RK4M69c", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Wy267RK4M69c" + ], + "title": "Themes", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "zaQnUsJTbvjr", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "uVF9DAmAmEWC", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "VbjZvtUek0Ln", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "themes", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Themes.md", + "attachments": [ + { + "attachmentId": "rwK3vuBgh7sY", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Themes_image.png" + } + ], + "dirFileName": "Themes", + "children": [ + { + "isClone": false, + "noteId": "VbjZvtUek0Ln", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Wy267RK4M69c", + "VbjZvtUek0Ln" + ], + "title": "Theme Gallery", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "theme-gallery", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Theme Gallery.md", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "mHbBMPDPkVV5", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5" + ], + "title": "Import & Export", + "notePosition": 90, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "attachments": [], + "dirFileName": "Import & Export", + "children": [ + { + "isClone": false, + "noteId": "Oau6X9rCuegd", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5", + "Oau6X9rCuegd" + ], + "title": "Markdown", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "Y9mwMwSGAaSb", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "xMQSqWySvWBZ", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "imageLink", + "value": "QUqKzK4LHMVA", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "imageLink", + "value": "e3qPZSsTbUZP", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "markdown", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Markdown.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "syuSEKf2rUGr", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5", + "syuSEKf2rUGr" + ], + "title": "Evernote", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "evernote-import", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Evernote.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GnhlmrATVqcH", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5", + "GnhlmrATVqcH" + ], + "title": "OneNote", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "onenote", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "OneNote.md", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "rC3pL2aptaRE", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "rC3pL2aptaRE" + ], + "title": "Zen mode", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-yin-yang", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Zen mode.md", + "attachments": [ + { + "attachmentId": "Asn6uBNwt6JI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Zen mode_image.png" + }, + { + "attachmentId": "HGcQUOEXJ3Sp", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Zen mode_image.png" + }, + { + "attachmentId": "lqQtSNb8loOS", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Zen mode_image.png" + }, + { + "attachmentId": "LX31yc6Jnksw", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Zen mode_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "s3YCWHBfmYuM", + "notePath": [ + "pOsGYCXsbNQG", + "s3YCWHBfmYuM" + ], + "title": "Quick Start", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "poXkQfguuA0U", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "WOcw2SLH6tbX", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "RDslemsQ6gCp", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "quick-start", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-run", + "isInheritable": false, + "position": 40 + } + ], + "format": "markdown", + "dataFileName": "Quick Start.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "KSZ04uQ2D1St", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St" + ], + "title": "Note Types", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-edit", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "attachments": [], + "dirFileName": "Note Types", + "children": [ + { + "isClone": false, + "noteId": "iPIMuisry3hd", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd" + ], + "title": "Text", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "FtmPLgGmgZVC", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "oRWfJLUbb7j7", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CoFPLs3dRlXc", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "S6Xx8QIWTV66", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "text-notes", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "sorted", + "value": "", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-note", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "sorted", + "value": "", + "isInheritable": false, + "position": 40 + } + ], + "format": "markdown", + "dataFileName": "Text.md", + "attachments": [ + { + "attachmentId": "lHWL7KkEhmM3", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Text_image.png" + }, + { + "attachmentId": "yGknq3nsWpef", + "title": "bx-edit-alt.svg", + "role": "image", + "mime": "image/svg+xml", + "position": 10, + "dataFileName": "Text_bx-edit-alt.svg" + } + ], + "dirFileName": "Text", + "children": [ + { + "isClone": false, + "noteId": "NwBbFdNZ9h7O", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "NwBbFdNZ9h7O" + ], + "title": "Admonitions", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-info-circle", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Admonitions.md", + "attachments": [ + { + "attachmentId": "do36b54XpmIC", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Admonitions_image.png" + }, + { + "attachmentId": "hUwfwkRSDeLJ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Admonitions_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "QxEyIjRBizuC", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "QxEyIjRBizuC" + ], + "title": "Code blocks", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "nRhnJkTT8cPs", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s8alTXmpFR61", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-code", + "isInheritable": false, + "position": 50 + } + ], + "format": "markdown", + "dataFileName": "Code blocks.md", + "attachments": [ + { + "attachmentId": "7HhhhyZ4AS0A", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Code blocks_image.png" + }, + { + "attachmentId": "DyHSLO958cdd", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Code blocks_image.png" + }, + { + "attachmentId": "kE8PPw7iyuu9", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Code blocks_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "veGu4faJErEM", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "veGu4faJErEM" + ], + "title": "Content language & Right-to-left support", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-align-right", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Content language & Right-to-le.md", + "attachments": [ + { + "attachmentId": "xIGmhxc0vBlC", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Content language & Right-t.png" + } + ] + }, + { + "isClone": false, + "noteId": "UYuUB1ZekNQU", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "UYuUB1ZekNQU" + ], + "title": "Formatting", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "nRhnJkTT8cPs", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Formatting.md", + "attachments": [ + { + "attachmentId": "7tX4ckOSF8jq", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Formatting_image.png" + }, + { + "attachmentId": "HP741oAz3ebU", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Formatting_image.png" + }, + { + "attachmentId": "yKVC2F773Mg7", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Formatting_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "nRhnJkTT8cPs", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "nRhnJkTT8cPs" + ], + "title": "Formatting toolbar", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-text", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Formatting toolbar.md", + "attachments": [ + { + "attachmentId": "CZ8ENj2LsBsA", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Formatting toolbar_image.png" + }, + { + "attachmentId": "iu9xb3VivIIl", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Formatting toolbar_image.png" + }, + { + "attachmentId": "MMeih4nJVgNk", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Formatting toolbar_image.png" + }, + { + "attachmentId": "SGaPJHzNyLLV", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "3_Formatting toolbar_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "mT0HEkOsz6i1", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "mT0HEkOsz6i1" + ], + "title": "Images", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "0vhv7lsOLy82", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "kBrnXNG3Hplm", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "images", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-image-alt", + "isInheritable": false, + "position": 30 + } + ], + "format": "markdown", + "dataFileName": "Images.md", + "attachments": [ + { + "attachmentId": "40jG4olRNAlc", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Images_image.png" + }, + { + "attachmentId": "bDkYm34QEH5a", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Images_image.png" + }, + { + "attachmentId": "Bi9LiB0eMbcH", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Images_image.png" + }, + { + "attachmentId": "dRgFtpOcHwke", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "3_Images_image.png" + }, + { + "attachmentId": "g7xB3E2Dva2q", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Images_image.png" + }, + { + "attachmentId": "Ilz9SuEj39RF", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Images_image.png" + }, + { + "attachmentId": "MTsRB4C0yvKX", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "6_Images_image.png" + }, + { + "attachmentId": "NZJRGKS6yDeg", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "7_Images_image.png" + }, + { + "attachmentId": "PUjxzv10IJkx", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "8_Images_image.png" + }, + { + "attachmentId": "qJXx7vPPD4JW", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "9_Images_image.png" + }, + { + "attachmentId": "SoDKgOmDoyc1", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Images_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "QEAPj01N5f7w", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "QEAPj01N5f7w" + ], + "title": "Links", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "N6O1qfBGcbFH", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "dPcRcDZwyGAO", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BCkXAVs63Ttv", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "links", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-link-alt", + "isInheritable": false, + "position": 40 + } + ], + "format": "markdown", + "dataFileName": "Links.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "S6Xx8QIWTV66", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "S6Xx8QIWTV66" + ], + "title": "Lists", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-list-ul", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Lists.md", + "attachments": [ + { + "attachmentId": "5cmICTYfg13g", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Lists_image.png" + }, + { + "attachmentId": "6jl7tboJfutt", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Lists_image.png" + }, + { + "attachmentId": "d4XfLoK5srYZ", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Lists_image.png" + }, + { + "attachmentId": "eL11eZMPwpmH", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "3_Lists_image.png" + }, + { + "attachmentId": "EnkTpdeLJ6Ft", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "4_Lists_image.png" + }, + { + "attachmentId": "If3k6Tt5cPBt", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "5_Lists_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "6f9hih2hXXZk", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "6f9hih2hXXZk" + ], + "title": "Code", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "QxEyIjRBizuC", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s8alTXmpFR61", + "isInheritable": false, + "position": 60 + }, + { + "type": "label", + "name": "shareAlias", + "value": "code-notes", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-code", + "isInheritable": false, + "position": 90 + } + ], + "format": "markdown", + "dataFileName": "Code.md", + "attachments": [ + { + "attachmentId": "hajUVeLs3EOM", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Code_image.png" + }, + { + "attachmentId": "iKJbcEUkME1a", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Code_image.png" + } + ], + "dirFileName": "Code", + "children": [ + { + "isClone": false, + "noteId": "CdNpE2pqjmI6", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "6f9hih2hXXZk", + "CdNpE2pqjmI6" + ], + "title": "Scripts", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "DVJl4l3T8EG2", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "RDslemsQ6gCp", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "5668rwcirq1t", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GPERMystNGTB", + "isInheritable": false, + "position": 80 + }, + { + "type": "label", + "name": "shareAlias", + "value": "scripts", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Scripts.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GLks18SNjxmC", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "6f9hih2hXXZk", + "GLks18SNjxmC" + ], + "title": "Script API", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "script-api", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Script API.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GPERMystNGTB", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "6f9hih2hXXZk", + "GPERMystNGTB" + ], + "title": "Events", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "events", + "isInheritable": false, + "position": 30 + } + ], + "format": "markdown", + "dataFileName": "Events.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MgibgPcfeuGz", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "6f9hih2hXXZk", + "MgibgPcfeuGz" + ], + "title": "Custom Widgets", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "3sCPPL0LEC1S", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "custom-widget", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Custom Widgets.md", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "m523cpzocqaD", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "m523cpzocqaD" + ], + "title": "Saved Search", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "rVtYANyVhE9U", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "saved-search", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-file-find", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Saved Search.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "joqzSrDccPKf", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "joqzSrDccPKf" + ], + "title": "Relation Map", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-network-chart", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Relation Map.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "bdUJEHsAPYQR", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "bdUJEHsAPYQR" + ], + "title": "Note Map", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-network-chart", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Note Map.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "HcABDtFCkbFN", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "HcABDtFCkbFN" + ], + "title": "Render Note", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-extension", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Render Note.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GTwFsgaA0lCt", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "GTwFsgaA0lCt" + ], + "title": "Book", + "notePosition": 120, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "book-note", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-book", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Book.md", + "attachments": [ + { + "attachmentId": "BmpgL4ol4jJo", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Book_image.png" + }, + { + "attachmentId": "lpq3QC1C5LWg", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Book_image.png" + } + ], + "dirFileName": "Book", + "children": [ + { + "isClone": false, + "noteId": "xWbu3jpNWapp", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "GTwFsgaA0lCt", + "xWbu3jpNWapp" + ], + "title": "Calendar View", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-calendar", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Calendar View.md", + "attachments": [ + { + "attachmentId": "37CfbqKYcOtd", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Calendar View_image.png" + }, + { + "attachmentId": "akAHcIEcGnWR", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Calendar View_image.png" + }, + { + "attachmentId": "AU7dnIevWPrz", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Calendar View_image.png" + }, + { + "attachmentId": "COiR1tnE86i1", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Calendar View_image.png" + }, + { + "attachmentId": "fOdCNTs2BuI0", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Calendar View_image.png" + }, + { + "attachmentId": "HfBu0m3WXtn2", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Calendar View_image.png" + }, + { + "attachmentId": "ho00OJTNrxVI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_Calendar View_image.png" + }, + { + "attachmentId": "irfNX8n4159U", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "7_Calendar View_image.png" + }, + { + "attachmentId": "KF56rdNuOwWd", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "8_Calendar View_image.png" + }, + { + "attachmentId": "oBWr5GL6cUAZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "9_Calendar View_image.png" + }, + { + "attachmentId": "oS6yUoQtfhpg", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Calendar View_image.png" + }, + { + "attachmentId": "u2c09UpZghff", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "11_Calendar View_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "s1aBHPd79XYj", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "s1aBHPd79XYj" + ], + "title": "Mermaid Diagrams", + "notePosition": 130, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "r44dpvA1xFu8", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "opAFABmyb3CU", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "mermaid-diagrams", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-selection", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Mermaid Diagrams.md", + "attachments": [], + "dirFileName": "Mermaid Diagrams", + "children": [ + { + "isClone": false, + "noteId": "opAFABmyb3CU", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "s1aBHPd79XYj", + "opAFABmyb3CU" + ], + "title": "ELK on", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "mermaid", + "mime": "text/plain", + "attributes": [], + "dataFileName": "ELK on.txt", + "attachments": [ + { + "attachmentId": "biyznKlYQ7my", + "title": "mermaid-export.svg", + "role": "image", + "mime": "image/svg+xml", + "position": 10, + "dataFileName": "ELK on_mermaid-export.svg" + } + ] + }, + { + "isClone": false, + "noteId": "r44dpvA1xFu8", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "s1aBHPd79XYj", + "r44dpvA1xFu8" + ], + "title": "ELK off", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "mermaid", + "mime": "text/plain", + "attributes": [], + "dataFileName": "ELK off.txt", + "attachments": [ + { + "attachmentId": "rQI7SXljnpJM", + "title": "mermaid-export.svg", + "role": "image", + "mime": "image/svg+xml", + "position": 10, + "dataFileName": "ELK off_mermaid-export.svg" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "grjYqerjn243", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "grjYqerjn243" + ], + "title": "Canvas", + "notePosition": 150, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-pen", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Canvas.md", + "attachments": [ + { + "attachmentId": "DC9fvvootwwZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Canvas_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "1vHRoWCEjj0L", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "1vHRoWCEjj0L" + ], + "title": "Web View", + "notePosition": 160, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-globe-alt", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Web View.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "gBbsAeiuUxI5", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "gBbsAeiuUxI5" + ], + "title": "Mind Map", + "notePosition": 170, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-sitemap", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Mind Map.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "81SGnPGMk7Xc", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "81SGnPGMk7Xc" + ], + "title": "Geo map", + "notePosition": 180, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-map-alt", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Geo map.md", + "attachments": [ + { + "attachmentId": "1f07O0Z25ZRr", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Geo map_image.png" + }, + { + "attachmentId": "3oh61qhNLu7D", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Geo map_image.png" + }, + { + "attachmentId": "6wUkw5RWE39e", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Geo map_image.png" + }, + { + "attachmentId": "aCSNn9QlgHFi", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Geo map_image.png" + }, + { + "attachmentId": "aCuXZY7WV4li", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Geo map_image.png" + }, + { + "attachmentId": "agH6yREFgsoU", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Geo map_image.png" + }, + { + "attachmentId": "AHyDUM6R5HeG", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_Geo map_image.png" + }, + { + "attachmentId": "CcjWLhE3KKfv", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "7_Geo map_image.png" + }, + { + "attachmentId": "DapDey8gMiFc", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "8_Geo map_image.png" + }, + { + "attachmentId": "fQy8R1vxKhwN", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "9_Geo map_image.png" + }, + { + "attachmentId": "gJ4Yz80jxcbn", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Geo map_image.png" + }, + { + "attachmentId": "Mx2xwNIk76ZS", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "11_Geo map_image.png" + }, + { + "attachmentId": "oaahbsMRbqd2", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "12_Geo map_image.png" + }, + { + "attachmentId": "pGf1p74KKGU4", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "13_Geo map_image.png" + }, + { + "attachmentId": "tfa1TRUatWEh", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "14_Geo map_image.png" + }, + { + "attachmentId": "USbvJ38T4AKA", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "15_Geo map_image.png" + }, + { + "attachmentId": "x6yBLIsY2LSv", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "16_Geo map_image.png" + }, + { + "attachmentId": "ZvTlu9WMd37z", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "17_Geo map_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "pKK96zzmvBGf", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf" + ], + "title": "Theme development", + "notePosition": 140, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-palette", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "attachments": [], + "dirFileName": "Theme development", + "children": [ + { + "isClone": false, + "noteId": "7NfNr5pZpVKV", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "7NfNr5pZpVKV" + ], + "title": "Creating a custom theme", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "WFGzWeUK6arS", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Creating a custom theme.md", + "attachments": [ + { + "attachmentId": "yJVfT7rjp4tI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Creating a custom theme_im.png" + } + ] + }, + { + "isClone": false, + "noteId": "WFGzWeUK6arS", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "WFGzWeUK6arS" + ], + "title": "Customize the Next theme", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "dataFileName": "Customize the Next theme.md", + "attachments": [ + { + "attachmentId": "3fAj97aV2noG", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Customize the Next theme_i.png" + } + ] + }, + { + "isClone": false, + "noteId": "WN5z4M8ASACJ", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "WN5z4M8ASACJ" + ], + "title": "Reference", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "d3fAXQ2diepH", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Reference.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "AlhDUqhENtH7", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "AlhDUqhENtH7" + ], + "title": "Custom app-wide CSS", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "dataFileName": "Custom app-wide CSS.md", + "attachments": [ + { + "attachmentId": "fkMLaf6reA6I", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Custom app-wide CSS_image.png" + }, + { + "attachmentId": "TIerrMjmeich", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Custom app-wide CSS_image.png" + }, + { + "attachmentId": "YUrNq5vsCwHe", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Custom app-wide CSS_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "k2Gc17NbaAwb", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb" + ], + "title": "Developer Guides", + "notePosition": 160, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxl-javascript", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "attachments": [], + "dirFileName": "Developer Guides", + "children": [ + { + "isClone": false, + "noteId": "yIhgI5H7A2Sm", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "yIhgI5H7A2Sm" + ], + "title": "Frontend Basics", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "SynTBQiBsdYJ", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "frontend-basics", + "isInheritable": false, + "position": 30 + } + ], + "format": "markdown", + "dataFileName": "Frontend Basics.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "SynTBQiBsdYJ", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "SynTBQiBsdYJ" + ], + "title": "Widget Basics", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "widget-basics", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Widget Basics.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "es8OU2GuguFU", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "es8OU2GuguFU" + ], + "title": "Examples", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "attachments": [], + "dirFileName": "Examples", + "children": [ + { + "isClone": false, + "noteId": "7kZPMD0uFwkH", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "es8OU2GuguFU", + "7kZPMD0uFwkH" + ], + "title": "Downloading responses from Google Forms", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "dataFileName": "Downloading responses from Goo.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "DL92EjAaXT26", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "es8OU2GuguFU", + "DL92EjAaXT26" + ], + "title": "Using promoted attributes to configure scripts", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "dataFileName": "Using promoted attributes to c.md", + "attachments": [ + { + "attachmentId": "7P3jzVEa1mk7", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Using promoted attributes .png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "CXny4YWKsD7z", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z" + ], + "title": "REST API", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "attachments": [], + "dirFileName": "REST API", + "children": [ + { + "isClone": false, + "noteId": "cqCjxpN8NhbH", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "cqCjxpN8NhbH" + ], + "title": "ETAPI", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "attachments": [], + "dirFileName": "ETAPI", + "children": [ + { + "isClone": false, + "noteId": "9qPsTWBorUhQ", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "cqCjxpN8NhbH", + "9qPsTWBorUhQ" + ], + "title": "API Reference", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "webView", + "mime": "", + "attributes": [ + { + "type": "label", + "name": "webViewSrc", + "value": "/etapi/docs", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "API Reference.dat", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "0vTSyvhPTAOz", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "0vTSyvhPTAOz" + ], + "title": "Internal API", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "attachments": [], + "dirFileName": "Internal API", + "children": [ + { + "isClone": false, + "noteId": "z8O2VG4ZZJD7", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "0vTSyvhPTAOz", + "z8O2VG4ZZJD7" + ], + "title": "API Reference", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "webView", + "mime": "", + "attributes": [ + { + "type": "label", + "name": "webViewSrc", + "value": "/api/docs", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "API Reference.dat", + "attachments": [] + } + ] + } + ] + } + ] + }, { "isClone": false, "noteId": "i6dbnitykE5D", @@ -6485,7 +6202,7 @@ "i6dbnitykE5D" ], "title": "FAQ", - "notePosition": 170, + "notePosition": 210, "prefix": null, "isExpanded": false, "type": "text", @@ -6522,24 +6239,31 @@ { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "wy8So3yZZlH9", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "tAassRL4RSQL", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "cbkrhQjrkKrh", + "value": "tAassRL4RSQL", "isInheritable": false, "position": 70 }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 80 + }, { "type": "label", "name": "shareAlias", @@ -6567,7 +6291,7 @@ "BgmBlOIl72jZ" ], "title": "Troubleshooting", - "notePosition": 180, + "notePosition": 220, "prefix": null, "isExpanded": false, "type": "text", @@ -6824,7 +6548,7 @@ "Wxt3vVlxlYLi" ], "title": "Attachments", - "notePosition": 190, + "notePosition": 240, "prefix": null, "isExpanded": false, "type": "text", diff --git a/docs/User Guide/User Guide/Advanced Usage/1_Attributes_image.png b/docs/User Guide/User Guide/Advanced Usage/1_Attributes_image.png deleted file mode 100644 index ecb5f2d6d..000000000 Binary files a/docs/User Guide/User Guide/Advanced Usage/1_Attributes_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/2_Day Notes_image.png b/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/2_Day Notes_image.png deleted file mode 100644 index 7623131d6..000000000 Binary files a/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/2_Day Notes_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/1_Manually altering the data.png b/docs/User Guide/User Guide/Advanced Usage/Database/1_Manually altering the data.png deleted file mode 100644 index c6681695a..000000000 Binary files a/docs/User Guide/User Guide/Advanced Usage/Database/1_Manually altering the data.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/2_Manually altering the data.png b/docs/User Guide/User Guide/Advanced Usage/Database/2_Manually altering the data.png deleted file mode 100644 index a6bbeaaf9..000000000 Binary files a/docs/User Guide/User Guide/Advanced Usage/Database/2_Manually altering the data.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/3_Manually altering the data.png b/docs/User Guide/User Guide/Advanced Usage/Database/3_Manually altering the data.png deleted file mode 100644 index 32a91fc2f..000000000 Binary files a/docs/User Guide/User Guide/Advanced Usage/Database/3_Manually altering the data.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/4_Manually altering the data.png b/docs/User Guide/User Guide/Advanced Usage/Database/4_Manually altering the data.png deleted file mode 100644 index 973cc4d6c..000000000 Binary files a/docs/User Guide/User Guide/Advanced Usage/Database/4_Manually altering the data.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/5_Manually altering the data.png b/docs/User Guide/User Guide/Advanced Usage/Database/5_Manually altering the data.png deleted file mode 100644 index 6f32f76ec..000000000 Binary files a/docs/User Guide/User Guide/Advanced Usage/Database/5_Manually altering the data.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/6_Manually altering the data.png b/docs/User Guide/User Guide/Advanced Usage/Database/6_Manually altering the data.png deleted file mode 100644 index 0ef3cef45..000000000 Binary files a/docs/User Guide/User Guide/Advanced Usage/Database/6_Manually altering the data.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/1_UI Elements_image.png b/docs/User Guide/User Guide/Basic Concepts/1_UI Elements_image.png deleted file mode 100644 index 7a30a84df..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/1_UI Elements_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png b/docs/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png index d2698b715..d23b671da 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png and b/docs/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png b/docs/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png index 0c9f26de0..530d76afb 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png and b/docs/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png b/docs/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png index d23b671da..9f693475f 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png and b/docs/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts/4_Zen mode_image.png b/docs/User Guide/User Guide/Basic Concepts/4_Zen mode_image.png deleted file mode 100644 index c1a3e8124..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/4_Zen mode_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/5_Zen mode_image.png b/docs/User Guide/User Guide/Basic Concepts/5_Zen mode_image.png deleted file mode 100644 index 530d76afb..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/5_Zen mode_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/6_Zen mode_image.png b/docs/User Guide/User Guide/Basic Concepts/6_Zen mode_image.png deleted file mode 100644 index 9f693475f..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/6_Zen mode_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/7_Zen mode_image.png b/docs/User Guide/User Guide/Basic Concepts/7_Zen mode_image.png deleted file mode 100644 index 675a068aa..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/7_Zen mode_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.md b/docs/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.md index 26136cb78..3815c2477 100644 --- a/docs/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.md +++ b/docs/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.md @@ -15,4 +15,4 @@ After importing the ENEX file, go over the imported notes and resources to be su All resources (except for images) are created as note's attachments. -HTML inside ENEX files is not exactly valid so some formatting maybe broken or lost. You can report major problems into [Trilium issue tracker](https://github.com/TriliumNext/Notes/issues). %%{WARNING}%% \ No newline at end of file +HTML inside ENEX files is not exactly valid so some formatting maybe broken or lost. You can report major problems into [Trilium issue tracker](https://github.com/TriliumNext/Notes/issues). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts/Navigation/1_Note Navigation_image.png b/docs/User Guide/User Guide/Basic Concepts/Navigation/1_Note Navigation_image.png deleted file mode 100644 index 2ea269012..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/Navigation/1_Note Navigation_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery_preview.jpg b/docs/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery_preview.jpg deleted file mode 100644 index 5b2eb96ff..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery_preview.jpg and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/1_Global menu_image.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements/1_Global menu_image.png deleted file mode 100644 index 7a30a84df..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements/1_Global menu_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/1_Vertical and horizontal la.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements/1_Vertical and horizontal la.png index 966a010f0..3428db3b0 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements/1_Vertical and horizontal la.png and b/docs/User Guide/User Guide/Basic Concepts/UI Elements/1_Vertical and horizontal la.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/2_Global menu_image.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements/2_Global menu_image.png deleted file mode 100644 index 957a04b16..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements/2_Global menu_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/2_Vertical and horizontal la.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements/2_Vertical and horizontal la.png index 3428db3b0..17a6d2885 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements/2_Vertical and horizontal la.png and b/docs/User Guide/User Guide/Basic Concepts/UI Elements/2_Vertical and horizontal la.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/3_Vertical and horizontal la.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements/3_Vertical and horizontal la.png index 17a6d2885..2f200ca85 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements/3_Vertical and horizontal la.png and b/docs/User Guide/User Guide/Basic Concepts/UI Elements/3_Vertical and horizontal la.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/4_Vertical and horizontal la.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements/4_Vertical and horizontal la.png index 2f200ca85..b719b681e 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements/4_Vertical and horizontal la.png and b/docs/User Guide/User Guide/Basic Concepts/UI Elements/4_Vertical and horizontal la.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/5_Vertical and horizontal la.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements/5_Vertical and horizontal la.png index b719b681e..dde2ff9f1 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements/5_Vertical and horizontal la.png and b/docs/User Guide/User Guide/Basic Concepts/UI Elements/5_Vertical and horizontal la.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/6_Vertical and horizontal la.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements/6_Vertical and horizontal la.png deleted file mode 100644 index dde2ff9f1..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements/6_Vertical and horizontal la.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.md b/docs/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.md index 54e8f4ca0..77105f456 100644 --- a/docs/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.md +++ b/docs/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.md @@ -1,7 +1,7 @@ # Global menu The global menu configures the current window (zoom, keeping the window on top) and offers access to some more advanced options. -![](2_Global%20menu_image.png) +![](Global%20menu_image.png) ## Accessing the global menu diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png index 37a565d3f..957a04b16 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png and b/docs/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal la.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal la.png index 0288d25c4..966a010f0 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal la.png and b/docs/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal la.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal layout.md b/docs/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal layout.md index 58354ec53..2699374d6 100644 --- a/docs/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal layout.md +++ b/docs/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal layout.md @@ -10,10 +10,10 @@ The vertical layout is Trilium's original layout: * The [Launcher Bar](Launch%20Bar.md) is positioned on the left side of the screen, with buttons being laid out vertically. * The tab bar is at the top, but to the right of the [Note Tree](Note%20Tree.md). * The [Quick search](Quick%20search.md) is at the top of the [Note Tree](Note%20Tree.md). -* The [Note Tree](Note%20Tree.md) can be collapsed by pressing the ![](6_Vertical%20and%20horizontal%20la.png) button at the bottom of the [Launcher Bar](Launch%20Bar.md). -* The [Global menu](Global%20menu.md) can be accessed via the ![](5_Vertical%20and%20horizontal%20la.png) icon at the top of the [Launcher Bar](Launch%20Bar.md). +* The [Note Tree](Note%20Tree.md) can be collapsed by pressing the ![](5_Vertical%20and%20horizontal%20la.png) button at the bottom of the [Launcher Bar](Launch%20Bar.md). +* The [Global menu](Global%20menu.md) can be accessed via the ![](4_Vertical%20and%20horizontal%20la.png) icon at the top of the [Launcher Bar](Launch%20Bar.md). -![](4_Vertical%20and%20horizontal%20la.png) +![](3_Vertical%20and%20horizontal%20la.png) ### Horizontal layout @@ -22,10 +22,10 @@ The horizontal layout is a more traditional layout, since it bears similarity wi * The [Launcher Bar](Launch%20Bar.md) is at the top of the screen, with the buttons laid horizontally. * The tab bar is at the top of the screen, but now covers the entirety of the width, allowing for more tabs to be displayed at once. * The [Quick search](Quick%20search.md) is now part of the [Launcher Bar](Launch%20Bar.md). It can be moved around according to preference and even removed if needed. -* The [Note Tree](Note%20Tree.md) can be collapsed by pressing the small ![](2_Vertical%20and%20horizontal%20la.png) button to the left of the first tab. -* The [Global menu](Global%20menu.md) can be accessed via the ![](1_Vertical%20and%20horizontal%20la.png) button at the end of the [Launcher Bar](Launch%20Bar.md). +* The [Note Tree](Note%20Tree.md) can be collapsed by pressing the small ![](1_Vertical%20and%20horizontal%20la.png) button to the left of the first tab. +* The [Global menu](Global%20menu.md) can be accessed via the ![](Vertical%20and%20horizontal%20la.png) button at the end of the [Launcher Bar](Launch%20Bar.md). -![](3_Vertical%20and%20horizontal%20la.png) +![](2_Vertical%20and%20horizontal%20la.png) ## Changing the layout diff --git a/docs/User Guide/User Guide/Basic Concepts/UI Elements_image.png b/docs/User Guide/User Guide/Basic Concepts/UI Elements_image.png deleted file mode 100644 index 37a565d3f..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts/UI Elements_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts/Zen mode.md b/docs/User Guide/User Guide/Basic Concepts/Zen mode.md index 8e61ab68c..8e1d15901 100644 --- a/docs/User Guide/User Guide/Basic Concepts/Zen mode.md +++ b/docs/User Guide/User Guide/Basic Concepts/Zen mode.md @@ -1,11 +1,11 @@ # Zen mode -![](6_Zen%20mode_image.png) +![](3_Zen%20mode_image.png) Screenshot of Zen Mode activated on a Windows 11 system with native title bar off and background effects on. When Zen Mode is activated (pictured on the side), most of the user interface of Trilium is hidden away in order to be able to focus on the content, whether it's for reading or writing. -![](5_Zen%20mode_image.png) +![](2_Zen%20mode_image.png) Screenshot of the Zen Mode option in the global menu. @@ -23,7 +23,7 @@ Do note that, by design, activating or deactivating the Zen Mode applies only to If “Native title bar” is activated, then the operating system's default title bar can be used to drag the window around. If deactivated, the window can still be moved by dragging the mouse across the top part of the window where the note titles are. -![](3_Zen%20mode_image.png) +![](1_Zen%20mode_image.png) Screenshot of two notes side-by-side while Zen Mode is active, on Windows 11 with background effects off. diff --git a/docs/User Guide/User Guide/FAQ.md b/docs/User Guide/User Guide/FAQ.md index b9ce905dd..da5cfa02a 100644 --- a/docs/User Guide/User Guide/FAQ.md +++ b/docs/User Guide/User Guide/FAQ.md @@ -1,23 +1,17 @@ # FAQ -## Mac OS support +## macOS support -Originally, desktop builds of Trilium Notes has been available for Windows & Linux, but there has been a considerable demand for macOS build. +Originally, Trilium Notes considered the macOS build unsupported. TriliumNext commits to make the experience on macOS as good as possible. -So I made one, but I underestimated the differences and specifics of Mac platform which seems to require special handling in several places. My lack of knowledge and frankly willingness to learn & code Mac specific functionality resulted in a current state where [Trilium does not integrate well into the OS](https://github.com/TriliumNext/Notes/issues/511)  +if you find any platform-specific issues, feel free to [report them](Troubleshooting/Reporting%20issues.md). -%%{WARNING}%%. +## Translation / localisation support -macOS build is from now on considered "unsupported". I will strive to keep it fundamentally functional, but I won't work on Mac specific features or integrations. Note that this is more of an acknowledgment of an existing state rather than sudden change of direction. +The original Trilium Notes application did not support multiple languages. Since we believe that internationalisation is a core part of an application, we have added support for it. -Of course, PRs are welcome. +Contributions to translations are welcome. -## Translation / localization support - -Trilium is currently available only in English. Translation to other languages is not planned in the near/medium term because it brings a significant maintenance overhead. This decision might be revisited once Trilium stabilizes into a more mature product. - -For Chinese, there's an unofficial fork [here](https://github.com/Nriver/trilium-translation). Use at your own risk. - -## Multi user support +## Multi-user support Common request is to allow multiple users collaborate, share notes etc. So far I'm resisting this because of these reasons: @@ -41,7 +35,9 @@ No. These general purpose sync apps are not suitable to sync database files which are open and being worked on by another application. The result is that they will corrupt the database file, resulting in data loss and this message in the Trilium logs: -> SqliteError: database disk image is malformed +``` +SqliteError: database disk image is malformed +``` The only supported way to sync Trilium's data across the network is to use a [sync/web server](Installation%20%26%20Setup/Synchronization.md). diff --git a/docs/User Guide/User Guide/Installation & Setup/Backup.md b/docs/User Guide/User Guide/Installation & Setup/Backup.md index 0f42dd79a..a67971a49 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Backup.md +++ b/docs/User Guide/User Guide/Installation & Setup/Backup.md @@ -18,7 +18,7 @@ Let's assume you want to restore the weekly backup, here's how to do it: * find [data directory](Data%20directory.md) Trilium uses - easy way is to open "About Trilium Notes" from "Menu" in upper left corner and looking at "data directory" * I'll refer to `~/trilium-data` as data directory from now on -* find `~/trilium-data/backup/backup-weekly.db` - this is the [document](#root/xjSsCcvVZf6H)backup +* find `~/trilium-data/backup/backup-weekly.db` - this is the [document](#root/xjSsCcvVZf6H) backup * at this point stop/kill Trilium * delete `~/trilium-data/document.db`, `~/trilium-data/document.db-wal` and `~/trilium-data/document.db-shm` (latter two files are auto generated) * copy and rename this `~/trilium-data/backup/backup-weekly.db` to `~/trilium-data/document.db` @@ -40,4 +40,4 @@ noBackup=true You can also review the [configuration](../Advanced%20Usage/Configuration%20\(config.ini%20or%20e.md) file to provide all `config.ini` values as environment variables instead. -See [sample config](https://github.com/TriliumNext/Notes/blob/master/config-sample.ini). %%{WARNING}%% \ No newline at end of file +See [sample config](https://github.com/TriliumNext/Notes/blob/master/config-sample.ini). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.md index 1663494df..53d0d9dd2 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.md +++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.md @@ -9,7 +9,8 @@ If you need help installing Docker, reference the [Docker Installation Docs](htt **Note:** Trilium's Docker container requires root privileges to operate correctly. -> \[!WARNING\] If you're using a SMB/CIFS share or folder as your Trilium data directory, [you'll need](https://github.com/TriliumNext/Notes/issues/415#issuecomment-2344824400) to add the mount options of `nobrl` and `noperm` when mounting your SMB share. +> [!WARNING] +> If you're using a SMB/CIFS share or folder as your Trilium data directory, [you'll need](https://github.com/TriliumNext/Notes/issues/415#issuecomment-2344824400) to add the mount options of `nobrl` and `noperm` when mounting your SMB share. ## Running with Docker Compose diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.md index e78ea9ae5..8444cc185 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.md +++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.md @@ -5,7 +5,7 @@ The recommended way is to use a Helm chart. ## Root privileges -> \[!NOTE\] +> [!NOTE] > The Trilium container at this time needs to be run with root privileges. It will swap to UID and GID `1000:1000` to run the `node` process after execution though, so the main process doesn't run with root privileges. The Trilium docker container needs to be run with root privileges. The node process inside the container will be started with reduced privileges (uid:gid 1000:1000) after some initialization logic. Please make sure that you don't use a security context (PodSecurityContext) which changes the user ID. To use a different uid:gid for file storage and the application, please use the `USER_UID` & `USER_GID` environment variables. diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.md index 95f178c29..7f1778557 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.md +++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.md @@ -25,10 +25,12 @@ sudo apt install libpng16-16 libpng-dev pkg-config autoconf libtool build-essent ### Download -You can either download source code zip/tar from [https://github.com/TriliumNext/Notes/releases/latest\]\]](https://github.com/TriliumNext/Notes/releases/latest%5D%5D) %%{WARNING}%%or clone git repository **from stable branch** with +You can either download source code zip/tar from [https://github.com/TriliumNext/Notes/releases/latest](https://github.com/TriliumNext/Notes/releases/latest). + +For the latest version including betas, clone Git repository **from** `**master**` **branch** with: ``` -git clone -b stable https://github.com/triliumnext/notes.git %%{WARNING}%% +git clone -b master https://github.com/triliumnext/notes.git ``` ## Installation diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.md index 576c78891..c0842534e 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.md +++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.md @@ -3,9 +3,9 @@ This is essentially Trilium sources + node modules + node.js runtime packaged in ## Steps -* ssh into your server -* use `wget` (or `curl` or whatever) to download latest [trilium-linux-x64-server-\[VERSION\].xz](https://github.com/TriliumNext/Notes/releases/latest)%%{WARNING}%% (notice -server suffix) on your server -* unpack the archive, e.g. using `tar -xf -d trilium-linux-x64-server-[VERSION].tar.xz` +* SSH into your server +* use `wget` (or `curl`) to download latest `TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz` (notice `-Server` suffix) on your server. +* unpack the archive, e.g. using `tar -xf -d TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz` * `cd trilium-linux-x64-server` * `./trilium.sh` * you can open the browser and open http://\[your-server-hostname\]:8080 and you should see Trilium initialization page @@ -20,7 +20,7 @@ The problem with above steps is that once you close the SSH connection, the Tril * After downloading, extract and move Trilium: ``` -tar -xvf trilium-linux-x64-server-[VERSION].tar.xz +tar -xvf TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz sudo mv trilium-linux-x64-server /opt/trilium ``` diff --git a/docs/User Guide/User Guide/Installation & Setup/Web Clipper.md b/docs/User Guide/User Guide/Installation & Setup/Web Clipper.md index 1124e7346..f88570db2 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Web Clipper.md +++ b/docs/User Guide/User Guide/Installation & Setup/Web Clipper.md @@ -24,7 +24,7 @@ If there's multiple clippings from the same page (and on the same day), then the **Extension is available from:** * [Project release page](https://github.com/TriliumNext/web-clipper/releases) - .xpi for Firefox and .zip for Chromium based browsers. -* %%{WARNING}%% [Chrome Web Store](https://chromewebstore.google.com/detail/trilium-web-clipper/dfhgmnfclbebfobmblelddiejjcijbjm) +* [Chrome Web Store](https://chromewebstore.google.com/detail/trilium-web-clipper/dfhgmnfclbebfobmblelddiejjcijbjm) ## Configuration diff --git a/docs/User Guide/User Guide/Note Types/14_Geo map_image.png b/docs/User Guide/User Guide/Note Types/14_Geo map_image.png index 099642560..debb47ce3 100644 Binary files a/docs/User Guide/User Guide/Note Types/14_Geo map_image.png and b/docs/User Guide/User Guide/Note Types/14_Geo map_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/15_Geo map_image.png b/docs/User Guide/User Guide/Note Types/15_Geo map_image.png index debb47ce3..23209e0ad 100644 Binary files a/docs/User Guide/User Guide/Note Types/15_Geo map_image.png and b/docs/User Guide/User Guide/Note Types/15_Geo map_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/16_Geo map_image.png b/docs/User Guide/User Guide/Note Types/16_Geo map_image.png index 23209e0ad..9bb397516 100644 Binary files a/docs/User Guide/User Guide/Note Types/16_Geo map_image.png and b/docs/User Guide/User Guide/Note Types/16_Geo map_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/17_Geo map_image.png b/docs/User Guide/User Guide/Note Types/17_Geo map_image.png index 9bb397516..4e32110f8 100644 Binary files a/docs/User Guide/User Guide/Note Types/17_Geo map_image.png and b/docs/User Guide/User Guide/Note Types/17_Geo map_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/18_Geo map_image.png b/docs/User Guide/User Guide/Note Types/18_Geo map_image.png deleted file mode 100644 index 4e32110f8..000000000 Binary files a/docs/User Guide/User Guide/Note Types/18_Geo map_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/2_Code_image.png b/docs/User Guide/User Guide/Note Types/2_Code_image.png deleted file mode 100644 index 21216c101..000000000 Binary files a/docs/User Guide/User Guide/Note Types/2_Code_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png index d588ed568..e050184a7 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png index acf382206..53ac5632f 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png deleted file mode 100644 index 23a383270..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png deleted file mode 100644 index 2dea53b64..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png deleted file mode 100644 index e050184a7..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Book/15_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/15_Calendar View_image.png deleted file mode 100644 index 46698faac..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Book/15_Calendar View_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Book/16_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/16_Calendar View_image.png deleted file mode 100644 index d3d64f75c..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Book/16_Calendar View_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Book/17_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/17_Calendar View_image.png deleted file mode 100644 index 53ac5632f..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Book/17_Calendar View_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Book/18_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/18_Calendar View_image.png deleted file mode 100644 index aa9e445ad..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Book/18_Calendar View_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Book/19_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/19_Calendar View_image.png deleted file mode 100644 index b594af6a6..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Book/19_Calendar View_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png index d8d8f87c1..fceb0563c 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png index fceb0563c..d46f327a2 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png index d46f327a2..71d6c38f1 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png index 052cddb18..57964953a 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png index 71d6c38f1..7e97245a6 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png index 57964953a..d588ed568 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png index f60aa0acc..acf382206 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png index 71f7d2dc3..23a383270 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png b/docs/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png index 7e97245a6..2dea53b64 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png and b/docs/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Book/Calendar View.md b/docs/User Guide/User Guide/Note Types/Book/Calendar View.md index 03dcff25e..77b6ad014 100644 --- a/docs/User Guide/User Guide/Note Types/Book/Calendar View.md +++ b/docs/User Guide/User Guide/Note Types/Book/Calendar View.md @@ -1,16 +1,23 @@ # Calendar View -![](6_Calendar%20View_image.png) +![](4_Calendar%20View_image.png) The Calendar view of Book notes will display each child note in a calendar that has a start date and optionally an end date, as an event. +The Calendar view has multiple display modes: + +* Week view, where all the 7 days of the week (or 5 if the weekends are hidden) are displayed in columns. This mode allows entering and displaying time-specific events, not just all-day events. +* Month view, where the entire month is displayed and all-day events can be inserted. Both time-specific events and all-day events are listed. +* Year view, which displays the entire year for quick reference. +* List view, which displays all the events of a given month in sequence. + Unlike other Book view types, the Calendar view also allows some kind of interaction, such as moving events around as well as creating new ones. ## Creating a calendar | | | | | --- | --- | --- | -| 1 | ![](3_Calendar%20View_image.png) | The Calendar View works only for Book note types. To create a new note, right click on the note tree on the left and select Insert note after, or Insert child note and then select _Book_. | -| 2 | ![](5_Calendar%20View_image.png) | Once created, the “View type” of the Book needs changed to “Calendar”, by selecting the “Book Properties” tab in the ribbon. | +| 1 | ![](2_Calendar%20View_image.png) | The Calendar View works only for Book note types. To create a new note, right click on the note tree on the left and select Insert note after, or Insert child note and then select _Book_. | +| 2 | ![](3_Calendar%20View_image.png) | Once created, the “View type” of the Book needs changed to “Calendar”, by selecting the “Book Properties” tab in the ribbon. | ## Creating a new event/note @@ -23,7 +30,7 @@ Unlike other Book view types, the Calendar view also allows some kind of interac ## Interacting with events * Hovering the mouse over an event will display information about the note. - ![](11_Calendar%20View_image.png) + ![](7_Calendar%20View_image.png) * Left clicking the event will go to that note. Middle clicking will open the note in a new tab and right click will offer more options including opening the note in a new split or window. * Drag and drop an event on the calendar to move it to another day. * The length of an event can be changed by placing the mouse to the right edge of the event and dragging the mouse around. @@ -32,11 +39,7 @@ Unlike other Book view types, the Calendar view also allows some kind of interac The following attributes can be added to the book type: -| Name | Description | -| --- | --- | -| `#calendar:hideWeekends` | When present (regardless of value), it will hide Saturday and Sundays from the calendar. | -| `#calendar:weekNumbers` | When present (regardless of value), it will show the number of the week on the calendar. | -| `~child:template` | Defines the template for newly created notes in the calendar (via dragging or clicking). | +
NameDescription
#calendar:hideWeekendsWhen present (regardless of value), it will hide Saturday and Sundays from the calendar.
#calendar:weekNumbersWhen present (regardless of value), it will show the number of the week on the calendar.
#calendar:view

Which view to display in the calendar:

  • timeGridWeek for the week view;
  • dayGridMonth for the month view;
  • multiMonthYear for the year view;
  • listMonth for the list view.

Any other value will be dismissed and the default view (month) will be used instead.

The value of this label is automatically updated when changing the view using the UI buttons.

~child:templateDefines the template for newly created notes in the calendar (via dragging or clicking).
In addition, the first day of the week can be either Sunday or Monday and can be adjusted from the application settings. @@ -48,27 +51,35 @@ For each note of the calendar, the following attributes can be used: | --- | --- | | `#startDate` | The date the event starts, which will display it in the calendar. The format is `YYYY-MM-DD` (year, month and day separated by a minus sign). | | `#endDate` | Similar to `startDate`, mentions the end date if the event spans across multiple days. The date is inclusive, so the end day is also considered. The attribute can be missing for single-day events. | +| `#startTime` | The time the event starts at. If this value is missing, then the event is considered a full-day event. The format is `HH:MM` (hours in 24-hour format and minutes). | +| `#endTime` | Similar to `startTime`, it mentions the time at which the event ends (in relation with `endDate` if present, or `startDate`). | | `#color` | Displays the event with a specified color (named such as `red`, `gray` or hex such as `#FF0000`). This will also change the color of the note in other places such as the note tree. | | `#calendar:color` | Similar to `#color`, but applies the color only for the event in the calendar and not for other places such as the note tree. | | `#iconClass` | If present, the icon of the note will be displayed to the left of the event title. | -| `#calendar:title` | Changes the title of an event to point to an attribute of the note other than the title, either a label (e.g. `#assignee`) or a relation (e.g. `~for`). See _Advanced use-cases_ for more information. | -| `#calendar:promotedAttributes` | Allows displaying the value of one or more promoted attributes in the calendar like this: ![](13_Calendar%20View_image.png)

`
#label:weight="promoted,number,single,precision=1"
#label:mood="promoted,alias=Mood,single,text"
#calendar:promotedAttributes="label:weight,label:mood"
`

It can also be used with relations, case in which it will display the title of the target note:

`
#relation:assignee="promoted,alias=Assignee,single,text"
#calendar:promotedAttributes="relation:assignee"
~assignee=@My assignee 
` | -| `#calendar:startDate` | Allows using a different label to represent the start date, other than `#startDate` (e.g. `#expiryDate`). The label name must be prefixed with `#`. If the label is not defined for a note, the default will be used instead. | -| `#calendar:endDate` | Allows using a different label to represent the start date, other than `#endDate`. The label name must be prefixed with `#`. If the label is not defined for a note, the default will be used instead. | +| `#calendar:title` | Changes the title of an event to point to an attribute of the note other than the title, can either a label or a relation (without the `#` or `~` symbol). See _Use-cases_ for more information. | +| `#calendar:displayedAttributes` | Allows displaying the value of one or more attributes in the calendar like this:   

![](9_Calendar%20View_image.png)  

`#weight="70" #Mood="Good" #calendar:displayedAttributes="weight,Mood"` 

It can also be used with relations, case in which it will display the title of the target note:  

`~assignee=@My assignee #calendar:displayedAttributes="assignee"` | +| `#calendar:startDate` | Allows using a different label to represent the start date, other than `startDate` (e.g. `expiryDate`). The label name **must not be** prefixed with `#`. If the label is not defined for a note, the default will be used instead. | +| `#calendar:endDate` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the end date. | +| `#calendar:startTime` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the start time. | +| `#calendar:endTime` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the end time. | ## How the calendar works -![](17_Calendar%20View_image.png)The calendar displays all the child notes of the book that have a `#startDate`. An `#endDate` can optionally be added. +![](11_Calendar%20View_image.png) + +The calendar displays all the child notes of the book that have a `#startDate`. An `#endDate` can optionally be added. If editing the start date and end date from the note itself is desirable, the following attributes can be added to the book note: ``` -#viewType=calendar #label:startDate(inheritable)="promoted,alias=Start Date,single,date" #label:endDate(inheritable)="promoted,alias=End Date,single,date" #hidePromotedAttributes +#viewType=calendar #label:startDate(inheritable)="promoted,alias=Start Date,single,date" +#label:endDate(inheritable)="promoted,alias=End Date,single,date" +#hidePromotedAttributes ``` This will result in: -![](14_Calendar%20View_image.png) +![](10_Calendar%20View_image.png) When not used in a Journal, the calendar is recursive. That is, it will look for events not just in its child notes but also in the children of these child notes. @@ -85,30 +96,28 @@ Based on the `#calendarRoot` (or `#workspaceCalendarRoot`) attribute, the calend * Clicking on the empty space on a date will automatically open that day's note or create it if it does not exist. * Direct children of a day note will be displayed on the calendar despite not having a `dateNote` attribute. Children of the child notes will not be displayed. -![](12_Calendar%20View_image.png) +![](8_Calendar%20View_image.png) ### Using a different attribute as event title By default, events are displayed on the calendar by their note title. However, it is possible to configure a different attribute to be displayed instead. -To do so, assign `#calendar:title` to the child note (not the calendar/book note), with the value being `#name` where `name` can be any label. The attribute can also come through inheritance such as a template attribute. If the note does not have the requested label, the title of the note will be used instead. +To do so, assign `#calendar:title` to the child note (not the calendar/book note), with the value being `name` where `name` can be any label (make not to add the `#` prefix). The attribute can also come through inheritance such as a template attribute. If the note does not have the requested label, the title of the note will be used instead. -| | | -| --- | --- | -| ![](7_Calendar%20View_image.png) | ![](9_Calendar%20View_image.png) | +
  
#startDate=2025-02-11 #endDate=2025-02-13 #name="My vacation" #calendar:title="name"
### Using a relation attribute as event title -Similarly to using an attribute, use `#calendar:title` and set it to `~name` where `name` is the name of the relation to use. +Similarly to using an attribute, use `#calendar:title` and set it to `name` where `name` is the name of the relation to use. Moreover, if there are more relations of the same name, they will be displayed as multiple events coming from the same note. | | | | --- | --- | -| ![](8_Calendar%20View_image.png) | ![](10_Calendar%20View_image.png) | +| `#startDate=2025-02-14 #endDate=2025-02-15 ~for=@John Smith ~for=@Jane Doe #calendar:title="for"` | ![](6_Calendar%20View_image.png) | Note that it's even possible to have a `#calendar:title` on the target note (e.g. “John Smith”) which will try to render an attribute of it. Note that it's not possible to use a relation here as well for safety reasons (an accidental recursion  of attributes could cause the application to loop infinitely). | | | | --- | --- | -| ![](15_Calendar%20View_image.png) | ![](2_Calendar%20View_image.png) | \ No newline at end of file +| `#calendar:title="shortName" #shortName="John S."` | ![](1_Calendar%20View_image.png) | \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Geo map.md b/docs/User Guide/User Guide/Note Types/Geo map.md index 0a785f1f1..f6b933d98 100644 --- a/docs/User Guide/User Guide/Note Types/Geo map.md +++ b/docs/User Guide/User Guide/Note Types/Geo map.md @@ -17,16 +17,16 @@ The position on the map and the zoom are saved inside the map note and restored | | | | | --- | --- | --- | -| 1 | | To create a marker, first navigate to the desired point on the map. Then press the ![](16_Geo%20map_image.png)button on the top-right of the map. 

If the button is not visible, make sure the button section is visible by pressing the chevron button ( ![](2_Geo%20map_image.png)) in the top-right of the map. | +| 1 | | To create a marker, first navigate to the desired point on the map. Then press the ![](15_Geo%20map_image.png)button on the top-right of the map. 

If the button is not visible, make sure the button section is visible by pressing the chevron button ( ![](2_Geo%20map_image.png)) in the top-right of the map. | | 2 | ![](3_Geo%20map_image.png) | Once pressed, the map will enter in the insert mode, as illustrated by the notification. 

Simply click the point on the map where to place the marker, or the Escape key to cancel. | | 3 | ![](9_Geo%20map_image.png) | Enter the name of the marker/note to be created. | -| 4 | ![](17_Geo%20map_image.png) | Once confirmed, the marker will show up on the map and it will also be displayed as a child note of the map. | +| 4 | ![](16_Geo%20map_image.png) | Once confirmed, the marker will show up on the map and it will also be displayed as a child note of the map. | ## How the location of the markers is stored The location of a marker is stored in the `#geolocation` attribute of the child notes: -![](18_Geo%20map_image.png) +![](17_Geo%20map_image.png) This value can be added manually if needed. The value of the attribute is made up of the latitude and longitude separated by a comma. @@ -87,7 +87,7 @@ Trilium has basic support for displaying GPS tracks on the geo map. | | | | | --- | --- | --- | | 1 | ![](4_Geo%20map_image.png) | To add a track, simply drag & drop a .gpx file inside the geo map in the note tree. | -| 2 | ![](15_Geo%20map_image.png) | In order for the file to be recognized as a GPS track, it needs to show up as `application/gpx+xml` in the _File type_ field. | +| 2 | ![](14_Geo%20map_image.png) | In order for the file to be recognized as a GPS track, it needs to show up as `application/gpx+xml` in the _File type_ field. | | 3 | ![](7_Geo%20map_image.png) | When going back to the map, the track should now be visible. 

The start and end points of the track are indicated by the two blue markers. | ## Troubleshooting diff --git a/docs/User Guide/User Guide/Note Types/Text/10_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/10_Images_image.png index 0167e759b..71537a769 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/10_Images_image.png and b/docs/User Guide/User Guide/Note Types/Text/10_Images_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/11_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/11_Images_image.png deleted file mode 100644 index b7bd3af59..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Text/11_Images_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Text/12_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/12_Images_image.png deleted file mode 100644 index 71537a769..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Text/12_Images_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Text/1_Admonitions_image.png b/docs/User Guide/User Guide/Note Types/Text/1_Admonitions_image.png new file mode 100644 index 000000000..07876abbf Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/Text/1_Admonitions_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/1_Content language & Right-t.png b/docs/User Guide/User Guide/Note Types/Text/1_Content language & Right-t.png deleted file mode 100644 index 8e5d5a2f7..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Text/1_Content language & Right-t.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Text/1_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/1_Images_image.png index b7bd3af59..a4e23ef9a 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/1_Images_image.png and b/docs/User Guide/User Guide/Note Types/Text/1_Images_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/2_Content language & Right-t.png b/docs/User Guide/User Guide/Note Types/Text/2_Content language & Right-t.png deleted file mode 100644 index 20864f8af..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Text/2_Content language & Right-t.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Text/2_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/2_Images_image.png index a4e23ef9a..08a40b0d0 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/2_Images_image.png and b/docs/User Guide/User Guide/Note Types/Text/2_Images_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/3_Content language & Right-t.png b/docs/User Guide/User Guide/Note Types/Text/3_Content language & Right-t.png deleted file mode 100644 index 8d05d2878..000000000 Binary files a/docs/User Guide/User Guide/Note Types/Text/3_Content language & Right-t.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/Text/3_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/3_Images_image.png index 08a40b0d0..297d49ee5 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/3_Images_image.png and b/docs/User Guide/User Guide/Note Types/Text/3_Images_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/4_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/4_Images_image.png index 297d49ee5..11bb32b67 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/4_Images_image.png and b/docs/User Guide/User Guide/Note Types/Text/4_Images_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/5_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/5_Images_image.png index 11bb32b67..a0b1f2579 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/5_Images_image.png and b/docs/User Guide/User Guide/Note Types/Text/5_Images_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/6_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/6_Images_image.png index a0b1f2579..f8c5cf48f 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/6_Images_image.png and b/docs/User Guide/User Guide/Note Types/Text/6_Images_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/7_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/7_Images_image.png index a0b1f2579..731df83bb 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/7_Images_image.png and b/docs/User Guide/User Guide/Note Types/Text/7_Images_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/8_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/8_Images_image.png index f8c5cf48f..0167e759b 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/8_Images_image.png and b/docs/User Guide/User Guide/Note Types/Text/8_Images_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/9_Images_image.png b/docs/User Guide/User Guide/Note Types/Text/9_Images_image.png index 731df83bb..b7bd3af59 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/9_Images_image.png and b/docs/User Guide/User Guide/Note Types/Text/9_Images_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/Admonitions.md b/docs/User Guide/User Guide/Note Types/Text/Admonitions.md new file mode 100644 index 000000000..6c6463a02 --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/Text/Admonitions.md @@ -0,0 +1,63 @@ +# Admonitions +![](1_Admonitions_image.png) + +Admonitions are a way to highlight information to the reader. Other names for it include _call-outs_ and _info/warning/alert boxes_. + +## Inserting a new admonition + +### From the UI + +In the Formatting toolbar: + +![](Admonitions_image.png) + +### Via the keyboard + +It's possible to insert an admonition simply by typing: + +* `!!! note` +* `!!! tip` +* `!!! important` +* `!!! caution` +* `!!! warning` + +In addition to that, it's also possible to type `!!!`  followed by any text, case in which a default admonition type will appear (note) with the entered text inside it. + +## Interaction + +By design, admonitions act very similar to block quotes. + +* Selecting a text and pressing the admonition button will turn that text into an admonition. +* If selecting multiple admonitions, pressing the admonition button will automatically merge them into one. + +Inside an admonition: + +* Pressing Backspace while the admonition is empty will remove it. +* Pressing Enter will start a new paragraph. Pressing it twice will exit out of the admonition. +* Headings and other block content including tables can be inserted inside the admonition. + +## Types of admonitions + +There are currently five types of admonitions: _Note_, _Tip_, _Important_, _Caution_, _Warning_. + +These types were inspired by GitHub's support for this feature and there are currently no plans for adjusting it or allowing the user to customize them. + +## Markdown support + +The Markdown syntax for admonitions as supported by Trilium is the one that GitHub uses, which is as follows: + +``` +> [!NOTE] +> This is a note. + +> [!TIP] +> This is a tip. + +> [!IMPORTANT] +> This is a very important information. + +> [!CAUTION] +> This is a caution. +``` + +There are currently no plans of supporting alternative admonition syntaxes such as `!!! note`. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Text/Admonitions_image.png b/docs/User Guide/User Guide/Note Types/Text/Admonitions_image.png new file mode 100644 index 000000000..9eb084655 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/Text/Admonitions_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/Content language & Right-t.png b/docs/User Guide/User Guide/Note Types/Text/Content language & Right-t.png index 8e5d5a2f7..dee799386 100644 Binary files a/docs/User Guide/User Guide/Note Types/Text/Content language & Right-t.png and b/docs/User Guide/User Guide/Note Types/Text/Content language & Right-t.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/Images.md b/docs/User Guide/User Guide/Note Types/Text/Images.md index 9d8ad6e10..95a7b1b55 100644 --- a/docs/User Guide/User Guide/Note Types/Text/Images.md +++ b/docs/User Guide/User Guide/Note Types/Text/Images.md @@ -7,18 +7,18 @@ An image can be uploaded in the form of note's [attachment](../../Basic%20Concep To add an image to the note, simply drag it from file explorer onto the note editor inside Trilium and the image will be uploaded. -![](10_Images_image.png) +![](8_Images_image.png) Alternatively you can click on block toolbar and then on "Insert image": -![](8_Images_image.png) +![](6_Images_image.png) You can also copy and paste an image from web - the image will be (asynchronously) downloaded and embedded. ## Configuring the images Clicking on an image will reveal a popup with multiple options: -![](11_Images_image.png) +![](9_Images_image.png) ### Alignment @@ -26,10 +26,10 @@ The first set of options configure the alignment are, in order: | Icon | Option | Preview | Description | | --- | --- | --- | --- | -| ![](7_Images_image.png) | Inline | ![](2_Images_image.png) | As the name suggests, the name can be put inside a paragraph and moved around similarly as if it was a block of text. Use drag & drop or cut-paste to move it around. | -| ![](12_Images_image.png) | Centered image | ![](3_Images_image.png) | The image will be displayed as a block and centered, not allowing text in either the left or right of it. | -| ![](5_Images_image.png) | Wrap text | ![](9_Images_image.png) | The image will be displayed to the left or the right of the text. | -| ![](Images_image.png) | Block align | ![](4_Images_image.png) | Similarly to _Centered image_, the image will be displayed as a block and aligned either to the left or to the right, but not allowing text to flow on either of its sides. | +| ![](5_Images_image.png) | Inline | ![](1_Images_image.png) | As the name suggests, the name can be put inside a paragraph and moved around similarly as if it was a block of text. Use drag & drop or cut-paste to move it around. | +| ![](10_Images_image.png) | Centered image | ![](2_Images_image.png) | The image will be displayed as a block and centered, not allowing text in either the left or right of it. | +| ![](4_Images_image.png) | Wrap text | ![](7_Images_image.png) | The image will be displayed to the left or the right of the text. | +| ![](Images_image.png) | Block align | ![](3_Images_image.png) | Similarly to _Centered image_, the image will be displayed as a block and aligned either to the left or to the right, but not allowing text to flow on either of its sides. | ## Compression diff --git a/docs/User Guide/User Guide/Quick Start.md b/docs/User Guide/User Guide/Quick Start.md index 0cad4b291..e214387a6 100644 --- a/docs/User Guide/User Guide/Quick Start.md +++ b/docs/User Guide/User Guide/Quick Start.md @@ -9,16 +9,11 @@ 1. [Server installation](Installation%20%26%20Setup/Server%20Installation.md) 2. [Mobile frontend](Installation%20%26%20Setup/Mobile%20Frontend.md) (optional) -3. [![Deploy](Attachments/home-button.svg)](https://heroku.com/deploy?template=https://github.com/feilongfl/trilium-heroku) %%{WARNING}%% -4. [PikaPods managed hosting](https://www.pikapods.com/pods?run=trilium-next) +3. [PikaPods managed hosting](https://www.pikapods.com/pods?run=trilium-next) -**Combination of server and desktop/laptop** - Install the application on both a server, for web access and data synchronization, and desktop instance(s). This allows all the data to be stored on the server and either accessed from the web browser, or the desktop application. The desktop application will sync and store the data locally so that it can be used when offline. +**Combination of server and desktop/laptop** - Install the application on both a server, for web access and data synchronisation, and desktop instance(s). This allows all the data to be stored on the server and either accessed from the web browser, or the desktop application. The desktop application will sync and store the data locally so that it can be used when offline. 1. [Server installation](Installation%20%26%20Setup/Server%20Installation.md) 2. [Mobile frontend](Installation%20%26%20Setup/Mobile%20Frontend.md) (optional) 3. [Desktop installation](Installation%20%26%20Setup/Desktop%20Installation.md) -4. [Synchronization](Installation%20%26%20Setup/Synchronization.md) - -## Basic concepts - -1. Understand [Note](Basic%20Concepts/Note.md) \ No newline at end of file +4. [Synchronization](Installation%20%26%20Setup/Synchronization.md) \ No newline at end of file diff --git a/docs/User Guide/User Guide/Theme development/1_Creating a custom theme_im.png b/docs/User Guide/User Guide/Theme development/1_Creating a custom theme_im.png deleted file mode 100644 index 60ed508e2..000000000 Binary files a/docs/User Guide/User Guide/Theme development/1_Creating a custom theme_im.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Theme development/2_Creating a custom theme_im.png b/docs/User Guide/User Guide/Theme development/2_Creating a custom theme_im.png deleted file mode 100644 index 59dccde8c..000000000 Binary files a/docs/User Guide/User Guide/Theme development/2_Creating a custom theme_im.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Theme development/3_Creating a custom theme_im.png b/docs/User Guide/User Guide/Theme development/3_Creating a custom theme_im.png deleted file mode 100644 index 733ac21d1..000000000 Binary files a/docs/User Guide/User Guide/Theme development/3_Creating a custom theme_im.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Theme development/4_Creating a custom theme_im.png b/docs/User Guide/User Guide/Theme development/4_Creating a custom theme_im.png deleted file mode 100644 index a88f2379e..000000000 Binary files a/docs/User Guide/User Guide/Theme development/4_Creating a custom theme_im.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Theme development/5_Creating a custom theme_im.png b/docs/User Guide/User Guide/Theme development/5_Creating a custom theme_im.png deleted file mode 100644 index ab66f9ecf..000000000 Binary files a/docs/User Guide/User Guide/Theme development/5_Creating a custom theme_im.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Theme development/Creating a custom theme.md b/docs/User Guide/User Guide/Theme development/Creating a custom theme.md index 4a6db1875..d3d2fdca8 100644 --- a/docs/User Guide/User Guide/Theme development/Creating a custom theme.md +++ b/docs/User Guide/User Guide/Theme development/Creating a custom theme.md @@ -11,7 +11,7 @@ As such, the first step is to create a new note to gather all the themes. | | | | --- | --- | -| ![](5_Creating%20a%20custom%20theme_im.png) | Themes are code notes with a special attribute. Start by creating a new code note. | +| ![](Creating%20a%20custom%20theme_im.png) | Themes are code notes with a special attribute. Start by creating a new code note. | | !\[\](Creating%20a%20custom theme\_im.png) | Then change the note type to a CSS code. | | !\[\](5\_Creating%20a%20custom theme\_im.png) | In the _Owned Attributes_ section define the `#appTheme` attribute to point to any desired name. This is the name that will show up in the appearance section in settings. | diff --git a/docs/User Guide/User Guide/Theme development/Creating a custom theme_im.png b/docs/User Guide/User Guide/Theme development/Creating a custom theme_im.png index f90ec6f54..ab66f9ecf 100644 Binary files a/docs/User Guide/User Guide/Theme development/Creating a custom theme_im.png and b/docs/User Guide/User Guide/Theme development/Creating a custom theme_im.png differ diff --git a/dump-db/package-lock.json b/dump-db/package-lock.json index d46d004bb..793a7071a 100644 --- a/dump-db/package-lock.json +++ b/dump-db/package-lock.json @@ -493,9 +493,9 @@ "license": "MIT" }, "node_modules/better-sqlite3": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.0.tgz", - "integrity": "sha512-4b9xYnoaskj8eIkke9ZCB42p5bOPabptSku8Rl4Yww70Jf+aHeLvrIjXDJrKQxUEjdppsFb+fdJSjoH4TklROA==", + "version": "11.9.1", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.1.tgz", + "integrity": "sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ==", "hasInstallScript": true, "dependencies": { "bindings": "^1.5.0", @@ -1416,9 +1416,9 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "better-sqlite3": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.0.tgz", - "integrity": "sha512-4b9xYnoaskj8eIkke9ZCB42p5bOPabptSku8Rl4Yww70Jf+aHeLvrIjXDJrKQxUEjdppsFb+fdJSjoH4TklROA==", + "version": "11.9.1", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.1.tgz", + "integrity": "sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ==", "requires": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" diff --git a/e2e/note_types/text.spec.ts b/e2e/note_types/text.spec.ts index 71e2da2cc..328a43d17 100644 --- a/e2e/note_types/text.spec.ts +++ b/e2e/note_types/text.spec.ts @@ -61,8 +61,24 @@ test("Displays math popup", async ({ page, context }) => { const mathForm = page.locator(".ck-math-form"); await expect(mathForm).toBeVisible(); - await mathForm.locator(".ck-input").first().fill("e=mc^2"); + const input = mathForm.locator(".ck-input").first(); + await input.click(); + await input.fill("e=mc^2"); + await page.waitForTimeout(100); const preview = page.locator('[id^="math-preview"]'); + await preview.waitFor({ + state: 'visible', + timeout: 5000 + }); + + await page.waitForFunction((): boolean => { + const preview = document.querySelector('[id^="math-preview"]'); + if (!preview) return false; + const katex = preview.querySelector('.katex'); + return !!katex && window.getComputedStyle(preview).display !== 'none'; + }, { timeout: 5000 }); + + await expect(preview.locator('.katex')).toBeVisible(); await expect(preview).toMatchAriaSnapshot("- math: e = m c 2"); }); diff --git a/e2e/support/app.ts b/e2e/support/app.ts index 64e60d74e..55f36a7ff 100644 --- a/e2e/support/app.ts +++ b/e2e/support/app.ts @@ -75,6 +75,8 @@ export default class App { */ async closeAllTabs() { await this.triggerCommand("closeAllTabs"); + // Page in Playwright is not updated somehow, need to click on the tab to make sure it's rendered + await this.getTab(0).click(); } /** diff --git a/electron-docs-main.ts b/electron-docs-main.ts index 643a9319d..4571b2bec 100644 --- a/electron-docs-main.ts +++ b/electron-docs-main.ts @@ -166,8 +166,10 @@ async function cleanUpMeta() { async function registerHandlers() { const events = (await import("./src/services/events.js")).default; + const eraseService = (await import("./src/services/erase.js")).default; const debouncer = debounce(async () => { console.log("Exporting data"); + eraseService.eraseUnusedAttachmentsNow(); await exportData("markdown", markdownPath); await exportData("html", htmlPath); }, 10_000);; diff --git a/forge.config.cjs b/forge.config.cjs index b2b72c4d0..dabcd7ca4 100644 --- a/forge.config.cjs +++ b/forge.config.cjs @@ -11,6 +11,9 @@ const baseLinuxMakerConfigOptions = { }; module.exports = { + // we run electron-forge inside the ./build folder, + // to have it output to ./dist, we need to go up a directory first + outDir: "../dist", packagerConfig: { executableName: "trilium", name: APP_NAME, @@ -130,7 +133,7 @@ module.exports = { }; function getExtraResourcesForPlatform() { - const resources = ["./bin/tpl/anonymize-database.sql"]; + const resources = []; const getScriptRessources = () => { const scripts = ["trilium-portable", "trilium-safe-mode", "trilium-no-cert-check"]; diff --git a/libraries/ckeditor/ckeditor-content.css b/libraries/ckeditor/ckeditor-content.css index 806e431a9..5f00bd7af 100644 --- a/libraries/ckeditor/ckeditor-content.css +++ b/libraries/ckeditor/ckeditor-content.css @@ -25,8 +25,8 @@ border-radius: 0.5em; padding: 1em; margin: 1.25em 0; - margin-right: 14px; position: relative; + overflow: hidden; } .ck-content .admonition p:last-child { diff --git a/package-lock.json b/package-lock.json index 41eb794c9..e670bc422 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,31 +1,25 @@ { "name": "trilium", - "version": "0.92.3-beta", + "version": "0.92.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "trilium", - "version": "0.92.3-beta", + "version": "0.92.4", "license": "AGPL-3.0-only", "dependencies": { "@braintree/sanitize-url": "7.1.1", "@electron/remote": "2.1.2", "@excalidraw/excalidraw": "0.18.0", - "@fullcalendar/core": "6.1.15", - "@fullcalendar/daygrid": "6.1.15", - "@fullcalendar/interaction": "6.1.15", "@highlightjs/cdn-assets": "11.11.1", - "@joplin/turndown-plugin-gfm": "1.0.61", "@mermaid-js/layout-elk": "0.1.7", - "@mind-elixir/node-menu": "1.0.4", "@triliumnext/express-partial-content": "1.0.1", - "@types/html-minifier": "4.0.5", "archiver": "7.0.1", "async-mutex": "0.5.0", "autocomplete.js": "0.38.1", - "axios": "1.8.3", - "better-sqlite3": "11.9.0", + "axios": "1.8.4", + "better-sqlite3": "11.9.1", "boxicons": "2.1.4", "chardet": "2.1.0", "cheerio": "1.0.0", @@ -51,9 +45,8 @@ "express-session": "1.18.1", "force-graph": "1.49.4", "fs-extra": "11.3.0", - "helmet": "8.0.0", + "helmet": "8.1.0", "html": "1.0.0", - "html-minifier": "4.0.0", "html2plaintext": "2.1.4", "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", @@ -77,7 +70,6 @@ "marked": "15.0.7", "mermaid": "11.5.0", "mime-types": "2.1.35", - "mind-elixir": "4.4.1", "multer": "1.4.5-lts.1", "normalize-strings": "1.1.1", "normalize.css": "8.0.1", @@ -87,7 +79,7 @@ "react-dom": "18.3.1", "safe-compare": "1.1.4", "sanitize-filename": "1.6.3", - "sanitize-html": "2.14.0", + "sanitize-html": "2.15.0", "sax": "1.4.1", "serve-favicon": "2.5.0", "session-file-store": "1.5.0", @@ -118,7 +110,14 @@ "@electron-forge/plugin-auto-unpack-natives": "7.7.0", "@electron/rebuild": "3.7.1", "@eslint/js": "9.22.0", - "@playwright/test": "1.51.0", + "@fullcalendar/core": "6.1.15", + "@fullcalendar/daygrid": "6.1.15", + "@fullcalendar/interaction": "6.1.15", + "@fullcalendar/list": "6.1.15", + "@fullcalendar/multimonth": "6.1.15", + "@fullcalendar/timegrid": "6.1.15", + "@mind-elixir/node-menu": "1.0.5", + "@playwright/test": "1.51.1", "@popperjs/core": "2.11.8", "@types/archiver": "6.0.3", "@types/better-sqlite3": "7.6.12", @@ -131,7 +130,7 @@ "@types/ejs": "3.1.5", "@types/electron-squirrel-startup": "1.0.2", "@types/escape-html": "1.0.4", - "@types/express": "5.0.0", + "@types/express": "5.0.1", "@types/express-session": "1.18.1", "@types/fs-extra": "11.0.4", "@types/html": "1.0.4", @@ -144,7 +143,7 @@ "@types/mime-types": "2.1.4", "@types/multer": "1.4.12", "@types/node": "22.13.10", - "@types/react": "18.3.18", + "@types/react": "18.3.19", "@types/react-dom": "18.3.5", "@types/safe-compare": "1.1.2", "@types/sanitize-html": "2.13.0", @@ -160,7 +159,7 @@ "@types/ws": "8.18.0", "@types/xml2js": "0.4.14", "@types/yargs": "17.0.33", - "@vitest/coverage-v8": "3.0.8", + "@vitest/coverage-v8": "3.0.9", "autoprefixer": "10.4.21", "bootstrap": "5.3.3", "cross-env": "7.0.3", @@ -174,6 +173,7 @@ "jsdoc": "4.0.4", "knockout": "3.5.1", "lorem-ipsum": "2.0.8", + "mind-elixir": "4.4.3", "mini-css-extract-plugin": "2.9.2", "node-abi": "4.2.0", "nodemon": "3.1.9", @@ -181,18 +181,19 @@ "prettier": "3.5.3", "rcedit": "4.0.1", "rimraf": "6.0.1", - "sass": "1.85.1", + "sass": "1.86.0", "sass-loader": "16.0.5", "split.js": "1.6.5", "supertest": "7.0.0", + "svg-pan-zoom": "3.6.2", "swagger-jsdoc": "6.2.8", "ts-loader": "9.5.2", "tslib": "2.8.1", "tsx": "4.19.3", - "typedoc": "0.27.9", + "typedoc": "0.28.0", "typescript": "5.8.2", - "typescript-eslint": "8.26.1", - "vitest": "3.0.8", + "typescript-eslint": "8.27.0", + "vitest": "3.0.9", "webpack": "5.98.0", "webpack-cli": "6.0.1", "webpack-dev-middleware": "7.4.2" @@ -2885,6 +2886,7 @@ "version": "6.1.15", "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.15.tgz", "integrity": "sha512-BuX7o6ALpLb84cMw1FCB9/cSgF4JbVO894cjJZ6kP74jzbUZNjtwffwRdA+Id8rrLjT30d/7TrkW90k4zbXB5Q==", + "dev": true, "license": "MIT", "dependencies": { "preact": "~10.12.1" @@ -2894,6 +2896,7 @@ "version": "10.12.1", "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -2904,6 +2907,7 @@ "version": "6.1.15", "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.15.tgz", "integrity": "sha512-j8tL0HhfiVsdtOCLfzK2J0RtSkiad3BYYemwQKq512cx6btz6ZZ2RNc/hVnIxluuWFyvx5sXZwoeTJsFSFTEFA==", + "dev": true, "license": "MIT", "peerDependencies": { "@fullcalendar/core": "~6.1.15" @@ -2913,11 +2917,48 @@ "version": "6.1.15", "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.15.tgz", "integrity": "sha512-DOTSkofizM7QItjgu7W68TvKKvN9PSEEvDJceyMbQDvlXHa7pm/WAVtAc6xSDZ9xmB1QramYoWGLHkCYbTW1rQ==", + "dev": true, "license": "MIT", "peerDependencies": { "@fullcalendar/core": "~6.1.15" } }, + "node_modules/@fullcalendar/list": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.15.tgz", + "integrity": "sha512-U1bce04tYDwkFnuVImJSy2XalYIIQr6YusOWRPM/5ivHcJh67Gm8CIMSWpi3KdRSNKFkqBxLPkfZGBMaOcJYug==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.15" + } + }, + "node_modules/@fullcalendar/multimonth": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/multimonth/-/multimonth-6.1.15.tgz", + "integrity": "sha512-sEZY6jbOYkeF9TwhUldG+UUVv+hiPlGkS8zZEgPR7ypcjhipyA03c5rPjx7N6huOHqh6lCMH59zlohLooQRlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fullcalendar/daygrid": "~6.1.15" + }, + "peerDependencies": { + "@fullcalendar/core": "~6.1.15" + } + }, + "node_modules/@fullcalendar/timegrid": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-6.1.15.tgz", + "integrity": "sha512-61ORr3A148RtxQ2FNG7JKvacyA/TEVZ7z6I+3E9Oeu3dqTf6M928bFcpehRTIK6zIA6Yifs7BeWHgOE9dFnpbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fullcalendar/daygrid": "~6.1.15" + }, + "peerDependencies": { + "@fullcalendar/core": "~6.1.15" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -2926,15 +2967,15 @@ "license": "MIT" }, "node_modules/@gerrit0/mini-shiki": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-1.24.4.tgz", - "integrity": "sha512-YEHW1QeAg6UmxEmswiQbOVEg1CW22b1XUD/lNTliOsu0LD0wqoyleFMnmbTp697QE0pcadQiR5cVtbbAPncvpw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.2.1.tgz", + "integrity": "sha512-HbzRC6MKB6U8kQhczz0APKPIzFHTrcqhaC7es2EXInq1SpjPVnpVSIsBe6hNoLWqqCx1n5VKiPXq6PfXnHZKOQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/engine-oniguruma": "^1.24.2", - "@shikijs/types": "^1.24.2", - "@shikijs/vscode-textmate": "^9.3.1" + "@shikijs/engine-oniguruma": "^3.2.1", + "@shikijs/types": "^3.2.1", + "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@highlightjs/cdn-assets": { @@ -3549,12 +3590,6 @@ "node": ">=18" } }, - "node_modules/@joplin/turndown-plugin-gfm": { - "version": "1.0.61", - "resolved": "https://registry.npmjs.org/@joplin/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.61.tgz", - "integrity": "sha512-m5PNP1OkktlGgmFI7r/HWON/vQA56GCiM1oTWYkY2JFc28Uc8yHj0nT46pahDyU8uRYPj4TXnxLjQzDDJ11i7w==", - "license": "MIT" - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", @@ -3950,11 +3985,12 @@ } }, "node_modules/@mind-elixir/node-menu": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@mind-elixir/node-menu/-/node-menu-1.0.4.tgz", - "integrity": "sha512-xEwBakXEyVCfb8NFYmuvoXSZugxWZUa/s/bxLI8lxTKzTqhHOX4cJdp3B77ojUfnW4KvYJChlo7zkepijsmn0Q==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mind-elixir/node-menu/-/node-menu-1.0.5.tgz", + "integrity": "sha512-tlw85nwtfEoF47mLecRSMkcNW6D9ScDyg1YI+InZKtSgsvvnEm72kOyksp8B1haLk2ctVMFPJ7ay84MtWgrBGQ==", + "dev": true, "peerDependencies": { - "mind-elixir": ">2.0.1" + "mind-elixir": ">4.4.1" } }, "node_modules/@mixmark-io/domino": { @@ -4395,13 +4431,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.0.tgz", - "integrity": "sha512-dJ0dMbZeHhI+wb77+ljx/FeC8VBP6j/rj9OAojO08JI80wTZy6vRk9KvHKiDCUh4iMpEiseMgqRBIeW+eKX6RA==", + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.1.tgz", + "integrity": "sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.51.0" + "playwright": "1.51.1" }, "bin": { "playwright": "cli.js" @@ -5104,31 +5140,31 @@ "hasInstallScript": true }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.2.tgz", - "integrity": "sha512-ZN6k//aDNWRJs1uKB12pturKHh7GejKugowOFGAuG7TxDRLod1Bd5JhpOikOiFqPmKjKEPtEA6mRCf7q3ulDyQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.2.1.tgz", + "integrity": "sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "1.24.2", - "@shikijs/vscode-textmate": "^9.3.0" + "@shikijs/types": "3.2.1", + "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/types": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.2.tgz", - "integrity": "sha512-bdeWZiDtajGLG9BudI0AHet0b6e7FbR0EsE4jpGaI0YwHm/XJunI9+3uZnzFtX65gsyJ6ngCIWUfA4NWRPnBkQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.2.1.tgz", + "integrity": "sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz", - "integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "dev": true, "license": "MIT" }, @@ -5261,16 +5297,6 @@ "@types/node": "*" } }, - "node_modules/@types/clean-css": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.11.tgz", - "integrity": "sha512-Y8n81lQVTAfP2TOdtJJEsCoYl1AnOkqDqMvXb9/7pfgZZ7r8YrEyurrAvAoAjHOGXKRybay+5CsExqIH6liccw==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "source-map": "^0.6.0" - } - }, "node_modules/@types/cls-hooked": { "version": "4.3.9", "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.9.tgz", @@ -5638,15 +5664,14 @@ "license": "MIT" }, "node_modules/@types/express": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", - "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.1.tgz", + "integrity": "sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==", "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^5.0.0", - "@types/qs": "*", "@types/serve-static": "*" } }, @@ -5719,17 +5744,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/html-minifier": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/html-minifier/-/html-minifier-4.0.5.tgz", - "integrity": "sha512-LfE7f7MFd+YUfZnlBz8W43P4NgSObWiqyKapANsWCj63Aqeqli8/9gVsGP4CwC8jPpTTYlTopKCk9rJSuht/ew==", - "license": "MIT", - "dependencies": { - "@types/clean-css": "*", - "@types/relateurl": "*", - "@types/uglify-js": "*" - } - }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", @@ -5941,9 +5955,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.18", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", - "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", + "version": "18.3.19", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.19.tgz", + "integrity": "sha512-fcdJqaHOMDbiAwJnXv6XCzX0jDW77yI3tJqYh1Byn8EL5/S628WRx9b/y3DnNe55zTukUQKrfYxiZls2dHcUMw==", "devOptional": true, "license": "MIT", "dependencies": { @@ -5971,12 +5985,6 @@ "@types/node": "*" } }, - "node_modules/@types/relateurl": { - "version": "0.2.33", - "resolved": "https://registry.npmjs.org/@types/relateurl/-/relateurl-0.2.33.tgz", - "integrity": "sha512-bTQCKsVbIdzLqZhLkF5fcJQreE4y1ro4DIyVrlDNSCJRRwHhB8Z+4zXXa8jN6eDvc2HbRsEYgbvrnGvi54EpSw==", - "license": "MIT" - }, "node_modules/@types/responselike": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", @@ -6147,15 +6155,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/uglify-js": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.5.tgz", - "integrity": "sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==", - "license": "MIT", - "dependencies": { - "source-map": "^0.6.1" - } - }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -6211,17 +6210,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz", - "integrity": "sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.27.0.tgz", + "integrity": "sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/type-utils": "8.26.1", - "@typescript-eslint/utils": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/type-utils": "8.27.0", + "@typescript-eslint/utils": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -6241,16 +6240,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz", - "integrity": "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.27.0.tgz", + "integrity": "sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/typescript-estree": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/typescript-estree": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "debug": "^4.3.4" }, "engines": { @@ -6266,14 +6265,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz", - "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz", + "integrity": "sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1" + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6284,14 +6283,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz", - "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.27.0.tgz", + "integrity": "sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.26.1", - "@typescript-eslint/utils": "8.26.1", + "@typescript-eslint/typescript-estree": "8.27.0", + "@typescript-eslint/utils": "8.27.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -6308,9 +6307,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz", - "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", + "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", "dev": true, "license": "MIT", "engines": { @@ -6322,14 +6321,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", - "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.27.0.tgz", + "integrity": "sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -6375,16 +6374,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz", - "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.27.0.tgz", + "integrity": "sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/typescript-estree": "8.26.1" + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/typescript-estree": "8.27.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6399,13 +6398,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", - "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", + "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/types": "8.27.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -6417,9 +6416,9 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.8.tgz", - "integrity": "sha512-y7SAKsQirsEJ2F8bulBck4DoluhI2EEgTimHd6EEUgJBGKy9tC25cpywh1MH4FvDGoG2Unt7+asVd1kj4qOSAw==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.9.tgz", + "integrity": "sha512-15OACZcBtQ34keIEn19JYTVuMFTlFrClclwWjHo/IRPg/8ELpkgNTl0o7WLP9WO9XGH6+tip9CPYtEOrIDJvBA==", "dev": true, "license": "MIT", "dependencies": { @@ -6440,8 +6439,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.0.8", - "vitest": "3.0.8" + "@vitest/browser": "3.0.9", + "vitest": "3.0.9" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -6450,14 +6449,14 @@ } }, "node_modules/@vitest/expect": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.8.tgz", - "integrity": "sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz", + "integrity": "sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.8", - "@vitest/utils": "3.0.8", + "@vitest/spy": "3.0.9", + "@vitest/utils": "3.0.9", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -6466,13 +6465,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.8.tgz", - "integrity": "sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.9.tgz", + "integrity": "sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.8", + "@vitest/spy": "3.0.9", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -6493,9 +6492,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz", - "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", + "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", "dev": true, "license": "MIT", "dependencies": { @@ -6506,13 +6505,13 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.8.tgz", - "integrity": "sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.9.tgz", + "integrity": "sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.8", + "@vitest/utils": "3.0.9", "pathe": "^2.0.3" }, "funding": { @@ -6527,13 +6526,13 @@ "license": "MIT" }, "node_modules/@vitest/snapshot": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.8.tgz", - "integrity": "sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.9.tgz", + "integrity": "sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.8", + "@vitest/pretty-format": "3.0.9", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -6549,9 +6548,9 @@ "license": "MIT" }, "node_modules/@vitest/spy": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.8.tgz", - "integrity": "sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz", + "integrity": "sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6562,13 +6561,13 @@ } }, "node_modules/@vitest/utils": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.8.tgz", - "integrity": "sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz", + "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.8", + "@vitest/pretty-format": "3.0.9", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, @@ -7372,9 +7371,9 @@ } }, "node_modules/axios": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", - "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -7439,9 +7438,9 @@ "license": "MIT" }, "node_modules/better-sqlite3": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.0.tgz", - "integrity": "sha512-4b9xYnoaskj8eIkke9ZCB42p5bOPabptSku8Rl4Yww70Jf+aHeLvrIjXDJrKQxUEjdppsFb+fdJSjoH4TklROA==", + "version": "11.9.1", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.9.1.tgz", + "integrity": "sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -8094,16 +8093,6 @@ "node": ">=6" } }, - "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001703", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001703.tgz", @@ -8345,18 +8334,6 @@ "license": "MIT", "optional": true }, - "node_modules/clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -12957,9 +12934,9 @@ } }, "node_modules/helmet": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-8.0.0.tgz", - "integrity": "sha512-VyusHLEIIO5mjQPUI1wpOAEu+wl6Q0998jzTxqUYGE45xCIcAxy3MsbEK/yyJUJ3ADeMoB6MornPH6GMWAf+Pw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-8.1.0.tgz", + "integrity": "sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -13033,33 +13010,6 @@ "dev": true, "license": "MIT" }, - "node_modules/html-minifier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", - "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", - "license": "MIT", - "dependencies": { - "camel-case": "^3.0.0", - "clean-css": "^4.2.1", - "commander": "^2.19.0", - "he": "^1.2.0", - "param-case": "^2.1.1", - "relateurl": "^0.2.7", - "uglify-js": "^3.5.1" - }, - "bin": { - "html-minifier": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/html-minifier/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, "node_modules/html2plaintext": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/html2plaintext/-/html2plaintext-2.1.4.tgz", @@ -14802,12 +14752,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "license": "MIT" - }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -15727,9 +15671,10 @@ } }, "node_modules/mind-elixir": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/mind-elixir/-/mind-elixir-4.4.1.tgz", - "integrity": "sha512-q2rzRXgd6iqF3UdenM88HB4Ohb0/62/3W3PXKMBRBLjcCXt/pxlLuTMb4QrqP7sX9HoWNFVBeNt+1S521h3TRw==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/mind-elixir/-/mind-elixir-4.4.3.tgz", + "integrity": "sha512-i2GBFtZ4Z6pv5z5/QcfQFrbVTNa0OWayfx7OvQpzNn7X62l6xJn0y3dKxQ/KuT50HxgZiyRptY5J0xBc2qeuZw==", + "dev": true, "license": "MIT" }, "node_modules/mini-css-extract-plugin": { @@ -16031,15 +15976,6 @@ "dev": true, "license": "MIT" }, - "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "license": "MIT", - "dependencies": { - "lower-case": "^1.1.1" - } - }, "node_modules/node-abi": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-4.2.0.tgz", @@ -16671,15 +16607,6 @@ "wheel": "^1.0.0" } }, - "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", - "license": "MIT", - "dependencies": { - "no-case": "^2.2.0" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -17124,13 +17051,13 @@ } }, "node_modules/playwright": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.0.tgz", - "integrity": "sha512-442pTfGM0xxfCYxuBa/Pu6B2OqxqqaYq39JS8QDMGThUvIOCd6s0ANDog3uwA0cHavVlnTQzGCN7Id2YekDSXA==", + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.1.tgz", + "integrity": "sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.51.0" + "playwright-core": "1.51.1" }, "bin": { "playwright": "cli.js" @@ -17143,9 +17070,9 @@ } }, "node_modules/playwright-core": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.0.tgz", - "integrity": "sha512-x47yPE3Zwhlil7wlNU/iktF7t2r/URR3VLbH6EknJd/04Qc/PSJ0EY3CMXipmglLG+zyRxW6HNo2EGbKLHPWMg==", + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.1.tgz", + "integrity": "sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -18239,15 +18166,6 @@ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "license": "MIT" }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -18727,9 +18645,9 @@ } }, "node_modules/sanitize-html": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.14.0.tgz", - "integrity": "sha512-CafX+IUPxZshXqqRaG9ZClSlfPVjSxI0td7n07hk8QO2oO+9JDnlcL8iM8TWeOXOIBFgIOx6zioTzM53AOMn3g==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.15.0.tgz", + "integrity": "sha512-wIjst57vJGpLyBP8ioUbg6ThwJie5SuSIjHxJg53v5Fg+kUK+AXlb7bK3RNXpp315MvwM+0OBGCV6h5pPHsVhA==", "license": "MIT", "dependencies": { "deepmerge": "^4.2.2", @@ -18741,9 +18659,9 @@ } }, "node_modules/sass": { - "version": "1.85.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.1.tgz", - "integrity": "sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==", + "version": "1.86.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.0.tgz", + "integrity": "sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==", "dev": true, "license": "MIT", "dependencies": { @@ -19862,6 +19780,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-pan-zoom": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.2.tgz", + "integrity": "sha512-JwnvRWfVKw/Xzfe6jriFyfey/lWJLq4bUh2jwoR5ChWQuQoOH8FEh1l/bEp46iHHKHEJWIyFJETbazraxNWECg==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/swagger-jsdoc": { "version": "6.2.8", "resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz", @@ -20692,23 +20617,24 @@ } }, "node_modules/typedoc": { - "version": "0.27.9", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.9.tgz", - "integrity": "sha512-/z585740YHURLl9DN2jCWe6OW7zKYm6VoQ93H0sxZ1cwHQEQrUn5BJrEnkWhfzUdyO+BLGjnKUZ9iz9hKloFDw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.0.tgz", + "integrity": "sha512-UU+xxZXrpnUhEulBYRwY2afoYFC24J2fTFovOs3llj2foGShCoKVQL6cQCfQ+sBAOdiFn2dETpZ9xhah+CL3RQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@gerrit0/mini-shiki": "^1.24.0", + "@gerrit0/mini-shiki": "^3.2.1", "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", - "yaml": "^2.6.1" + "yaml": "^2.7.0 " }, "bin": { "typedoc": "bin/typedoc" }, "engines": { - "node": ">= 18" + "node": ">= 18", + "pnpm": ">= 10" }, "peerDependencies": { "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x" @@ -20755,15 +20681,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz", - "integrity": "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.27.0.tgz", + "integrity": "sha512-ZZ/8+Y0rRUMuW1gJaPtLWe4ryHbsPLzzibk5Sq+IFa2aOH1Vo0gPr1fbA6pOnzBke7zC2Da4w8AyCgxKXo3lqA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.26.1", - "@typescript-eslint/parser": "8.26.1", - "@typescript-eslint/utils": "8.26.1" + "@typescript-eslint/eslint-plugin": "8.27.0", + "@typescript-eslint/parser": "8.27.0", + "@typescript-eslint/utils": "8.27.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -20790,18 +20716,6 @@ "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", "license": "MIT" }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "license": "BSD-2-Clause", - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/uid-safe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", @@ -21006,12 +20920,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "license": "MIT" - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -21264,9 +21172,9 @@ } }, "node_modules/vite-node": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.8.tgz", - "integrity": "sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.9.tgz", + "integrity": "sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==", "dev": true, "license": "MIT", "dependencies": { @@ -21309,19 +21217,19 @@ } }, "node_modules/vitest": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.8.tgz", - "integrity": "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.9.tgz", + "integrity": "sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.8", - "@vitest/mocker": "3.0.8", - "@vitest/pretty-format": "^3.0.8", - "@vitest/runner": "3.0.8", - "@vitest/snapshot": "3.0.8", - "@vitest/spy": "3.0.8", - "@vitest/utils": "3.0.8", + "@vitest/expect": "3.0.9", + "@vitest/mocker": "3.0.9", + "@vitest/pretty-format": "^3.0.9", + "@vitest/runner": "3.0.9", + "@vitest/snapshot": "3.0.9", + "@vitest/spy": "3.0.9", + "@vitest/utils": "3.0.9", "chai": "^5.2.0", "debug": "^4.4.0", "expect-type": "^1.1.0", @@ -21333,7 +21241,7 @@ "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.8", + "vite-node": "3.0.9", "why-is-node-running": "^2.3.0" }, "bin": { @@ -21349,8 +21257,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.8", - "@vitest/ui": "3.0.8", + "@vitest/browser": "3.0.9", + "@vitest/ui": "3.0.9", "happy-dom": "*", "jsdom": "*" }, @@ -21967,9 +21875,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true, "license": "ISC", "bin": { diff --git a/package.json b/package.json index eb0cf1cab..1c8c504e1 100644 --- a/package.json +++ b/package.json @@ -2,9 +2,9 @@ "name": "trilium", "productName": "TriliumNext Notes", "description": "Build your personal knowledge base with TriliumNext Notes", - "version": "0.92.3-beta", + "version": "0.92.4", "license": "AGPL-3.0-only", - "main": "./build/electron-main.js", + "main": "./electron-main.js", "author": { "name": "TriliumNext Notes Team", "email": "contact@eliandoran.me", @@ -20,27 +20,28 @@ }, "type": "module", "scripts": { - "server:start": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts", - "server:start-safe": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts", - "server:start-no-dir": "cross-env TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts", - "server:start-test": "npm run server:switch && rimraf ./data-test && cross-env TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 nodemon src/main.ts", + "server:start": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nodemon src/main.ts", + "server:start-safe": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nodemon src/main.ts", + "server:start-no-dir": "cross-env TRILIUM_ENV=dev nodemon src/main.ts", + "server:start-test": "npm run server:switch && rimraf ./data-test && cross-env TRILIUM_DATA_DIR=./data-test TRILIUM_ENV=dev TRILIUM_PORT=9999 nodemon src/main.ts", "server:qstart": "npm run server:switch && npm run server:start", "server:switch": "rimraf ./node_modules/better-sqlite3 && npm install", - "electron:start": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./electron-main.ts --inspect=5858 .", + "electron:start": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev electron ./electron-main.ts --inspect=5858 .", "electron:start-no-dir": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev electron --inspect=5858 .", - "electron:start-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"", + "electron:start-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"", "electron:start-nix-no-dir": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"", - "electron:start-prod": "npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=prod electron ./dist/electron-main.js --inspect=5858 .", + "electron:start-prod": "npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=prod electron ./dist/electron-main.js --inspect=5858 .", "electron:start-prod-no-dir": "npm run build:prepare-dist && cross-env TRILIUM_ENV=prod electron --inspect=5858 .", - "electron:start-prod-nix": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"", + "electron:start-prod-nix": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"", "electron:start-prod-nix-no-dir": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"", "electron:qstart": "npm run electron:switch && npm run electron:start", "electron:switch": "electron-rebuild", "docs:edit": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data-docs TRILIUM_ENV=dev TRILIUM_PORT=37741 electron ./electron-docs-main.ts .", - "docs:edit-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data-docs TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_PORT=37741 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-docs-main.ts .\"", - "electron-forge:start": "npm run build:prepare-dist && electron-forge start", - "electron-forge:make": "npm run build:prepare-dist && electron-forge make", - "electron-forge:package": "npm run build:prepare-dist && electron-forge package", + "docs:edit-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data-docs TRILIUM_PORT=37741 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-docs-main.ts .\"", + "electron-forge:prepare": "npm run build:prepare-dist && cp -r node_modules ./build", + "electron-forge:start": "npm run electron-forge:prepare && cd ./build && electron-forge start", + "electron-forge:make": "npm run electron-forge:prepare && cd ./build && electron-forge make", + "electron-forge:package": "npm run electron-forge:prepare && cd ./build && electron-forge package", "docs:build-backend": "rimraf ./docs/backend_api && typedoc ./docs/backend_api src/becca/entities/*.ts src/services/backend_script_api.ts src/services/sql.ts", "docs:build-frontend": "rimraf ./docs/frontend_api && jsdoc -c jsdoc-conf.json -d ./docs/frontend_api src/public/app/entities/*.js src/public/app/services/frontend_script_api.js src/public/app/widgets/basic_widget.js src/public/app/widgets/note_context_aware_widget.js src/public/app/widgets/right_panel_widget.js", "docs:build": "npm run docs:build-backend && npm run docs:build-frontend", @@ -71,20 +72,14 @@ "@braintree/sanitize-url": "7.1.1", "@electron/remote": "2.1.2", "@excalidraw/excalidraw": "0.18.0", - "@fullcalendar/core": "6.1.15", - "@fullcalendar/daygrid": "6.1.15", - "@fullcalendar/interaction": "6.1.15", "@highlightjs/cdn-assets": "11.11.1", - "@joplin/turndown-plugin-gfm": "1.0.61", "@mermaid-js/layout-elk": "0.1.7", - "@mind-elixir/node-menu": "1.0.4", "@triliumnext/express-partial-content": "1.0.1", - "@types/html-minifier": "4.0.5", "archiver": "7.0.1", "async-mutex": "0.5.0", "autocomplete.js": "0.38.1", - "axios": "1.8.3", - "better-sqlite3": "11.9.0", + "axios": "1.8.4", + "better-sqlite3": "11.9.1", "boxicons": "2.1.4", "chardet": "2.1.0", "cheerio": "1.0.0", @@ -110,9 +105,8 @@ "express-session": "1.18.1", "force-graph": "1.49.4", "fs-extra": "11.3.0", - "helmet": "8.0.0", + "helmet": "8.1.0", "html": "1.0.0", - "html-minifier": "4.0.0", "html2plaintext": "2.1.4", "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", @@ -136,7 +130,6 @@ "marked": "15.0.7", "mermaid": "11.5.0", "mime-types": "2.1.35", - "mind-elixir": "4.4.1", "multer": "1.4.5-lts.1", "normalize-strings": "1.1.1", "normalize.css": "8.0.1", @@ -146,7 +139,7 @@ "react-dom": "18.3.1", "safe-compare": "1.1.4", "sanitize-filename": "1.6.3", - "sanitize-html": "2.14.0", + "sanitize-html": "2.15.0", "sax": "1.4.1", "serve-favicon": "2.5.0", "session-file-store": "1.5.0", @@ -174,7 +167,14 @@ "@electron-forge/plugin-auto-unpack-natives": "7.7.0", "@electron/rebuild": "3.7.1", "@eslint/js": "9.22.0", - "@playwright/test": "1.51.0", + "@fullcalendar/core": "6.1.15", + "@fullcalendar/daygrid": "6.1.15", + "@fullcalendar/interaction": "6.1.15", + "@fullcalendar/list": "6.1.15", + "@fullcalendar/multimonth": "6.1.15", + "@fullcalendar/timegrid": "6.1.15", + "@mind-elixir/node-menu": "1.0.5", + "@playwright/test": "1.51.1", "@popperjs/core": "2.11.8", "@types/archiver": "6.0.3", "@types/better-sqlite3": "7.6.12", @@ -187,7 +187,7 @@ "@types/ejs": "3.1.5", "@types/electron-squirrel-startup": "1.0.2", "@types/escape-html": "1.0.4", - "@types/express": "5.0.0", + "@types/express": "5.0.1", "@types/express-session": "1.18.1", "@types/fs-extra": "11.0.4", "@types/html": "1.0.4", @@ -200,7 +200,7 @@ "@types/mime-types": "2.1.4", "@types/multer": "1.4.12", "@types/node": "22.13.10", - "@types/react": "18.3.18", + "@types/react": "18.3.19", "@types/react-dom": "18.3.5", "@types/safe-compare": "1.1.2", "@types/sanitize-html": "2.13.0", @@ -216,7 +216,7 @@ "@types/ws": "8.18.0", "@types/xml2js": "0.4.14", "@types/yargs": "17.0.33", - "@vitest/coverage-v8": "3.0.8", + "@vitest/coverage-v8": "3.0.9", "autoprefixer": "10.4.21", "bootstrap": "5.3.3", "cross-env": "7.0.3", @@ -230,6 +230,7 @@ "jsdoc": "4.0.4", "knockout": "3.5.1", "lorem-ipsum": "2.0.8", + "mind-elixir": "4.4.3", "mini-css-extract-plugin": "2.9.2", "node-abi": "4.2.0", "nodemon": "3.1.9", @@ -237,18 +238,19 @@ "prettier": "3.5.3", "rcedit": "4.0.1", "rimraf": "6.0.1", - "sass": "1.85.1", + "sass": "1.86.0", "sass-loader": "16.0.5", "split.js": "1.6.5", "supertest": "7.0.0", + "svg-pan-zoom": "3.6.2", "swagger-jsdoc": "6.2.8", "ts-loader": "9.5.2", "tslib": "2.8.1", "tsx": "4.19.3", - "typedoc": "0.27.9", + "typedoc": "0.28.0", "typescript": "5.8.2", - "typescript-eslint": "8.26.1", - "vitest": "3.0.8", + "typescript-eslint": "8.27.0", + "vitest": "3.0.9", "webpack": "5.98.0", "webpack-cli": "6.0.1", "webpack-dev-middleware": "7.4.2" diff --git a/packages/turndown-plugin-gfm/.gitignore b/packages/turndown-plugin-gfm/.gitignore new file mode 100644 index 000000000..9b85d3d27 --- /dev/null +++ b/packages/turndown-plugin-gfm/.gitignore @@ -0,0 +1,5 @@ +dist +lib +node_modules +npm-debug.log +test/*browser.js diff --git a/packages/turndown-plugin-gfm/.travis.yml b/packages/turndown-plugin-gfm/.travis.yml new file mode 100644 index 000000000..a52318743 --- /dev/null +++ b/packages/turndown-plugin-gfm/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "node" + - "6" diff --git a/packages/turndown-plugin-gfm/LICENSE b/packages/turndown-plugin-gfm/LICENSE new file mode 100644 index 000000000..02b58935f --- /dev/null +++ b/packages/turndown-plugin-gfm/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Dom Christie + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/turndown-plugin-gfm/README.md b/packages/turndown-plugin-gfm/README.md new file mode 100644 index 000000000..b9f1ab294 --- /dev/null +++ b/packages/turndown-plugin-gfm/README.md @@ -0,0 +1,64 @@ +# turndown-plugin-gfm + +A [Turndown](https://github.com/domchristie/turndown) plugin which adds GitHub Flavored Markdown extensions. + +This is a fork of the original [turndown-plugin-gfm](https://github.com/domchristie/turndown-plugin-gfm) for use with [Joplin](https://github.com/laurent22/joplin). The changes are: + +- New: Always render tables even if they don't have a header. +- New: Don't render the border of tables that contain other tables (frequent for websites that do the layout using tables). Only render the inner tables, if any, and if they also don't contain other tables. +- New: Replace newlines (`\n`) with `
` inside table cells so that multi-line content is displayed correctly as Markdown. +- New: Table cells are at least three characters long (padded with spaces) so that they render correctly in GFM-compliant renderers. +- New: Handle colspan in TD tags +- Fixed: Ensure there are no blank lines inside tables (due for example to an empty `` tag) +- Fixed: Fixed importing tables that contain pipes. + +## Installation + +npm: + +``` +npm install @joplin/turndown-plugin-gfm +``` + +## Usage + +```js +// For Node.js +var TurndownService = require('@joplin/turndown') +var turndownPluginGfm = require('@joplin/turndown-plugin-gfm') + +var gfm = turndownPluginGfm.gfm +var turndownService = new TurndownService() +turndownService.use(gfm) +var markdown = turndownService.turndown('Hello world!') +``` + +turndown-plugin-gfm is a suite of plugins which can be applied individually. The available plugins are as follows: + +- `strikethrough` (for converting ``, ``, and `` elements) +- `tables` +- `taskListItems` +- `gfm` (which applies all of the above) + +So for example, if you only wish to convert tables: + +```js +var tables = require('@joplin/turndown-plugin-gfm').tables +var turndownService = new TurndownService() +turndownService.use(tables) +``` + +### Typescript + +To use this in a typescript project, add this to a `declarations.d.ts` file, as described in https://www.npmjs.com/package/@joplin/turndown, and then add: + +```ts +declare module "@joplin/turndown-plugin-gfm" { + export const gfm: any; + // Add other named exports if necessary +} +``` + +## License + +turndown-plugin-gfm is copyright © 2017+ Dom Christie and released under the MIT license. diff --git a/packages/turndown-plugin-gfm/build_for_test.sh b/packages/turndown-plugin-gfm/build_for_test.sh new file mode 100755 index 000000000..9cf93ad68 --- /dev/null +++ b/packages/turndown-plugin-gfm/build_for_test.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +ROOT_DIR="$SCRIPT_DIR/../.." + +npm run build +cd $ROOT_DIR/packages/app-cli && npm run test -- HtmlToMd \ No newline at end of file diff --git a/packages/turndown-plugin-gfm/config/rollup.config.browser.cjs.js b/packages/turndown-plugin-gfm/config/rollup.config.browser.cjs.js new file mode 100644 index 000000000..1c9a5fd46 --- /dev/null +++ b/packages/turndown-plugin-gfm/config/rollup.config.browser.cjs.js @@ -0,0 +1,8 @@ +import config from './rollup.config.js'; + +export default config({ + output: { + format: 'cjs', + file: 'lib/turndown-plugin-gfm.browser.cjs.js', + }, +}); diff --git a/packages/turndown-plugin-gfm/config/rollup.config.browser.es.js b/packages/turndown-plugin-gfm/config/rollup.config.browser.es.js new file mode 100644 index 000000000..f7c7a4763 --- /dev/null +++ b/packages/turndown-plugin-gfm/config/rollup.config.browser.es.js @@ -0,0 +1,8 @@ +import config from './rollup.config.js'; + +export default config({ + output: { + format: 'es', + file: 'lib/turndown-plugin-gfm.browser.es.js', + }, +}); diff --git a/packages/turndown-plugin-gfm/config/rollup.config.cjs.js b/packages/turndown-plugin-gfm/config/rollup.config.cjs.js new file mode 100644 index 000000000..5641843c2 --- /dev/null +++ b/packages/turndown-plugin-gfm/config/rollup.config.cjs.js @@ -0,0 +1,8 @@ +import config from './rollup.config.js'; + +export default config({ + output: { + format: 'cjs', + file: 'lib/turndown-plugin-gfm.cjs.js', + }, +}); diff --git a/packages/turndown-plugin-gfm/config/rollup.config.es.js b/packages/turndown-plugin-gfm/config/rollup.config.es.js new file mode 100644 index 000000000..b56580cff --- /dev/null +++ b/packages/turndown-plugin-gfm/config/rollup.config.es.js @@ -0,0 +1,8 @@ +import config from './rollup.config.js'; + +export default config({ + output: { + format: 'es', + file: 'lib/turndown-plugin-gfm.es.js', + }, +}); diff --git a/packages/turndown-plugin-gfm/config/rollup.config.iife.js b/packages/turndown-plugin-gfm/config/rollup.config.iife.js new file mode 100644 index 000000000..41bc20f75 --- /dev/null +++ b/packages/turndown-plugin-gfm/config/rollup.config.iife.js @@ -0,0 +1,9 @@ +import config from './rollup.config.js'; + +export default config({ + output: { + format: 'iife', + file: 'dist/turndown-plugin-gfm.js', + name: 'turndownPluginGfm' + }, +}); diff --git a/packages/turndown-plugin-gfm/config/rollup.config.js b/packages/turndown-plugin-gfm/config/rollup.config.js new file mode 100644 index 000000000..c1ab51777 --- /dev/null +++ b/packages/turndown-plugin-gfm/config/rollup.config.js @@ -0,0 +1,6 @@ +export default function(config) { + return { + input: 'src/gfm.js', + output: config.output, + }; +} diff --git a/packages/turndown-plugin-gfm/package-lock.json b/packages/turndown-plugin-gfm/package-lock.json new file mode 100644 index 000000000..c06650f50 --- /dev/null +++ b/packages/turndown-plugin-gfm/package-lock.json @@ -0,0 +1,6444 @@ +{ + "name": "@joplin/turndown-plugin-gfm", + "version": "1.0.61", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@joplin/turndown-plugin-gfm", + "version": "1.0.61", + "license": "MIT", + "devDependencies": { + "browserify": "^17.0.1", + "rollup": "^4.36.0", + "standard": "^17.1.2", + "turndown": "7.2.0", + "turndown-attendant": "0.0.3" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@mixmark-io/domino": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz", + "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz", + "integrity": "sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.36.0.tgz", + "integrity": "sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.36.0.tgz", + "integrity": "sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.36.0.tgz", + "integrity": "sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.36.0.tgz", + "integrity": "sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.36.0.tgz", + "integrity": "sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.36.0.tgz", + "integrity": "sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.36.0.tgz", + "integrity": "sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.36.0.tgz", + "integrity": "sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.36.0.tgz", + "integrity": "sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.36.0.tgz", + "integrity": "sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.36.0.tgz", + "integrity": "sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.36.0.tgz", + "integrity": "sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.36.0.tgz", + "integrity": "sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.36.0.tgz", + "integrity": "sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.36.0.tgz", + "integrity": "sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.36.0.tgz", + "integrity": "sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.36.0.tgz", + "integrity": "sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.36.0.tgz", + "integrity": "sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "node_modules/array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "dependencies": { + "util": "0.10.3" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/browser-pack": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz", + "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", + "dev": true, + "dependencies": { + "combine-source-map": "~0.7.1", + "defined": "^1.0.0", + "JSONStream": "^1.0.3", + "through2": "^2.0.0", + "umd": "^3.0.0" + }, + "bin": { + "browser-pack": "bin/cmd.js" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.1.tgz", + "integrity": "sha512-pxhT00W3ylMhCHwG5yfqtZjNnFuX5h2IJdaBfSo4ChaaBsIp9VLrEMQ1bHV+Xr1uLPXuNDDM1GlJkjli0qkRsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.1", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^3.0.0", + "glob": "^7.1.0", + "hasown": "^2.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.2.1", + "JSONStream": "^1.0.3", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "^1.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum-object": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^3.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.12.0", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "browserify": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserify/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/browserify/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/browserify/node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cached-path-relative": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", + "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combine-source-map": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", + "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", + "dev": true, + "dependencies": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "dependencies": { + "date-now": "^0.1.4" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "node_modules/create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", + "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/dash-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + }, + "bin": { + "deps-sort": "bin/cmd.js" + } + }, + "node_modules/des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "dependencies": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-config-standard-jsx": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", + "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peerDependencies": { + "eslint": "^8.8.0", + "eslint-plugin-react": "^7.28.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-n": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", + "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/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, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/form-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.3.tgz", + "integrity": "sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "dependencies": { + "function-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1" + } + }, + "node_modules/hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true, + "dependencies": { + "source-map": "~0.5.3" + } + }, + "node_modules/insert-module-globals": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", + "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "JSONStream": "^1.0.3", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + }, + "bin": { + "insert-module-globals": "bin/cmd.js" + } + }, + "node_modules/insert-module-globals/node_modules/combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "index.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/labeled-stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", + "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "isarray": "~0.0.1", + "stream-splicer": "^2.0.0" + } + }, + "node_modules/labeled-stream-splicer/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/md5.js/node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "JSONStream": "^1.0.3", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "module-deps": "bin/cmd.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nwsapi": { + "version": "2.2.19", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.19.tgz", + "integrity": "sha512-94bcyI3RsqiZufXjkr3ltkI86iEl+I7uiHVDtcq9wJUTwYQJ5odHDeSzkkrRzi80jJ8MaeZgqKjH1bAWAFw9bA==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.3.0.tgz", + "integrity": "sha512-OHHnLgLNXpM++GnJRyyhbr2bwl3pPVm4YvaraHrRvDt/N3r+s/gDVHciA7EJBTkijKXj61ssgSAikq1fb0IBRg==", + "dev": true + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-platform": "~0.11.15" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "dependencies": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", + "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/psl/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "dependencies": { + "hash-base": "^2.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rollup": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.36.0.tgz", + "integrity": "sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.36.0", + "@rollup/rollup-android-arm64": "4.36.0", + "@rollup/rollup-darwin-arm64": "4.36.0", + "@rollup/rollup-darwin-x64": "4.36.0", + "@rollup/rollup-freebsd-arm64": "4.36.0", + "@rollup/rollup-freebsd-x64": "4.36.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.36.0", + "@rollup/rollup-linux-arm-musleabihf": "4.36.0", + "@rollup/rollup-linux-arm64-gnu": "4.36.0", + "@rollup/rollup-linux-arm64-musl": "4.36.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.36.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.36.0", + "@rollup/rollup-linux-riscv64-gnu": "4.36.0", + "@rollup/rollup-linux-s390x-gnu": "4.36.0", + "@rollup/rollup-linux-x64-gnu": "4.36.0", + "@rollup/rollup-linux-x64-musl": "4.36.0", + "@rollup/rollup-win32-arm64-msvc": "4.36.0", + "@rollup/rollup-win32-ia32-msvc": "4.36.0", + "@rollup/rollup-win32-x64-msvc": "4.36.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "fast-safe-stringify": "^2.0.7" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "dependencies": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standard": { + "version": "17.1.2", + "resolved": "https://registry.npmjs.org/standard/-/standard-17.1.2.tgz", + "integrity": "sha512-WLm12WoXveKkvnPnPnaFUUHuOB2cUdAsJ4AiGHL2G0UNMrcRAWY2WriQaV8IQ3oRmYr0AWUbLNr94ekYFAHOrA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "eslint": "^8.41.0", + "eslint-config-standard": "17.1.0", + "eslint-config-standard-jsx": "^11.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.7.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.36.1", + "standard-engine": "^15.1.0", + "version-guard": "^1.1.1" + }, + "bin": { + "standard": "bin/cmd.cjs" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/standard-engine": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-15.1.0.tgz", + "integrity": "sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "get-stdin": "^8.0.0", + "minimist": "^1.2.6", + "pkg-conf": "^3.1.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-browserify/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/stream-browserify/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-http/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", + "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.0", + "function-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.1.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/syntax-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz", + "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", + "dev": true, + "dependencies": { + "acorn": "^4.0.3" + } + }, + "node_modules/tape": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.8.0.tgz", + "integrity": "sha512-TWILfEnvO7I8mFe35d98F6T5fbLaEtbFTG/lxWvid8qDfFTxt19EBijWmB4j3+Hoh5TfHE2faWs73ua+EphuBA==", + "dev": true, + "dependencies": { + "deep-equal": "~1.0.1", + "defined": "~1.0.0", + "for-each": "~0.3.2", + "function-bind": "~1.1.0", + "glob": "~7.1.2", + "has": "~1.0.1", + "inherits": "~2.0.3", + "minimist": "~1.2.0", + "object-inspect": "~1.3.0", + "resolve": "~1.4.0", + "resumer": "~0.0.0", + "string.prototype.trim": "~1.1.2", + "through": "~2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/tape/node_modules/resolve": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", + "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "dependencies": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "node_modules/timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "dev": true, + "dependencies": { + "process": "~0.11.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/turndown": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.0.tgz", + "integrity": "sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mixmark-io/domino": "^2.2.0" + } + }, + "node_modules/turndown-attendant": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/turndown-attendant/-/turndown-attendant-0.0.3.tgz", + "integrity": "sha512-j0LH9oWLiZuv8ZonU4ZkLvQYumfWIZri4Aetbx+NSQ4jLgERZvkwDjA2woLRbPKR7UQtI9/I0AsZVk06+geXNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsdom": "^16.2.0", + "tape": "^4.8.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/umd": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", + "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=", + "dev": true, + "bin": { + "umd": "bin/cli.js" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undeclared-identifiers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", + "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "acorn-node": "^1.3.0", + "dash-ast": "^1.0.0", + "get-assigned-identifiers": "^1.2.0", + "simple-concat": "^1.0.0", + "xtend": "^4.0.1" + }, + "bin": { + "undeclared-identifiers": "bin.js" + } + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "node_modules/version-guard": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/version-guard/-/version-guard-1.1.3.tgz", + "integrity": "sha512-JwPr6erhX53EWH/HCSzfy1tTFrtPXUe927wdM1jqBBeYp1OM+qPHjWbsvv6pIBduqdgxxS+ScfG7S28pzyr2DQ==", + "dev": true, + "license": "0BSD", + "engines": { + "node": ">=0.10.48" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/packages/turndown-plugin-gfm/package.json b/packages/turndown-plugin-gfm/package.json new file mode 100644 index 000000000..b8f052497 --- /dev/null +++ b/packages/turndown-plugin-gfm/package.json @@ -0,0 +1,46 @@ +{ + "name": "@joplin/turndown-plugin-gfm", + "description": "Turndown plugin to add GitHub Flavored Markdown extensions.", + "publishConfig": { + "access": "public" + }, + "version": "1.0.61", + "author": "Dom Christie", + "main": "lib/turndown-plugin-gfm.cjs.js", + "devDependencies": { + "browserify": "^17.0.1", + "rollup": "^4.36.0", + "standard": "^17.1.2", + "turndown": "7.2.0", + "turndown-attendant": "0.0.3" + }, + "files": [ + "lib", + "dist" + ], + "keywords": [ + "turndown", + "turndown-plugin", + "html-to-markdown", + "html", + "markdown", + "github-flavored-markdown", + "gfm" + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/laurent22/joplin-turndown-plugin-gfm.git" + }, + "type": "module", + "scripts": { + "build-all": "npm run build-cjs && npm run build-es && npm run build-iife", + "build": "rollup -c config/rollup.config.cjs.js", + "build-cjs": "rollup -c config/rollup.config.cjs.js && rollup -c config/rollup.config.browser.cjs.js", + "build-es": "rollup -c config/rollup.config.es.js && rollup -c config/rollup.config.browser.es.js", + "build-iife": "rollup -c config/rollup.config.iife.js", + "build-test": "browserify test/turndown-plugin-gfm-test.js --outfile test/turndown-plugin-gfm-test.browser.js", + "prepare": "npm run build" + }, + "gitHead": "05a29b450962bf05a8642bbd39446a1f679a96ba" +} diff --git a/packages/turndown-plugin-gfm/publish.sh b/packages/turndown-plugin-gfm/publish.sh new file mode 100644 index 000000000..b6b7faee6 --- /dev/null +++ b/packages/turndown-plugin-gfm/publish.sh @@ -0,0 +1,3 @@ +#!/bin/bash +npm version patch +npm publish \ No newline at end of file diff --git a/packages/turndown-plugin-gfm/src/gfm.js b/packages/turndown-plugin-gfm/src/gfm.js new file mode 100644 index 000000000..826b50659 --- /dev/null +++ b/packages/turndown-plugin-gfm/src/gfm.js @@ -0,0 +1,15 @@ +import highlightedCodeBlock from './highlighted-code-block.js' +import strikethrough from './strikethrough.js' +import tables from './tables.js' +import taskListItems from './task-list-items.js' + +function gfm (turndownService) { + turndownService.use([ + highlightedCodeBlock, + strikethrough, + tables, + taskListItems + ]) +} + +export { gfm, highlightedCodeBlock, strikethrough, tables, taskListItems } diff --git a/packages/turndown-plugin-gfm/src/highlighted-code-block.js b/packages/turndown-plugin-gfm/src/highlighted-code-block.js new file mode 100644 index 000000000..97052de57 --- /dev/null +++ b/packages/turndown-plugin-gfm/src/highlighted-code-block.js @@ -0,0 +1,25 @@ +var highlightRegExp = /highlight-(?:text|source)-([a-z0-9]+)/ + +export default function highlightedCodeBlock (turndownService) { + turndownService.addRule('highlightedCodeBlock', { + filter: function (node) { + var firstChild = node.firstChild + return ( + node.nodeName === 'DIV' && + highlightRegExp.test(node.className) && + firstChild && + firstChild.nodeName === 'PRE' + ) + }, + replacement: function (content, node, options) { + var className = node.className || '' + var language = (className.match(highlightRegExp) || [null, ''])[1] + + return ( + '\n\n' + options.fence + language + '\n' + + node.firstChild.textContent + + '\n' + options.fence + '\n\n' + ) + } + }) +} diff --git a/packages/turndown-plugin-gfm/src/strikethrough.js b/packages/turndown-plugin-gfm/src/strikethrough.js new file mode 100644 index 000000000..9dfb9d7bb --- /dev/null +++ b/packages/turndown-plugin-gfm/src/strikethrough.js @@ -0,0 +1,8 @@ +export default function strikethrough (turndownService) { + turndownService.addRule('strikethrough', { + filter: ['del', 's', 'strike'], + replacement: function (content) { + return '~~' + content + '~~' + } + }) +} diff --git a/packages/turndown-plugin-gfm/src/tables.js b/packages/turndown-plugin-gfm/src/tables.js new file mode 100644 index 000000000..263ab259d --- /dev/null +++ b/packages/turndown-plugin-gfm/src/tables.js @@ -0,0 +1,286 @@ +var indexOf = Array.prototype.indexOf +var every = Array.prototype.every +var rules = {} +var alignMap = { left: ':---', right: '---:', center: ':---:' }; + +let isCodeBlock_ = null; +let options_ = null; + +// We need to cache the result of tableShouldBeSkipped() as it is expensive. +// Caching it means we went from about 9000 ms for rendering down to 90 ms. +// Fixes https://github.com/laurent22/joplin/issues/6736 +const tableShouldBeSkippedCache_ = new WeakMap(); + +function getAlignment(node) { + return node ? (node.getAttribute('align') || node.style.textAlign || '').toLowerCase() : ''; +} + +function getBorder(alignment) { + return alignment ? alignMap[alignment] : '---'; +} + +function getColumnAlignment(table, columnIndex) { + var votes = { + left: 0, + right: 0, + center: 0, + '': 0, + }; + + var align = ''; + + for (var i = 0; i < table.rows.length; ++i) { + var row = table.rows[i]; + if (columnIndex < row.childNodes.length) { + var cellAlignment = getAlignment(row.childNodes[columnIndex]); + ++votes[cellAlignment]; + + if (votes[cellAlignment] > votes[align]) { + align = cellAlignment; + } + } + } + + return align; +} + +rules.tableCell = { + filter: ['th', 'td'], + replacement: function (content, node) { + if (tableShouldBeSkipped(nodeParentTable(node))) return content; + return cell(content, node) + } +} + +rules.tableRow = { + filter: 'tr', + replacement: function (content, node) { + const parentTable = nodeParentTable(node); + if (tableShouldBeSkipped(parentTable)) return content; + + var borderCells = '' + + if (isHeadingRow(node)) { + const colCount = tableColCount(parentTable); + for (var i = 0; i < colCount; i++) { + const childNode = i < node.childNodes.length ? node.childNodes[i] : null; + var border = getBorder(getColumnAlignment(parentTable, i)); + borderCells += cell(border, childNode, i); + } + } + return '\n' + content + (borderCells ? '\n' + borderCells : '') + } +} + +rules.table = { + filter: function (node, options) { + return node.nodeName === 'TABLE'; + }, + + replacement: function (content, node) { + // Only convert tables that can result in valid Markdown + // Other tables are kept as HTML using `keep` (see below). + if (tableShouldBeHtml(node, options_)) { + return node.outerHTML; + } else { + if (tableShouldBeSkipped(node)) return content; + + // Ensure there are no blank lines + content = content.replace(/\n+/g, '\n') + + // If table has no heading, add an empty one so as to get a valid Markdown table + var secondLine = content.trim().split('\n'); + if (secondLine.length >= 2) secondLine = secondLine[1] + var secondLineIsDivider = /\| :?---/.test(secondLine); + + var columnCount = tableColCount(node); + var emptyHeader = '' + if (columnCount && !secondLineIsDivider) { + emptyHeader = '|' + ' |'.repeat(columnCount) + '\n' + '|' + for (var columnIndex = 0; columnIndex < columnCount; ++columnIndex) { + emptyHeader += ' ' + getBorder(getColumnAlignment(node, columnIndex)) + ' |'; + } + } + + const captionContent = node.caption ? node.caption.textContent || '' : ''; + const caption = captionContent ? `${captionContent}\n\n` : ''; + const tableContent = `${emptyHeader}${content}`.trimStart(); + return `\n\n${caption}${tableContent}\n\n`; + } + } +} + +rules.tableCaption = { + filter: ['caption'], + replacement: () => '', +}; + +rules.tableColgroup = { + filter: ['colgroup', 'col'], + replacement: () => '', +}; + +rules.tableSection = { + filter: ['thead', 'tbody', 'tfoot'], + replacement: function (content) { + return content + } +} + +// A tr is a heading row if: +// - the parent is a THEAD +// - or if its the first child of the TABLE or the first TBODY (possibly +// following a blank THEAD) +// - and every cell is a TH +function isHeadingRow (tr) { + var parentNode = tr.parentNode + return ( + parentNode.nodeName === 'THEAD' || + ( + parentNode.firstChild === tr && + (parentNode.nodeName === 'TABLE' || isFirstTbody(parentNode)) && + every.call(tr.childNodes, function (n) { return n.nodeName === 'TH' }) + ) + ) +} + +function isFirstTbody (element) { + var previousSibling = element.previousSibling + return ( + element.nodeName === 'TBODY' && ( + !previousSibling || + ( + previousSibling.nodeName === 'THEAD' && + /^\s*$/i.test(previousSibling.textContent) + ) + ) + ) +} + +function cell (content, node = null, index = null) { + if (index === null) index = indexOf.call(node.parentNode.childNodes, node) + var prefix = ' ' + if (index === 0) prefix = '| ' + let filteredContent = content.trim().replace(/\n\r/g, '
').replace(/\n/g, "
"); + filteredContent = filteredContent.replace(/\|+/g, '\\|') + while (filteredContent.length < 3) filteredContent += ' '; + if (node) filteredContent = handleColSpan(filteredContent, node, ' '); + return prefix + filteredContent + ' |' +} + +function nodeContainsTable(node) { + if (!node.childNodes) return false; + + for (let i = 0; i < node.childNodes.length; i++) { + const child = node.childNodes[i]; + if (child.nodeName === 'TABLE') return true; + if (nodeContainsTable(child)) return true; + } + return false; +} + +const nodeContains = (node, types) => { + if (!node.childNodes) return false; + + for (let i = 0; i < node.childNodes.length; i++) { + const child = node.childNodes[i]; + if (types === 'code' && isCodeBlock_ && isCodeBlock_(child)) return true; + if (types.includes(child.nodeName)) return true; + if (nodeContains(child, types)) return true; + } + + return false; +} + +const tableShouldBeHtml = (tableNode, options) => { + const possibleTags = [ + 'UL', + 'OL', + 'H1', + 'H2', + 'H3', + 'H4', + 'H5', + 'H6', + 'HR', + 'BLOCKQUOTE', + 'PRE' + ]; + + // In general we should leave as HTML tables that include other tables. The + // exception is with the Web Clipper when we import a web page with a layout + // that's made of HTML tables. In that case we have this logic of removing the + // outer table and keeping only the inner ones. For the Rich Text editor + // however we always want to keep nested tables. + if (options.preserveNestedTables) possibleTags.push('TABLE'); + + return nodeContains(tableNode, 'code') || + nodeContains(tableNode, possibleTags); +} + +// Various conditions under which a table should be skipped - i.e. each cell +// will be rendered one after the other as if they were paragraphs. +function tableShouldBeSkipped(tableNode) { + const cached = tableShouldBeSkippedCache_.get(tableNode); + if (cached !== undefined) return cached; + + const result = tableShouldBeSkipped_(tableNode); + + tableShouldBeSkippedCache_.set(tableNode, result); + return result; +} + +function tableShouldBeSkipped_(tableNode) { + if (!tableNode) return true; + if (!tableNode.rows) return true; + if (tableNode.rows.length === 1 && tableNode.rows[0].childNodes.length <= 1) return true; // Table with only one cell + if (nodeContainsTable(tableNode)) return true; + return false; +} + +function nodeParentDiv(node) { + let parent = node.parentNode; + while (parent.nodeName !== 'DIV') { + parent = parent.parentNode; + if (!parent) return null; + } + return parent; +} + +function nodeParentTable(node) { + let parent = node.parentNode; + while (parent.nodeName !== 'TABLE') { + parent = parent.parentNode; + if (!parent) return null; + } + return parent; +} + +function handleColSpan(content, node, emptyChar) { + const colspan = node.getAttribute('colspan') || 1; + for (let i = 1; i < colspan; i++) { + content += ' | ' + emptyChar.repeat(3); + } + return content +} + +function tableColCount(node) { + let maxColCount = 0; + for (let i = 0; i < node.rows.length; i++) { + const row = node.rows[i] + const colCount = row.childNodes.length + if (colCount > maxColCount) maxColCount = colCount + } + return maxColCount +} + +export default function tables (turndownService) { + isCodeBlock_ = turndownService.isCodeBlock; + options_ = turndownService.options; + + turndownService.keep(function (node) { + if (node.nodeName === 'TABLE' && tableShouldBeHtml(node, turndownService.options)) return true; + return false; + }); + for (var key in rules) turndownService.addRule(key, rules[key]) +} diff --git a/packages/turndown-plugin-gfm/src/task-list-items.js b/packages/turndown-plugin-gfm/src/task-list-items.js new file mode 100644 index 000000000..55d4b853b --- /dev/null +++ b/packages/turndown-plugin-gfm/src/task-list-items.js @@ -0,0 +1,10 @@ +export default function taskListItems (turndownService) { + turndownService.addRule('taskListItems', { + filter: function (node) { + return node.type === 'checkbox' && node.parentNode.nodeName === 'LI' + }, + replacement: function (content, node) { + return (node.checked ? '[x]' : '[ ]') + ' ' + } + }) +} diff --git a/packages/turndown-plugin-gfm/test/index.html b/packages/turndown-plugin-gfm/test/index.html new file mode 100644 index 000000000..8e731181d --- /dev/null +++ b/packages/turndown-plugin-gfm/test/index.html @@ -0,0 +1,323 @@ + + + + + turndown test runner + + + + + + +
+
Lorem ipsum
+
~Lorem ipsum~
+
+ +
+
Lorem ipsum
+
~Lorem ipsum~
+
+ +
+
Lorem ipsum
+
~Lorem ipsum~
+
+ +
+
  • Check Me!
+
*   [ ] Check Me!
+
+ +
+
  • Checked!
+
*   [x] Checked!
+
+ +
+
+ + + + + + + + + + + + + + + + + +
Column 1Column 2
Row 1, Column 1Row 1, Column 2
Row 2, Column 1Row 2, Column 2
+
+
| Column 1 | Column 2 |
+| --- | --- |
+| Row 1, Column 1 | Row 1, Column 2 |
+| Row 2, Column 1 | Row 2, Column 2 |
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
Column 1Column 2Column 3Column 4
Row 1, Column 1Row 1, Column 2Row 1, Column 3Row 1, Column 4
Row 2, Column 1Row 2, Column 2Row 2, Column 3Row 2, Column 4
+
+
| Column 1 | Column 2 | Column 3 | Column 4 |
+| :-- | :-: | --: | --- |
+| Row 1, Column 1 | Row 1, Column 2 | Row 1, Column 3 | Row 1, Column 4 |
+| Row 2, Column 1 | Row 2, Column 2 | Row 2, Column 3 | Row 2, Column 4 |
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Column 1Column 2Column 3Column 4
Row 1, Column 2Row 1, Column 3Row 1, Column 4
Row 2, Column 1Row 2, Column 3Row 2, Column 4
Row 3, Column 1Row 3, Column 2Row 3, Column 4
Row 4, Column 1Row 4, Column 2Row 4, Column 3
Row 5, Column 4
+
+
| Column 1 | Column 2 | Column 3 | Column 4 |
+| :-- | :-: | --: | --- |
+|  | Row 1, Column 2 | Row 1, Column 3 | Row 1, Column 4 |
+| Row 2, Column 1 |  | Row 2, Column 3 | Row 2, Column 4 |
+| Row 3, Column 1 | Row 3, Column 2 |  | Row 3, Column 4 |
+| Row 4, Column 1 | Row 4, Column 2 | Row 4, Column 3 |  |
+|  |  |  | Row 5, Column 4 |
+
+ +
+
+ + + + + + + + + + + + + + + + + + + +
Heading 1Heading 2
Row 1Row 1
Row 3Row 3
+
+
| Heading 1 | Heading 2 |
+| --- | --- |
+| Row 1 | Row 1 |
+| Row 3 | Row 3 |
+
+ +
+
+ + + + + + + +
Heading
Content
+
+
| Heading |
+| --- |
+| Content |
+
+ +
+
+ + + + + + + + + +
Heading
Content
+
+
| Heading |
+| --- |
+| Content |
+
+ +
+
+ + + + + + + + + + + + + + + + + +
Heading
Content
Heading
Content
+
+
| Heading |
+| --- |
+| Content |
+| Heading |
+| Content |
+
+ +
+
+ + + +
Heading
Cell
+
+
| Heading |
+| --- |
+| Cell |
+
+ +
+
+ + + +
Heading
+
+
| Heading |
+| --- |
+
+ +
+
+ + + +
Row 1 Cell 1Row 1 Cell 2
Row 2 Cell 1Row 2 Cell 2
+
+
|     |     |
+| --- | --- |
+| Row 1 Cell 1 | Row 1 Cell 2 |
+| Row 2 Cell 1 | Row 2 Cell 2 |
+
+ +
+
+ + + + + + + + + +
HeadingNot a heading
HeadingNot a heading
+
+
|     |     |
+| --- | --- |
+| Heading | Not a heading |
+| Heading | Not a heading |
+
+ +
+
+
+
<p>Hello world</p>
+
+
+
```html
+<p>Hello world</p>
+```
+
+ +
+
+
+
;(function () {})()
+
+
+
```js
+;(function () {})()
+```
+
+ + + + + + diff --git a/packages/turndown-plugin-gfm/test/turndown-plugin-gfm-test.js b/packages/turndown-plugin-gfm/test/turndown-plugin-gfm-test.js new file mode 100644 index 000000000..414dc6460 --- /dev/null +++ b/packages/turndown-plugin-gfm/test/turndown-plugin-gfm-test.js @@ -0,0 +1,13 @@ +const Attendant = require('turndown-attendant'); +const TurndownService = require('turndown'); +const gfm = require('../lib/turndown-plugin-gfm.cjs').gfm; + +const attendant = new Attendant({ + file: `${__dirname}/index.html`, + TurndownService: TurndownService, + beforeEach: function(turndownService) { + turndownService.use(gfm); + }, +}); + +attendant.run(); diff --git a/src/public/app/components/app_context.ts b/src/public/app/components/app_context.ts index 8c62a5586..079e9f737 100644 --- a/src/public/app/components/app_context.ts +++ b/src/public/app/components/app_context.ts @@ -22,9 +22,9 @@ import type LoadResults from "../services/load_results.js"; import type { Attribute } from "../services/attribute_parser.js"; import type NoteTreeWidget from "../widgets/note_tree.js"; import type { default as NoteContext, GetTextEditorCallback } from "./note_context.js"; -import type { ContextMenuEvent } from "../menus/context_menu.js"; import type TypeWidget from "../widgets/type_widgets/type_widget.js"; import type EditableTextTypeWidget from "../widgets/type_widgets/editable_text.js"; +import type FAttribute from "../entities/fattribute.js"; interface Layout { getRootWidget: (appContext: AppContext) => RootWidget; @@ -57,8 +57,8 @@ export interface ContextMenuCommandData extends CommandData { } export interface NoteCommandData extends CommandData { - notePath?: string; - hoistedNoteId?: string; + notePath?: string | null; + hoistedNoteId?: string | null; viewScope?: ViewScope; } @@ -173,10 +173,10 @@ export type CommandMappings = { callback: (value: NoteDetailWidget | PromiseLike) => void; }; executeWithTextEditor: CommandData & - ExecuteCommandData & { - callback?: GetTextEditorCallback; - }; - executeWithCodeEditor: CommandData & ExecuteCommandData; + ExecuteCommandData & { + callback?: GetTextEditorCallback; + }; + executeWithCodeEditor: CommandData & ExecuteCommandData; /** * Called upon when attempting to retrieve the content element of a {@link NoteContext}. * Generally should not be invoked manually, as it is used by {@link NoteContext.getContentElement}. @@ -296,16 +296,13 @@ type EventMappings = { noteContext: NoteContext; notePath?: string | null; }; - noteSwitchedAndActivatedEvent: { + noteSwitchedAndActivated: { noteContext: NoteContext; notePath: string; }; setNoteContext: { noteContext: NoteContext; }; - noteTypeMimeChangedEvent: { - noteId: string; - }; reEvaluateHighlightsListWidgetVisibility: { noteId: string | undefined; }; @@ -326,14 +323,14 @@ type EventMappings = { noteId: string; ntxId: string | null; }; - contextsReopenedEvent: { - mainNtxId: string; + contextsReopened: { + mainNtxId: string | null; tabPosition: number; }; noteDetailRefreshed: { ntxId?: string | null; }; - noteContextReorderEvent: { + noteContextReorder: { oldMainNtxId: string; newMainNtxId: string; ntxIdsInOrder: string[]; @@ -341,7 +338,7 @@ type EventMappings = { newNoteContextCreated: { noteContext: NoteContext; }; - noteContextRemovedEvent: { + noteContextRemoved: { ntxIds: string[]; }; exportSvg: { @@ -362,12 +359,17 @@ type EventMappings = { relationMapResetPanZoom: { ntxId: string | null | undefined }; relationMapResetZoomIn: { ntxId: string | null | undefined }; relationMapResetZoomOut: { ntxId: string | null | undefined }; - activeNoteChangedEvent: {}; + activeNoteChanged: {}; showAddLinkDialog: { textTypeWidget: EditableTextTypeWidget; text: string; }; - + openBulkActionsDialog: { + selectedOrActiveNoteIds: string[]; + }; + cloneNoteIdsTo: { + noteIds: string[]; + }; }; export type EventListener = { diff --git a/src/public/app/components/entrypoints.ts b/src/public/app/components/entrypoints.ts index 69651de17..0ad2c76ed 100644 --- a/src/public/app/components/entrypoints.ts +++ b/src/public/app/components/entrypoints.ts @@ -13,7 +13,7 @@ import { t } from "../services/i18n.js"; import type FNote from "../entities/fnote.js"; // TODO: Move somewhere else nicer. -export type SqlExecuteResults = unknown[]; +export type SqlExecuteResults = string[][][]; // TODO: Deduplicate with server. interface SqlExecuteResponse { @@ -66,12 +66,13 @@ export default class Entrypoints extends Component { } async toggleNoteHoistingCommand({ noteId = appContext.tabManager.getActiveContextNoteId() }) { - if (!noteId) { + const activeNoteContext = appContext.tabManager.getActiveContext(); + + if (!activeNoteContext || !noteId) { return; } const noteToHoist = await froca.getNote(noteId); - const activeNoteContext = appContext.tabManager.getActiveContext(); if (noteToHoist?.noteId === activeNoteContext.hoistedNoteId) { await activeNoteContext.unhoist(); @@ -83,6 +84,11 @@ export default class Entrypoints extends Component { async hoistNoteCommand({ noteId }: { noteId: string }) { const noteContext = appContext.tabManager.getActiveContext(); + if (!noteContext) { + logError("hoistNoteCommand: noteContext is null"); + return; + } + if (noteContext.hoistedNoteId !== noteId) { await noteContext.setHoistedNoteId(noteId); } @@ -174,7 +180,11 @@ export default class Entrypoints extends Component { } async runActiveNoteCommand() { - const { ntxId, note } = appContext.tabManager.getActiveContext(); + const noteContext = appContext.tabManager.getActiveContext(); + if (!noteContext) { + return; + } + const { ntxId, note } = noteContext; // ctrl+enter is also used elsewhere, so make sure we're running only when appropriate if (!note || note.type !== "code") { diff --git a/src/public/app/components/main_tree_executors.ts b/src/public/app/components/main_tree_executors.ts index 78251d67c..b5473ffe4 100644 --- a/src/public/app/components/main_tree_executors.ts +++ b/src/public/app/components/main_tree_executors.ts @@ -1,4 +1,4 @@ -import appContext from "./app_context.js"; +import appContext, { type EventData } from "./app_context.js"; import noteCreateService from "../services/note_create.js"; import treeService from "../services/tree.js"; import hoistedNoteService from "../services/hoisted_note.js"; @@ -14,23 +14,19 @@ export default class MainTreeExecutors extends Component { return appContext.noteTreeWidget; } - async cloneNotesToCommand() { + async cloneNotesToCommand({ selectedOrActiveNoteIds }: EventData<"cloneNotesTo">) { if (!this.tree) { return; } - const selectedOrActiveNoteIds = this.tree.getSelectedOrActiveNodes().map((node) => node.data.noteId); - this.triggerCommand("cloneNoteIdsTo", { noteIds: selectedOrActiveNoteIds }); } - async moveNotesToCommand() { + async moveNotesToCommand({ selectedOrActiveBranchIds }: EventData<"moveNotesTo">) { if (!this.tree) { return; } - const selectedOrActiveBranchIds = this.tree.getSelectedOrActiveNodes().map((node) => node.data.branchId); - this.triggerCommand("moveBranchIdsTo", { branchIds: selectedOrActiveBranchIds }); } diff --git a/src/public/app/components/note_context.ts b/src/public/app/components/note_context.ts index 0b4798cea..7d9f3d246 100644 --- a/src/public/app/components/note_context.ts +++ b/src/public/app/components/note_context.ts @@ -311,7 +311,7 @@ class NoteContext extends Component implements EventListener<"entitiesReloaded"> async getCodeEditor() { return this.timeout( - new Promise((resolve) => + new Promise((resolve) => appContext.triggerCommand("executeWithCodeEditor", { resolve, ntxId: this.ntxId diff --git a/src/public/app/components/tab_manager.js b/src/public/app/components/tab_manager.ts similarity index 73% rename from src/public/app/components/tab_manager.js rename to src/public/app/components/tab_manager.ts index 46a0f9d96..a4d00a075 100644 --- a/src/public/app/components/tab_manager.js +++ b/src/public/app/components/tab_manager.ts @@ -4,23 +4,40 @@ import server from "../services/server.js"; import options from "../services/options.js"; import froca from "../services/froca.js"; import treeService from "../services/tree.js"; -import utils from "../services/utils.js"; import NoteContext from "./note_context.js"; import appContext from "./app_context.js"; import Mutex from "../utils/mutex.js"; import linkService from "../services/link.js"; +import type { EventData } from "./app_context.js"; +import type FNote from "../entities/fnote.js"; + +interface TabState { + contexts: NoteContext[]; + position: number; +} + +interface NoteContextState { + ntxId: string; + mainNtxId: string | null; + notePath: string | null; + hoistedNoteId: string; + active: boolean; + viewScope: Record; +} export default class TabManager extends Component { + public children: NoteContext[]; + public mutex: Mutex; + public activeNtxId: string | null; + public recentlyClosedTabs: TabState[]; + public tabsUpdate: SpacedUpdate; + constructor() { super(); - /** @property {NoteContext[]} */ this.children = []; this.mutex = new Mutex(); - this.activeNtxId = null; - - // elements are arrays of {contexts, position}, storing note contexts for each tab (one main context + subcontexts [splits]), and the original position of the tab this.recentlyClosedTabs = []; this.tabsUpdate = new SpacedUpdate(async () => { @@ -28,7 +45,9 @@ export default class TabManager extends Component { return; } - const openNoteContexts = this.noteContexts.map((nc) => nc.getPojoState()).filter((t) => !!t); + const openNoteContexts = this.noteContexts + .map((nc) => nc.getPojoState()) + .filter((t) => !!t); await server.put("options", { openNoteContexts: JSON.stringify(openNoteContexts) @@ -38,13 +57,11 @@ export default class TabManager extends Component { appContext.addBeforeUnloadListener(this); } - /** @returns {NoteContext[]} */ - get noteContexts() { + get noteContexts(): NoteContext[] { return this.children; } - /** @type {NoteContext[]} */ - get mainNoteContexts() { + get mainNoteContexts(): NoteContext[] { return this.noteContexts.filter((nc) => !nc.mainNtxId); } @@ -53,11 +70,12 @@ export default class TabManager extends Component { const noteContextsToOpen = (appContext.isMainWindow && options.getJson("openNoteContexts")) || []; // preload all notes at once - await froca.getNotes([...noteContextsToOpen.flatMap((tab) => [treeService.getNoteIdFromUrl(tab.notePath), tab.hoistedNoteId])], true); + await froca.getNotes([...noteContextsToOpen.flatMap((tab: NoteContextState) => + [treeService.getNoteIdFromUrl(tab.notePath), tab.hoistedNoteId])], true); - const filteredNoteContexts = noteContextsToOpen.filter((openTab) => { + const filteredNoteContexts = noteContextsToOpen.filter((openTab: NoteContextState) => { const noteId = treeService.getNoteIdFromUrl(openTab.notePath); - if (!(noteId in froca.notes)) { + if (noteId && !(noteId in froca.notes)) { // note doesn't exist so don't try to open tab for it return false; } @@ -82,7 +100,7 @@ export default class TabManager extends Component { hoistedNoteId: parsedFromUrl.hoistedNoteId || "root", viewScope: parsedFromUrl.viewScope || {} }); - } else if (!filteredNoteContexts.find((tab) => tab.active)) { + } else if (!filteredNoteContexts.find((tab: NoteContextState) => tab.active)) { filteredNoteContexts[0].active = true; } @@ -101,21 +119,30 @@ export default class TabManager extends Component { // if there's a notePath in the URL, make sure it's open and active // (useful, for e.g., opening clipped notes from clipper or opening link in an extra window) if (parsedFromUrl.notePath) { - await appContext.tabManager.switchToNoteContext(parsedFromUrl.ntxId, parsedFromUrl.notePath, parsedFromUrl.viewScope, parsedFromUrl.hoistedNoteId); + await appContext.tabManager.switchToNoteContext( + parsedFromUrl.ntxId, + parsedFromUrl.notePath, + parsedFromUrl.viewScope, + parsedFromUrl.hoistedNoteId + ); } else if (parsedFromUrl.searchString) { await appContext.triggerCommand("searchNotes", { searchString: parsedFromUrl.searchString }); } - } catch (e) { - logError(`Loading note contexts '${options.get("openNoteContexts")}' failed: ${e.message} ${e.stack}`); + } catch (e: unknown) { + if (e instanceof Error) { + logError(`Loading note contexts '${options.get("openNoteContexts")}' failed: ${e.message} ${e.stack}`); + } else { + logError(`Loading note contexts '${options.get("openNoteContexts")}' failed: ${String(e)}`); + } // try to recover await this.openEmptyTab(); } } - noteSwitchedEvent({ noteContext }) { + noteSwitchedEvent({ noteContext }: EventData<"noteSwitched">) { if (noteContext.isActive()) { this.setCurrentNavigationStateToHash(); } @@ -135,10 +162,10 @@ export default class TabManager extends Component { const activeNoteContext = this.getActiveContext(); this.updateDocumentTitle(activeNoteContext); - this.triggerEvent("activeNoteChanged"); // trigger this even in on popstate event + this.triggerEvent("activeNoteChanged", {}); // trigger this even in on popstate event } - calculateHash() { + calculateHash(): string { const activeNoteContext = this.getActiveContext(); if (!activeNoteContext) { return ""; @@ -152,21 +179,15 @@ export default class TabManager extends Component { }); } - /** @returns {NoteContext[]} */ - getNoteContexts() { + getNoteContexts(): NoteContext[] { return this.noteContexts; } - /** - * Main context is essentially a tab (children are splits), so this returns tabs. - * @returns {NoteContext[]} - */ - getMainNoteContexts() { + getMainNoteContexts(): NoteContext[] { return this.noteContexts.filter((nc) => nc.isMainContext()); } - /** @returns {NoteContext} */ - getNoteContextById(ntxId) { + getNoteContextById(ntxId: string | null): NoteContext { const noteContext = this.noteContexts.find((nc) => nc.ntxId === ntxId); if (!noteContext) { @@ -176,58 +197,47 @@ export default class TabManager extends Component { return noteContext; } - /** - * Get active context which represents the visible split with focus. Active context can, but doesn't have to be "main". - * - * @returns {NoteContext} - */ - getActiveContext() { + getActiveContext(): NoteContext | null { return this.activeNtxId ? this.getNoteContextById(this.activeNtxId) : null; } - /** - * Get active main context which corresponds to the active tab. - * - * @returns {NoteContext} - */ - getActiveMainContext() { + getActiveMainContext(): NoteContext | null { return this.activeNtxId ? this.getNoteContextById(this.activeNtxId).getMainContext() : null; } - /** @returns {string|null} */ - getActiveContextNotePath() { + getActiveContextNotePath(): string | null { const activeContext = this.getActiveContext(); - return activeContext ? activeContext.notePath : null; + return activeContext?.notePath ?? null; } - /** @returns {FNote} */ - getActiveContextNote() { + getActiveContextNote(): FNote | null { const activeContext = this.getActiveContext(); return activeContext ? activeContext.note : null; } - /** @returns {string|null} */ - getActiveContextNoteId() { + getActiveContextNoteId(): string | null { const activeNote = this.getActiveContextNote(); - return activeNote ? activeNote.noteId : null; } - /** @returns {string|null} */ - getActiveContextNoteType() { + getActiveContextNoteType(): string | null { const activeNote = this.getActiveContextNote(); - return activeNote ? activeNote.type : null; } - /** @returns {string|null} */ - getActiveContextNoteMime() { - const activeNote = this.getActiveContextNote(); + getActiveContextNoteMime(): string | null { + const activeNote = this.getActiveContextNote(); return activeNote ? activeNote.mime : null; } - async switchToNoteContext(ntxId, notePath, viewScope = {}, hoistedNoteId = null) { - const noteContext = this.noteContexts.find((nc) => nc.ntxId === ntxId) || (await this.openEmptyTab()); + async switchToNoteContext( + ntxId: string | null, + notePath: string, + viewScope: Record = {}, + hoistedNoteId: string | null = null + ) { + const noteContext = this.noteContexts.find((nc) => nc.ntxId === ntxId) || + await this.openEmptyTab(); await this.activateNoteContext(noteContext.ntxId); @@ -242,20 +252,21 @@ export default class TabManager extends Component { async openAndActivateEmptyTab() { const noteContext = await this.openEmptyTab(); - await this.activateNoteContext(noteContext.ntxId); - - await noteContext.setEmpty(); + noteContext.setEmpty(); } - async openEmptyTab(ntxId = null, hoistedNoteId = "root", mainNtxId) { + async openEmptyTab( + ntxId: string | null = null, + hoistedNoteId: string = "root", + mainNtxId: string | null = null + ): Promise { const noteContext = new NoteContext(ntxId, hoistedNoteId, mainNtxId); const existingNoteContext = this.children.find((nc) => nc.ntxId === noteContext.ntxId); if (existingNoteContext) { await existingNoteContext.setHoistedNoteId(hoistedNoteId); - return existingNoteContext; } @@ -266,29 +277,37 @@ export default class TabManager extends Component { return noteContext; } - async openInNewTab(targetNoteId, hoistedNoteId = null) { - const noteContext = await this.openEmptyTab(null, hoistedNoteId || this.getActiveContext().hoistedNoteId); + async openInNewTab(targetNoteId: string, hoistedNoteId: string | null = null) { + const noteContext = await this.openEmptyTab(null, hoistedNoteId || this.getActiveContext()?.hoistedNoteId); await noteContext.setNote(targetNoteId); } - async openInSameTab(targetNoteId, hoistedNoteId = null) { + async openInSameTab(targetNoteId: string, hoistedNoteId: string | null = null) { const activeContext = this.getActiveContext(); + if (!activeContext) return; + await activeContext.setHoistedNoteId(hoistedNoteId || activeContext.hoistedNoteId); await activeContext.setNote(targetNoteId); } - /** - * If the requested notePath is within current note hoisting scope then keep the note hoisting also for the new tab. - */ - async openTabWithNoteWithHoisting(notePath, opts = {}) { + async openTabWithNoteWithHoisting( + notePath: string, + opts: { + activate?: boolean | null; + ntxId?: string | null; + mainNtxId?: string | null; + hoistedNoteId?: string | null; + viewScope?: Record | null; + } = {} + ): Promise { const noteContext = this.getActiveContext(); let hoistedNoteId = "root"; if (noteContext) { const resolvedNotePath = await treeService.resolveNotePath(notePath, noteContext.hoistedNoteId); - if (resolvedNotePath.includes(noteContext.hoistedNoteId) || resolvedNotePath.includes("_hidden")) { + if (resolvedNotePath?.includes(noteContext.hoistedNoteId) || resolvedNotePath?.includes("_hidden")) { hoistedNoteId = noteContext.hoistedNoteId; } } @@ -298,7 +317,16 @@ export default class TabManager extends Component { return this.openContextWithNote(notePath, opts); } - async openContextWithNote(notePath, opts = {}) { + async openContextWithNote( + notePath: string | null, + opts: { + activate?: boolean | null; + ntxId?: string | null; + mainNtxId?: string | null; + hoistedNoteId?: string | null; + viewScope?: Record | null; + } = {} + ): Promise { const activate = !!opts.activate; const ntxId = opts.ntxId || null; const mainNtxId = opts.mainNtxId || null; @@ -306,7 +334,6 @@ export default class TabManager extends Component { const viewScope = opts.viewScope || { viewMode: "default" }; const noteContext = await this.openEmptyTab(ntxId, hoistedNoteId, mainNtxId); - if (notePath) { await noteContext.setNote(notePath, { // if activate is false, then send normal noteSwitched event @@ -315,7 +342,7 @@ export default class TabManager extends Component { }); } - if (activate) { + if (activate && noteContext.notePath) { this.activateNoteContext(noteContext.ntxId, false); await this.triggerEvent("noteSwitchedAndActivated", { @@ -327,21 +354,24 @@ export default class TabManager extends Component { return noteContext; } - async activateOrOpenNote(noteId) { + async activateOrOpenNote(noteId: string) { for (const noteContext of this.getNoteContexts()) { if (noteContext.note && noteContext.note.noteId === noteId) { this.activateNoteContext(noteContext.ntxId); - return; } } // if no tab with this note has been found we'll create new tab - await this.openContextWithNote(noteId, { activate: true }); } - async activateNoteContext(ntxId, triggerEvent = true) { + async activateNoteContext(ntxId: string | null, triggerEvent: boolean = true) { + if (!ntxId) { + logError("activateNoteContext: ntxId is null"); + return; + } + if (ntxId === this.activeNtxId) { return; } @@ -359,14 +389,10 @@ export default class TabManager extends Component { this.setCurrentNavigationStateToHash(); } - /** - * @param ntxId - * @returns {Promise} true if note context has been removed, false otherwise - */ - async removeNoteContext(ntxId) { + async removeNoteContext(ntxId: string | null): Promise { // removing note context is an async process which can take some time, if users presses CTRL-W quickly, two // close events could interleave which would then lead to attempting to activate already removed context. - return await this.mutex.runExclusively(async () => { + return await this.mutex.runExclusively(async (): Promise => { let noteContextToRemove; try { @@ -399,7 +425,7 @@ export default class TabManager extends Component { const noteContextsToRemove = noteContextToRemove.getSubContexts(); const ntxIdsToRemove = noteContextsToRemove.map((nc) => nc.ntxId); - await this.triggerEvent("beforeNoteContextRemove", { ntxIds: ntxIdsToRemove }); + await this.triggerEvent("beforeNoteContextRemove", { ntxIds: ntxIdsToRemove.filter((id) => id !== null) }); if (!noteContextToRemove.isMainContext()) { const siblings = noteContextToRemove.getMainContext().getSubContexts(); @@ -421,12 +447,11 @@ export default class TabManager extends Component { } this.removeNoteContexts(noteContextsToRemove); - return true; }); } - removeNoteContexts(noteContextsToRemove) { + removeNoteContexts(noteContextsToRemove: NoteContext[]) { const ntxIdsToRemove = noteContextsToRemove.map((nc) => nc.ntxId); const position = this.noteContexts.findIndex((nc) => ntxIdsToRemove.includes(nc.ntxId)); @@ -435,12 +460,12 @@ export default class TabManager extends Component { this.addToRecentlyClosedTabs(noteContextsToRemove, position); - this.triggerEvent("noteContextRemoved", { ntxIds: ntxIdsToRemove }); + this.triggerEvent("noteContextRemoved", { ntxIds: ntxIdsToRemove.filter((id) => id !== null) }); this.tabsUpdate.scheduleUpdate(); } - addToRecentlyClosedTabs(noteContexts, position) { + addToRecentlyClosedTabs(noteContexts: NoteContext[], position: number) { if (noteContexts.length === 1 && noteContexts[0].isEmpty()) { return; } @@ -448,26 +473,42 @@ export default class TabManager extends Component { this.recentlyClosedTabs.push({ contexts: noteContexts, position: position }); } - tabReorderEvent({ ntxIdsInOrder }) { - const order = {}; + tabReorderEvent({ ntxIdsInOrder }: { ntxIdsInOrder: string[] }) { + const order: Record = {}; let i = 0; for (const ntxId of ntxIdsInOrder) { for (const noteContext of this.getNoteContextById(ntxId).getSubContexts()) { - order[noteContext.ntxId] = i++; + if (noteContext.ntxId) { + order[noteContext.ntxId] = i++; + } } } - this.children.sort((a, b) => (order[a.ntxId] < order[b.ntxId] ? -1 : 1)); + this.children.sort((a, b) => { + if (!a.ntxId || !b.ntxId) return 0; + return (order[a.ntxId] ?? 0) < (order[b.ntxId] ?? 0) ? -1 : 1; + }); this.tabsUpdate.scheduleUpdate(); } - noteContextReorderEvent({ ntxIdsInOrder, oldMainNtxId, newMainNtxId }) { + noteContextReorderEvent({ + ntxIdsInOrder, + oldMainNtxId, + newMainNtxId + }: { + ntxIdsInOrder: string[]; + oldMainNtxId?: string; + newMainNtxId?: string; + }) { const order = Object.fromEntries(ntxIdsInOrder.map((v, i) => [v, i])); - this.children.sort((a, b) => (order[a.ntxId] < order[b.ntxId] ? -1 : 1)); + this.children.sort((a, b) => { + if (!a.ntxId || !b.ntxId) return 0; + return (order[a.ntxId] ?? 0) < (order[b.ntxId] ?? 0) ? -1 : 1; + }); if (oldMainNtxId && newMainNtxId) { this.children.forEach((c) => { @@ -485,7 +526,8 @@ export default class TabManager extends Component { } async activateNextTabCommand() { - const activeMainNtxId = this.getActiveMainContext().ntxId; + const activeMainNtxId = this.getActiveMainContext()?.ntxId; + if (!activeMainNtxId) return; const oldIdx = this.mainNoteContexts.findIndex((nc) => nc.ntxId === activeMainNtxId); const newActiveNtxId = this.mainNoteContexts[oldIdx === this.mainNoteContexts.length - 1 ? 0 : oldIdx + 1].ntxId; @@ -494,7 +536,8 @@ export default class TabManager extends Component { } async activatePreviousTabCommand() { - const activeMainNtxId = this.getActiveMainContext().ntxId; + const activeMainNtxId = this.getActiveMainContext()?.ntxId; + if (!activeMainNtxId) return; const oldIdx = this.mainNoteContexts.findIndex((nc) => nc.ntxId === activeMainNtxId); const newActiveNtxId = this.mainNoteContexts[oldIdx === 0 ? this.mainNoteContexts.length - 1 : oldIdx - 1].ntxId; @@ -506,9 +549,8 @@ export default class TabManager extends Component { await this.removeNoteContext(this.activeNtxId); } - beforeUnloadEvent() { + beforeUnloadEvent(): boolean { this.tabsUpdate.updateNowIfNecessary(); - return true; // don't block closing the tab, this metadata is not that important } @@ -522,7 +564,7 @@ export default class TabManager extends Component { } } - async closeOtherTabsCommand({ ntxId }) { + async closeOtherTabsCommand({ ntxId }: { ntxId: string }) { for (const ntxIdToRemove of this.mainNoteContexts.map((nc) => nc.ntxId)) { if (ntxIdToRemove !== ntxId) { await this.removeNoteContext(ntxIdToRemove); @@ -530,7 +572,7 @@ export default class TabManager extends Component { } } - async closeRightTabsCommand({ ntxId }) { + async closeRightTabsCommand({ ntxId }: { ntxId: string }) { const ntxIds = this.mainNoteContexts.map((nc) => nc.ntxId); const index = ntxIds.indexOf(ntxId); @@ -542,11 +584,11 @@ export default class TabManager extends Component { } } - async closeTabCommand({ ntxId }) { + async closeTabCommand({ ntxId }: { ntxId: string }) { await this.removeNoteContext(ntxId); } - async moveTabToNewWindowCommand({ ntxId }) { + async moveTabToNewWindowCommand({ ntxId }: { ntxId: string }) { const { notePath, hoistedNoteId } = this.getNoteContextById(ntxId); const removed = await this.removeNoteContext(ntxId); @@ -556,17 +598,16 @@ export default class TabManager extends Component { } } - async copyTabToNewWindowCommand({ ntxId }) { + async copyTabToNewWindowCommand({ ntxId }: { ntxId: string }) { const { notePath, hoistedNoteId } = this.getNoteContextById(ntxId); this.triggerCommand("openInWindow", { notePath, hoistedNoteId }); } async reopenLastTabCommand() { - let closeLastEmptyTab = null; - - await this.mutex.runExclusively(async () => { + const closeLastEmptyTab: NoteContext | undefined = await this.mutex.runExclusively(async () => { + let closeLastEmptyTab if (this.recentlyClosedTabs.length === 0) { - return; + return closeLastEmptyTab; } if (this.noteContexts.length === 1 && this.noteContexts[0].isEmpty()) { @@ -575,6 +616,8 @@ export default class TabManager extends Component { } const lastClosedTab = this.recentlyClosedTabs.pop(); + if (!lastClosedTab) return closeLastEmptyTab; + const noteContexts = lastClosedTab.contexts; for (const noteContext of noteContexts) { @@ -589,7 +632,7 @@ export default class TabManager extends Component { ...this.noteContexts.slice(-noteContexts.length), ...this.noteContexts.slice(lastClosedTab.position, -noteContexts.length) ]; - await this.noteContextReorderEvent({ ntxIdsInOrder: ntxsInOrder.map((nc) => nc.ntxId) }); + this.noteContextReorderEvent({ ntxIdsInOrder: ntxsInOrder.map((nc) => nc.ntxId).filter((id) => id !== null) }); let mainNtx = noteContexts.find((nc) => nc.isMainContext()); if (mainNtx) { @@ -601,13 +644,14 @@ export default class TabManager extends Component { } else { // reopened a single split, need to reorder the pane widget in split note container await this.triggerEvent("contextsReopened", { - ntxId: ntxsInOrder[lastClosedTab.position].ntxId, + mainNtxId: ntxsInOrder[lastClosedTab.position].ntxId, // this is safe since lastClosedTab.position can never be 0 in this case - afterNtxId: ntxsInOrder[lastClosedTab.position - 1].ntxId + tabPosition: lastClosedTab.position - 1 }); } const noteContextToActivate = noteContexts.length === 1 ? noteContexts[0] : noteContexts.find((nc) => nc.isMainContext()); + if (!noteContextToActivate) return closeLastEmptyTab; await this.activateNoteContext(noteContextToActivate.ntxId); @@ -615,6 +659,7 @@ export default class TabManager extends Component { noteContext: noteContextToActivate, notePath: noteContextToActivate.notePath }); + return closeLastEmptyTab; }); if (closeLastEmptyTab) { @@ -626,7 +671,9 @@ export default class TabManager extends Component { this.tabsUpdate.scheduleUpdate(); } - async updateDocumentTitle(activeNoteContext) { + async updateDocumentTitle(activeNoteContext: NoteContext | null) { + if (!activeNoteContext) return; + const titleFragments = [ // it helps to navigate in history if note title is included in the title await activeNoteContext.getNavigationTitle(), @@ -636,7 +683,7 @@ export default class TabManager extends Component { document.title = titleFragments.join(" - "); } - async entitiesReloadedEvent({ loadResults }) { + async entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) { const activeContext = this.getActiveContext(); if (activeContext && loadResults.isNoteReloaded(activeContext.noteId)) { @@ -646,7 +693,6 @@ export default class TabManager extends Component { async frocaReloadedEvent() { const activeContext = this.getActiveContext(); - if (activeContext) { await this.updateDocumentTitle(activeContext); } diff --git a/src/public/app/doc_notes/en/User Guide/!!!meta.json b/src/public/app/doc_notes/en/User Guide/!!!meta.json index 542666e59..087d765ae 100644 --- a/src/public/app/doc_notes/en/User Guide/!!!meta.json +++ b/src/public/app/doc_notes/en/User Guide/!!!meta.json @@ -1,6 +1,6 @@ { "formatVersion": 2, - "appVersion": "0.92.3-beta", + "appVersion": "0.92.4", "files": [ { "isClone": false, @@ -9,9 +9,9 @@ "pOsGYCXsbNQG" ], "title": "User Guide", - "notePosition": 110, + "notePosition": 130, "prefix": null, - "isExpanded": false, + "isExpanded": true, "type": "text", "mime": "text/html", "attributes": [], @@ -149,14 +149,6 @@ "mime": "image/jpg", "position": 10, "dataFileName": "Attributes_image.png" - }, - { - "attachmentId": "ZuUT0WgJVR2j", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Attributes_image.png" } ], "dirFileName": "Attributes", @@ -795,14 +787,6 @@ "mime": "image/jpg", "position": 10, "dataFileName": "1_Day Notes_image.png" - }, - { - "attachmentId": "H3Iy9PpIDd0Z", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Day Notes_image.png" } ] }, @@ -1287,54 +1271,6 @@ "mime": "image/jpg", "position": 10, "dataFileName": "Manually altering the data.png" - }, - { - "attachmentId": "fJlFqdEOpLrF", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Manually altering the data.png" - }, - { - "attachmentId": "lAsR2tqMXurk", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Manually altering the data.png" - }, - { - "attachmentId": "uvaARhqiU4M5", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "3_Manually altering the data.png" - }, - { - "attachmentId": "W4710rPIeZjF", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "4_Manually altering the data.png" - }, - { - "attachmentId": "wL249F7azfME", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "5_Manually altering the data.png" - }, - { - "attachmentId": "yC5HdtMbAaaF", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Manually altering the data.png" } ], "dirFileName": "Manually altering the database", @@ -1467,4083 +1403,6 @@ } ] }, - { - "isClone": false, - "noteId": "s3YCWHBfmYuM", - "notePath": [ - "pOsGYCXsbNQG", - "s3YCWHBfmYuM" - ], - "title": "Quick Start", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "JXFeNgU8Xnp1", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "poXkQfguuA0U", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "WOcw2SLH6tbX", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "RDslemsQ6gCp", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "cbkrhQjrkKrh", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 60 - }, - { - "type": "label", - "name": "shareAlias", - "value": "quick-start", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-run", - "isInheritable": false, - "position": 40 - } - ], - "format": "html", - "dataFileName": "Quick Start.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "gh7bpGYxajRS", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS" - ], - "title": "Basic Concepts", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-help-circle", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "attachments": [], - "dirFileName": "Basic Concepts", - "children": [ - { - "isClone": false, - "noteId": "Vc8PjrjAGuOp", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp" - ], - "title": "UI Elements", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "attachments": [ - { - "attachmentId": "0CaTtahPNa2i", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "UI Elements_image.png" - }, - { - "attachmentId": "vbrDuqZjshed", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_UI Elements_image.png" - } - ], - "dirFileName": "UI Elements", - "children": [ - { - "isClone": false, - "noteId": "x0JgW8UqGXvq", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "x0JgW8UqGXvq" - ], - "title": "Vertical and horizontal layout", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "xYmIYSP6wE3F", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "oPVyFC7WL2Lp", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "Ms1nauBra7gq", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "x3i7MxGccDuM", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "_lbSettings", - "isInheritable": false, - "position": 50 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-layout", - "isInheritable": false, - "position": 40 - } - ], - "format": "html", - "dataFileName": "Vertical and horizontal layout.html", - "attachments": [ - { - "attachmentId": "7VlCImOtpKzK", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Vertical and horizontal la.png" - }, - { - "attachmentId": "9sCZBqokn4vf", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Vertical and horizontal la.png" - }, - { - "attachmentId": "gw3DaUul5ccI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Vertical and horizontal la.png" - }, - { - "attachmentId": "jhiE5DTkLOCK", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "3_Vertical and horizontal la.png" - }, - { - "attachmentId": "JwO3rUNb9tyU", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "4_Vertical and horizontal la.png" - }, - { - "attachmentId": "NVjM5z6IsNZf", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Vertical and horizontal la.png" - }, - { - "attachmentId": "Z2F8ipVjwugg", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Vertical and horizontal la.png" - } - ] - }, - { - "isClone": false, - "noteId": "x3i7MxGccDuM", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "x3i7MxGccDuM" - ], - "title": "Global menu", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "x0JgW8UqGXvq", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Global menu.html", - "attachments": [ - { - "attachmentId": "8fNGILWWQodv", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Global menu_image.png" - }, - { - "attachmentId": "PhNb7G9OgPVt", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Global menu_image.png" - }, - { - "attachmentId": "rCnBqSyldhp9", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Global menu_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "BlN9DFI679QC", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "BlN9DFI679QC" - ], - "title": "Ribbon", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "4TIF1oA4VQRO", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Ribbon.html", - "attachments": [ - { - "attachmentId": "JCiJ3vRhgXY9", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Ribbon_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "4TIF1oA4VQRO", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "4TIF1oA4VQRO" - ], - "title": "Options", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-cog", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Options.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "oPVyFC7WL2Lp", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "oPVyFC7WL2Lp" - ], - "title": "Note Tree", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "sLZ7Bcq9p8E9", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "qL7381ZG0lMK", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "A9Oc6YKKc65v", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "IakOLONlIfGI", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "ivYnonVFBxbQ", - "isInheritable": false, - "position": 50 - }, - { - "type": "label", - "name": "shareAlias", - "value": "tree-manipulation", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-tree-alt", - "isInheritable": false, - "position": 50 - } - ], - "format": "html", - "dataFileName": "Note Tree.html", - "attachments": [ - { - "attachmentId": "Bp5BCJRntpyt", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Note Tree_image.png" - }, - { - "attachmentId": "DYf7wm3Yv6EC", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Note Tree_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "xYmIYSP6wE3F", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "xYmIYSP6wE3F" - ], - "title": "Launch Bar", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "x3i7MxGccDuM", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "p9kXRFAkwN4o", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "OR8WJ7Iz9K4U", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "OFXdgB2nNk1F", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "x0JgW8UqGXvq", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "oPVyFC7WL2Lp", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 70 - }, - { - "type": "relation", - "name": "internalLink", - "value": "SynTBQiBsdYJ", - "isInheritable": false, - "position": 80 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-sidebar", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Launch Bar.html", - "attachments": [ - { - "attachmentId": "YsBMjK1g3jd1", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Launch Bar_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "Ms1nauBra7gq", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "Ms1nauBra7gq" - ], - "title": "Quick search", - "notePosition": 80, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-search-alt-2", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Quick search.html", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "BFs8mudNFgCS", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS" - ], - "title": "Note", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "iPIMuisry3hd", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "m523cpzocqaD", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "iRwzGnHPzonm", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GTwFsgaA0lCt", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "IakOLONlIfGI", - "isInheritable": false, - "position": 70 - }, - { - "type": "relation", - "name": "internalLink", - "value": "ODY7qQn5m2FT", - "isInheritable": false, - "position": 80 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CoFPLs3dRlXc", - "isInheritable": false, - "position": 90 - }, - { - "type": "label", - "name": "shareAlias", - "value": "note", - "isInheritable": false, - "position": 30 - } - ], - "format": "html", - "dataFileName": "Note.html", - "attachments": [], - "dirFileName": "Note", - "children": [ - { - "isClone": false, - "noteId": "p9kXRFAkwN4o", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "p9kXRFAkwN4o" - ], - "title": "Note Icons", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "iuAfnapzpRCB", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "R1L2vUshJD82", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "note-icons", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Note Icons.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "0vhv7lsOLy82", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "0vhv7lsOLy82" - ], - "title": "Attachments", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "R7abl2fc6Mxi", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "attachments", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Attachments.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "IakOLONlIfGI", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "IakOLONlIfGI" - ], - "title": "Cloning Notes", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "BqvIJUHkWrvH", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "A9Oc6YKKc65v", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "cloning-notes", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Cloning Notes.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "bwg0e8ewQMak", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "bwg0e8ewQMak" - ], - "title": "Protected Notes", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "zaUtPWl8NcCt", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "wX4HbRucYSDD", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "protected-notes", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Protected Notes.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "MKmLg5x6xkor", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "MKmLg5x6xkor" - ], - "title": "Archived Notes", - "notePosition": 80, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "1fkGrskxHx5u", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "bwZpz2ajCEwO", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "eIg8jdvaoNNd", - "isInheritable": false, - "position": 40 - }, - { - "type": "label", - "name": "shareAlias", - "value": "archived-notes", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Archived Notes.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "vZWERwf8U3nx", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "vZWERwf8U3nx" - ], - "title": "Note Revisions", - "notePosition": 90, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "MA2uvkVloWXl", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "note-revisions", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Note Revisions.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "aGlEvb9hyDhS", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "aGlEvb9hyDhS" - ], - "title": "Sorting Notes", - "notePosition": 100, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "shareAlias", - "value": "sorting", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Sorting Notes.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "NRnIZmSMc5sj", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "NRnIZmSMc5sj" - ], - "title": "Export as PDF", - "notePosition": 120, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-file-pdf", - "isInheritable": false, - "position": 30 - } - ], - "format": "html", - "dataFileName": "Export as PDF.html", - "attachments": [ - { - "attachmentId": "NfSjRsArIQHy", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Export as PDF_image.png" - }, - { - "attachmentId": "Om2EmdZr54vy", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Export as PDF_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "CoFPLs3dRlXc", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "BFs8mudNFgCS", - "CoFPLs3dRlXc" - ], - "title": "Read-Only Notes", - "notePosition": 130, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "iPIMuisry3hd", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "read-only-note", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-edit-alt", - "isInheritable": false, - "position": 40 - } - ], - "format": "html", - "dataFileName": "Read-Only Notes.html", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "wArbEsdSae6g", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g" - ], - "title": "Navigation", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "attachments": [], - "dirFileName": "Navigation", - "children": [ - { - "isClone": false, - "noteId": "kBrnXNG3Hplm", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "kBrnXNG3Hplm" - ], - "title": "Tree Concepts", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "IakOLONlIfGI", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "tree-concepts", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Tree Concepts.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "MMiBEQljMQh2", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "MMiBEQljMQh2" - ], - "title": "Note Navigation", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "snfWRIih71MM", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "wpFu8PhUu7e7", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "note-navigation", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Note Navigation.html", - "attachments": [ - { - "attachmentId": "jDuwVaU8bNtG", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Note Navigation_image.png" - }, - { - "attachmentId": "Pae5L9DXlzQW", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Note Navigation_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "eIg8jdvaoNNd", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "eIg8jdvaoNNd" - ], - "title": "Search", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "A9Oc6YKKc65v", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "search", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Search.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "u3YFHC9tQlpm", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "u3YFHC9tQlpm" - ], - "title": "Bookmarks", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "sag6ww9q4pgW", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "HEtnpiQrEvjl", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "bookmarks", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Bookmarks.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "OR8WJ7Iz9K4U", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "OR8WJ7Iz9K4U" - ], - "title": "Note Hoisting", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "AiBOf1LIykMC", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "MMiBEQljMQh2", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "9sRHySam5fXb", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "note-hoisting", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-chevrons-up", - "isInheritable": false, - "position": 40 - } - ], - "format": "html", - "dataFileName": "Note Hoisting.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "9sRHySam5fXb", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "wArbEsdSae6g", - "9sRHySam5fXb" - ], - "title": "Workspace", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "OR8WJ7Iz9K4U", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "shareAlias", - "value": "workspace", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Workspace.html", - "attachments": [ - { - "attachmentId": "V4TIsmtBh8P7", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Workspace_image.png" - }, - { - "attachmentId": "vZSH2mOKzWBx", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Workspace_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "A9Oc6YKKc65v", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "A9Oc6YKKc65v" - ], - "title": "Keyboard Shortcuts", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "MMiBEQljMQh2", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "IakOLONlIfGI", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "iPIMuisry3hd", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "QEAPj01N5f7w", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "eIg8jdvaoNNd", - "isInheritable": false, - "position": 70 - }, - { - "type": "label", - "name": "shareAlias", - "value": "keyboard-shortcuts", - "isInheritable": false, - "position": 30 - } - ], - "format": "html", - "dataFileName": "Keyboard Shortcuts.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "Wy267RK4M69c", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Wy267RK4M69c" - ], - "title": "Themes", - "notePosition": 80, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "zaQnUsJTbvjr", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "uVF9DAmAmEWC", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "VbjZvtUek0Ln", - "isInheritable": false, - "position": 50 - }, - { - "type": "label", - "name": "shareAlias", - "value": "themes", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Themes.html", - "attachments": [ - { - "attachmentId": "rwK3vuBgh7sY", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Themes_image.png" - } - ], - "dirFileName": "Themes", - "children": [ - { - "isClone": false, - "noteId": "VbjZvtUek0Ln", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Wy267RK4M69c", - "VbjZvtUek0Ln" - ], - "title": "Theme Gallery", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "label", - "name": "shareAlias", - "value": "theme-gallery", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Theme Gallery.html", - "attachments": [ - { - "attachmentId": "wob20Q0zLkMq", - "title": "preview.jpg", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Theme Gallery_preview.jpg" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "mHbBMPDPkVV5", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "mHbBMPDPkVV5" - ], - "title": "Import & Export", - "notePosition": 90, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "attachments": [], - "dirFileName": "Import & Export", - "children": [ - { - "isClone": false, - "noteId": "Oau6X9rCuegd", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "mHbBMPDPkVV5", - "Oau6X9rCuegd" - ], - "title": "Markdown", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "Y9mwMwSGAaSb", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "xMQSqWySvWBZ", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "imageLink", - "value": "QUqKzK4LHMVA", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "imageLink", - "value": "e3qPZSsTbUZP", - "isInheritable": false, - "position": 40 - }, - { - "type": "label", - "name": "shareAlias", - "value": "markdown", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Markdown.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "syuSEKf2rUGr", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "mHbBMPDPkVV5", - "syuSEKf2rUGr" - ], - "title": "Evernote", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "label", - "name": "shareAlias", - "value": "evernote-import", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Evernote.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "GnhlmrATVqcH", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "mHbBMPDPkVV5", - "GnhlmrATVqcH" - ], - "title": "OneNote", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "label", - "name": "shareAlias", - "value": "onenote", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "OneNote.html", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "rC3pL2aptaRE", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "rC3pL2aptaRE" - ], - "title": "Zen mode", - "notePosition": 100, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-yin-yang", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Zen mode.html", - "attachments": [ - { - "attachmentId": "Asn6uBNwt6JI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Zen mode_image.png" - }, - { - "attachmentId": "cOMcKGJQYs8Y", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Zen mode_image.png" - }, - { - "attachmentId": "ghjyT4LkrZrU", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Zen mode_image.png" - }, - { - "attachmentId": "HGcQUOEXJ3Sp", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Zen mode_image.png" - }, - { - "attachmentId": "jtzLZ0J0GMub", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "4_Zen mode_image.png" - }, - { - "attachmentId": "lqQtSNb8loOS", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Zen mode_image.png" - }, - { - "attachmentId": "LX31yc6Jnksw", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Zen mode_image.png" - }, - { - "attachmentId": "NVSyQubZNFy7", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "7_Zen mode_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "KSZ04uQ2D1St", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St" - ], - "title": "Note Types", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-edit", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "attachments": [], - "dirFileName": "Note Types", - "children": [ - { - "isClone": false, - "noteId": "iPIMuisry3hd", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd" - ], - "title": "Text", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "FtmPLgGmgZVC", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "oRWfJLUbb7j7", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CoFPLs3dRlXc", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "S6Xx8QIWTV66", - "isInheritable": false, - "position": 50 - }, - { - "type": "label", - "name": "shareAlias", - "value": "text-notes", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "sorted", - "value": "", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-note", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "sorted", - "value": "", - "isInheritable": false, - "position": 40 - } - ], - "format": "html", - "dataFileName": "Text.html", - "attachments": [ - { - "attachmentId": "lHWL7KkEhmM3", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Text_image.png" - }, - { - "attachmentId": "yGknq3nsWpef", - "title": "bx-edit-alt.svg", - "role": "image", - "mime": "image/svg+xml", - "position": 10, - "dataFileName": "Text_bx-edit-alt.svg" - } - ], - "dirFileName": "Text", - "children": [ - { - "isClone": false, - "noteId": "QxEyIjRBizuC", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "QxEyIjRBizuC" - ], - "title": "Code blocks", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "4TIF1oA4VQRO", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "nRhnJkTT8cPs", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "s8alTXmpFR61", - "isInheritable": false, - "position": 40 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-code", - "isInheritable": false, - "position": 50 - } - ], - "format": "html", - "dataFileName": "Code blocks.html", - "attachments": [ - { - "attachmentId": "7HhhhyZ4AS0A", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Code blocks_image.png" - }, - { - "attachmentId": "DyHSLO958cdd", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Code blocks_image.png" - }, - { - "attachmentId": "kE8PPw7iyuu9", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Code blocks_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "veGu4faJErEM", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "veGu4faJErEM" - ], - "title": "Content language & Right-to-left support", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-align-right", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Content language & Right-to-le.html", - "attachments": [ - { - "attachmentId": "bqLn4gFZdqfX", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Content language & Right-t.png" - }, - { - "attachmentId": "RlBpP2KTDVIK", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Content language & Right-t.png" - }, - { - "attachmentId": "TlBagKsAj5ax", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Content language & Right-t.png" - }, - { - "attachmentId": "U9e8SLUEALiR", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Content language & Right-t.png" - } - ] - }, - { - "isClone": false, - "noteId": "UYuUB1ZekNQU", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "UYuUB1ZekNQU" - ], - "title": "Formatting", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "nRhnJkTT8cPs", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Formatting.html", - "attachments": [ - { - "attachmentId": "7tX4ckOSF8jq", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Formatting_image.png" - }, - { - "attachmentId": "HP741oAz3ebU", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Formatting_image.png" - }, - { - "attachmentId": "yKVC2F773Mg7", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Formatting_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "nRhnJkTT8cPs", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "nRhnJkTT8cPs" - ], - "title": "Formatting toolbar", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "4TIF1oA4VQRO", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BlN9DFI679QC", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-text", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Formatting toolbar.html", - "attachments": [ - { - "attachmentId": "CZ8ENj2LsBsA", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Formatting toolbar_image.png" - }, - { - "attachmentId": "iu9xb3VivIIl", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Formatting toolbar_image.png" - }, - { - "attachmentId": "MMeih4nJVgNk", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Formatting toolbar_image.png" - }, - { - "attachmentId": "SGaPJHzNyLLV", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "3_Formatting toolbar_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "mT0HEkOsz6i1", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "mT0HEkOsz6i1" - ], - "title": "Images", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "0vhv7lsOLy82", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "kBrnXNG3Hplm", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "images", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-image-alt", - "isInheritable": false, - "position": 30 - } - ], - "format": "html", - "dataFileName": "Images.html", - "attachments": [ - { - "attachmentId": "40jG4olRNAlc", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Images_image.png" - }, - { - "attachmentId": "9EQBwdObLpnJ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Images_image.png" - }, - { - "attachmentId": "bDkYm34QEH5a", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Images_image.png" - }, - { - "attachmentId": "Bi9LiB0eMbcH", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "3_Images_image.png" - }, - { - "attachmentId": "dRgFtpOcHwke", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "4_Images_image.png" - }, - { - "attachmentId": "g7xB3E2Dva2q", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Images_image.png" - }, - { - "attachmentId": "HcyBaQS2SjkL", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Images_image.png" - }, - { - "attachmentId": "Ilz9SuEj39RF", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "7_Images_image.png" - }, - { - "attachmentId": "MTsRB4C0yvKX", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "8_Images_image.png" - }, - { - "attachmentId": "NZJRGKS6yDeg", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "9_Images_image.png" - }, - { - "attachmentId": "PUjxzv10IJkx", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "10_Images_image.png" - }, - { - "attachmentId": "qJXx7vPPD4JW", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "11_Images_image.png" - }, - { - "attachmentId": "SoDKgOmDoyc1", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "12_Images_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "QEAPj01N5f7w", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "QEAPj01N5f7w" - ], - "title": "Links", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "N6O1qfBGcbFH", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "dPcRcDZwyGAO", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BCkXAVs63Ttv", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "links", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-link-alt", - "isInheritable": false, - "position": 40 - } - ], - "format": "html", - "dataFileName": "Links.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "S6Xx8QIWTV66", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "iPIMuisry3hd", - "S6Xx8QIWTV66" - ], - "title": "Lists", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-list-ul", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Lists.html", - "attachments": [ - { - "attachmentId": "5cmICTYfg13g", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Lists_image.png" - }, - { - "attachmentId": "6jl7tboJfutt", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Lists_image.png" - }, - { - "attachmentId": "d4XfLoK5srYZ", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Lists_image.png" - }, - { - "attachmentId": "eL11eZMPwpmH", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "3_Lists_image.png" - }, - { - "attachmentId": "EnkTpdeLJ6Ft", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "4_Lists_image.png" - }, - { - "attachmentId": "If3k6Tt5cPBt", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "5_Lists_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "6f9hih2hXXZk", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk" - ], - "title": "Code", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "iPIMuisry3hd", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "QxEyIjRBizuC", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BlN9DFI679QC", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "4TIF1oA4VQRO", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "s8alTXmpFR61", - "isInheritable": false, - "position": 60 - }, - { - "type": "label", - "name": "shareAlias", - "value": "code-notes", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-code", - "isInheritable": false, - "position": 90 - } - ], - "format": "html", - "dataFileName": "Code.html", - "attachments": [ - { - "attachmentId": "hajUVeLs3EOM", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Code_image.png" - }, - { - "attachmentId": "iKJbcEUkME1a", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Code_image.png" - }, - { - "attachmentId": "OTcapNOcNaBL", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "2_Code_image.png" - } - ], - "dirFileName": "Code", - "children": [ - { - "isClone": false, - "noteId": "CdNpE2pqjmI6", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "CdNpE2pqjmI6" - ], - "title": "Scripts", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "DVJl4l3T8EG2", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GLks18SNjxmC", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "wX4HbRucYSDD", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "RDslemsQ6gCp", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "5668rwcirq1t", - "isInheritable": false, - "position": 70 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GPERMystNGTB", - "isInheritable": false, - "position": 80 - }, - { - "type": "label", - "name": "shareAlias", - "value": "scripts", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Scripts.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "GLks18SNjxmC", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "GLks18SNjxmC" - ], - "title": "Script API", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "label", - "name": "shareAlias", - "value": "script-api", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Script API.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "GPERMystNGTB", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "GPERMystNGTB" - ], - "title": "Events", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "events", - "isInheritable": false, - "position": 30 - } - ], - "format": "html", - "dataFileName": "Events.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "MgibgPcfeuGz", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "MgibgPcfeuGz" - ], - "title": "Custom Widgets", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "3sCPPL0LEC1S", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "shareAlias", - "value": "custom-widget", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Custom Widgets.html", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "m523cpzocqaD", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "m523cpzocqaD" - ], - "title": "Saved Search", - "notePosition": 60, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "rVtYANyVhE9U", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "9sRHySam5fXb", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "saved-search", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-file-find", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Saved Search.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "joqzSrDccPKf", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "joqzSrDccPKf" - ], - "title": "Relation Map", - "notePosition": 70, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-network-chart", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Relation Map.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "bdUJEHsAPYQR", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "bdUJEHsAPYQR" - ], - "title": "Note Map", - "notePosition": 80, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxs-network-chart", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Note Map.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "HcABDtFCkbFN", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "HcABDtFCkbFN" - ], - "title": "Render Note", - "notePosition": 100, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-extension", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Render Note.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "GTwFsgaA0lCt", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "GTwFsgaA0lCt" - ], - "title": "Book", - "notePosition": 120, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "shareAlias", - "value": "book-note", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-book", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Book.html", - "attachments": [ - { - "attachmentId": "BmpgL4ol4jJo", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Book_image.png" - }, - { - "attachmentId": "lpq3QC1C5LWg", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "1_Book_image.png" - } - ], - "dirFileName": "Book", - "children": [ - { - "isClone": false, - "noteId": "xWbu3jpNWapp", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "GTwFsgaA0lCt", - "xWbu3jpNWapp" - ], - "title": "Calendar View", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-calendar", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Calendar View.html", - "attachments": [ - { - "attachmentId": "37CfbqKYcOtd", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Calendar View_image.png" - }, - { - "attachmentId": "6w8hjC47rS2H", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Calendar View_image.png" - }, - { - "attachmentId": "akAHcIEcGnWR", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Calendar View_image.png" - }, - { - "attachmentId": "AU7dnIevWPrz", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Calendar View_image.png" - }, - { - "attachmentId": "AzRAe3io7LxA", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "4_Calendar View_image.png" - }, - { - "attachmentId": "COiR1tnE86i1", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Calendar View_image.png" - }, - { - "attachmentId": "fOdCNTs2BuI0", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Calendar View_image.png" - }, - { - "attachmentId": "GeEGbbeQ1qy9", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "7_Calendar View_image.png" - }, - { - "attachmentId": "gQvwJGB5a4c1", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "8_Calendar View_image.png" - }, - { - "attachmentId": "HfBu0m3WXtn2", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "9_Calendar View_image.png" - }, - { - "attachmentId": "ho00OJTNrxVI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "10_Calendar View_image.png" - }, - { - "attachmentId": "irfNX8n4159U", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "11_Calendar View_image.png" - }, - { - "attachmentId": "KF56rdNuOwWd", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "12_Calendar View_image.png" - }, - { - "attachmentId": "oBWr5GL6cUAZ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "13_Calendar View_image.png" - }, - { - "attachmentId": "oS6yUoQtfhpg", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "14_Calendar View_image.png" - }, - { - "attachmentId": "PYHfGSBQpr0y", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "15_Calendar View_image.png" - }, - { - "attachmentId": "rYaJQN8tjfsG", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "16_Calendar View_image.png" - }, - { - "attachmentId": "u2c09UpZghff", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "17_Calendar View_image.png" - }, - { - "attachmentId": "UCQb1diHfd02", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "18_Calendar View_image.png" - }, - { - "attachmentId": "xqgGyeWWqLyg", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "19_Calendar View_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "s1aBHPd79XYj", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "s1aBHPd79XYj" - ], - "title": "Mermaid Diagrams", - "notePosition": 130, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "r44dpvA1xFu8", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "opAFABmyb3CU", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "mermaid-diagrams", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-selection", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Mermaid Diagrams.html", - "attachments": [], - "dirFileName": "Mermaid Diagrams", - "children": [ - { - "isClone": false, - "noteId": "opAFABmyb3CU", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "s1aBHPd79XYj", - "opAFABmyb3CU" - ], - "title": "ELK on", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "mermaid", - "mime": "text/plain", - "attributes": [], - "dataFileName": "ELK on.txt", - "attachments": [ - { - "attachmentId": "biyznKlYQ7my", - "title": "mermaid-export.svg", - "role": "image", - "mime": "image/svg+xml", - "position": 10, - "dataFileName": "ELK on_mermaid-export.svg" - } - ] - }, - { - "isClone": false, - "noteId": "r44dpvA1xFu8", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "s1aBHPd79XYj", - "r44dpvA1xFu8" - ], - "title": "ELK off", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "mermaid", - "mime": "text/plain", - "attributes": [], - "dataFileName": "ELK off.txt", - "attachments": [ - { - "attachmentId": "rQI7SXljnpJM", - "title": "mermaid-export.svg", - "role": "image", - "mime": "image/svg+xml", - "position": 10, - "dataFileName": "ELK off_mermaid-export.svg" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "grjYqerjn243", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "grjYqerjn243" - ], - "title": "Canvas", - "notePosition": 150, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-pen", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Canvas.html", - "attachments": [ - { - "attachmentId": "DC9fvvootwwZ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Canvas_image.png" - } - ] - }, - { - "isClone": false, - "noteId": "1vHRoWCEjj0L", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "1vHRoWCEjj0L" - ], - "title": "Web View", - "notePosition": 160, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-globe-alt", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Web View.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "gBbsAeiuUxI5", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "gBbsAeiuUxI5" - ], - "title": "Mind Map", - "notePosition": 170, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-sitemap", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Mind Map.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "81SGnPGMk7Xc", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "81SGnPGMk7Xc" - ], - "title": "Geo map", - "notePosition": 180, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-map-alt", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Geo map.html", - "attachments": [ - { - "attachmentId": "1f07O0Z25ZRr", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Geo map_image.png" - }, - { - "attachmentId": "3oh61qhNLu7D", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Geo map_image.png" - }, - { - "attachmentId": "6wUkw5RWE39e", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Geo map_image.png" - }, - { - "attachmentId": "aCSNn9QlgHFi", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Geo map_image.png" - }, - { - "attachmentId": "aCuXZY7WV4li", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "4_Geo map_image.png" - }, - { - "attachmentId": "agH6yREFgsoU", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Geo map_image.png" - }, - { - "attachmentId": "AHyDUM6R5HeG", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Geo map_image.png" - }, - { - "attachmentId": "CcjWLhE3KKfv", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "7_Geo map_image.png" - }, - { - "attachmentId": "DapDey8gMiFc", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "8_Geo map_image.png" - }, - { - "attachmentId": "fQy8R1vxKhwN", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "9_Geo map_image.png" - }, - { - "attachmentId": "gJ4Yz80jxcbn", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "10_Geo map_image.png" - }, - { - "attachmentId": "Mx2xwNIk76ZS", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "11_Geo map_image.png" - }, - { - "attachmentId": "oaahbsMRbqd2", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "12_Geo map_image.png" - }, - { - "attachmentId": "pGf1p74KKGU4", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "13_Geo map_image.png" - }, - { - "attachmentId": "tDWsliJj9ncm", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "14_Geo map_image.png" - }, - { - "attachmentId": "tfa1TRUatWEh", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "15_Geo map_image.png" - }, - { - "attachmentId": "USbvJ38T4AKA", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "16_Geo map_image.png" - }, - { - "attachmentId": "x6yBLIsY2LSv", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "17_Geo map_image.png" - }, - { - "attachmentId": "ZvTlu9WMd37z", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "18_Geo map_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "pKK96zzmvBGf", - "notePath": [ - "pOsGYCXsbNQG", - "pKK96zzmvBGf" - ], - "title": "Theme development", - "notePosition": 100, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-palette", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "attachments": [], - "dirFileName": "Theme development", - "children": [ - { - "isClone": false, - "noteId": "7NfNr5pZpVKV", - "notePath": [ - "pOsGYCXsbNQG", - "pKK96zzmvBGf", - "7NfNr5pZpVKV" - ], - "title": "Creating a custom theme", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "WFGzWeUK6arS", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Creating a custom theme.html", - "attachments": [ - { - "attachmentId": "14xpFnX5GIkZ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Creating a custom theme_im.png" - }, - { - "attachmentId": "EzM9s8bCnJ85", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Creating a custom theme_im.png" - }, - { - "attachmentId": "M3C6oYYIakiS", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Creating a custom theme_im.png" - }, - { - "attachmentId": "PY4a4fueTRUZ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Creating a custom theme_im.png" - }, - { - "attachmentId": "QkaP2Ge0lagI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "4_Creating a custom theme_im.png" - }, - { - "attachmentId": "yJVfT7rjp4tI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Creating a custom theme_im.png" - } - ] - }, - { - "isClone": false, - "noteId": "WFGzWeUK6arS", - "notePath": [ - "pOsGYCXsbNQG", - "pKK96zzmvBGf", - "WFGzWeUK6arS" - ], - "title": "Customize the Next theme", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "dataFileName": "Customize the Next theme.html", - "attachments": [ - { - "attachmentId": "3fAj97aV2noG", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Customize the Next theme_i.png" - } - ] - }, - { - "isClone": false, - "noteId": "WN5z4M8ASACJ", - "notePath": [ - "pOsGYCXsbNQG", - "pKK96zzmvBGf", - "WN5z4M8ASACJ" - ], - "title": "Reference", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "d3fAXQ2diepH", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "dataFileName": "Reference.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "AlhDUqhENtH7", - "notePath": [ - "pOsGYCXsbNQG", - "pKK96zzmvBGf", - "AlhDUqhENtH7" - ], - "title": "Custom app-wide CSS", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "dataFileName": "Custom app-wide CSS.html", - "attachments": [ - { - "attachmentId": "fkMLaf6reA6I", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Custom app-wide CSS_image.png" - }, - { - "attachmentId": "TIerrMjmeich", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Custom app-wide CSS_image.png" - }, - { - "attachmentId": "YUrNq5vsCwHe", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Custom app-wide CSS_image.png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "k2Gc17NbaAwb", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb" - ], - "title": "Developer Guides", - "notePosition": 120, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxl-javascript", - "isInheritable": false, - "position": 10 - } - ], - "format": "html", - "attachments": [], - "dirFileName": "Developer Guides", - "children": [ - { - "isClone": false, - "noteId": "yIhgI5H7A2Sm", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "yIhgI5H7A2Sm" - ], - "title": "Frontend Basics", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GLks18SNjxmC", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "SynTBQiBsdYJ", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "frontend-basics", - "isInheritable": false, - "position": 30 - } - ], - "format": "html", - "dataFileName": "Frontend Basics.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "SynTBQiBsdYJ", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "SynTBQiBsdYJ" - ], - "title": "Widget Basics", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GLks18SNjxmC", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "widget-basics", - "isInheritable": false, - "position": 20 - } - ], - "format": "html", - "dataFileName": "Widget Basics.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "es8OU2GuguFU", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "es8OU2GuguFU" - ], - "title": "Examples", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "attachments": [], - "dirFileName": "Examples", - "children": [ - { - "isClone": false, - "noteId": "7kZPMD0uFwkH", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "es8OU2GuguFU", - "7kZPMD0uFwkH" - ], - "title": "Downloading responses from Google Forms", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "dataFileName": "Downloading responses from Goo.html", - "attachments": [] - }, - { - "isClone": false, - "noteId": "DL92EjAaXT26", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "es8OU2GuguFU", - "DL92EjAaXT26" - ], - "title": "Using promoted attributes to configure scripts", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "dataFileName": "Using promoted attributes to c.html", - "attachments": [ - { - "attachmentId": "7P3jzVEa1mk7", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Using promoted attributes .png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "CXny4YWKsD7z", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z" - ], - "title": "REST API", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "attachments": [], - "dirFileName": "REST API", - "children": [ - { - "isClone": false, - "noteId": "cqCjxpN8NhbH", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "cqCjxpN8NhbH" - ], - "title": "ETAPI", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "attachments": [], - "dirFileName": "ETAPI", - "children": [ - { - "isClone": false, - "noteId": "9qPsTWBorUhQ", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "cqCjxpN8NhbH", - "9qPsTWBorUhQ" - ], - "title": "API Reference", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "webView", - "mime": "", - "attributes": [ - { - "type": "label", - "name": "webViewSrc", - "value": "/etapi/docs", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "API Reference.dat", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "0vTSyvhPTAOz", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "0vTSyvhPTAOz" - ], - "title": "Internal API", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "html", - "attachments": [], - "dirFileName": "Internal API", - "children": [ - { - "isClone": false, - "noteId": "z8O2VG4ZZJD7", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "0vTSyvhPTAOz", - "z8O2VG4ZZJD7" - ], - "title": "API Reference", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "webView", - "mime": "", - "attributes": [ - { - "type": "label", - "name": "webViewSrc", - "value": "/api/docs", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "API Reference.dat", - "attachments": [] - } - ] - } - ] - } - ] - }, { "isClone": false, "noteId": "Otzi9La2YAUX", @@ -5552,7 +1411,7 @@ "Otzi9La2YAUX" ], "title": "Installation & Setup", - "notePosition": 160, + "notePosition": 10, "prefix": null, "isExpanded": false, "type": "text", @@ -6477,6 +2336,3864 @@ } ] }, + { + "isClone": false, + "noteId": "gh7bpGYxajRS", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS" + ], + "title": "Basic Concepts", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-help-circle", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Basic Concepts", + "children": [ + { + "isClone": false, + "noteId": "Vc8PjrjAGuOp", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp" + ], + "title": "UI Elements", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "UI Elements", + "children": [ + { + "isClone": false, + "noteId": "x0JgW8UqGXvq", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "x0JgW8UqGXvq" + ], + "title": "Vertical and horizontal layout", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Ms1nauBra7gq", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x3i7MxGccDuM", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "_lbSettings", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-layout", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "Vertical and horizontal layout.html", + "attachments": [ + { + "attachmentId": "9sCZBqokn4vf", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Vertical and horizontal la.png" + }, + { + "attachmentId": "gw3DaUul5ccI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Vertical and horizontal la.png" + }, + { + "attachmentId": "jhiE5DTkLOCK", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Vertical and horizontal la.png" + }, + { + "attachmentId": "JwO3rUNb9tyU", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "3_Vertical and horizontal la.png" + }, + { + "attachmentId": "NVjM5z6IsNZf", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Vertical and horizontal la.png" + }, + { + "attachmentId": "Z2F8ipVjwugg", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Vertical and horizontal la.png" + } + ] + }, + { + "isClone": false, + "noteId": "x3i7MxGccDuM", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "x3i7MxGccDuM" + ], + "title": "Global menu", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "x0JgW8UqGXvq", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Global menu.html", + "attachments": [ + { + "attachmentId": "rCnBqSyldhp9", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Global menu_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "BlN9DFI679QC", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "BlN9DFI679QC" + ], + "title": "Ribbon", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Ribbon.html", + "attachments": [ + { + "attachmentId": "JCiJ3vRhgXY9", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Ribbon_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "4TIF1oA4VQRO", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "4TIF1oA4VQRO" + ], + "title": "Options", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-cog", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Options.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "oPVyFC7WL2Lp", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "oPVyFC7WL2Lp" + ], + "title": "Note Tree", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "sLZ7Bcq9p8E9", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "qL7381ZG0lMK", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "A9Oc6YKKc65v", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ivYnonVFBxbQ", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "tree-manipulation", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-tree-alt", + "isInheritable": false, + "position": 50 + } + ], + "format": "html", + "dataFileName": "Note Tree.html", + "attachments": [ + { + "attachmentId": "Bp5BCJRntpyt", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Note Tree_image.png" + }, + { + "attachmentId": "DYf7wm3Yv6EC", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Note Tree_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "xYmIYSP6wE3F", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "xYmIYSP6wE3F" + ], + "title": "Launch Bar", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "x3i7MxGccDuM", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "p9kXRFAkwN4o", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OR8WJ7Iz9K4U", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x0JgW8UqGXvq", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "SynTBQiBsdYJ", + "isInheritable": false, + "position": 80 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-sidebar", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Launch Bar.html", + "attachments": [ + { + "attachmentId": "YsBMjK1g3jd1", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Launch Bar_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "Ms1nauBra7gq", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "Ms1nauBra7gq" + ], + "title": "Quick search", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-search-alt-2", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Quick search.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "BFs8mudNFgCS", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS" + ], + "title": "Note", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "m523cpzocqaD", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GTwFsgaA0lCt", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ODY7qQn5m2FT", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CoFPLs3dRlXc", + "isInheritable": false, + "position": 90 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Note.html", + "attachments": [], + "dirFileName": "Note", + "children": [ + { + "isClone": false, + "noteId": "p9kXRFAkwN4o", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "p9kXRFAkwN4o" + ], + "title": "Note Icons", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "iuAfnapzpRCB", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "R1L2vUshJD82", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-icons", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Note Icons.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "0vhv7lsOLy82", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "0vhv7lsOLy82" + ], + "title": "Attachments", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R7abl2fc6Mxi", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "attachments", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Attachments.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "IakOLONlIfGI", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "IakOLONlIfGI" + ], + "title": "Cloning Notes", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "BqvIJUHkWrvH", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "A9Oc6YKKc65v", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "cloning-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Cloning Notes.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "bwg0e8ewQMak", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "bwg0e8ewQMak" + ], + "title": "Protected Notes", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "zaUtPWl8NcCt", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "protected-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Protected Notes.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MKmLg5x6xkor", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "MKmLg5x6xkor" + ], + "title": "Archived Notes", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "1fkGrskxHx5u", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "eIg8jdvaoNNd", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "archived-notes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Archived Notes.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "vZWERwf8U3nx", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "vZWERwf8U3nx" + ], + "title": "Note Revisions", + "notePosition": 90, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "MA2uvkVloWXl", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-revisions", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Note Revisions.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "aGlEvb9hyDhS", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "aGlEvb9hyDhS" + ], + "title": "Sorting Notes", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "sorting", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Sorting Notes.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "NRnIZmSMc5sj", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "NRnIZmSMc5sj" + ], + "title": "Export as PDF", + "notePosition": 120, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-file-pdf", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Export as PDF.html", + "attachments": [ + { + "attachmentId": "NfSjRsArIQHy", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Export as PDF_image.png" + }, + { + "attachmentId": "Om2EmdZr54vy", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Export as PDF_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "CoFPLs3dRlXc", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "CoFPLs3dRlXc" + ], + "title": "Read-Only Notes", + "notePosition": 130, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "read-only-note", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-edit-alt", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "Read-Only Notes.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "wArbEsdSae6g", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g" + ], + "title": "Navigation", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "Navigation", + "children": [ + { + "isClone": false, + "noteId": "kBrnXNG3Hplm", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "kBrnXNG3Hplm" + ], + "title": "Tree Concepts", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "tree-concepts", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Tree Concepts.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MMiBEQljMQh2", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "MMiBEQljMQh2" + ], + "title": "Note Navigation", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "snfWRIih71MM", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "wpFu8PhUu7e7", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-navigation", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Note Navigation.html", + "attachments": [ + { + "attachmentId": "jDuwVaU8bNtG", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Note Navigation_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "eIg8jdvaoNNd", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "eIg8jdvaoNNd" + ], + "title": "Search", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "A9Oc6YKKc65v", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "search", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Search.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "u3YFHC9tQlpm", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "u3YFHC9tQlpm" + ], + "title": "Bookmarks", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "sag6ww9q4pgW", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "HEtnpiQrEvjl", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "bookmarks", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Bookmarks.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "OR8WJ7Iz9K4U", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "OR8WJ7Iz9K4U" + ], + "title": "Note Hoisting", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "AiBOf1LIykMC", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "MMiBEQljMQh2", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "note-hoisting", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-chevrons-up", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "Note Hoisting.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "9sRHySam5fXb", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "9sRHySam5fXb" + ], + "title": "Workspace", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "OR8WJ7Iz9K4U", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "workspace", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Workspace.html", + "attachments": [ + { + "attachmentId": "V4TIsmtBh8P7", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Workspace_image.png" + }, + { + "attachmentId": "vZSH2mOKzWBx", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Workspace_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "A9Oc6YKKc65v", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "A9Oc6YKKc65v" + ], + "title": "Keyboard Shortcuts", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "MMiBEQljMQh2", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "QEAPj01N5f7w", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "eIg8jdvaoNNd", + "isInheritable": false, + "position": 70 + }, + { + "type": "label", + "name": "shareAlias", + "value": "keyboard-shortcuts", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Keyboard Shortcuts.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "Wy267RK4M69c", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Wy267RK4M69c" + ], + "title": "Themes", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "zaQnUsJTbvjr", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "uVF9DAmAmEWC", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "VbjZvtUek0Ln", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "themes", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Themes.html", + "attachments": [ + { + "attachmentId": "rwK3vuBgh7sY", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Themes_image.png" + } + ], + "dirFileName": "Themes", + "children": [ + { + "isClone": false, + "noteId": "VbjZvtUek0Ln", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Wy267RK4M69c", + "VbjZvtUek0Ln" + ], + "title": "Theme Gallery", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "theme-gallery", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Theme Gallery.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "mHbBMPDPkVV5", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5" + ], + "title": "Import & Export", + "notePosition": 90, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "Import & Export", + "children": [ + { + "isClone": false, + "noteId": "Oau6X9rCuegd", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5", + "Oau6X9rCuegd" + ], + "title": "Markdown", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "Y9mwMwSGAaSb", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "xMQSqWySvWBZ", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "imageLink", + "value": "QUqKzK4LHMVA", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "imageLink", + "value": "e3qPZSsTbUZP", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "markdown", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Markdown.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "syuSEKf2rUGr", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5", + "syuSEKf2rUGr" + ], + "title": "Evernote", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "evernote-import", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Evernote.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GnhlmrATVqcH", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "mHbBMPDPkVV5", + "GnhlmrATVqcH" + ], + "title": "OneNote", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "onenote", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "OneNote.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "rC3pL2aptaRE", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "rC3pL2aptaRE" + ], + "title": "Zen mode", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-yin-yang", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Zen mode.html", + "attachments": [ + { + "attachmentId": "Asn6uBNwt6JI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Zen mode_image.png" + }, + { + "attachmentId": "HGcQUOEXJ3Sp", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Zen mode_image.png" + }, + { + "attachmentId": "lqQtSNb8loOS", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Zen mode_image.png" + }, + { + "attachmentId": "LX31yc6Jnksw", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Zen mode_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "s3YCWHBfmYuM", + "notePath": [ + "pOsGYCXsbNQG", + "s3YCWHBfmYuM" + ], + "title": "Quick Start", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "poXkQfguuA0U", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "WOcw2SLH6tbX", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "RDslemsQ6gCp", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "shareAlias", + "value": "quick-start", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-run", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "Quick Start.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "KSZ04uQ2D1St", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St" + ], + "title": "Note Types", + "notePosition": 100, + "prefix": null, + "isExpanded": true, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-edit", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Note Types", + "children": [ + { + "isClone": false, + "noteId": "iPIMuisry3hd", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd" + ], + "title": "Text", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "FtmPLgGmgZVC", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "oRWfJLUbb7j7", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CoFPLs3dRlXc", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "S6Xx8QIWTV66", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "shareAlias", + "value": "text-notes", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "sorted", + "value": "", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-note", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "sorted", + "value": "", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "Text.html", + "attachments": [ + { + "attachmentId": "lHWL7KkEhmM3", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Text_image.png" + }, + { + "attachmentId": "yGknq3nsWpef", + "title": "bx-edit-alt.svg", + "role": "image", + "mime": "image/svg+xml", + "position": 10, + "dataFileName": "Text_bx-edit-alt.svg" + } + ], + "dirFileName": "Text", + "children": [ + { + "isClone": false, + "noteId": "NwBbFdNZ9h7O", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "NwBbFdNZ9h7O" + ], + "title": "Admonitions", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-info-circle", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Admonitions.html", + "attachments": [ + { + "attachmentId": "do36b54XpmIC", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Admonitions_image.png" + }, + { + "attachmentId": "hUwfwkRSDeLJ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Admonitions_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "QxEyIjRBizuC", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "QxEyIjRBizuC" + ], + "title": "Code blocks", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "nRhnJkTT8cPs", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s8alTXmpFR61", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-code", + "isInheritable": false, + "position": 50 + } + ], + "format": "html", + "dataFileName": "Code blocks.html", + "attachments": [ + { + "attachmentId": "7HhhhyZ4AS0A", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Code blocks_image.png" + }, + { + "attachmentId": "DyHSLO958cdd", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Code blocks_image.png" + }, + { + "attachmentId": "kE8PPw7iyuu9", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Code blocks_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "veGu4faJErEM", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "veGu4faJErEM" + ], + "title": "Content language & Right-to-left support", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-align-right", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Content language & Right-to-le.html", + "attachments": [ + { + "attachmentId": "xIGmhxc0vBlC", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Content language & Right-t.png" + } + ] + }, + { + "isClone": false, + "noteId": "UYuUB1ZekNQU", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "UYuUB1ZekNQU" + ], + "title": "Formatting", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "nRhnJkTT8cPs", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Formatting.html", + "attachments": [ + { + "attachmentId": "7tX4ckOSF8jq", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Formatting_image.png" + }, + { + "attachmentId": "HP741oAz3ebU", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Formatting_image.png" + }, + { + "attachmentId": "yKVC2F773Mg7", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Formatting_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "nRhnJkTT8cPs", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "nRhnJkTT8cPs" + ], + "title": "Formatting toolbar", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-text", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Formatting toolbar.html", + "attachments": [ + { + "attachmentId": "CZ8ENj2LsBsA", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Formatting toolbar_image.png" + }, + { + "attachmentId": "iu9xb3VivIIl", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Formatting toolbar_image.png" + }, + { + "attachmentId": "MMeih4nJVgNk", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Formatting toolbar_image.png" + }, + { + "attachmentId": "SGaPJHzNyLLV", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "3_Formatting toolbar_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "mT0HEkOsz6i1", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "mT0HEkOsz6i1" + ], + "title": "Images", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "0vhv7lsOLy82", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "kBrnXNG3Hplm", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "images", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-image-alt", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Images.html", + "attachments": [ + { + "attachmentId": "40jG4olRNAlc", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Images_image.png" + }, + { + "attachmentId": "bDkYm34QEH5a", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Images_image.png" + }, + { + "attachmentId": "Bi9LiB0eMbcH", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Images_image.png" + }, + { + "attachmentId": "dRgFtpOcHwke", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "3_Images_image.png" + }, + { + "attachmentId": "g7xB3E2Dva2q", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Images_image.png" + }, + { + "attachmentId": "Ilz9SuEj39RF", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Images_image.png" + }, + { + "attachmentId": "MTsRB4C0yvKX", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "6_Images_image.png" + }, + { + "attachmentId": "NZJRGKS6yDeg", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "7_Images_image.png" + }, + { + "attachmentId": "PUjxzv10IJkx", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "8_Images_image.png" + }, + { + "attachmentId": "qJXx7vPPD4JW", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "9_Images_image.png" + }, + { + "attachmentId": "SoDKgOmDoyc1", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Images_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "QEAPj01N5f7w", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "QEAPj01N5f7w" + ], + "title": "Links", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "N6O1qfBGcbFH", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "dPcRcDZwyGAO", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BCkXAVs63Ttv", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "links", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-link-alt", + "isInheritable": false, + "position": 40 + } + ], + "format": "html", + "dataFileName": "Links.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "S6Xx8QIWTV66", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "S6Xx8QIWTV66" + ], + "title": "Lists", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-list-ul", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Lists.html", + "attachments": [ + { + "attachmentId": "5cmICTYfg13g", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Lists_image.png" + }, + { + "attachmentId": "6jl7tboJfutt", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Lists_image.png" + }, + { + "attachmentId": "d4XfLoK5srYZ", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "2_Lists_image.png" + }, + { + "attachmentId": "eL11eZMPwpmH", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "3_Lists_image.png" + }, + { + "attachmentId": "EnkTpdeLJ6Ft", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "4_Lists_image.png" + }, + { + "attachmentId": "If3k6Tt5cPBt", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "5_Lists_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "6f9hih2hXXZk", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "6f9hih2hXXZk" + ], + "title": "Code", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "QxEyIjRBizuC", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s8alTXmpFR61", + "isInheritable": false, + "position": 60 + }, + { + "type": "label", + "name": "shareAlias", + "value": "code-notes", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-code", + "isInheritable": false, + "position": 90 + } + ], + "format": "html", + "dataFileName": "Code.html", + "attachments": [ + { + "attachmentId": "hajUVeLs3EOM", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Code_image.png" + }, + { + "attachmentId": "iKJbcEUkME1a", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Code_image.png" + } + ], + "dirFileName": "Code", + "children": [ + { + "isClone": false, + "noteId": "CdNpE2pqjmI6", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "6f9hih2hXXZk", + "CdNpE2pqjmI6" + ], + "title": "Scripts", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "DVJl4l3T8EG2", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "RDslemsQ6gCp", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "5668rwcirq1t", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GPERMystNGTB", + "isInheritable": false, + "position": 80 + }, + { + "type": "label", + "name": "shareAlias", + "value": "scripts", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Scripts.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GLks18SNjxmC", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "6f9hih2hXXZk", + "GLks18SNjxmC" + ], + "title": "Script API", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "label", + "name": "shareAlias", + "value": "script-api", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Script API.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GPERMystNGTB", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "6f9hih2hXXZk", + "GPERMystNGTB" + ], + "title": "Events", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "events", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Events.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "MgibgPcfeuGz", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "6f9hih2hXXZk", + "MgibgPcfeuGz" + ], + "title": "Custom Widgets", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "3sCPPL0LEC1S", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "custom-widget", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Custom Widgets.html", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "m523cpzocqaD", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "m523cpzocqaD" + ], + "title": "Saved Search", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "rVtYANyVhE9U", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "saved-search", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-file-find", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Saved Search.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "joqzSrDccPKf", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "joqzSrDccPKf" + ], + "title": "Relation Map", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-network-chart", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Relation Map.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "bdUJEHsAPYQR", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "bdUJEHsAPYQR" + ], + "title": "Note Map", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-network-chart", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Note Map.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "HcABDtFCkbFN", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "HcABDtFCkbFN" + ], + "title": "Render Note", + "notePosition": 100, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-extension", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Render Note.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "GTwFsgaA0lCt", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "GTwFsgaA0lCt" + ], + "title": "Book", + "notePosition": 120, + "prefix": null, + "isExpanded": true, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "shareAlias", + "value": "book-note", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-book", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Book.html", + "attachments": [ + { + "attachmentId": "BmpgL4ol4jJo", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Book_image.png" + }, + { + "attachmentId": "lpq3QC1C5LWg", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "1_Book_image.png" + } + ], + "dirFileName": "Book", + "children": [ + { + "isClone": false, + "noteId": "xWbu3jpNWapp", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "GTwFsgaA0lCt", + "xWbu3jpNWapp" + ], + "title": "Calendar View", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-calendar", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Calendar View.html", + "attachments": [ + { + "attachmentId": "37CfbqKYcOtd", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Calendar View_image.png" + }, + { + "attachmentId": "akAHcIEcGnWR", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Calendar View_image.png" + }, + { + "attachmentId": "AU7dnIevWPrz", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Calendar View_image.png" + }, + { + "attachmentId": "COiR1tnE86i1", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Calendar View_image.png" + }, + { + "attachmentId": "fOdCNTs2BuI0", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Calendar View_image.png" + }, + { + "attachmentId": "HfBu0m3WXtn2", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Calendar View_image.png" + }, + { + "attachmentId": "ho00OJTNrxVI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_Calendar View_image.png" + }, + { + "attachmentId": "irfNX8n4159U", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "7_Calendar View_image.png" + }, + { + "attachmentId": "KF56rdNuOwWd", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "8_Calendar View_image.png" + }, + { + "attachmentId": "oBWr5GL6cUAZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "9_Calendar View_image.png" + }, + { + "attachmentId": "oS6yUoQtfhpg", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Calendar View_image.png" + }, + { + "attachmentId": "u2c09UpZghff", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "11_Calendar View_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "s1aBHPd79XYj", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "s1aBHPd79XYj" + ], + "title": "Mermaid Diagrams", + "notePosition": 130, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "imageLink", + "value": "r44dpvA1xFu8", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "imageLink", + "value": "opAFABmyb3CU", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "shareAlias", + "value": "mermaid-diagrams", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-selection", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Mermaid Diagrams.html", + "attachments": [], + "dirFileName": "Mermaid Diagrams", + "children": [ + { + "isClone": false, + "noteId": "opAFABmyb3CU", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "s1aBHPd79XYj", + "opAFABmyb3CU" + ], + "title": "ELK on", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "mermaid", + "mime": "text/plain", + "attributes": [], + "dataFileName": "ELK on.txt", + "attachments": [ + { + "attachmentId": "biyznKlYQ7my", + "title": "mermaid-export.svg", + "role": "image", + "mime": "image/svg+xml", + "position": 10, + "dataFileName": "ELK on_mermaid-export.svg" + } + ] + }, + { + "isClone": false, + "noteId": "r44dpvA1xFu8", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "s1aBHPd79XYj", + "r44dpvA1xFu8" + ], + "title": "ELK off", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "mermaid", + "mime": "text/plain", + "attributes": [], + "dataFileName": "ELK off.txt", + "attachments": [ + { + "attachmentId": "rQI7SXljnpJM", + "title": "mermaid-export.svg", + "role": "image", + "mime": "image/svg+xml", + "position": 10, + "dataFileName": "ELK off_mermaid-export.svg" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "grjYqerjn243", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "grjYqerjn243" + ], + "title": "Canvas", + "notePosition": 150, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-pen", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Canvas.html", + "attachments": [ + { + "attachmentId": "DC9fvvootwwZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Canvas_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "1vHRoWCEjj0L", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "1vHRoWCEjj0L" + ], + "title": "Web View", + "notePosition": 160, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-globe-alt", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Web View.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "gBbsAeiuUxI5", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "gBbsAeiuUxI5" + ], + "title": "Mind Map", + "notePosition": 170, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-sitemap", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Mind Map.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "81SGnPGMk7Xc", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "81SGnPGMk7Xc" + ], + "title": "Geo map", + "notePosition": 180, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-map-alt", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Geo map.html", + "attachments": [ + { + "attachmentId": "1f07O0Z25ZRr", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Geo map_image.png" + }, + { + "attachmentId": "3oh61qhNLu7D", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Geo map_image.png" + }, + { + "attachmentId": "6wUkw5RWE39e", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Geo map_image.png" + }, + { + "attachmentId": "aCSNn9QlgHFi", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Geo map_image.png" + }, + { + "attachmentId": "aCuXZY7WV4li", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Geo map_image.png" + }, + { + "attachmentId": "agH6yREFgsoU", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Geo map_image.png" + }, + { + "attachmentId": "AHyDUM6R5HeG", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_Geo map_image.png" + }, + { + "attachmentId": "CcjWLhE3KKfv", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "7_Geo map_image.png" + }, + { + "attachmentId": "DapDey8gMiFc", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "8_Geo map_image.png" + }, + { + "attachmentId": "fQy8R1vxKhwN", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "9_Geo map_image.png" + }, + { + "attachmentId": "gJ4Yz80jxcbn", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Geo map_image.png" + }, + { + "attachmentId": "Mx2xwNIk76ZS", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "11_Geo map_image.png" + }, + { + "attachmentId": "oaahbsMRbqd2", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "12_Geo map_image.png" + }, + { + "attachmentId": "pGf1p74KKGU4", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "13_Geo map_image.png" + }, + { + "attachmentId": "tfa1TRUatWEh", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "14_Geo map_image.png" + }, + { + "attachmentId": "USbvJ38T4AKA", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "15_Geo map_image.png" + }, + { + "attachmentId": "x6yBLIsY2LSv", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "16_Geo map_image.png" + }, + { + "attachmentId": "ZvTlu9WMd37z", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "17_Geo map_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "pKK96zzmvBGf", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf" + ], + "title": "Theme development", + "notePosition": 140, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-palette", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Theme development", + "children": [ + { + "isClone": false, + "noteId": "7NfNr5pZpVKV", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "7NfNr5pZpVKV" + ], + "title": "Creating a custom theme", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "WFGzWeUK6arS", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Creating a custom theme.html", + "attachments": [ + { + "attachmentId": "yJVfT7rjp4tI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Creating a custom theme_im.png" + } + ] + }, + { + "isClone": false, + "noteId": "WFGzWeUK6arS", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "WFGzWeUK6arS" + ], + "title": "Customize the Next theme", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Customize the Next theme.html", + "attachments": [ + { + "attachmentId": "3fAj97aV2noG", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Customize the Next theme_i.png" + } + ] + }, + { + "isClone": false, + "noteId": "WN5z4M8ASACJ", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "WN5z4M8ASACJ" + ], + "title": "Reference", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "d3fAXQ2diepH", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "dataFileName": "Reference.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "AlhDUqhENtH7", + "notePath": [ + "pOsGYCXsbNQG", + "pKK96zzmvBGf", + "AlhDUqhENtH7" + ], + "title": "Custom app-wide CSS", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Custom app-wide CSS.html", + "attachments": [ + { + "attachmentId": "fkMLaf6reA6I", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Custom app-wide CSS_image.png" + }, + { + "attachmentId": "TIerrMjmeich", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Custom app-wide CSS_image.png" + }, + { + "attachmentId": "YUrNq5vsCwHe", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Custom app-wide CSS_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "k2Gc17NbaAwb", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb" + ], + "title": "Developer Guides", + "notePosition": 160, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bxl-javascript", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Developer Guides", + "children": [ + { + "isClone": false, + "noteId": "yIhgI5H7A2Sm", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "yIhgI5H7A2Sm" + ], + "title": "Frontend Basics", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "SynTBQiBsdYJ", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "frontend-basics", + "isInheritable": false, + "position": 30 + } + ], + "format": "html", + "dataFileName": "Frontend Basics.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "SynTBQiBsdYJ", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "SynTBQiBsdYJ" + ], + "title": "Widget Basics", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "widget-basics", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Widget Basics.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "es8OU2GuguFU", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "es8OU2GuguFU" + ], + "title": "Examples", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "Examples", + "children": [ + { + "isClone": false, + "noteId": "7kZPMD0uFwkH", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "es8OU2GuguFU", + "7kZPMD0uFwkH" + ], + "title": "Downloading responses from Google Forms", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Downloading responses from Goo.html", + "attachments": [] + }, + { + "isClone": false, + "noteId": "DL92EjAaXT26", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "es8OU2GuguFU", + "DL92EjAaXT26" + ], + "title": "Using promoted attributes to configure scripts", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "dataFileName": "Using promoted attributes to c.html", + "attachments": [ + { + "attachmentId": "7P3jzVEa1mk7", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Using promoted attributes .png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "CXny4YWKsD7z", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z" + ], + "title": "REST API", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "REST API", + "children": [ + { + "isClone": false, + "noteId": "cqCjxpN8NhbH", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "cqCjxpN8NhbH" + ], + "title": "ETAPI", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "ETAPI", + "children": [ + { + "isClone": false, + "noteId": "9qPsTWBorUhQ", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "cqCjxpN8NhbH", + "9qPsTWBorUhQ" + ], + "title": "API Reference", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "webView", + "mime": "", + "attributes": [ + { + "type": "label", + "name": "webViewSrc", + "value": "/etapi/docs", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "API Reference.dat", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "0vTSyvhPTAOz", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "0vTSyvhPTAOz" + ], + "title": "Internal API", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "html", + "attachments": [], + "dirFileName": "Internal API", + "children": [ + { + "isClone": false, + "noteId": "z8O2VG4ZZJD7", + "notePath": [ + "pOsGYCXsbNQG", + "k2Gc17NbaAwb", + "CXny4YWKsD7z", + "0vTSyvhPTAOz", + "z8O2VG4ZZJD7" + ], + "title": "API Reference", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "webView", + "mime": "", + "attributes": [ + { + "type": "label", + "name": "webViewSrc", + "value": "/api/docs", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "API Reference.dat", + "attachments": [] + } + ] + } + ] + } + ] + }, { "isClone": false, "noteId": "i6dbnitykE5D", @@ -6485,7 +6202,7 @@ "i6dbnitykE5D" ], "title": "FAQ", - "notePosition": 170, + "notePosition": 210, "prefix": null, "isExpanded": false, "type": "text", @@ -6522,24 +6239,31 @@ { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "wy8So3yZZlH9", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "tAassRL4RSQL", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "cbkrhQjrkKrh", + "value": "tAassRL4RSQL", "isInheritable": false, "position": 70 }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 80 + }, { "type": "label", "name": "shareAlias", @@ -6567,7 +6291,7 @@ "BgmBlOIl72jZ" ], "title": "Troubleshooting", - "notePosition": 180, + "notePosition": 220, "prefix": null, "isExpanded": false, "type": "text", @@ -6824,7 +6548,7 @@ "Wxt3vVlxlYLi" ], "title": "Attachments", - "notePosition": 190, + "notePosition": 240, "prefix": null, "isExpanded": false, "type": "text", diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Attributes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Attributes_image.png deleted file mode 100644 index ecb5f2d6d..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/1_Attributes_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/2_Day Notes_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/2_Day Notes_image.png deleted file mode 100644 index 7623131d6..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/2_Day Notes_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.html index 46e2442f4..266223fd5 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.html @@ -25,14 +25,14 @@

Select an existing day note, and the menubar contains a calendar widget. Select any day to create a note for that day. 

- +

This pattern works well also because of Cloning Notes functionality - note can appear in multiple places in the note tree, so besides appearing under day note, it can also be categorized into other notes.

Demo

- +

You can see the structure of day notes appearing under "Journal" note - there's a note for the whole year 2017, under it, you have "12 - December" diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.html index 1a7e9bf4e..3c0b1fb84 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.html @@ -18,7 +18,7 @@ href="../../Note%20Types/Code/Scripts.html">scriptsshowcase present in the demo notes.

Demo

- +

Task Manager manages outstanding (TODO) tasks and finished tasks (non-empty doneDate attribute). Outstanding tasks are further categorized by location diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.html index 1629f2af4..e20f4d792 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.html @@ -14,7 +14,7 @@

- +

The Weight Tracker is a Script API showcase present in the demo notes.

diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes.html index 8dddf4433..a4f3c09b5 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes.html @@ -22,7 +22,7 @@

These attributes play a crucial role in organizing, categorising, and enhancing the functionality of notes.

- +

Labels

Labels in Trilium can be used for a variety of purposes:

diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.html index 325639164..a15f9f447 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.html @@ -17,7 +17,7 @@ are considered important and thus are "promoted" onto the main note UI. See example below:

- +

You can see the note having kind of form with several fields. Each of these is just regular attribute, the only difference is that they appear @@ -32,7 +32,7 @@ - is it just string, or is it a date? Should we allow multiple values or note? And importantly, should we promote the attribute or not?

- +

You can notice tag attribute definition. These "definition" attributes define how the "value" attributes should behave.

diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/1_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/1_Manually altering the data.png deleted file mode 100644 index c6681695a..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/1_Manually altering the data.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/2_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/2_Manually altering the data.png deleted file mode 100644 index a6bbeaaf9..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/2_Manually altering the data.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/3_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/3_Manually altering the data.png deleted file mode 100644 index 32a91fc2f..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/3_Manually altering the data.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/4_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/4_Manually altering the data.png deleted file mode 100644 index 973cc4d6c..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/4_Manually altering the data.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/5_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/5_Manually altering the data.png deleted file mode 100644 index 6f32f76ec..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/5_Manually altering the data.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/6_Manually altering the data.png b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/6_Manually altering the data.png deleted file mode 100644 index 0ef3cef45..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/6_Manually altering the data.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.html index eaa2dad70..a8f61c0fd 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.html @@ -41,7 +41,7 @@
  • Close the application or close the database.
  • - +

    Using the SQLite CLI

    First, start the SQLite 3 CLI by specifying the path to the database:

    sqlite3 ~/.local/share/trilium-data/document.db
    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html index 255d0efcf..f982f4336 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console.html @@ -17,7 +17,7 @@

    It can be accessed by going to the global menu → Advanced → Open SQL Console.

    - +

    Interaction

      @@ -30,20 +30,19 @@
    • To run the statement, press the - icon.

      + icon.

    • For queries that return a result, the data will displayed in a table.

      - +

    Saved SQL console

    SQL queries or commands can be saved into a dedicated note.

    To do so, simply write the query and press the - button. Once saved, the note will appear in Day Notes.

    + button. Once saved, the note will appear in Day Notes.

    • The SQL expression will not be displayed by default, but it can still be viewed by going to the note context menu and selecting Note source.
    • diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map.html index c944c0673..36615a27a 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Note Map.html @@ -19,12 +19,12 @@

      Link Map

      Shows relations between notes:

      - +

      Tree Map

      Shows hierarchical map of notes:

      - +

      See also

      Relation map is a similar concept, with diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Relation Map.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Relation Map.html index 7751d1f3d..f1ce9dadb 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Relation Map.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Relation Map.html @@ -20,11 +20,11 @@

      This is a basic example how you can create simple diagram using relation maps:

      - +

      And this is how you can create it:

      - +

      We start completely from scratch by first creating new note called "Development process" and changing its type to "Relation map". After that we create @@ -39,11 +39,11 @@

      This is more complicated demo using some advanced concepts. Resulting diagram is here:

      - +

      This is how you get to it:

      - +

      There are several steps here:

        diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o.html b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o.html index 57fd5cf23..206907ca0 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o.html @@ -26,15 +26,16 @@ - + - + -

        By adding an attribute to the note

        + +

        By adding an attribute to the note

        Simply add the #shareRaw attribute and the note will always be rendered raw when accessed from the share URL.

        By altering the URL

        @@ -42,7 +43,7 @@ regardless of whether the #shareRaw attribute is added on the note.

        - +

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_UI Elements_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_UI Elements_image.png deleted file mode 100644 index 7a30a84df..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_UI Elements_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png index d2698b715..d23b671da 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/1_Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png index 0c9f26de0..530d76afb 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/2_Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png index d23b671da..9f693475f 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/3_Zen mode_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/4_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/4_Zen mode_image.png deleted file mode 100644 index c1a3e8124..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/4_Zen mode_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/5_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/5_Zen mode_image.png deleted file mode 100644 index 530d76afb..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/5_Zen mode_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/6_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/6_Zen mode_image.png deleted file mode 100644 index 9f693475f..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/6_Zen mode_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/7_Zen mode_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/7_Zen mode_image.png deleted file mode 100644 index 675a068aa..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/7_Zen mode_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.html index 39a4d5c84..2d8457eba 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Evernote.html @@ -28,8 +28,7 @@

    Limitations

    All resources (except for images) are created as note's attachments.

    HTML inside ENEX files is not exactly valid so some formatting maybe broken - or lost. You can report major problems into Trilium issue tracker. - %%{WARNING}%%

    + or lost. You can report major problems into Trilium issue tracker.

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Markdown.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Markdown.html index aa9a810d5..7df5640d3 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Markdown.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Import & Export/Markdown.html @@ -21,7 +21,7 @@

    If you want to import just a chunk of markdown from clipboard, you can do it from editor block menu:

    - +

    File import

    You can also import Markdown files from files:

    @@ -38,20 +38,20 @@

    [[gifs/markdown-file-import.gif]]

    - +

    Export

    Subtree export

    You can export whole subtree to ZIP archive which will have directory structured modelled after subtree structure:

    - +

    Single note export

    If you want to export just single note without its subtree, you can do it from Note actions menu:

    - +

    Exporting protected notes

    If you want to export protected notes, enter a protected session first! diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/1_Note Navigation_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/1_Note Navigation_image.png deleted file mode 100644 index 2ea269012..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/1_Note Navigation_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Bookmarks.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Bookmarks.html index 10f58c90b..946c7ed71 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Bookmarks.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Bookmarks.html @@ -15,13 +15,13 @@

    To easily access selected notes, you can bookmark them. See demo:

    - +

    Bookmark folder

    Space in the left panel is limited, and you might want to bookmark many items. One possible solution is to bookmark a folder, so it shows its children:

    - +

    To do this, you need to add a #bookmarkFolder label to the note.

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Hoisting.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Hoisting.html index 7586b532d..a9ded5a7b 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Hoisting.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Hoisting.html @@ -17,7 +17,7 @@ "zoom into") a specific note and its subtree by hiding all parent and sibling notes. Demo:

    - +

    In addition to showing only this subtree, this also narrows both full text search and “jump to note” to just diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Navigation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Navigation.html index 8e49f7fc8..feb1719a2 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Navigation.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Note Navigation.html @@ -21,14 +21,14 @@

    This works identically to browser backwards / forwards, it's actually using built-in browser support for this.

    - +

    Jump to note

    This is useful to quickly find and view arbitrary note - click on Jump to button on the top or press Ctrl + J . Then type part of the note name and autocomplete will help you pick the desired note.

    - +

    Recent notes

    Jump to note also has the ability to show the list of recently viewed @@ -38,7 +38,7 @@ will show the list of recent notes.

    Alternatively you can click on the "time" icon on the right.

    - +

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Workspace.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Workspace.html index ac06296a7..03ba412c5 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Workspace.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Navigation/Workspace.html @@ -27,13 +27,13 @@
  • easy entering of workspace: 

    - +

  • visual identification of workspace in tabs:
    - +

  • diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Archived Notes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Archived Notes.html index f7700bb24..9b95f4901 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Archived Notes.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Archived Notes.html @@ -22,7 +22,7 @@

    You can control whether archived notes are displayed in the note tree with a setting:

    - +

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Cloning Notes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Cloning Notes.html index 4870aa748..f1f7c77cc 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Cloning Notes.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Cloning Notes.html @@ -93,7 +93,7 @@ and notes.

    Demo

    - +

    In the demo, you can see how a clone can be created using the context menu. It's possible to do this also using the Add Link dialog or with Ctrl+C and Ctrl+V diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Export as PDF.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Export as PDF.html index 9adfe50b8..6db70ece0 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Export as PDF.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Export as PDF.html @@ -14,7 +14,7 @@

    - +

    Screenshot of the note contextual menu indicating the “Export as PDF” option.

    @@ -22,7 +22,7 @@ as PDF. On the server or PWA (mobile), the option is not available due to technical constraints and it will be hidden.

    To print a note, select the - button to the right of the note and select Export as PDF.

    + button to the right of the note and select Export as PDF.

    Afterwards you will be prompted to select where to save the PDF file. Upon confirmation, the resulting PDF will be opened automatically using the default/system application configured for PDFs.

    @@ -31,7 +31,7 @@ report the issue. In this case, it's best to offer a sample note (click on the - button, select Export note → This note and all of its descendants → HTML + button, select Export note → This note and all of its descendants → HTML in ZIP archive). Make sure not to accidentally leak any personal information.

    Landscape mode

    When exporting to PDF, there are no customizable settings such as page diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Note Revisions.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Note Revisions.html index e7db23875..68f207d7a 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Note Revisions.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Note/Note Revisions.html @@ -35,7 +35,7 @@

    Note revisions can be accessed through the button on the right of ribbon toolbar.

    - +

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes.html index e73feed21..c98bd34e8 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes.html @@ -126,7 +126,7 @@ body .CodeMirror {

    After making changes, press Ctrl + R to reload the frontend and apply your new styles.

    - +

    Styling Specific Notes in the Tree

    To apply specific styles to certain notes in the tree:

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery_preview.jpg b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery_preview.jpg deleted file mode 100644 index 5b2eb96ff..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Themes/Theme Gallery_preview.jpg and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/1_Global menu_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/1_Global menu_image.png deleted file mode 100644 index 7a30a84df..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/1_Global menu_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/1_Vertical and horizontal la.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/1_Vertical and horizontal la.png index 966a010f0..3428db3b0 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/1_Vertical and horizontal la.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/1_Vertical and horizontal la.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/2_Global menu_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/2_Global menu_image.png deleted file mode 100644 index 957a04b16..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/2_Global menu_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/2_Vertical and horizontal la.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/2_Vertical and horizontal la.png index 3428db3b0..17a6d2885 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/2_Vertical and horizontal la.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/2_Vertical and horizontal la.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/3_Vertical and horizontal la.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/3_Vertical and horizontal la.png index 17a6d2885..2f200ca85 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/3_Vertical and horizontal la.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/3_Vertical and horizontal la.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/4_Vertical and horizontal la.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/4_Vertical and horizontal la.png index 2f200ca85..b719b681e 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/4_Vertical and horizontal la.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/4_Vertical and horizontal la.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/5_Vertical and horizontal la.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/5_Vertical and horizontal la.png index b719b681e..dde2ff9f1 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/5_Vertical and horizontal la.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/5_Vertical and horizontal la.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/6_Vertical and horizontal la.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/6_Vertical and horizontal la.png deleted file mode 100644 index dde2ff9f1..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/6_Vertical and horizontal la.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.html index 5de10b75a..c4de2e9fc 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu.html @@ -16,7 +16,7 @@

    The global menu configures the current window (zoom, keeping the window on top) and offers access to some more advanced options.

    - +

    Accessing the global menu

    See Vertical and horizontal layout since diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png index 37a565d3f..957a04b16 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Global menu_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Launch Bar.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Launch Bar.html index c49a3718b..76af9978b 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Launch Bar.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Launch Bar.html @@ -38,7 +38,7 @@

    This will open a new tab with the Note Tree listing the launchers.

    - +

    Expanding Available Launchers section will show the list of launchers that are not displayed on the launch bar. The Visible Launchers will diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Note Tree.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Note Tree.html index 2b901005e..687a689fc 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Note Tree.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Note Tree.html @@ -16,7 +16,7 @@

    This page explains how to manipulate the note tree in TriliumNext, focusing on moving notes.

    - +

    Drag and Drop

    @@ -51,7 +51,7 @@ Shift and click on the note to end the selection with. All the notes between the start and the end note will be selected as well.

    - +

    In the right-click menu, operations such as Cut, Copy, Move to, Clone to or Delete will apply to all the selected notes. It is also possible diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Ribbon.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Ribbon.html index b83fd3f17..62814c49c 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Ribbon.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Ribbon.html @@ -14,7 +14,7 @@

    - +

    The ribbon allows changing options, attributes and viewing information about the current note.

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal la.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal la.png index 0288d25c4..966a010f0 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal la.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal la.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal layout.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal layout.html index 263ab1b4e..70a603a36 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal layout.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements/Vertical and horizontal layout.html @@ -26,13 +26,13 @@ href="Note%20Tree.html">Note Tree.
  • The Note Tree can be collapsed by pressing the - button at the bottom of the Launcher Bar.
  • + button at the bottom of the Launcher Bar.
  • The Global menu can be accessed via the icon at the top of the Launcher Bar.
  • + src="4_Vertical and horizontal la.png">icon at the top of the Launcher Bar.

    - +

    Horizontal layout

    The horizontal layout is a more traditional layout, since it bears similarity @@ -48,13 +48,13 @@ removed if needed.

  • The Note Tree can be collapsed by pressing the small - button to the left of the first tab.
  • + button to the left of the first tab.
  • The Global menu can be accessed via the button at the end of the Launcher Bar.
  • + src="Vertical and horizontal la.png">button at the end of the Launcher Bar.

    - +

    Changing the layout

    Go to Settings and diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements_image.png deleted file mode 100644 index 37a565d3f..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/UI Elements_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Zen mode.html b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Zen mode.html index 7f1b9210b..524f965e2 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Zen mode.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Basic Concepts/Zen mode.html @@ -14,7 +14,7 @@

    - +

    Screenshot of Zen Mode activated on a Windows 11 system with native title bar off and background effects on.

    @@ -22,7 +22,7 @@ of Trilium is hidden away in order to be able to focus on the content, whether it's for reading or writing.

    - +

    Screenshot of the Zen Mode option in the global menu.

    Activating & deactivating

    @@ -34,7 +34,7 @@

    Once Zen Mode is activated, all the UI elements of the application will be hidden away, including the global menu. In that case, the Zen Mode can be deactivated either by pressing the - icon in the top-right corner of the window or by pressing the keyboard + icon in the top-right corner of the window or by pressing the keyboard combination again.

    Do note that, by design, activating or deactivating the Zen Mode applies only to the current window. Restarting the application will also disable @@ -45,7 +45,7 @@ can still be moved by dragging the mouse across the top part of the window where the note titles are.

    - +

    Screenshot of two notes side-by-side while Zen Mode is active, on Windows 11 with background effects off.

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes to c.html b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes to c.html index 3039dbd7d..228a43606 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes to c.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes to c.html @@ -18,7 +18,7 @@ it's processing data, or a checkbox to define a particular change in behavior for the script.

    - +

    Using check boxes to toggle flags

    Instead of asking the user to modify a boolean value in the script, it's diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/FAQ.html b/src/public/app/doc_notes/en/User Guide/User Guide/FAQ.html index ed2c38ea2..1c841a973 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/FAQ.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/FAQ.html @@ -13,27 +13,16 @@

    FAQ

    -

    Mac OS support

    -

    Originally, desktop builds of Trilium Notes has been available for Windows - & Linux, but there has been a considerable demand for macOS build.

    -

    So I made one, but I underestimated the differences and specifics of Mac - platform which seems to require special handling in several places. My - lack of knowledge and frankly willingness to learn & code Mac specific - functionality resulted in a current state where Trilium does not integrate well into the OS 

    -

    %%{WARNING}%%.

    -

    macOS build is from now on considered "unsupported". I will strive to - keep it fundamentally functional, but I won't work on Mac specific features - or integrations. Note that this is more of an acknowledgment of an existing - state rather than sudden change of direction.

    -

    Of course, PRs are welcome.

    -

    Translation / localization support

    -

    Trilium is currently available only in English. Translation to other languages - is not planned in the near/medium term because it brings a significant - maintenance overhead. This decision might be revisited once Trilium stabilizes - into a more mature product.

    -

    For Chinese, there's an unofficial fork here. - Use at your own risk.

    -

    Multi user support

    +

    macOS support

    +

    Originally, Trilium Notes considered the macOS build unsupported. TriliumNext + commits to make the experience on macOS as good as possible.

    +

    if you find any platform-specific issues, feel free to report them.

    +

    Translation / localisation support

    +

    The original Trilium Notes application did not support multiple languages. + Since we believe that internationalisation is a core part of an application, + we have added support for it.

    +

    Contributions to translations are welcome.

    +

    Multi-user support

    Common request is to allow multiple users collaborate, share notes etc. So far I'm resisting this because of these reasons:

      @@ -68,10 +57,7 @@

      These general purpose sync apps are not suitable to sync database files which are open and being worked on by another application. The result is that they will corrupt the database file, resulting in data loss and this - message in the Trilium logs:

      -
      -

      SqliteError: database disk image is malformed

      -
      + message in the Trilium logs:

      SqliteError: database disk image is malformed

      The only supported way to sync Trilium's data across the network is to use a sync/web server.

      Why database instead of flat files?

      diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html index 0bbd775ca..bbd3bde62 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Backup.html @@ -63,8 +63,7 @@ noBackup=true

      You can also review the configuration file to provide all config.ini values as environment variables instead.

      -

      See sample config. - %%{WARNING}%%

      +

      See sample config.

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Data directory.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Data directory.html index ead3e2f91..bfc22b2b7 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Data directory.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Data directory.html @@ -27,7 +27,7 @@

    Easy way how to find out which data directory Trilium uses is to look at the "About Trilium Notes" dialog (from "Menu" in upper left corner):

    - +

    Here's how the location is decided:

    Data directory is normally named trilium-data and it is stored diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html index 825d9acf7..410840f42 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Mobile Frontend.html @@ -24,11 +24,11 @@

    Screenshots

    Mobile phone

    - +

    Tablet

    - +

    Limitations

    Mobile frontend provides only some of the features of the full desktop diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.html index eb7fb661e..e56e70d01 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Docker Server Installation.html @@ -23,12 +23,12 @@

    Note: Trilium's Docker container requires root privileges to operate correctly.

    -
    -

    [!WARNING] If you're using a SMB/CIFS share or folder as your Trilium - data directory, you'll need to - add the mount options of nobrl and noperm when mounting - your SMB share.

    -
    +

    Running with Docker Compose

    Grab the latest docker-compose.yml:

    wget https://raw.githubusercontent.com/TriliumNext/Notes/master/docker-compose.yml

    Optionally, edit the docker-compose.yml file to configure the diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.html index 4a78feb28..bc2f06ae3 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Kubernetes server installation.html @@ -18,12 +18,11 @@ own Kubernetes deployment.

    The recommended way is to use a Helm chart.

    Root privileges

    -
    -

    [!NOTE] -
    The Trilium container at this time needs to be run with root privileges. +

    +

    The Trilium docker container needs to be run with root privileges. The node process inside the container will be started with reduced privileges (uid:gid 1000:1000) after some initialization logic. Please make sure that diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.html index 48df65ee9..fe7d113ee 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.html @@ -29,8 +29,8 @@ its derivatives (like Ubuntu) below:

    sudo apt install libpng16-16 libpng-dev pkg-config autoconf libtool build-essential nasm libx11-dev libxkbfile-dev

    Installation

    Download

    -

    You can either download source code zip/tar from https://github.com/TriliumNext/Notes/releases/latest]] %%{WARNING}%%or - clone git repository from stable branch with

    git clone -b stable https://github.com/triliumnext/notes.git %%{WARNING}%%
    +

    You can either download source code zip/tar from https://github.com/TriliumNext/Notes/releases/latest.

    +

    For the latest version including betas, clone Git repository from **master** branch with:

    git clone -b master https://github.com/triliumnext/notes.git

    Installation

    cd trilium
     
     # download all node dependencies
    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.html
    index 57c94f685..afbf79512 100644
    --- a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.html	
    +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged server installation.html	
    @@ -17,12 +17,10 @@
               into one 7z file.

    Steps

      -
    • ssh into your server
    • -
    • use wget (or curl or whatever) to download latest - trilium-linux-x64-server-[VERSION].xz%%{WARNING}%% (notice -server - suffix) on your server
    • -
    • unpack the archive, e.g. using tar -xf -d trilium-linux-x64-server-[VERSION].tar.xz +
    • SSH into your server
    • +
    • use wget (or curl) to download latest TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz (notice -Server suffix) + on your server.
    • +
    • unpack the archive, e.g. using tar -xf -d TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz
    • cd trilium-linux-x64-server
    • @@ -41,7 +39,7 @@

      Configure Trilium to auto-run on boot with systemd

      • After downloading, extract and move Trilium:
      • -
      tar -xvf trilium-linux-x64-server-[VERSION].tar.xz
      +        
    tar -xvf TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz
     sudo mv trilium-linux-x64-server /opt/trilium
    • Create the service:
    • diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html index 6ed46a039..330e99a9c 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Synchronization.html @@ -18,7 +18,7 @@ up synchronization with a server instance, allowing multiple desktop clients to sync with a central server. This creates a star-shaped topology:

      - +

      In this setup, a central server (referred to as the sync server) and multiple client (or desktop) instances synchronize with diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html index e828be349..fbc3a2b39 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Installation & Setup/Web Clipper.html @@ -14,7 +14,7 @@

      - +

      Trilium Web Clipper is a web browser extension which allows user to clip text, screenshots, whole pages and short notes and save them directly to @@ -42,7 +42,7 @@

      Configuration

      diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/14_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/14_Geo map_image.png index 099642560..debb47ce3 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/14_Geo map_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/14_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/15_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/15_Geo map_image.png index debb47ce3..23209e0ad 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/15_Geo map_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/15_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/16_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/16_Geo map_image.png index 23209e0ad..9bb397516 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/16_Geo map_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/16_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/17_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/17_Geo map_image.png index 9bb397516..4e32110f8 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/17_Geo map_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/17_Geo map_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/18_Geo map_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/18_Geo map_image.png deleted file mode 100644 index 4e32110f8..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/18_Geo map_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/2_Code_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/2_Code_image.png deleted file mode 100644 index 21216c101..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/2_Code_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book.html index 3a6458f86..171d2f9c5 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book.html @@ -18,7 +18,7 @@ book-like reading experience. This format is particularly useful for viewing multiple smaller notes in a cohesive, continuous manner.

      - +

      In the example above, the "node.js" note on the left panel contains several child notes. The right panel displays the content of these child notes @@ -33,7 +33,7 @@ This view presents the child notes in a grid format, allowing for a more visual navigation experience.

      - +

      Switching between these views can be easily managed through the Book Note's settings (or viewType attribute), allowing users to choose the diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png index d588ed568..e050184a7 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png index acf382206..53ac5632f 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png deleted file mode 100644 index 23a383270..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/12_Calendar View_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png deleted file mode 100644 index 2dea53b64..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/13_Calendar View_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png deleted file mode 100644 index e050184a7..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/14_Calendar View_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/15_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/15_Calendar View_image.png deleted file mode 100644 index 46698faac..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/15_Calendar View_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/16_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/16_Calendar View_image.png deleted file mode 100644 index d3d64f75c..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/16_Calendar View_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/17_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/17_Calendar View_image.png deleted file mode 100644 index 53ac5632f..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/17_Calendar View_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/18_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/18_Calendar View_image.png deleted file mode 100644 index aa9e445ad..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/18_Calendar View_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/19_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/19_Calendar View_image.png deleted file mode 100644 index b594af6a6..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/19_Calendar View_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png index d8d8f87c1..fceb0563c 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png index fceb0563c..d46f327a2 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png index d46f327a2..71d6c38f1 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png index 052cddb18..57964953a 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png index 71d6c38f1..7e97245a6 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png index 57964953a..d588ed568 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png index f60aa0acc..acf382206 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png index 71f7d2dc3..23a383270 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png index 7e97245a6..2dea53b64 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html index 1965c2335..7071358d5 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Book/Calendar View.html @@ -14,10 +14,20 @@

      - +

      The Calendar view of Book notes will display each child note in a calendar that has a start date and optionally an end date, as an event.

      +

      The Calendar view has multiple display modes:

      +
        +
      • Week view, where all the 7 days of the week (or 5 if the weekends are + hidden) are displayed in columns. This mode allows entering and displaying + time-specific events, not just all-day events.
      • +
      • Month view, where the entire month is displayed and all-day events can + be inserted. Both time-specific events and all-day events are listed.
      • +
      • Year view, which displays the entire year for quick reference.
      • +
      • List view, which displays all the events of a given month in sequence.
      • +

      Unlike other Book view types, the Calendar view also allows some kind of interaction, such as moving events around as well as creating new ones.

      Creating a calendar

      @@ -33,7 +43,7 @@ 1 - + The Calendar View works only for Book note types. To create a new note, right click on the note tree on the left and select Insert note after, @@ -42,14 +52,15 @@ 2 - + Once created, the “View type” of the Book needs changed to “Calendar”, by selecting the “Book Properties” tab in the ribbon. -

      Creating a new event/note

      + +

      Creating a new event/note

      • Clicking on a day will create a new child note and assign it to that particular day. @@ -61,7 +72,7 @@
      • It's possible to drag across multiple days to set both the start and end date of a particular note.
        - +
      • Creating new notes from the calendar will respect the ~child:template relation if set on the book note.
      • @@ -70,7 +81,7 @@
        • Hovering the mouse over an event will display information about the note.
          - +
        • Left clicking the event will go to that note. Middle clicking will open the note in a new tab and right click will offer more options including @@ -101,6 +112,23 @@ When present (regardless of value), it will show the number of the week on the calendar. + + #calendar:view + + +

          Which view to display in the calendar:

          +
            +
          • timeGridWeek for the week view;
          • +
          • dayGridMonth for the month view;
          • +
          • multiMonthYear for the year view;
          • +
          • listMonth for the list view.
          • +
          +

          Any other value will be dismissed and the default view (month) will be + used instead.

          +

          The value of this label is automatically updated when changing the view + using the UI buttons.

          + + ~child:template @@ -135,6 +163,19 @@ across multiple days. The date is inclusive, so the end day is also considered. The attribute can be missing for single-day events. + + #startTime + + The time the event starts at. If this value is missing, then the event + is considered a full-day event. The format is HH:MM (hours in + 24-hour format and minutes). + + + #endTime + + Similar to startTime, it mentions the time at which the event + ends (in relation with endDate if present, or startDate). + #color @@ -158,49 +199,67 @@ #calendar:title Changes the title of an event to point to an attribute of the note other - than the title, either a label (e.g. #assignee) or a relation - (e.g. ~for). See Advanced use-cases for more information. + than the title, can either a label or a relation (without the # or ~ symbol). + See Use-cases for more information. - #calendar:promotedAttributes + #calendar:displayedAttributes - Allows displaying the value of one or more promoted attributes in the - calendar like this: - + Allows displaying the value of one or more attributes in the calendar + like this:   
          -
          <br>#label:weight="promoted,number,single,precision=1"<br>#label:mood="promoted,alias=Mood,single,text"<br>#calendar:promotedAttributes="label:weight,label:mood" <br> +
          +   +
          +
          #weight="70" #Mood="Good" #calendar:displayedAttributes="weight,Mood" 

          It can also be used with relations, case in which it will display the - title of the target note: + title of the target note:  
          -
          <br>#relation:assignee="promoted,alias=Assignee,single,text"<br>#calendar:promotedAttributes="relation:assignee" <br>~assignee=@My assignee <br> +
          ~assignee=@My assignee #calendar:displayedAttributes="assignee" #calendar:startDate - Allows using a different label to represent the start date, other than #startDate (e.g. #expiryDate). - The label name must be prefixed with #. If the label is not - defined for a note, the default will be used instead. + Allows using a different label to represent the start date, other than startDate (e.g. expiryDate). + The label name must not be prefixed with #. + If the label is not defined for a note, the default will be used instead. #calendar:endDate - Allows using a different label to represent the start date, other than #endDate. - The label name must be prefixed with #. If the label is not - defined for a note, the default will be used instead. + Similar to #calendar:startDate, allows changing the attribute + which is being used to read the end date. + + + #calendar:startTime + + Similar to #calendar:startDate, allows changing the attribute + which is being used to read the start time. + + + #calendar:endTime + + Similar to #calendar:startDate, allows changing the attribute + which is being used to read the end time. -

          How the calendar works

          + +

          How the calendar works

          - The calendar displays all the child notes of the book that have a #startDate. + +

          +

          The calendar displays all the child notes of the book that have a #startDate. An #endDate can optionally be added.

          If editing the start date and end date from the note itself is desirable, - the following attributes can be added to the book note:

          #viewType=calendar #label:startDate(inheritable)="promoted,alias=Start Date,single,date" #label:endDate(inheritable)="promoted,alias=End Date,single,date" #hidePromotedAttributes 
          + the following attributes can be added to the book note:

          #viewType=calendar #label:startDate(inheritable)="promoted,alias=Start Date,single,date"
          +#label:endDate(inheritable)="promoted,alias=End Date,single,date"
          +#hidePromotedAttributes 

          This will result in:

          - +

          When not used in a Journal, the calendar is recursive. That is, it will look for events not just in its child notes but also in the children of @@ -225,38 +284,38 @@ will not be displayed.

        - +

        Using a different attribute as event title

        By default, events are displayed on the calendar by their note title. However, it is possible to configure a different attribute to be displayed instead.

        To do so, assign #calendar:title to the child note (not the - calendar/book note), with the value being #name where name can - be any label. The attribute can also come through inheritance such as a - template attribute. If the note does not have the requested label, the - title of the note will be used instead.

        + calendar/book note), with the value being name where name can + be any label (make not to add the # prefix). The attribute can + also come through inheritance such as a template attribute. If the note + does not have the requested label, the title of the note will be used instead.

        - - + + -
          
        - +
        #startDate=2025-02-11 #endDate=2025-02-13 #name="My vacation" #calendar:title="name"
        - +
        -

        Using a relation attribute as event title

        + +

        Using a relation attribute as event title

        Similarly to using an attribute, use #calendar:title and set - it to ~name where name is the name of the relation + it to name where name is the name of the relation to use.

        Moreover, if there are more relations of the same name, they will be displayed as multiple events coming from the same note.

        @@ -269,11 +328,10 @@ - - + #startDate=2025-02-14 #endDate=2025-02-15 ~for=@John Smith ~for=@Jane Doe #calendar:title="for" - + @@ -292,11 +350,10 @@ - - + #calendar:title="shortName" #shortName="John S." - + diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code.html index ad436687a..c1c795055 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code.html @@ -31,7 +31,7 @@

        For shorter snippets of code that can be embedded in Text notes, see Code blocks.

        - +

        Adjusting the language of a code note

        In the Ribbon, @@ -39,7 +39,7 @@ note types. Inside of it there will be a section called Code, select any one of the languages.

        - +

        Adjusting the list of languages

        Trilium supports syntax highlighting for many languages, but by default diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code/Custom Widgets.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code/Custom Widgets.html index 8b6813219..d1ec5de88 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code/Custom Widgets.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code/Custom Widgets.html @@ -104,7 +104,7 @@ module.exports = WordCountWidget;

    Example screenshot

    On the bottom you can see the resulting widget:

    - +

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code/Scripts.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code/Scripts.html index 93f552f2f..fbfa1a579 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code/Scripts.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Code/Scripts.html @@ -37,7 +37,7 @@ the Trilium interface which will allow user to easily add new Task (TODO item).

    - +

    First take a look at the red circle all the way on the top - this what we want to achieve - new button in UI which will create new note representing diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Geo map.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Geo map.html index ffddea448..ba78f9db1 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Geo map.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Geo map.html @@ -26,20 +26,21 @@ 1 - + Right click on any note on the note tree and select Insert child noteGeo Map (beta). 2 - + By default the map will be empty and will show the entire world. -

    Repositioning the map

    + +

    Repositioning the map

    • Click and drag the map in order to move across the map.
    • Use the mouse wheel, two-finger gesture on a touchpad or the +/- buttons @@ -62,16 +63,16 @@ To create a marker, first navigate to the desired point on the map. Then press the - button on the top-right of the map.  + button on the top-right of the map. 

      If the button is not visible, make sure the button section is visible by pressing the chevron button ( - ) in the top-right of the map. + ) in the top-right of the map. 2 - + Once pressed, the map will enter in the insert mode, as illustrated by the notification.  @@ -82,25 +83,26 @@ 3 - + Enter the name of the marker/note to be created. 4 - + Once confirmed, the marker will show up on the map and it will also be displayed as a child note of the map. -

      How the location of the markers is stored

      + +

      How the location of the markers is stored

      The location of a marker is stored in the #geolocation attribute of the child notes:

      - +

      This value can be added manually if needed. The value of the attribute is made up of the latitude and longitude separated by a comma.

      @@ -155,7 +157,7 @@ 1 - + Go to Google Maps on the web and look for a desired location, right click on it and a context menu will show up.  @@ -169,14 +171,14 @@ 2 - + In Trilium, create a child note under the map. 3 - + And then go to Owned Attributes and type #geolocation=", then paste from the clipboard as-is and then add the ending " character. @@ -185,7 +187,8 @@ -

      Adding from OpenStreetMap

      + +

      Adding from OpenStreetMap

      Similarly to the Google Maps approach:

      @@ -199,7 +202,7 @@ @@ -207,7 +210,7 @@
      1 - + Go to any location on openstreetmap.org and right click to bring up the context menu. Select the “Show address” item.
      2 - + The address will be visible in the top-left of the screen, in the place of the search bar.  @@ -217,14 +220,15 @@
      3 - + Simply paste the value inside the text box into the #geolocation attribute of a child note of the map and then it should be displayed on the map.
      -

      Adding GPS tracks (.gpx)

      + +

      Adding GPS tracks (.gpx)

      Trilium has basic support for displaying GPS tracks on the geo map.

      @@ -238,7 +242,7 @@ @@ -246,7 +250,7 @@ @@ -254,7 +258,7 @@
      1 - + To add a track, simply drag & drop a .gpx file inside the geo map in the note tree.
      2 - + In order for the file to be recognized as a GPS track, it needs to show up as application/gpx+xml in the File type field.
      3 - + When going back to the map, the track should now be visible. 
      @@ -262,9 +266,10 @@
      -

      Troubleshooting

      + +

      Troubleshooting

      - +

      Grid-like artifacts on the map

      This occurs if the application is not at 100% zoom which causes the pixels diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html index 661ace573..402d570cb 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Mermaid Diagrams.html @@ -37,10 +37,10 @@ config: - + - + diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text.html index 06cbad403..5a1254627 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text.html @@ -36,7 +36,7 @@

    In both cases, it is possible to switch back to editable mode using the button at top right of page.

    + src="Text_bx-edit-alt.svg">button at top right of page.

    For more information, see Read-Only Notes.

    General Formatting

    Since Trilium uses CKEditor, all of its formatting options are available @@ -72,7 +72,7 @@

    CKEditor supports a markdown-like editing experience, recognising syntax and automatically converting it to rich text.

    - +

    Complete documentation for this feature is available in the CKEditor documentation.

    If autoformatting is not desirable, press Ctrl + Z to diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/10_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/10_Images_image.png index 0167e759b..71537a769 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/10_Images_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/10_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/11_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/11_Images_image.png deleted file mode 100644 index b7bd3af59..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/11_Images_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/12_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/12_Images_image.png deleted file mode 100644 index 71537a769..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/12_Images_image.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Admonitions_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Admonitions_image.png new file mode 100644 index 000000000..07876abbf Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Admonitions_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Content language & Right-t.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Content language & Right-t.png deleted file mode 100644 index 8e5d5a2f7..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Content language & Right-t.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Images_image.png index b7bd3af59..a4e23ef9a 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Images_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/1_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/2_Content language & Right-t.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/2_Content language & Right-t.png deleted file mode 100644 index 20864f8af..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/2_Content language & Right-t.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/2_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/2_Images_image.png index a4e23ef9a..08a40b0d0 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/2_Images_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/2_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/3_Content language & Right-t.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/3_Content language & Right-t.png deleted file mode 100644 index 8d05d2878..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/3_Content language & Right-t.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/3_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/3_Images_image.png index 08a40b0d0..297d49ee5 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/3_Images_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/3_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/4_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/4_Images_image.png index 297d49ee5..11bb32b67 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/4_Images_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/4_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/5_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/5_Images_image.png index 11bb32b67..a0b1f2579 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/5_Images_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/5_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/6_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/6_Images_image.png index a0b1f2579..f8c5cf48f 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/6_Images_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/6_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/7_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/7_Images_image.png index a0b1f2579..731df83bb 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/7_Images_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/7_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/8_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/8_Images_image.png index f8c5cf48f..0167e759b 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/8_Images_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/8_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/9_Images_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/9_Images_image.png index 731df83bb..b7bd3af59 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/9_Images_image.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/9_Images_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Admonitions.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Admonitions.html new file mode 100644 index 000000000..c1e0f9df1 --- /dev/null +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Admonitions.html @@ -0,0 +1,85 @@ + + + + + + + + Admonitions + + + +

    +

    Admonitions

    + +
    +

    + +

    +

    Admonitions are a way to highlight information to the reader. Other names + for it include call-outs and info/warning/alert boxes.

    +

    Inserting a new admonition

    +

    From the UI

    +

    In the Formatting toolbar:

    +

    + +

    +

    Via the keyboard

    +

    It's possible to insert an admonition simply by typing:

    +
      +
    • !!! note +
    • +
    • !!! tip +
    • +
    • !!! important +
    • +
    • !!! caution +
    • +
    • !!! warning +
    • +
    +

    In addition to that, it's also possible to type !!!  followed + by any text, case in which a default admonition type will appear (note) + with the entered text inside it.

    +

    Interaction

    +

    By design, admonitions act very similar to block quotes.

    +
      +
    • Selecting a text and pressing the admonition button will turn that text + into an admonition.
    • +
    • If selecting multiple admonitions, pressing the admonition button will + automatically merge them into one.
    • +
    +

    Inside an admonition:

    +
      +
    • Pressing Backspace while the admonition is empty will remove + it.
    • +
    • Pressing Enter will start a new paragraph. Pressing it twice + will exit out of the admonition.
    • +
    • Headings and other block content including tables can be inserted inside + the admonition.
    • +
    +

    Types of admonitions

    +

    There are currently five types of admonitions: Note, Tip, Important, Caution, Warning.

    +

    These types were inspired by GitHub's support for this feature and there + are currently no plans for adjusting it or allowing the user to customize + them.

    +

    Markdown support

    +

    The Markdown syntax for admonitions as supported by Trilium is the one + that GitHub uses, which is as follows:

    > [!NOTE]
    +> This is a note.
    +
    +> [!TIP]
    +> This is a tip.
    +
    +> [!IMPORTANT]
    +> This is a very important information.
    +
    +> [!CAUTION]
    +> This is a caution.
    +

    There are currently no plans of supporting alternative admonition syntaxes + such as !!! note.

    +
    +
    + + + \ No newline at end of file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Admonitions_image.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Admonitions_image.png new file mode 100644 index 000000000..9eb084655 Binary files /dev/null and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Admonitions_image.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Code blocks.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Code blocks.html index a19d072c7..4882c30f6 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Code blocks.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Code blocks.html @@ -14,7 +14,7 @@

    - +

    The code blocks feature allows entering pieces of code in text notes.

    Note that this feature is meant for generally small snippets of code. @@ -24,7 +24,7 @@

    • Via the Formatting toolbar, look for the - button. + button.
      • Pressing directly on the icon will insert a code block with the language that was selected most recently. If this is the first time a code block @@ -55,7 +55,7 @@

        Simply click anywhere inside the code block and press again the code block button in the Formatting toolbar:
        - +

        Adjusting the list of languages

        The code blocks feature shares the list of languages with the Code Notes note diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language & Right-t.png b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language & Right-t.png index 8e5d5a2f7..dee799386 100644 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language & Right-t.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language & Right-t.png differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language & Right-to-le.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language & Right-to-le.html index 44c1e9ead..187ac7227 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language & Right-to-le.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Content language & Right-to-le.html @@ -14,8 +14,7 @@

        - +

        A language hint can be provided for text notes. This option informs the browser or the desktop application about the language the note is written diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Formatting toolbar.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Formatting toolbar.html index 64d88a9cc..575864737 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Formatting toolbar.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Formatting toolbar.html @@ -25,17 +25,17 @@

        The first popup is the block-level popup. This will appear to the left of the current paragraph you are currently editing, as a sequence of dots:
        - +

        Clicking this popup will reveal the formatting options that are specific to the entire paragraph, such as setting a heading, lists, tables, etc.

        - +

        Inline popup

        The inline popup appears automatically when selecting a text:

        - +

        All the options here apply only to the selected portion of text, such as changing the font size, or making the text bold.

        @@ -45,7 +45,7 @@

        All the options are combined into a single toolbar that will appear as part of the Ribbon.

        - +

        By default, if the toolbar does not fit on the screen, the rest of the options will be grouped into a single option at the end. It is possible diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Formatting.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Formatting.html index e02951b69..ff81cf10e 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Formatting.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Formatting.html @@ -17,11 +17,11 @@

        Keyboard shortcuts

        This allows marking a portion of text as a shortcut key.

        - +

        To apply this style, press the - button in - group from the Formatting toolbar. + button in + group from the Formatting toolbar. On the floating toolbar, the buttons appear when selecting a text.

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Images.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Images.html index 2076fb9b5..6465a8f40 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Images.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Images.html @@ -24,18 +24,18 @@

    To add an image to the note, simply drag it from file explorer onto the note editor inside Trilium and the image will be uploaded.

    - +

    Alternatively you can click on block toolbar and then on "Insert image":

    - +

    You can also copy and paste an image from web - the image will be (asynchronously) downloaded and embedded.

    Configuring the images

    Clicking on an image will reveal a popup with multiple options:
    - +

    Alignment

    The first set of options configure the alignment are, in order:

    @@ -51,11 +51,11 @@ - + Inline - + As the name suggests, the name can be put inside a paragraph and moved around similarly as if it was a block of text. Use drag & drop or cut-paste @@ -63,32 +63,32 @@ - + Centered image - + The image will be displayed as a block and centered, not allowing text in either the left or right of it. - + Wrap text - + The image will be displayed to the left or the right of the text. - + Block align - + Similarly to Centered image, the image will be displayed as a block and aligned either to the left or to the right, but not allowing @@ -96,7 +96,8 @@ -

    Compression

    + +

    Compression

    Since Trilium isn't really meant to be primary storage for image data, it attempts to compress and resize (with pretty aggressive settings) uploaded images before storing them to the database. You may then notice some quality diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Links.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Links.html index 22c75065d..0a93d84b6 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Links.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Links.html @@ -21,7 +21,7 @@ link, select text and press Ctrl + K or wait for the "balloon" to appear and click link icon there.

    - +

    You can follow external link by either double clicking (will open new tab/window) it or right clicking on them and choosing "Open in new tab".

    @@ -39,7 +39,7 @@ - you link to a particular note and can choose the link title

    - +

    You can follow the note link by double clicking it.

    Alternatively if you only wish to quickly preview the content, you can diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Lists.html b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Lists.html index 127dc48ed..3861fb855 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Lists.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Note Types/Text/Lists.html @@ -41,38 +41,38 @@ - + First, create a list. - + Press Enter to create a new list item. - + Press Backspace to get rid of the bullet point. Notice the cursor position. - + At this point, insert any desired block-level item such as a code block. - + To continue with a new bullet point, press Enter until the cursor moves to a new blank position. - + Press Enter once more to create the new bullet. diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Quick Start.html b/src/public/app/doc_notes/en/User Guide/User Guide/Quick Start.html index 01f6dab01..caadb1cd5 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Quick Start.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Quick Start.html @@ -27,12 +27,11 @@

  • Server installation
  • Mobile frontend (optional)
  • -
  • Deploy%%{WARNING}%%
  • PikaPods managed hosting
  • Combination of server and desktop/laptop - Install the - application on both a server, for web access and data synchronization, + application on both a server, for web access and data synchronisation, and desktop instance(s). This allows all the data to be stored on the server and either accessed from the web browser, or the desktop application. The desktop application will sync and store the data locally so that it can @@ -46,11 +45,6 @@

  • Synchronization
  • -

    Basic concepts

    -
      -
    1. Understand Note -
    2. -
    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/1_Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/1_Creating a custom theme_im.png deleted file mode 100644 index 60ed508e2..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/1_Creating a custom theme_im.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/2_Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/2_Creating a custom theme_im.png deleted file mode 100644 index 59dccde8c..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/2_Creating a custom theme_im.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/3_Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/3_Creating a custom theme_im.png deleted file mode 100644 index 733ac21d1..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/3_Creating a custom theme_im.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/4_Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/4_Creating a custom theme_im.png deleted file mode 100644 index a88f2379e..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/4_Creating a custom theme_im.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/5_Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/5_Creating a custom theme_im.png deleted file mode 100644 index ab66f9ecf..000000000 Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/5_Creating a custom theme_im.png and /dev/null differ diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme.html b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme.html index f5d4bcae7..1a3c63dad 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme.html @@ -30,7 +30,7 @@ - + Themes are code notes with a special attribute. Start by creating a new code note. @@ -47,7 +47,8 @@ -

    Step 3. Define the theme's CSS

    + +

    Step 3. Define the theme's CSS

    As a very simple example we will change the background color of the launcher pane to a shade of blue.

    To alter the different variables of the theme:

    :root {
    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme_im.png b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme_im.png
    index f90ec6f54..ab66f9ecf 100644
    Binary files a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme_im.png and b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Creating a custom theme_im.png differ
    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html
    index f346b8bd0..409059af1 100644
    --- a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html	
    +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Custom app-wide CSS.html	
    @@ -25,19 +25,19 @@
               
                 
                   
    -                
    +                
                   
                   Start by creating a new note and changing the note type to CSS
                 
                 
                   
    -                
    +                
                   
                   In the ribbon, press the “Owned Attributes” section and type #appCss.
                 
                 
                   
    -                
    +                
                   
                   Type the desired CSS.
                     
    @@ -46,7 +46,8 @@ -

    Seeing the changes

    + +

    Seeing the changes

    Adding a new app CSS note or modifying an existing one does not immediately apply changes. To see the changes, press Ctrl+Shift+R to refresh the page first.

    diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Customize the Next theme.html b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Customize the Next theme.html index 2764d57a3..fc66cb689 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Customize the Next theme.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Theme development/Customize the Next theme.html @@ -18,7 +18,7 @@ onto the existing theme. The appTheme attribute must also be present.

    - +

    The appThemeBase label can be set to one of the following values:

      diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Anonymized Database.html b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Anonymized Database.html index 5010aa6e5..42f0e33b5 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Anonymized Database.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Anonymized Database.html @@ -14,7 +14,7 @@

      - +

      In certain scenarios, understanding the structure of a database is crucial for troubleshooting issues. However, sharing your actual database file diff --git a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Error logs.html b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Error logs.html index a8e228aab..7c625534f 100644 --- a/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Error logs.html +++ b/src/public/app/doc_notes/en/User Guide/User Guide/Troubleshooting/Error logs.html @@ -35,11 +35,11 @@

    • In Firefox/Chrome right-click anywhere in the page and click Inspect:

    - +

    Once you have Dev Tools open, click on "Console" tab:

    - +

    Copy-paste (or screenshot) the logs. It's better to provide not just errors, but the whole log, which might provide context while analyzing the bug.

    @@ -56,7 +56,7 @@

    In such case, please export the relevant note subtree by right-clicking it on the left tree, choosing Export - HTML as ZIP:

    - +

    diff --git a/src/public/app/doc_notes/en/User Guide/navigation.html b/src/public/app/doc_notes/en/User Guide/navigation.html index 5995e9c65..02360cee5 100644 --- a/src/public/app/doc_notes/en/User Guide/navigation.html +++ b/src/public/app/doc_notes/en/User Guide/navigation.html @@ -76,7 +76,71 @@ -
  • Quick Start +
  • Installation & Setup +
  • Basic Concepts
      @@ -169,10 +233,14 @@
  • +
  • Quick Start +
  • Note Types
    • Text
    • -
    • Installation & Setup - -
    • FAQ
    • Troubleshooting diff --git a/src/public/app/doc_notes/en/User Guide/style.css b/src/public/app/doc_notes/en/User Guide/style.css index 4243d146a..5f00bd7af 100644 --- a/src/public/app/doc_notes/en/User Guide/style.css +++ b/src/public/app/doc_notes/en/User Guide/style.css @@ -17,6 +17,32 @@ margin: 0 !important; } +.ck-content .admonition { + --accent-color: var(--card-border-color); + border: 1px solid var(--accent-color); + box-shadow: var(--card-box-shadow); + background: var(--card-background-color); + border-radius: 0.5em; + padding: 1em; + margin: 1.25em 0; + position: relative; + overflow: hidden; +} + +.ck-content .admonition p:last-child { + margin-bottom: 0; +} + +.ck-content .admonition p, h2 { + margin-top: 0; +} + +.ck-content .admonition.note { --accent-color: #69c7ff; } +.ck-content .admonition.tip { --accent-color: #40c025; } +.ck-content .admonition.important { --accent-color: #9839f7; } +.ck-content .admonition.caution { --accent-color: #ff2e2e; } +.ck-content .admonition.warning { --accent-color: #e2aa03; } + /* * CKEditor 5 (v41.0.0) content styles. * Generated on Fri, 26 Jan 2024 10:23:49 GMT. diff --git a/src/public/app/menus/link_context_menu.ts b/src/public/app/menus/link_context_menu.ts index 6456c6519..cef67b7da 100644 --- a/src/public/app/menus/link_context_menu.ts +++ b/src/public/app/menus/link_context_menu.ts @@ -22,13 +22,19 @@ function getItems(): MenuItem[] { function handleLinkContextMenuItem(command: string | undefined, notePath: string, viewScope = {}, hoistedNoteId: string | null = null) { if (!hoistedNoteId) { - hoistedNoteId = appContext.tabManager.getActiveContext().hoistedNoteId; + hoistedNoteId = appContext.tabManager.getActiveContext()?.hoistedNoteId ?? null; } if (command === "openNoteInNewTab") { appContext.tabManager.openContextWithNote(notePath, { hoistedNoteId, viewScope }); } else if (command === "openNoteInNewSplit") { - const subContexts = appContext.tabManager.getActiveContext().getSubContexts(); + const subContexts = appContext.tabManager.getActiveContext()?.getSubContexts(); + + if (!subContexts) { + logError("subContexts is null"); + return; + } + const { ntxId } = subContexts[subContexts.length - 1]; appContext.triggerCommand("openNewNoteSplit", { ntxId, notePath, hoistedNoteId, viewScope }); diff --git a/src/public/app/services/branches.ts b/src/public/app/services/branches.ts index 18bae3529..b6f562f7c 100644 --- a/src/public/app/services/branches.ts +++ b/src/public/app/services/branches.ts @@ -252,7 +252,7 @@ async function cloneNoteToBranch(childNoteId: string, parentBranchId: string, pr } } -async function cloneNoteToParentNote(childNoteId: string, parentNoteId: string, prefix: string) { +async function cloneNoteToParentNote(childNoteId: string, parentNoteId: string, prefix?: string) { const resp = await server.put(`notes/${childNoteId}/clone-to-note/${parentNoteId}`, { prefix: prefix }); diff --git a/src/public/app/services/content_renderer.ts b/src/public/app/services/content_renderer.ts index 92b206001..720f4da25 100644 --- a/src/public/app/services/content_renderer.ts +++ b/src/public/app/services/content_renderer.ts @@ -40,7 +40,7 @@ async function getRenderedContent(this: {} | { ctx: string }, entity: FNote | FA const $renderedContent = $('
      '); - if (type === "text") { + if (type === "text" || type === "book") { await renderText(entity, $renderedContent); } else if (type === "code") { await renderCode(entity, $renderedContent); diff --git a/src/public/app/services/import.ts b/src/public/app/services/import.ts index 0c6c25f11..d33ad09fb 100644 --- a/src/public/app/services/import.ts +++ b/src/public/app/services/import.ts @@ -6,15 +6,15 @@ import appContext from "../components/app_context.js"; import { t } from "./i18n.js"; interface UploadFilesOptions { - safeImport: boolean; - shrinkImages: boolean; - textImportedAsText: boolean; - codeImportedAsCode: boolean; - explodeArchives: boolean; - replaceUnderscoresWithSpaces: boolean; + safeImport?: boolean; + shrinkImages: boolean | "true" | "false"; + textImportedAsText?: boolean; + codeImportedAsCode?: boolean; + explodeArchives?: boolean; + replaceUnderscoresWithSpaces?: boolean; } -export async function uploadFiles(entityType: string, parentNoteId: string, files: string[], options: UploadFilesOptions) { +export async function uploadFiles(entityType: string, parentNoteId: string, files: string[] | File[], options: UploadFilesOptions) { if (!["notes", "attachments"].includes(entityType)) { throw new Error(`Unrecognized import entity type '${entityType}'.`); } diff --git a/src/public/app/services/link.ts b/src/public/app/services/link.ts index c57ec5494..bc3baf924 100644 --- a/src/public/app/services/link.ts +++ b/src/public/app/services/link.ts @@ -288,11 +288,15 @@ function goToLinkExt(evt: MouseEvent | JQuery.ClickEvent | JQuery.MouseDownEvent const noteContext = ntxId ? appContext.tabManager.getNoteContextById(ntxId) : appContext.tabManager.getActiveContext(); - noteContext.setNote(notePath, { viewScope }).then(() => { - if (noteContext !== appContext.tabManager.getActiveContext()) { - appContext.tabManager.activateNoteContext(noteContext.ntxId); - } - }); + if (noteContext) { + noteContext.setNote(notePath, { viewScope }).then(() => { + if (noteContext !== appContext.tabManager.getActiveContext()) { + appContext.tabManager.activateNoteContext(noteContext.ntxId); + } + }); + } else { + appContext.tabManager.openContextWithNote(notePath, { viewScope, activate: true }); + } } } else if (hrefLink) { const withinEditLink = $link?.hasClass("ck-link-actions__preview"); diff --git a/src/public/app/services/mime_type_definitions.ts b/src/public/app/services/mime_type_definitions.ts index 1d44efbe6..26e7011b0 100644 --- a/src/public/app/services/mime_type_definitions.ts +++ b/src/public/app/services/mime_type_definitions.ts @@ -117,7 +117,7 @@ export const MIME_TYPES_DICT: readonly MimeTypeDefinition[] = Object.freeze([ { title: "PEG.js", mime: "null" }, { title: "Perl", mime: "text/x-perl", default: true }, { title: "PGP", mime: "application/pgp" }, - { title: "PHP", mime: "text/x-php", default: true }, + { title: "PHP", mime: "text/x-php", default: true, highlightJs: "php" }, { title: "Pig", mime: "text/x-pig" }, { title: "PLSQL", mime: "text/x-plsql", highlightJs: "sql" }, { title: "PostgreSQL", mime: "text/x-pgsql", highlightJs: "pgsql" }, @@ -135,7 +135,7 @@ export const MIME_TYPES_DICT: readonly MimeTypeDefinition[] = Object.freeze([ { title: "Ruby", mime: "text/x-ruby", highlightJs: "ruby", default: true }, { title: "Rust", mime: "text/x-rustsrc", highlightJs: "rust" }, { title: "SAS", mime: "text/x-sas", highlightJs: "sas" }, - { title: "Sass", mime: "text/x-sass" }, + { title: "Sass", mime: "text/x-sass", highlightJs: "scss" }, { title: "Scala", mime: "text/x-scala" }, { title: "Scheme", mime: "text/x-scheme" }, { title: "SCSS", mime: "text/x-scss", highlightJs: "scss" }, @@ -169,7 +169,7 @@ export const MIME_TYPES_DICT: readonly MimeTypeDefinition[] = Object.freeze([ { title: "TTCN", mime: "text/x-ttcn" }, { title: "Turtle", mime: "text/turtle" }, { title: "Twig", mime: "text/x-twig", highlightJs: "twig" }, - { title: "TypeScript-JSX", mime: "text/typescript-jsx" }, + { title: "TypeScript-JSX", mime: "text/typescript-jsx", highlightJs: "typescript" }, { title: "TypeScript", mime: "application/typescript", highlightJs: "typescript" }, { title: "VB.NET", mime: "text/x-vb", highlightJs: "vbnet" }, { title: "VBScript", mime: "text/vbscript", highlightJs: "vbscript" }, diff --git a/src/public/app/services/resizer.ts b/src/public/app/services/resizer.ts index 2e353c35d..2c6c5fdd5 100644 --- a/src/public/app/services/resizer.ts +++ b/src/public/app/services/resizer.ts @@ -1,6 +1,8 @@ import options from "./options.js"; import Split from "split.js" +export const DEFAULT_GUTTER_SIZE = 5; + let leftInstance: ReturnType | null; let rightInstance: ReturnType | null; @@ -26,7 +28,7 @@ function setupLeftPaneResizer(leftPaneVisible: boolean) { if (leftPaneVisible) { leftInstance = Split(["#left-pane", "#rest-pane"], { sizes: [leftPaneWidth, 100 - leftPaneWidth], - gutterSize: 5, + gutterSize: DEFAULT_GUTTER_SIZE, onDragEnd: (sizes) => options.save("leftPaneWidth", Math.round(sizes[0])) }); } @@ -54,7 +56,7 @@ function setupRightPaneResizer() { if (rightPaneVisible) { rightInstance = Split(["#center-pane", "#right-pane"], { sizes: [100 - rightPaneWidth, rightPaneWidth], - gutterSize: 5, + gutterSize: DEFAULT_GUTTER_SIZE, minSize: [ 300, 180 ], onDragEnd: (sizes) => options.save("rightPaneWidth", Math.round(sizes[1])) }); diff --git a/src/public/app/services/shortcuts.ts b/src/public/app/services/shortcuts.ts index 65da81a0d..d19e434d1 100644 --- a/src/public/app/services/shortcuts.ts +++ b/src/public/app/services/shortcuts.ts @@ -1,7 +1,7 @@ import utils from "./utils.js"; type ElementType = HTMLElement | Document; -type Handler = (e: JQuery.TriggeredEvent) => void; +type Handler = (e: JQuery.TriggeredEvent) => void; function removeGlobalShortcut(namespace: string) { bindGlobalShortcut("", null, namespace); @@ -11,7 +11,7 @@ function bindGlobalShortcut(keyboardShortcut: string, handler: Handler | null, n bindElShortcut($(document), keyboardShortcut, handler, namespace); } -function bindElShortcut($el: JQuery, keyboardShortcut: string, handler: Handler | null, namespace: string | null = null) { +function bindElShortcut($el: JQuery, keyboardShortcut: string, handler: Handler | null, namespace: string | null = null) { if (utils.isDesktop()) { keyboardShortcut = normalizeShortcut(keyboardShortcut); diff --git a/src/public/app/services/tree.ts b/src/public/app/services/tree.ts index e7c94ca0e..ff4c34210 100644 --- a/src/public/app/services/tree.ts +++ b/src/public/app/services/tree.ts @@ -138,7 +138,7 @@ function getParentProtectedStatus(node: Fancytree.FancytreeNode) { return hoistedNoteService.isHoistedNode(node) ? false : node.getParent().data.isProtected; } -function getNoteIdFromUrl(urlOrNotePath: string | undefined) { +function getNoteIdFromUrl(urlOrNotePath: string | null | undefined) { if (!urlOrNotePath) { return null; } diff --git a/src/public/app/services/utils.ts b/src/public/app/services/utils.ts index 53fd85a7b..ee76093bb 100644 --- a/src/public/app/services/utils.ts +++ b/src/public/app/services/utils.ts @@ -411,7 +411,11 @@ async function openInAppHelp($button: JQuery) { if (inAppHelpPage) { // Dynamic import to avoid import issues in tests. const appContext = (await import("../components/app_context.js")).default; - const subContexts = appContext.tabManager.getActiveContext().getSubContexts(); + const activeContext = appContext.tabManager.getActiveContext(); + if (!activeContext) { + return; + } + const subContexts = activeContext.getSubContexts(); const targetNote = `_help_${inAppHelpPage}`; const helpSubcontext = subContexts.find((s) => s.viewScope?.viewMode === "contextual-help"); const viewScope: ViewScope = { diff --git a/src/public/app/types.d.ts b/src/public/app/types.d.ts index beea7477f..0252c9d37 100644 --- a/src/public/app/types.d.ts +++ b/src/public/app/types.d.ts @@ -184,6 +184,48 @@ declare global { } }; + var CodeMirror: { + (el: HTMLElement, opts: { + value: string; + viewportMargin: number; + indentUnit: number; + matchBrackets: boolean; + matchTags: { bothTags: boolean }; + highlightSelectionMatches: { + showToken: boolean; + annotateScrollbar: boolean; + }; + lineNumbers: boolean; + lineWrapping: boolean; + }): CodeMirrorInstance; + keyMap: { + default: Record; + }; + modeURL: string; + modeInfo: ModeInfo[]; + findModeByMIME(mime: string): ModeInfo; + autoLoadMode(instance: CodeMirrorInstance, mode: string) + } + + interface ModeInfo { + name: string; + mode: string; + mime: string; + mimes: string[]; + } + + interface CodeMirrorInstance { + getValue(): string; + setValue(val: string); + clearHistory(); + setOption(name: string, value: string); + refresh(); + focus(); + setCursor(line: number, col: number); + lineCount(): number; + on(event: string, callback: () => void); + } + var katex: { renderToString(text: string, opts: { throwOnError: boolean diff --git a/src/public/app/utils/mutex.ts b/src/public/app/utils/mutex.ts index 76ea57b0d..fb98ce4b6 100644 --- a/src/public/app/utils/mutex.ts +++ b/src/public/app/utils/mutex.ts @@ -16,7 +16,7 @@ export default class Mutex { return newPromise; } - async runExclusively(cb: () => Promise) { + async runExclusively(cb: () => Promise) { const unlock = await this.lock(); try { diff --git a/src/public/app/widgets/buttons/close_pane_button.ts b/src/public/app/widgets/buttons/close_pane_button.ts index 09e9aef11..1f34b6a35 100644 --- a/src/public/app/widgets/buttons/close_pane_button.ts +++ b/src/public/app/widgets/buttons/close_pane_button.ts @@ -12,7 +12,7 @@ export default class ClosePaneButton extends OnClickButtonWidget { ); } - async noteContextReorderEvent({ ntxIdsInOrder }: EventData<"noteContextReorderEvent">) { + async noteContextReorderEvent({ ntxIdsInOrder }: EventData<"noteContextReorder">) { this.refresh(); } diff --git a/src/public/app/widgets/containers/scrolling_container.ts b/src/public/app/widgets/containers/scrolling_container.ts index 62d4ec2c4..fab51254c 100644 --- a/src/public/app/widgets/containers/scrolling_container.ts +++ b/src/public/app/widgets/containers/scrolling_container.ts @@ -24,7 +24,7 @@ export default class ScrollingContainer extends Container { this.$widget.scrollTop(0); } - async noteSwitchedAndActivatedEvent({ noteContext, notePath }: EventData<"noteSwitchedAndActivatedEvent">) { + async noteSwitchedAndActivatedEvent({ noteContext, notePath }: EventData<"noteSwitchedAndActivated">) { this.noteContext = noteContext; this.$widget.scrollTop(0); diff --git a/src/public/app/widgets/containers/split_note_container.ts b/src/public/app/widgets/containers/split_note_container.ts index 61f82b793..8e686476c 100644 --- a/src/public/app/widgets/containers/split_note_container.ts +++ b/src/public/app/widgets/containers/split_note_container.ts @@ -63,7 +63,7 @@ export default class SplitNoteContainer extends FlexContainer { hoistedNoteId?: string; viewScope?: any; }) { - const mainNtxId = appContext.tabManager.getActiveMainContext().ntxId; + const mainNtxId = appContext.tabManager.getActiveMainContext()?.ntxId; if (!mainNtxId) { logError("empty mainNtxId!"); @@ -76,7 +76,7 @@ export default class SplitNoteContainer extends FlexContainer { ntxId = mainNtxId; } - hoistedNoteId = hoistedNoteId || appContext.tabManager.getActiveContext().hoistedNoteId; + hoistedNoteId = hoistedNoteId || appContext.tabManager.getActiveContext()?.hoistedNoteId; const noteContext = await appContext.tabManager.openEmptyTab(null, hoistedNoteId, mainNtxId); @@ -199,7 +199,7 @@ export default class SplitNoteContainer extends FlexContainer { return Promise.resolve(); } - if (widget.hasBeenAlreadyShown || name === "noteSwitchedAndActivatedEvent" || appContext.tabManager.getActiveMainContext() === noteContext.getMainContext()) { + if (widget.hasBeenAlreadyShown || name === "noteSwitchedAndActivated" || appContext.tabManager.getActiveMainContext() === noteContext.getMainContext()) { widget.hasBeenAlreadyShown = true; return Promise.all([ diff --git a/src/public/app/widgets/dialogs/branch_prefix.js b/src/public/app/widgets/dialogs/branch_prefix.ts similarity index 79% rename from src/public/app/widgets/dialogs/branch_prefix.js rename to src/public/app/widgets/dialogs/branch_prefix.ts index 0f0dcd02d..46a014e6c 100644 --- a/src/public/app/widgets/dialogs/branch_prefix.js +++ b/src/public/app/widgets/dialogs/branch_prefix.ts @@ -8,8 +8,6 @@ import appContext from "../../components/app_context.js"; import { t } from "../../services/i18n.js"; import { Modal } from "bootstrap"; -let branchId; - const TPL = ` @@ -38,61 +36,70 @@ const TPL = `
    • ").text(note.title)); } @@ -105,15 +110,29 @@ export default class CloneToDialog extends BasicWidget { noteAutocompleteService.showRecentNotes(this.$noteAutoComplete); } - async cloneNotesTo(notePath) { + async cloneNotesTo(notePath: string) { const { noteId, parentNoteId } = treeService.getNoteIdAndParentIdFromUrl(notePath); + if (!noteId || !parentNoteId) { + return; + } + const targetBranchId = await froca.getBranchId(parentNoteId, noteId); + if (!targetBranchId || !this.clonedNoteIds) { + return; + } for (const cloneNoteId of this.clonedNoteIds) { - await branchService.cloneNoteToBranch(cloneNoteId, targetBranchId, this.$clonePrefix.val()); + await branchService.cloneNoteToBranch(cloneNoteId, targetBranchId, this.$clonePrefix.val() as string); const clonedNote = await froca.getNote(cloneNoteId); - const targetNote = await froca.getBranch(targetBranchId).getNote(); + const targetBranch = froca.getBranch(targetBranchId); + if (!clonedNote || !targetBranch) { + continue; + } + const targetNote = await targetBranch.getNote(); + if (!targetNote) { + continue; + } toastService.showMessage(t("clone_to.note_cloned", { clonedTitle: clonedNote.title, targetTitle: targetNote.title })); } diff --git a/src/public/app/widgets/dialogs/confirm.ts b/src/public/app/widgets/dialogs/confirm.ts index 70de19647..83c4c43d2 100644 --- a/src/public/app/widgets/dialogs/confirm.ts +++ b/src/public/app/widgets/dialogs/confirm.ts @@ -28,7 +28,7 @@ const TPL = ` `; -type ConfirmDialogCallback = (val: false | ConfirmDialogOptions) => void; +export type ConfirmDialogCallback = (val?: false | ConfirmDialogOptions) => void; export interface ConfirmDialogOptions { confirmed: boolean; diff --git a/src/public/app/widgets/dialogs/info.js b/src/public/app/widgets/dialogs/info.ts similarity index 71% rename from src/public/app/widgets/dialogs/info.js rename to src/public/app/widgets/dialogs/info.ts index 454f7e2ee..621a76096 100644 --- a/src/public/app/widgets/dialogs/info.js +++ b/src/public/app/widgets/dialogs/info.ts @@ -1,7 +1,9 @@ +import type { EventData } from "../../components/app_context.js"; import { t } from "../../services/i18n.js"; import utils from "../../services/utils.js"; import BasicWidget from "../basic_widget.js"; import { Modal } from "bootstrap"; +import type { ConfirmDialogCallback } from "./confirm.js"; const TPL = ` `; export default class InfoDialog extends BasicWidget { + + private resolve: ConfirmDialogCallback | null; + private modal!: bootstrap.Modal; + private $originallyFocused!: JQuery | null; + private $infoContent!: JQuery; + private $okButton!: JQuery; + constructor() { super(); @@ -31,7 +40,7 @@ export default class InfoDialog extends BasicWidget { doRender() { this.$widget = $(TPL); - this.modal = Modal.getOrCreateInstance(this.$widget); + this.modal = Modal.getOrCreateInstance(this.$widget[0]); this.$infoContent = this.$widget.find(".info-dialog-content"); this.$okButton = this.$widget.find(".info-dialog-ok-button"); @@ -51,10 +60,17 @@ export default class InfoDialog extends BasicWidget { this.$okButton.on("click", () => this.modal.hide()); } - showInfoDialogEvent({ message, callback }) { + showInfoDialogEvent({ message, callback }: EventData<"showInfoDialog">) { this.$originallyFocused = $(":focus"); - this.$infoContent.text(message); + if (typeof message === "string") { + this.$infoContent.text(message); + } else if (Array.isArray(message)) { + this.$infoContent.html(message[0]); + } else { + this.$infoContent.html(message as HTMLElement); + } + utils.openDialog(this.$widget); diff --git a/src/public/app/widgets/dialogs/protected_session_password.js b/src/public/app/widgets/dialogs/protected_session_password.ts similarity index 89% rename from src/public/app/widgets/dialogs/protected_session_password.js rename to src/public/app/widgets/dialogs/protected_session_password.ts index 600a0f165..abc383624 100644 --- a/src/public/app/widgets/dialogs/protected_session_password.js +++ b/src/public/app/widgets/dialogs/protected_session_password.ts @@ -27,14 +27,19 @@ const TPL = ` `; export default class ProtectedSessionPasswordDialog extends BasicWidget { + + private modal!: bootstrap.Modal; + private $passwordForm!: JQuery; + private $passwordInput!: JQuery; + doRender() { this.$widget = $(TPL); - this.modal = Modal.getOrCreateInstance(this.$widget); + this.modal = Modal.getOrCreateInstance(this.$widget[0]); this.$passwordForm = this.$widget.find(".protected-session-password-form"); this.$passwordInput = this.$widget.find(".protected-session-password"); this.$passwordForm.on("submit", () => { - const password = this.$passwordInput.val(); + const password = String(this.$passwordInput.val()); this.$passwordInput.val(""); protectedSessionService.setupProtectedSession(password); diff --git a/src/public/app/widgets/dialogs/recent_changes.js b/src/public/app/widgets/dialogs/recent_changes.ts similarity index 79% rename from src/public/app/widgets/dialogs/recent_changes.js rename to src/public/app/widgets/dialogs/recent_changes.ts index 0d3cd9803..dbaca5268 100644 --- a/src/public/app/widgets/dialogs/recent_changes.js +++ b/src/public/app/widgets/dialogs/recent_changes.ts @@ -1,6 +1,6 @@ import { formatDateTime } from "../../utils/formatters.js"; import { t } from "../../services/i18n.js"; -import appContext from "../../components/app_context.js"; +import appContext, { type EventData } from "../../components/app_context.js"; import BasicWidget from "../basic_widget.js"; import dialogService from "../../services/dialog.js"; import froca from "../../services/froca.js"; @@ -28,10 +28,23 @@ const TPL = ` `; +// TODO: Deduplicate with server. +interface RecentChangesRow { + noteId: string; + date: string; +} + export default class RecentChangesDialog extends BasicWidget { + + private ancestorNoteId?: string; + + private modal!: bootstrap.Modal; + private $content!: JQuery; + private $eraseDeletedNotesNow!: JQuery; + doRender() { this.$widget = $(TPL); - this.modal = Modal.getOrCreateInstance(this.$widget); + this.modal = Modal.getOrCreateInstance(this.$widget[0]); this.$content = this.$widget.find(".recent-changes-content"); this.$eraseDeletedNotesNow = this.$widget.find(".erase-deleted-notes-now-button"); @@ -44,7 +57,7 @@ export default class RecentChangesDialog extends BasicWidget { }); } - async showRecentChangesEvent({ ancestorNoteId }) { + async showRecentChangesEvent({ ancestorNoteId }: EventData<"showRecentChanges">) { this.ancestorNoteId = ancestorNoteId; await this.refresh(); @@ -57,7 +70,7 @@ export default class RecentChangesDialog extends BasicWidget { this.ancestorNoteId = hoistedNoteService.getHoistedNoteId(); } - const recentChangesRows = await server.get(`recent-changes/${this.ancestorNoteId}`); + const recentChangesRows = await server.get(`recent-changes/${this.ancestorNoteId}`); // preload all notes into cache await froca.getNotes( @@ -102,7 +115,10 @@ export default class RecentChangesDialog extends BasicWidget { await ws.waitForMaxKnownEntityChangeId(); - appContext.tabManager.getActiveContext().setNote(change.noteId); + const activeContext = appContext.tabManager.getActiveContext(); + if (activeContext) { + activeContext.setNote(change.noteId); + } } }); @@ -110,7 +126,7 @@ export default class RecentChangesDialog extends BasicWidget { } } else { const note = await froca.getNote(change.noteId); - const notePath = note.getBestNotePathString(); + const notePath = note?.getBestNotePathString(); if (notePath) { $noteLink = await linkService.createLink(notePath, { @@ -118,7 +134,7 @@ export default class RecentChangesDialog extends BasicWidget { showNotePath: true }); } else { - $noteLink = $("").text(note.title); + $noteLink = $("").text(note?.title ?? ""); } } @@ -128,12 +144,13 @@ export default class RecentChangesDialog extends BasicWidget { // Skip clicks on the link or deleted notes if (e.target?.nodeName !== "A" && !change.current_isDeleted) { // Open the current note - appContext.tabManager.getActiveContext().setNote(change.noteId); + const activeContext = appContext.tabManager.getActiveContext(); + if (activeContext) { + activeContext.setNote(change.noteId); + } } }) - .addClass(() => { - if (change.current_isDeleted) return "deleted-note"; - }) + .toggleClass("deleted-note", !!change.current_isDeleted) .append($("").text(formattedTime).attr("title", change.date)) .append($noteLink.addClass("note-title")) ); @@ -143,7 +160,7 @@ export default class RecentChangesDialog extends BasicWidget { } } - groupByDate(rows) { + groupByDate(rows: RecentChangesRow[]) { const groupedByDate = new Map(); for (const row of rows) { diff --git a/src/public/app/widgets/dialogs/sort_child_notes.js b/src/public/app/widgets/dialogs/sort_child_notes.ts similarity index 96% rename from src/public/app/widgets/dialogs/sort_child_notes.js rename to src/public/app/widgets/dialogs/sort_child_notes.ts index 3253b29c9..5549fadb8 100644 --- a/src/public/app/widgets/dialogs/sort_child_notes.js +++ b/src/public/app/widgets/dialogs/sort_child_notes.ts @@ -1,3 +1,4 @@ +import type { EventData } from "../../components/app_context.js"; import { t } from "../../services/i18n.js"; import server from "../../services/server.js"; import utils from "../../services/utils.js"; @@ -79,6 +80,10 @@ const TPL = ``; export default class WatchedFileUpdateStatusWidget extends NoteContextAwareWidget { + + private $filePath!: JQuery; + private $fileLastModified!: JQuery; + private $fileUploadButton!: JQuery; + private $ignoreThisChangeButton!: JQuery; + isEnabled() { const { entityType, entityId } = this.getEntity(); - return super.isEnabled() && !!fileWatcher.getFileModificationStatus(entityType, entityId); + return super.isEnabled() + && !!entityType + && !!entityId + && !!fileWatcher.getFileModificationStatus(entityType, entityId); } doRender() { @@ -43,7 +54,9 @@ export default class WatchedFileUpdateStatusWidget extends NoteContextAwareWidge filePath: this.$filePath.text() }); - fileWatcher.fileModificationUploaded(entityType, entityId); + if (entityType && entityId) { + fileWatcher.fileModificationUploaded(entityType, entityId); + } this.refresh(); }); @@ -51,13 +64,18 @@ export default class WatchedFileUpdateStatusWidget extends NoteContextAwareWidge this.$ignoreThisChangeButton.on("click", () => { const { entityType, entityId } = this.getEntity(); - fileWatcher.ignoreModification(entityType, entityId); + if (entityType && entityId) { + fileWatcher.ignoreModification(entityType, entityId); + } this.refresh(); }); } - async refreshWithNote(note) { + async refreshWithNote(note: FNote) { const { entityType, entityId } = this.getEntity(); + if (!entityType || !entityId) { + return; + } const status = fileWatcher.getFileModificationStatus(entityType, entityId); this.$filePath.text(status.filePath); @@ -71,7 +89,7 @@ export default class WatchedFileUpdateStatusWidget extends NoteContextAwareWidge const { viewScope } = this.noteContext; - if (viewScope.viewMode === "attachments" && viewScope.attachmentId) { + if (viewScope?.viewMode === "attachments" && viewScope.attachmentId) { return { entityType: "attachments", entityId: viewScope.attachmentId @@ -84,7 +102,7 @@ export default class WatchedFileUpdateStatusWidget extends NoteContextAwareWidge } } - openedFileUpdatedEvent(data) { + openedFileUpdatedEvent(data: EventData<"openedFileUpdated">) { console.log(data); const { entityType, entityId } = this.getEntity(); diff --git a/src/public/stylesheets/style.css b/src/public/stylesheets/style.css index c28735fec..5f9bad71a 100644 --- a/src/public/stylesheets/style.css +++ b/src/public/stylesheets/style.css @@ -1730,9 +1730,9 @@ footer.file-footer button { border-radius: 0.5em; padding: 1em; margin: 1.25em 0; - margin-right: 14px; position: relative; padding-left: 2.5em; + overflow: hidden; } .ck-content .admonition p:last-child { diff --git a/src/public/stylesheets/theme-next-dark.css b/src/public/stylesheets/theme-next-dark.css index 66d76fd33..c7dc1846f 100644 --- a/src/public/stylesheets/theme-next-dark.css +++ b/src/public/stylesheets/theme-next-dark.css @@ -127,13 +127,24 @@ --left-pane-item-action-button-hover-shadow: 2px 2px 3px rgba(0, 0, 0, 0.15); --left-pane-item-selected-action-button-hover-shadow: 2px 2px 10px rgba(0, 0, 0, 0.25); - --launcher-pane-background-color: #1a1a1a; - --launcher-pane-horizontal-background-color: #282828; - --launcher-pane-horizontal-border-color: rgb(22, 22, 22); - --launcher-pane-text-color: #909090; - --launcher-pane-button-hover-color: #ffffff; - --launcher-pane-button-hover-background: #ffffff1c; - --launcher-pane-button-hover-shadow: 4px 4px 4px rgba(0, 0, 0, 0.2); + /* Deprecated: now local variables in #launcher, with the values dependent on the current layout. */ + --launcher-pane-background-color: unset; + --launcher-pane-text-color: unset; + + --launcher-pane-vert-background-color: #1a1a1a; + --launcher-pane-vert-text-color: #909090; + --launcher-pane-vert-button-hover-color: #ffffff; + --launcher-pane-vert-button-hover-background: #ffffff1c; + --launcher-pane-vert-button-hover-shadow: 4px 4px 4px rgba(0, 0, 0, 0.2); + --launcher-pane-vert-button-focus-outline-color: var(--input-focus-outline-color); + + --launcher-pane-horiz-border-color: rgb(22, 22, 22); + --launcher-pane-horiz-background-color: #282828; + --launcher-pane-horiz-text-color: #909090; + --launcher-pane-horiz-button-hover-color: #ffffff; + --launcher-pane-horiz-button-hover-background: #ffffff1c; + --launcher-pane-horiz-button-hover-shadow: unset; + --launcher-pane-horiz-button-focus-outline-color: var(--input-focus-outline-color); --protected-session-active-icon-color: #8edd8e; --sync-status-error-pulse-color: #f47871; diff --git a/src/public/stylesheets/theme-next-light.css b/src/public/stylesheets/theme-next-light.css index 8c26932f9..7c4eff5be 100644 --- a/src/public/stylesheets/theme-next-light.css +++ b/src/public/stylesheets/theme-next-light.css @@ -121,13 +121,23 @@ --left-pane-item-action-button-hover-shadow: 2px 2px 3px rgba(0, 0, 0, 0.15); --left-pane-item-selected-action-button-hover-shadow: 2px 2px 10px rgba(0, 0, 0, 0.25); - --launcher-pane-background-color: #e8e8e8; - --launcher-pane-horizontal-background-color: #fafafa; - --launcher-pane-horizontal-border-color: rgba(0, 0, 0, 0.1); - --launcher-pane-text-color: #000000bd; - --launcher-pane-button-hover-color: black; - --launcher-pane-button-hover-background: white; - --launcher-pane-button-hover-shadow: 4px 4px 4px rgba(0, 0, 0, 0.075); + /* Deprecated: now local variables in #launcher, with the values dependent on the current layout. */ + --launcher-pane-background-color: unset; + --launcher-pane-text-color: unset; + + --launcher-pane-vert-background-color: #e8e8e8; + --launcher-pane-vert-text-color: #000000bd; + --launcher-pane-vert-button-hover-color: black; + --launcher-pane-vert-button-hover-background: white; + --launcher-pane-vert-button-hover-shadow: 4px 4px 4px rgba(0, 0, 0, 0.075); + --launcher-pane-vert-button-focus-outline-color: var(--input-focus-outline-color); + + --launcher-pane-horiz-border-color: rgba(0, 0, 0, 0.1); + --launcher-pane-horiz-background-color: #fafafa; + --launcher-pane-horiz-button-hover-color: black; + --launcher-pane-horiz-button-hover-background: var(--icon-button-hover-background); + --launcher-pane-horiz-button-hover-shadow: unset; + --launcher-pane-horiz-button-focus-outline-color: var(--input-focus-outline-color); --protected-session-active-icon-color: #16b516; --sync-status-error-pulse-color: #ff5528; diff --git a/src/public/stylesheets/theme-next/base.css b/src/public/stylesheets/theme-next/base.css index 55443a5fd..a43169f4e 100644 --- a/src/public/stylesheets/theme-next/base.css +++ b/src/public/stylesheets/theme-next/base.css @@ -1,7 +1,8 @@ @import url(./forms.css); @import url(./shell.css); +@import url(./dialogs.css); +@import url(./pages.css); @import url(./ribbon.css); -@import url(./settings.css); @import url(./notes/empty.css); @import url(./notes/text.css); @@ -10,6 +11,10 @@ src: url(../../fonts/Inter/Inter-VariableFont_opsz\,wght.ttf); } +/* + * GLOBAL VARIABLES + */ + :root { --main-font-family: "Inter", sans-serif; @@ -26,11 +31,15 @@ --left-pane-item-selected-shadow-size: 2px; - --launcher-pane-size: 58px; - --launcher-pane-horizontal-size: 54px; - --launcher-pane-horizontal-icon-size: 20px; - --launcher-pane-button-margin: 6px; - --launcher-pane-button-gap: 3px; + --launcher-pane-vert-size: 58px; + --launcher-pane-vert-icon-size: 150%; + --launcher-pane-vert-button-margin: 6px; + --launcher-pane-vert-button-gap: 3px; + + --launcher-pane-horiz-size: 54px; + --launcher-pane-horiz-icon-size: 20px; + --launcher-pane-horiz-button-margin: 8px; + --launcher-pane-horiz-button-gap: 3px; --tree-actions-toolbar-horizontal-margin: 8px; --tree-actions-toolbar-vertical-margin: 8px; @@ -69,45 +78,196 @@ --tab-note-icons: true; } -/* Tool dialogs - small dialogs without a backdrop */ -div.tn-tool-dialog { - border-radius: 10px; - background: var(--tool-dialog-background-color) !important; - user-select: none; - box-shadow: 10px 10px 93px -25px var(--tool-dialog-shadow-color); -} - /* - * Note search suggestions + * MENUS + * + * Note: apply the "tn-dropdown-list" class for scrollable dropdown menus. Submenus are not + * supported when this class is used. */ -/* List body */ -.jump-to-note-dialog .jump-to-note-results .aa-suggestions, -.note-detail-empty .aa-suggestions { - padding: 0; + .dropdown-menu:not(.static) { + border-radius: var(--dropdown-border-radius); + padding: var(--menu-padding-size) !important; + font-size: 0.9rem !important; } -/* List item */ -.jump-to-note-dialog .aa-suggestions div, -.note-detail-empty .aa-suggestions div { +.dropdown-menu::-webkit-scrollbar-track { + background: var(--menu-background-color); +} + +body.mobile .dropdown-menu { + backdrop-filter: var(--dropdown-backdrop-filter); + border-radius: var(--dropdown-border-radius); + position: relative; +} + +body.mobile .dropdown-menu .dropdown-menu { + backdrop-filter: unset !important; + border-radius: unset !important; +} + +body.desktop .dropdown-menu::before { + content: ""; + backdrop-filter: var(--dropdown-backdrop-filter); + border-radius: var(--dropdown-border-radius); + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; +} + +body.desktop .dropdown-menu.tn-dropdown-list { + backdrop-filter: var(--dropdown-backdrop-filter); +} + +body.desktop .dropdown-menu.tn-dropdown-list::before { + display: none; +} + +body.desktop .dropdown-submenu .dropdown-menu::before { + content: unset; +} + +body.mobile .dropdown-submenu .dropdown-menu { + background: transparent !important; +} + +body.desktop .dropdown-submenu .dropdown-menu { + backdrop-filter: var(--dropdown-backdrop-filter); + background: transparent; +} + +.dropdown-item, +body.mobile .dropdown-submenu .dropdown-toggle { + padding: 2px 2px 2px 8px !important; + padding-inline-end: 16px !important; + /* Note: the right padding should also accommodate the submenu arrow. */ border-radius: 6px; - padding: 6px 12px; - color: var(--menu-text-color); - cursor: default; + cursor: default !important; } -/* Selected list item */ -.jump-to-note-dialog .aa-suggestions div.aa-cursor, -.note-detail-empty .aa-suggestions div.aa-cursor { - background: var(--hover-item-background-color); - color: var(--hover-item-text-color); +body.mobile .dropdown-submenu { + padding: 0 !important; +} + +body.mobile .dropdown-item:not(:last-of-type) { + margin-bottom: 0.5em; +} + +body.mobile .dropdown-submenu:hover { + background: transparent !important; +} + +html body .dropdown-item.disabled, +html body .dropdown-item[disabled] { + color: var(--menu-text-color) !important; + opacity: var(--menu-item-disabled-opacity); +} + +/* Menu item icon */ +.dropdown-item .bx { + transform: translateY(var(--menu-item-icon-vert-offset)); + color: var(--menu-item-icon-color) !important; + font-size: 1.1em; +} + +/* Menu item keyboard shortcut */ +.dropdown-item kbd { + margin-left: 16px; + font-family: unset !important; + font-size: unset !important; + color: var(--menu-item-keyboard-shortcut-color) !important; + padding-top: 0; +} + +.dropdown-divider { + position: relative; + border-color: transparent !important; + overflow: visible; +} + +.dropdown-divider::after { + position: absolute; + content: ""; + top: -1px; + left: calc(0px - var(--menu-padding-size)); + right: calc(0px - var(--menu-padding-size)); + border-top: 1px solid var(--menu-item-delimiter-color); +} + +/* Menu item arrow */ +.dropdown-menu .dropdown-toggle::after { + content: "\ed3b" !important; + position: absolute; + display: flex !important; + align-items: center; + justify-content: center; + top: 0; + right: 0; + margin: unset !important; + border: unset !important; + padding: 0 4px; + font-family: boxicons; + font-size: 1.2em; + color: var(--menu-item-arrow-color) !important; +} + +/* Menu item group heading */ + +/* The heading body */ +.dropdown-menu h6 { + position: relative; + background: transparent; + padding: 1em 8px 14px 8px; + text-transform: uppercase; + font-size: 0.8em; + letter-spacing: 1pt; + color: var(--menu-item-group-header-color) !important; +} + +/* The delimiter line */ +.dropdown-menu h6::before { + content: ""; + position: absolute; + bottom: 8px; + left: calc(0px - var(--menu-padding-size)); + right: calc(0px - var(--menu-padding-size)); + border-top: 1px solid var(--menu-item-delimiter-color); +} + +/* Static menus (used as a list, such as on the note revisions dialog) */ +body.desktop .dropdown-menu.static { + box-shadow: unset; + border-radius: 4px; + border: unset; + background-color: var(--card-background-color) !important; + padding: var(--menu-padding-size) !important; + user-select: none; +} + +body.desktop .dropdown-menu.static .dropdown-item.active { + --active-item-text-color: var(--menu-text-color); +} + +body.desktop .dropdown-menu .dropdown-toggle::after { + height: 100%; +} + +body.mobile .dropdown-menu .dropdown-toggle::after { + transform: rotate(90deg); +} + +body.mobile .dropdown-menu .dropdown-item.submenu-open .dropdown-toggle::after { + transform: rotate(270deg); } /* - * Toasts + * TOASTS */ -#toast-container { + #toast-container { /* The vertical gap between toasts */ gap: 10px; } @@ -143,4 +303,223 @@ div.tn-tool-dialog { #toast-container .toast .toast-body { flex-grow: 1; +} + +/* + * NOTE TOOLTIPS + */ + + .tooltip .tooltip-inner:has(.note-tooltip-content) { + border-radius: 8px; +} + +.note-tooltip-content { + padding: 8px; + min-height: 56px; +} + +.note-tooltip-title .note-title-with-path { + display: flex; + flex-direction: column-reverse; +} + +.note-tooltip-title a { + color: inherit !important; +} + +.note-tooltip-title.note-no-content { + margin: 0; +} + +.note-tooltip-title:not(.note-no-content) .note-title-with-path { + padding-bottom: 6px; + border-bottom: 2px solid currentColor; +} + +.note-tooltip-content .note-path { + display: block; + color: var(--muted-text-color); + font-size: 0.75em; +} + +.note-tooltip-content .note-tooltip-attributes { + margin-top: -4px; + font-size: 0.75em; +} + +.note-tooltip-content .rendered-content { + padding-top: 12px; +} + +/* NOTE PATHS */ + +.note-path .path-bracket { + /* Hide the leading and trailing bracket from the path */ + display: none; +} + +.note-path .path-delimiter { + /* Hide the path delimiters (slashes) */ + display: none; +} + +.note-path .path-delimiter + span::before { + /* Replace the path delimiters with arrows */ + display: inline-block; + content: "\ed3b"; + padding: 0 0.25em; + font-family: boxicons; + opacity: 0.75; + transform: translateY(4%); +} + +/* + * NOTE LIST + */ + + .note-list .note-book-card { + --note-list-horizontal-padding: 22px; + --note-list-vertical-padding: 15px; + background-color: var(--card-background-color); + border: 1px solid var(--card-border-color) !important; + box-shadow: 2px 3px 4px var(--card-shadow-color); + border-radius: 12px; + user-select: none; + padding: 0; + margin: 5px 10px 5px 0; +} + +.note-list.list-view .note-book-card { + box-shadow: 0 0 3px var(--card-shadow-color); +} + +.note-list.list-view .note-book-card .note-book-header .note-icon { + vertical-align: middle; +} + +.note-list-wrapper .note-book-card:active { + background-color: var(--card-background-press-color); +} + +.note-list-wrapper .note-book-card a { + color: inherit !important; +} + +.note-list-wrapper .note-book-card .note-book-header { + font-size: 1em; + font-weight: bold; + padding: 0.5em 1rem; + border-bottom-color: var(--card-border-color); +} + +.note-list-wrapper .note-book-card .note-book-header .note-icon { + font-size: 17px; + vertical-align: text-bottom; +} + +.note-list-wrapper .note-book-card .note-book-header .note-book-title { + font-size: 1em; + color: var(--active-item-text-color); + vertical-align: middle; +} + +.note-list-wrapper .note-book-card .note-book-header .rendered-note-attributes { + font-size: 0.7em; + font-weight: normal; + margin-bottom: 0; +} + +.note-list-wrapper .note-book-card .note-book-header:last-child { + border-bottom: 0; +} + +.note-list-wrapper .note-book-card .note-book-content { + padding: 0 !important; + font-size: 0.8rem; +} + +.note-list-wrapper .note-book-card .note-book-content .rendered-content { + padding: 1rem; +} + +.note-list-wrapper .note-book-card .note-book-content .rendered-content.text-with-ellipsis { + padding: 1rem !important; +} + +.note-list-wrapper .note-book-card .note-book-content h1, +.note-list-wrapper .note-book-card .note-book-content h2, +.note-list-wrapper .note-book-card .note-book-content h3, +.note-list-wrapper .note-book-card .note-book-content h4, +.note-list-wrapper .note-book-card .note-book-content h5, +.note-list-wrapper .note-book-card .note-book-content h6 { + font-size: 1rem; + color: var(--active-item-text-color); +} + +.note-list-wrapper .note-book-card .note-book-content p:last-child { + margin-bottom: 0; +} + +.note-list-wrapper .note-book-card .note-book-content.type-canvas .rendered-content, +.note-list-wrapper .note-book-card .note-book-content.type-mindMap .rendered-content, +.note-list-wrapper .note-book-card .note-book-content.type-code .rendered-content, +.note-list-wrapper .note-book-card .note-book-content.type-video .rendered-content { + padding: 0; +} + +.note-list-wrapper .note-book-card .note-book-content.type-code pre { + height: 100%; + padding: 1em; +} + +.note-list-wrapper .note-book-card .bx { + color: var(--left-pane-icon-color) !important; +} + +.note-list.grid-view .note-book-card:hover { + background: var(--card-background-color) !important; + filter: contrast(105%); +} + +.note-list.grid-view .note-book-card img { + object-fit: cover !important; + width: 100%; +} + +.note-list.grid-view .ck-content { + line-height: 1.3; +} + +.note-list.grid-view .ck-content p { + margin-bottom: 0.5em; +} + +.note-list.grid-view .ck-content figure.image { + width: 25%; +} + +/* + * NOTE SEARCH SUGGESTIONS + */ + +/* List body */ +.jump-to-note-dialog .jump-to-note-results .aa-suggestions, +.note-detail-empty .aa-suggestions { + padding: 0; +} + +/* List item */ +.jump-to-note-dialog .aa-suggestions div, +.note-detail-empty .aa-suggestions div { + border-radius: 6px; + padding: 6px 12px; + color: var(--menu-text-color); + cursor: default; +} + +/* Selected list item */ +.jump-to-note-dialog .aa-suggestions div.aa-cursor, +.note-detail-empty .aa-suggestions div.aa-cursor { + background: var(--hover-item-background-color); + color: var(--hover-item-text-color); } \ No newline at end of file diff --git a/src/public/stylesheets/theme-next/dialogs.css b/src/public/stylesheets/theme-next/dialogs.css new file mode 100644 index 000000000..23c3cf10a --- /dev/null +++ b/src/public/stylesheets/theme-next/dialogs.css @@ -0,0 +1,387 @@ +/* + * MODALS + */ + +/* Modal body */ +.modal .modal-content { + box-shadow: 0 .5em 3em .5em var(--modal-shadow-color); + border: 1px solid var(--modal-border-color); + background: var(--modal-background-color); +} + +/* Modal header */ +.modal .modal-header { + border-bottom: unset; + user-select: none; +} + +.modal .modal-header .modal-title { + flex-grow: 1; + font-size: 1.2em; + color: var(--modal-title-color); +} + +/* Modal and toast control buttons (close and help) */ + +.modal .modal-header .btn-close, +.modal .modal-header .help-button, +#toast-container .toast .toast-header .btn-close { + display: flex; + justify-content: center; + align-items: center; + margin-left: 8px; + border: 0; + border-radius: 50%; + padding: 0; + width: var(--modal-control-button-size); + height: var(--modal-control-button-size); + background: var(--modal-control-button-background); + font-size: var(--modal-control-button-size); + line-height: normal; + font-weight: normal; + color: var(--modal-control-button-color); + opacity: 1; + cursor: default; +} + +.modal .modal-header .btn-close, +#toast-container .toast .toast-header .btn-close { + --modal-control-button-hover-background: var(--modal-close-button-hover-background); +} + +.modal .modal-header .btn-close::after, +#toast-container .toast .toast-header .btn-close::after { + content: "\ec8d"; + font-family: boxicons; +} + +.modal .modal-header .help-button { + margin-right: 0; + font-size: calc(var(--modal-control-button-size) * .75); + font-family: unset; + font-weight: bold; +} + +.modal .modal-header .btn-close:hover, +.modal .modal-header .help-button:hover, +#toast-container .toast .toast-header .btn-close:hover { + background: var(--modal-control-button-hover-background); + color: var(--modal-control-button-hover-color); +} + +.modal .modal-header .btn-close:active, +.modal .modal-header .help-button:active, +#toast-container .toast .toast-header .btn-close:active { + transform: scale(.85); +} + +.modal .modal-header .btn-close:focus, +.modal .modal-header .help-button:focus, +#toast-container .toast .toast-header .btn-close:focus { + box-shadow: none !important; +} + +.modal .modal-header .btn-close:focus-visible, +.modal .modal-header .help-button:focus-visible, +#toast-container .toast .toast-header .btn-close:focus-visible { + outline: 2px solid var(--input-focus-outline-color); + outline-offset: 2px; +} + +/* Modal footer */ +.modal .modal-footer { + background: var(--modal-footer-background); + color: var(--modal-footer-color); + border-top: unset; +} + +/* Tool dialogs - small dialogs without a backdrop */ +div.tn-tool-dialog { + border-radius: 10px; + background: var(--tool-dialog-background-color) !important; + user-select: none; + box-shadow: 10px 10px 93px -25px var(--tool-dialog-shadow-color); +} + +/* + * JUMP TO NOTE DIALOG + */ + + .jump-to-note-dialog .modal-dialog { + --modal-background-color: var(--menu-background-color); + --modal-footer-background: transparent; + --bs-modal-header-border-width: 0; + --bs-modal-footer-border-width: 0; + --bs-modal-footer-gap: 0; + + backdrop-filter: var(--dropdown-backdrop-filter); +} + +.jump-to-note-dialog .modal-content { + --bs-modal-header-padding-x: 0; + + box-shadow: 0 10px 20px rgba(0, 0, 0, var(--dropdown-shadow-opacity)); + border: 1px solid var(--dropdown-border-color); + padding: 20px; + border-radius: 8px; +} + +.jump-to-note-dialog .modal-header { + padding: unset !important; +} + +.jump-to-note-dialog .modal-body { + padding: 26px 0 !important; +} + +/* Search box wrapper */ +.jump-to-note-dialog .input-group { + margin-right: 16px; +} + +.jump-to-note-dialog .input-group:hover { + background: var(--quick-search-hover-background); +} + +/* Focused search box */ +.jump-to-note-dialog .input-group:focus-within { + border-color: var(--quick-search-focus-border); + background: var(--quick-search-focus-background); + color: var(--quick-search-focus-color); +} + +.jump-to-note-dialog .input-clearer-button { + background: transparent !important; +} + +/* + * RECENT CHANGES DIALOG + */ + + .recent-changes-dialog .modal-body { + padding: 0; +} + +.recent-changes-content { + margin: var(--bs-modal-padding); +} + +/* Date headings */ +.recent-changes-content > div > b { + position: sticky; + display: block; + top: 0; + background: var(--modal-background-color); + padding: 10px 0 10px calc(var(--timeline-left-gap) + var(--timeline-right-gap)); + font-size: 1.25em; + font-weight: 300; + z-index: 10; +} + +.recent-changes-content ul { + list-style: none; + margin: 0; + padding: 0; +} + +/* Timeline items */ +.recent-changes-content ul li { + display: flex; + position: relative; + margin: 0; + border: unset; + padding-top: var(--timeline-item-top-padding); + padding-bottom: var(--timeline-item-bottom-padding); + padding-left: calc(var(--timeline-left-gap) + var(--timeline-right-gap)); + padding-right: var(--timeline-left-gap); + color: var(--active-item-text-color); +} + +.recent-changes-content li > span:first-child::after { + /* Remove the dash between time and note title */ + content: "" !important; +} + +.recent-changes-content ul li:not(.deleted-note):hover { + border-radius: 8px; + background: var(--hover-item-background-color); + color: var(--hover-item-text-color); +} + +.recent-changes-content ul li .note-path { + color: var(--muted-text-color); + font-size: 0.75em; +} + +/* Item time */ +.recent-changes-content ul li > span:first-child { + display: inline-block; + min-width: 80px; + vertical-align: top; + color: var(--muted-text-color); +} + +/* Item title & path container */ +.recent-changes-content ul li > span:nth-child(2) { + display: inline-block; +} + +/* Item title link */ + +.recent-changes-content ul li .note-title a { + color: currentColor; +} + +.recent-changes-content ul li .note-title a:hover { + text-decoration: underline; +} + +/* Item title for deleted notes */ +.recent-changes-content ul li.deleted-note .note-title > .note-title { + text-decoration: line-through; +} + +/* Item path */ +.recent-changes-content ul li > span:nth-child(2) small { + display: block; + line-height: 1; + opacity: 0.75; +} + +/* Timeline connector */ +.recent-changes-content ul li::before, +.recent-changes-content > div > b::before { + position: absolute; + content: ""; + top: var(--connector-top, 0); + left: calc(var(--timeline-left-gap) + ((var(--timeline-bullet-size) - var(--timeline-connector-size)) / 2)); + bottom: var(--connector-bottom, 0); + width: var(--timeline-connector-size); + border-radius: var(--connector-radius, 0) var(--connector-radius, 0) 0 0; + background: var(--timeline-connector-color); + transition: background-color 400ms ease-in-out; +} + +.recent-changes-content ul li:hover:before { + mix-blend-mode: var(--timeline-connector-hover-blend-mode); +} + +.recent-changes-content > div:hover { + --timeline-connector-color: var(--timeline-connector-active-color); +} + +/* The first item of the timeline */ +.recent-changes-content > div:first-child > *:first-child { + --connector-top: 50%; + --connector-radius: calc(var(--timeline-connector-size) / 2); +} + +/* The last item of the timeline */ +.recent-changes-content > div:last-child li:last-child { + --connector-bottom: 50%; +} + +/* Timeline bullet */ +.recent-changes-content ul li::after { + position: absolute; + content: ""; + top: calc(var(--timeline-item-top-padding) + var(--timeline-bullet-vertical-pos)); + left: var(--timeline-left-gap); + width: var(--timeline-bullet-size); + height: var(--timeline-bullet-size); + border-radius: 50%; + background: var(--timeline-bullet-color); + transform: translateY(-50%); +} + +/* Hovered timeline bullet */ +.recent-changes-content ul li:hover::after { + background: var(--timeline-bullet-hover-color); +} + +/* + * CHEATSHEET DIALOG + */ + + .help-dialog .modal-content { + --modal-background-color: var(--help-background-color); + backdrop-filter: blur(var(--help-backdrop-blur)); +} + +.help-dialog .help-cards { + display: block; + columns: 3; + column-gap: 20px; +} + +.help-dialog .card { + margin: 0; + width: auto; + border: none; + background: unset; + padding: 16px 8px; + break-inside: avoid-column; +} + +.help-dialog .card-body { + box-shadow: var(--help-card-shadow); + border-radius: 6px; + background: var(--help-card-background); +} + +.help-dialog .card-body h5, +.help-dialog .card-body h6 { + color: var(--help-card-heading-color); + font-weight: 600; +} + +.help-dialog .card-body h5 { + font-size: 20px; +} + +.help-dialog .card-body h6 { + font-size: 15px; + padding-bottom: 0.5em; +} + +/* Help card item */ +.help-dialog .help-cards ul { + list-style-type: none; + padding: 0; +} + +.help-dialog .help-cards li + li { + margin-top: 0.4em; +} + +/* Keyboard shortcut */ +.help-dialog .help-cards kbd, +.ck-content kbd { + box-shadow: var(--help-kbd-shortcut-shadow); + margin: 0 4px; + border: none; + border-radius: 4px; + padding: 2px 10px; + background: var(--help-kbd-shortcut-background); + color: var(--help-kbd-shortcut-color); + font-weight: 500; + letter-spacing: 0.5pt; +} + +.help-dialog .help-cards kbd:first-child { + margin-left: 0; +} + +/* Inline code - used for Markdown samples */ +.help-dialog .help-cards code { + border-radius: 4px; + background: var(--help-code-background); + padding: 0 8px; + color: var(--help-code-color); +} + +/* DELETE NOTE PREVIEW DIALOG */ + +.delete-notes-list .note-path { + padding-left: 8px; +} diff --git a/src/public/stylesheets/theme-next/settings.css b/src/public/stylesheets/theme-next/pages.css similarity index 64% rename from src/public/stylesheets/theme-next/settings.css rename to src/public/stylesheets/theme-next/pages.css index 41b50cc39..eb67263c0 100644 --- a/src/public/stylesheets/theme-next/settings.css +++ b/src/public/stylesheets/theme-next/pages.css @@ -1,7 +1,111 @@ /* - * Settings + * LOG IN PAGE */ -:root { + + .login-page { + display: flex; /* Note: the login page contents is hidden before this property is applied */ + height: 100%; + flex-direction: column; + justify-content: center; +} + +.login-page > div { + padding-top: 0 !important; + padding-bottom: 20vh; +} + +.login-page h1 { + margin-bottom: .5em; + font-weight: 300; + color: var(--muted-text-color); +} + +.login-page .form-group { + margin-top: 8px; +} + +.login-page .alert { + margin: 0; + border: unset; + padding: 8px 0 0 0; + font-size: .85em; + color: var(--dropdown-item-icon-destructive-color) !important; +} + +/* + * SEARCH PAGE + */ + + /* Button bar */ + .search-definition-widget .search-setting-table tbody:last-child div { + justify-content: flex-end !important; + gap: 8px; + } + +.search-result-widget-content .note-path .path-bracket { + display: inline; +} + +.search-result-widget-content .note-path { + opacity: 0.75; + font-weight: normal; +} + +/* + * SQL CONSOLE + */ + +/* Table buttons */ + +.sql-table-schemas-widget .sql-table-schemas button { + --color: var(--main-text-color); + --background: var(--card-background-color); + + display: inline-block; + box-shadow: 2px 2px 2px var(--card-shadow-color); + margin-top: 4px; + vertical-align: baseline; + border: unset; + border-radius: 12px; + padding: 2px 12px; + background: var(--background) !important; + color: var(--color) !important; + line-height: unset; + cursor: help; +} + +.sql-table-schemas-widget .sql-table-schemas button:hover, +.sql-table-schemas-widget .sql-table-schemas button:active, +.sql-table-schemas-widget .sql-table-schemas button:focus-visible { + --background: var(--card-background-press-color); + --color: var(--main-text-color); +} + +/* Tooltip */ + +.tooltip .table-schema { + font-family: var(--monospace-font-family); + font-size: .85em; +} + +/* Data type */ +.tooltip .table-schema td:nth-child(2) { + color: var(--muted-text-color); +} + +/* + * NOTE MAP + */ + + .note-detail-note-map .fixnodes-type-switcher .tn-tool-button.toggled { + color: var(--tab-close-button-hover-background); +} + +/* + * OPTIONS PAGES + */ + + :root { --options-card-min-width: 500px; --options-card-max-width: 900px; --options-card-padding: 17px; diff --git a/src/public/stylesheets/theme-next/shell.css b/src/public/stylesheets/theme-next/shell.css index a3f8992c8..05d0cb119 100644 --- a/src/public/stylesheets/theme-next/shell.css +++ b/src/public/stylesheets/theme-next/shell.css @@ -1,7 +1,3 @@ -/* - * USER INTERFACE - */ - @keyframes fade-in { from { opacity: 0; @@ -26,9 +22,7 @@ body { } body.layout-horizontal { - --launcher-pane-background-color: var(--launcher-pane-horizontal-background-color); - --launcher-pane-size: var(--launcher-pane-horizontal-size); - --active-tab-background-color: var(--launcher-pane-background-color); + --active-tab-background-color: var(--launcher-pane-horiz-background-color); --active-tab-hover-background-color: var(--active-tab-background-color); --new-tab-button-background: transparent; --tab-bar-height: 44px; @@ -42,16 +36,19 @@ body.mobile { /* #region Mica */ body.background-effects.platform-win32 { - --launcher-pane-horizontal-border-color: rgba(0, 0, 0, 0.15); - --launcher-pane-background-color: rgba(255, 255, 255, 0.7); --tab-background-color: transparent; --new-tab-button-background: transparent; - --active-tab-background-color: var(--launcher-pane-background-color); + --active-tab-background-color: var(--launcher-pane-background-color); /* TODO: fix */ --background-material: tabbed; } +body.background-effects.platform-win32 #launcher-pane { + --launcher-pane-horizontal-border-color: rgba(0, 0, 0, 0.15); + --launcher-pane-background-color: rgba(255, 255, 255, 0.7); +} + @media (prefers-color-scheme: dark) { - body.background-effects.platform-win32 { + body.background-effects.platform-win32 #launcher-pane { --launcher-pane-horizontal-border-color: rgba(0, 0, 0, 0.5); --launcher-pane-background-color: rgba(255, 255, 255, 0.09); } @@ -59,11 +56,14 @@ body.background-effects.platform-win32 { body.background-effects.platform-win32.layout-vertical { --left-pane-background-color: transparent; - --launcher-pane-background-color: rgba(255, 255, 255, 0.055); --left-pane-item-hover-background: rgba(127, 127, 127, 0.05); --background-material: mica; } +body.background-effects.platform-win32.layout-vertical #launcher-pane { + --launcher-pane-background-color: rgba(255, 255, 255, 0.055); +} + body.background-effects.platform-win32, body.background-effects.platform-win32 #root-widget, body.background-effects.platform-win32 #launcher-pane .launcher-button { @@ -86,73 +86,73 @@ body.background-effects.platform-win32.layout-vertical #vertical-main-container border-right: 2px solid var(--left-pane-collapsed-border-color); } -/* - * Log in page - */ - -.login-page { - display: flex; /* Note: the login page contents is hidden before this property is applied */ - height: 100%; - flex-direction: column; - justify-content: center; -} - -.login-page > div { - padding-top: 0 !important; - padding-bottom: 20vh; -} - -.login-page h1 { - margin-bottom: .5em; - font-weight: 300; - color: var(--muted-text-color); -} - -.login-page .form-group { - margin-top: 8px; -} - -.login-page .alert { - margin: 0; - border: unset; - padding: 8px 0 0 0; - font-size: .85em; - color: var(--dropdown-item-icon-destructive-color) !important; +body.background-effects.zen #root-widget { + --main-background-color: transparent; + --root-background: transparent; } /* - * Global menu + * Gutter */ -.global-menu div.zoom-buttons a { - border: unset; + .gutter { + background: var(--gutter-color) !important; + transition: background 150ms ease-out; } -.global-menu div.zoom-buttons a.bx { - color: var(--menu-text-color) !important; +.gutter:hover { + background: var(--gutter-hover-color) !important; + transition: background 300ms ease-in; } /* - * Launcher pane + * LAUNCHER PANE / TOOLBAR */ + #launcher-container, body.layout-horizontal > .horizontal { align-items: center; } #launcher-pane.vertical { + --launcher-pane-border-color: unset; + --launcher-pane-background-color: var(--launcher-pane-vert-background-color); + --launcher-pane-text-color: var(--launcher-pane-vert-text-color); + --launcher-pane-button-hover-color: var(--launcher-pane-vert-button-hover-color); + --launcher-pane-button-hover-background: var(--launcher-pane-vert-button-hover-background); + --launcher-pane-button-hover-shadow: var(--launcher-pane-vert-button-hover-shadow); + --launcher-pane-button-focus-outline-color: var(--launcher-pane-vert-button-focus-outline-color); + + --launcher-pane-size: var(--launcher-pane-vert-size); + --launcher-pane-icon-size: var(--launcher-pane-vert-icon-size); + --launcher-pane-button-margin: var(--launcher-pane-vert-button-margin); + --launcher-pane-button-gap: var(--launcher-pane-vert-button-gap); + width: var(--launcher-pane-size) !important; padding-bottom: var(--launcher-pane-button-gap); } #launcher-pane.horizontal { + --launcher-pane-border-color: var(--launcher-pane-horiz-border-color); + --launcher-pane-background-color: var(--launcher-pane-horiz-background-color); + --launcher-pane-text-color: var(--launcher-pane-horiz-text-color); + --launcher-pane-button-hover-color: var(--launcher-pane-horiz-button-hover-color); + --launcher-pane-button-hover-background: var(--launcher-pane-horiz-button-hover-background); + --launcher-pane-button-hover-shadow: var(--launcher-pane-horiz-button-hover-shadow); + --launcher-pane-button-focus-outline-color: var(--launcher-pane-horiz-button-focus-outline-color); + + --launcher-pane-size: var(--launcher-pane-horiz-size); + --launcher-pane-icon-size: var(--launcher-pane-horiz-icon-size); + --launcher-pane-button-margin: var(--launcher-pane-horiz-button-margin); + --launcher-pane-button-gap: var(--launcher-pane-horiz-button-gap); + height: var(--launcher-pane-size) !important; align-items: center; } @media (max-width: 991px) { #mobile-bottom-bar { - background: var(--launcher-pane-background-color); + background: var(--launcher-pane-horiz-background-color); } body.mobile #launcher-pane { @@ -163,7 +163,7 @@ body.layout-horizontal > .horizontal { @media (min-width: 992px) { #launcher-pane.horizontal { border-top: unset; - border-bottom: 1px solid var(--launcher-pane-horizontal-border-color); + border-bottom: 1px solid var(--launcher-pane-horiz-border-color); } } @@ -213,6 +213,27 @@ body.layout-horizontal > .horizontal { align-items: center; } +#launcher-pane .launcher-button { + font-size: var(--launcher-pane-icon-size) !important; +} + +#launcher-pane .launcher-button:focus, +#launcher-pane .global-menu button:focus { + outline: none; +} + +#launcher-pane .launcher-button:focus-visible, +#launcher-pane.horizontal .global-menu button:focus-visible { + outline: 2px solid var(--launcher-pane-button-focus-outline-color); +} + +#launcher-pane.vertical .global-menu button:focus-visible svg { + outline-offset: 4px; + outline: 2px solid var(--launcher-pane-button-focus-outline-color); + border-radius: 4px; + overflow: visible; +} + #launcher-pane.vertical .spacer { width: var(--launcher-pane-size); } @@ -253,10 +274,6 @@ body.layout-horizontal > .horizontal { animation: sync-status-pulse 1s ease-in-out alternate-reverse infinite; } -#launcher-pane.horizontal .launcher-button { - font-size: var(--launcher-pane-horizontal-icon-size); -} - #launcher-pane .global-menu-button { --hover-item-background-color: transparent; } @@ -282,9 +299,169 @@ body.layout-horizontal > .horizontal { color: var(--tooltip-foreground-color) !important; } +/* + * Global menu + */ + + .global-menu div.zoom-buttons a { + border: unset; +} + +.global-menu div.zoom-buttons a.bx { + color: var(--menu-text-color) !important; +} + +/* + * Calendar + */ + + .calendar-dropdown-widget { + width: unset !important; + padding: 12px; + color: var(--calendar-color); + user-select: none; +} + +.calendar-dropdown-widget .calendar-header { + padding: 8px 0 20px 0; + gap: 10px; +} + +.calendar-dropdown-widget .calendar-header input, +.calendar-dropdown-widget .calendar-header [data-calendar-input="month"] { + --input-background-color: transparent; + --menu-background-color: transparent; + + text-align: center; + font-size: 1.4em; + font-weight: 300; +} + +.calendar-dropdown-widget .calendar-header input:not(:focus) { + outline: 3px solid transparent; +} + +.calendar-dropdown-widget .calendar-header .calendar-month-selector .select-button { + --select-arrow-svg: ""; /* Disable the dropdown arrow */ +} + +@media (max-width: 992px) { + .calendar-dropdown-widget .calendar-header button { + margin: 0 !important; + padding: 0; + } + + .calendar-dropdown-widget .calendar-header .calendar-month-selector .select-button { + padding: 0 8px; + flex-grow: 1; + } +} + +@media (min-width: 992px) { + .calendar-dropdown-widget .calendar-header .calendar-month-selector .select-button { + min-width: 120px; + padding: 0 10px; + } +} + +.calendar-dropdown-widget .calendar-header .dropdown-toggle::after { + content: unset !important; +} + +.calendar-dropdown-widget .calendar-week span { + font-size: 0.85em; + font-weight: 500; + color: var(--calendar-weekday-labels-color); +} + +.calendar-dropdown-widget .calendar-body { + font-size: 0.9em; +} + +.calendar-dropdown-widget .calendar-body a { + background: transparent; + color: var(--calendar-color); +} + +.calendar-dropdown-widget .calendar-body a.calendar-date-exists { + position: relative; + text-decoration: none !important; +} + +.calendar-dropdown-widget .calendar-body a.calendar-date-exists:not(:hover)::before { + --vertical-margin: 13%; + --horiz-margin: 18%; + content: ""; + position: absolute; + top: var(--vertical-margin); + right: var(--horiz-margin); + bottom: var(--vertical-margin); + left: var(--horiz-margin); + border-radius: 6px; + background: var(--calendar-day-highlight-background); + z-index: -1; +} + +body .calendar-dropdown-widget .calendar-body a:hover { + border-radius: 6px; + background: var(--calendar-day-hover-background); + color: var(--calendar-day-hover-color) !important; + text-decoration: unset; +} + +/* + * Bookmarks folder popup + */ + +div.bookmark-folder-widget { + min-width: auto; + max-width: 40vw; + padding: 0; + font-size: 1.1em; +} + +div.bookmark-folder-widget .children-notes { + margin: 0; +} + +/* Item */ +div.bookmark-folder-widget span.note-link { + display: flex; + align-items: center; + white-space: nowrap; + border-radius: 6px; + padding: 6px 25px; +} + +/* Item: the parent note */ +div.bookmark-folder-widget .parent-note .note-link { + padding: 6px 8px; + font-weight: bold; +} + +div.bookmark-folder-widget .note-link:hover { + background: var(--hover-item-background-color); +} + +div.bookmark-folder-widget .note-link a { + padding-left: 8px; + color: var(--menu-text-color); + cursor: default; +} + +div.bookmark-folder-widget .note-link:hover a { + color: var(--hover-item-text-color); +} + +/* The item's icon */ +div.bookmark-folder-widget .note-link .bx { + color: var(--menu-item-icon-color); + font-size: 1.2em; +} + /* - * Search Box - */ + * QUICK SEARCH BOX + */ div.quick-search { --padding-top: 8px; @@ -416,11 +593,9 @@ div.quick-search .search-button.show { } /* - * Left pane + * TREE PANE */ -/* Tree */ - #left-pane div.tree { padding: 3px 6px 40px 6px; animation: fade-in 200ms ease-in; @@ -563,7 +738,9 @@ body.mobile .fancytree-node > span { --menu-item-icon-vert-offset: -1px; } -/* Tree actions toolbar */ +/* + * Tree actions toolbar + */ /* Toolbar container (collapsed state) */ #left-pane .tree-actions { @@ -660,21 +837,7 @@ body.mobile .fancytree-node > span { } /* - * Gutter - */ - -.gutter { - background: var(--gutter-color) !important; - transition: background 150ms ease-out; -} - -.gutter:hover { - background: var(--gutter-hover-color) !important; - transition: background 300ms ease-in; -} - -/* - * Tab bar + * TAB BAR */ /* The parent element of the tab bar */ @@ -711,7 +874,7 @@ body.layout-horizontal .tab-row-container .note-tab[active]:before { top: var(--tab-height); right: calc(100% - 1px); height: 1px; - border-bottom: 1px solid var(--launcher-pane-horizontal-border-color); + border-bottom: 1px solid var(--launcher-pane-horiz-border-color); } body.layout-horizontal .tab-row-container .note-tab[active]:after { @@ -723,7 +886,7 @@ body.layout-horizontal .tab-row-container .note-tab[active]:after { right: 0; width: 100vw; height: 1px; - border-bottom: 1px solid var(--launcher-pane-horizontal-border-color); + border-bottom: 1px solid var(--launcher-pane-horiz-border-color); } /* #endregion */ @@ -757,7 +920,7 @@ body.desktop:not(.background-effects.platform-win32) #root-widget.horizontal-lay } #root-widget.horizontal-layout .tab-row-widget .note-tab[active] .note-tab-wrapper { - border: 1px solid var(--launcher-pane-horizontal-border-color); + border: 1px solid var(--launcher-pane-horiz-border-color); border-bottom-color: transparent; } @@ -906,7 +1069,7 @@ body.layout-vertical .tab-row-widget-is-sorting .note-tab[active] .note-tab-wrap } /* - * Center pane + * CENTER PANE */ #center-pane { @@ -917,16 +1080,15 @@ body.layout-vertical .tab-row-widget-is-sorting .note-tab[active] .note-tab-wrap border-radius: var(--center-pane-border-radius) 0 0 0; } +.note-split { + padding-top: 2px; + animation: note-entrance 100ms linear; + /* will-change: opacity; -- causes some weird artifacts to the note menu in split view */ +} + /* * Ribbon & note header */ -.note-title.protected { - text-shadow: unset !important; -} - -body.mobile .note-title { - background: transparent; -} .ribbon-container { margin-bottom: 0 !important; @@ -944,948 +1106,18 @@ body.mobile .note-title { } } -.note-split { - padding-top: 2px; - animation: note-entrance 100ms linear; - /* will-change: opacity; -- causes some weird artifacts to the note menu in split view */ -} - /* - * Table of contents & Highlights list + * Note title */ -#right-pane { - background: var(--main-background-color); +.note-title.protected { + text-shadow: unset !important; } -#right-pane div.card-header { - align-items: center; - border: 0; -} - -#right-pane .card-header-title { - margin-top: 2px; - font-weight: 600; - font-size: .85em; - letter-spacing: .3pt; - color: var(--right-pane-heading-color); -} - -#right-pane .card-header-buttons { - align-items: center; - top: 0; -} - -#right-pane .toc-widget, -#right-pane .highlights-list-widget { - padding: 0 0 0 10px; -} - -#right-pane .toc li, -#right-pane .highlights-list li { - padding: 2px 8px; - border-radius: 4px; - text-align: unset; - transition: - background-color 150ms ease-in, - color 150ms ease-in; -} - -#right-pane .highlights-list li { - line-height: 1.2; - padding: 8px; -} - -#right-pane .toc li::marker, -#right-pane .highlights-list li::marker { - color: var(--muted-text-color); -} - -#right-pane .toc li:hover, -#right-pane .highlights-list li:hover { - background: var(--right-pane-item-hover-background); - color: var(--right-pane-item-hover-color); - font-weight: normal; - transition: background-color 300ms ease-out color 300ms ease-out; -} - -#right-pane .toc li:active, -#right-pane .highlights-list li:active { - background: transparent; - transition: none; -} - -/* - * Menus - * - * Note: apply the "tn-dropdown-list" class for scrollable dropdown menus. Submenus are not - * supported when this class is used. - */ - -.dropdown-menu:not(.static) { - border-radius: var(--dropdown-border-radius); - padding: var(--menu-padding-size) !important; - font-size: 0.9rem !important; -} - -.dropdown-menu::-webkit-scrollbar-track { - background: var(--menu-background-color); -} - -body.mobile .dropdown-menu { - backdrop-filter: var(--dropdown-backdrop-filter); - border-radius: var(--dropdown-border-radius); - position: relative; -} - -body.mobile .dropdown-menu .dropdown-menu { - backdrop-filter: unset !important; - border-radius: unset !important; -} - -body.desktop .dropdown-menu::before { - content: ""; - backdrop-filter: var(--dropdown-backdrop-filter); - border-radius: var(--dropdown-border-radius); - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: -1; -} - -body.desktop .dropdown-menu.tn-dropdown-list { - backdrop-filter: var(--dropdown-backdrop-filter); -} - -body.desktop .dropdown-menu.tn-dropdown-list::before { - display: none; -} - -body.desktop .dropdown-submenu .dropdown-menu::before { - content: unset; -} - -body.mobile .dropdown-submenu .dropdown-menu { - background: transparent !important; -} - -body.desktop .dropdown-submenu .dropdown-menu { - backdrop-filter: var(--dropdown-backdrop-filter); +body.mobile .note-title { background: transparent; } -.dropdown-item, -body.mobile .dropdown-submenu .dropdown-toggle { - padding: 2px 2px 2px 8px !important; - padding-inline-end: 16px !important; - /* Note: the right padding should also accommodate the submenu arrow. */ - border-radius: 6px; - cursor: default !important; -} - -body.mobile .dropdown-submenu { - padding: 0 !important; -} - -body.mobile .dropdown-item:not(:last-of-type) { - margin-bottom: 0.5em; -} - -body.mobile .dropdown-submenu:hover { - background: transparent !important; -} - -html body .dropdown-item.disabled, -html body .dropdown-item[disabled] { - color: var(--menu-text-color) !important; - opacity: var(--menu-item-disabled-opacity); -} - -/* Menu item icon */ -.dropdown-item .bx { - transform: translateY(var(--menu-item-icon-vert-offset)); - color: var(--menu-item-icon-color) !important; - font-size: 1.1em; -} - -/* Menu item keyboard shortcut */ -.dropdown-item kbd { - margin-left: 16px; - font-family: unset !important; - font-size: unset !important; - color: var(--menu-item-keyboard-shortcut-color) !important; - padding-top: 0; -} - -.dropdown-divider { - position: relative; - border-color: transparent !important; - overflow: visible; -} - -.dropdown-divider::after { - position: absolute; - content: ""; - top: -1px; - left: calc(0px - var(--menu-padding-size)); - right: calc(0px - var(--menu-padding-size)); - border-top: 1px solid var(--menu-item-delimiter-color); -} - -/* Menu item arrow */ -.dropdown-menu .dropdown-toggle::after { - content: "\ed3b" !important; - position: absolute; - display: flex !important; - align-items: center; - justify-content: center; - top: 0; - right: 0; - margin: unset !important; - border: unset !important; - padding: 0 4px; - font-family: boxicons; - font-size: 1.2em; - color: var(--menu-item-arrow-color) !important; -} - -/* Menu item group heading */ - -/* The heading body */ -.dropdown-menu h6 { - position: relative; - background: transparent; - padding: 1em 8px 14px 8px; - text-transform: uppercase; - font-size: 0.8em; - letter-spacing: 1pt; - color: var(--menu-item-group-header-color) !important; -} - -/* The delimiter line */ -.dropdown-menu h6::before { - content: ""; - position: absolute; - bottom: 8px; - left: calc(0px - var(--menu-padding-size)); - right: calc(0px - var(--menu-padding-size)); - border-top: 1px solid var(--menu-item-delimiter-color); -} - -/* Static menus (used as a list, such as on the note revisions dialog) */ -body.desktop .dropdown-menu.static { - box-shadow: unset; - border-radius: 4px; - border: unset; - background-color: var(--card-background-color) !important; - padding: var(--menu-padding-size) !important; - user-select: none; -} - -body.desktop .dropdown-menu.static .dropdown-item.active { - --active-item-text-color: var(--menu-text-color); -} - -body.desktop .dropdown-menu .dropdown-toggle::after { - height: 100%; -} - -body.mobile .dropdown-menu .dropdown-toggle::after { - transform: rotate(90deg); -} - -body.mobile .dropdown-menu .dropdown-item.submenu-open .dropdown-toggle::after { - transform: rotate(270deg); -} - -/* - * Calendar - */ - -.calendar-dropdown-widget { - width: unset !important; - padding: 12px; - color: var(--calendar-color); - user-select: none; -} - -.calendar-dropdown-widget .calendar-header { - padding: 8px 0 20px 0; - gap: 10px; -} - -.calendar-dropdown-widget .calendar-header input, -.calendar-dropdown-widget .calendar-header [data-calendar-input="month"] { - --input-background-color: transparent; - --menu-background-color: transparent; - - text-align: center; - font-size: 1.4em; - font-weight: 300; -} - -.calendar-dropdown-widget .calendar-header input:not(:focus) { - outline: 3px solid transparent; -} - -.calendar-dropdown-widget .calendar-header .calendar-month-selector .select-button { - --select-arrow-svg: ""; /* Disable the dropdown arrow */ -} - -@media (max-width: 992px) { - .calendar-dropdown-widget .calendar-header button { - margin: 0 !important; - padding: 0; - } - - .calendar-dropdown-widget .calendar-header .calendar-month-selector .select-button { - padding: 0 8px; - flex-grow: 1; - } -} - -@media (min-width: 992px) { - .calendar-dropdown-widget .calendar-header .calendar-month-selector .select-button { - min-width: 120px; - padding: 0 10px; - } -} - -.calendar-dropdown-widget .calendar-header .dropdown-toggle::after { - content: unset !important; -} - -.calendar-dropdown-widget .calendar-week span { - font-size: 0.85em; - font-weight: 500; - color: var(--calendar-weekday-labels-color); -} - -.calendar-dropdown-widget .calendar-body { - font-size: 0.9em; -} - -.calendar-dropdown-widget .calendar-body a { - background: transparent; - color: var(--calendar-color); -} - -.calendar-dropdown-widget .calendar-body a.calendar-date-exists { - position: relative; - text-decoration: none !important; -} - -.calendar-dropdown-widget .calendar-body a.calendar-date-exists:not(:hover)::before { - --vertical-margin: 13%; - --horiz-margin: 18%; - content: ""; - position: absolute; - top: var(--vertical-margin); - right: var(--horiz-margin); - bottom: var(--vertical-margin); - left: var(--horiz-margin); - border-radius: 6px; - background: var(--calendar-day-highlight-background); - z-index: -1; -} - -body .calendar-dropdown-widget .calendar-body a:hover { - border-radius: 6px; - background: var(--calendar-day-hover-background); - color: var(--calendar-day-hover-color) !important; - text-decoration: unset; -} - -/* - * Note tooltip - */ - -.tooltip .tooltip-inner:has(.note-tooltip-content) { - border-radius: 8px; -} - -.note-tooltip-content { - padding: 8px; - min-height: 56px; -} - -.note-tooltip-title .note-title-with-path { - display: flex; - flex-direction: column-reverse; -} - -.note-tooltip-title a { - color: inherit !important; -} - -.note-tooltip-title.note-no-content { - margin: 0; -} - -.note-tooltip-title:not(.note-no-content) .note-title-with-path { - padding-bottom: 6px; - border-bottom: 2px solid currentColor; -} - -.note-tooltip-content .note-path { - display: block; - color: var(--muted-text-color); - font-size: 0.75em; -} - -.note-tooltip-content .note-tooltip-attributes { - margin-top: -4px; - font-size: 0.75em; -} - -.note-tooltip-content .rendered-content { - padding-top: 12px; -} - -/* - * Jump to note - */ - -.jump-to-note-dialog .modal-dialog { - --modal-background-color: var(--menu-background-color); - --modal-footer-background: transparent; - --bs-modal-header-border-width: 0; - --bs-modal-footer-border-width: 0; - --bs-modal-footer-gap: 0; - - backdrop-filter: var(--dropdown-backdrop-filter); -} - -.jump-to-note-dialog .modal-content { - box-shadow: 0 10px 20px rgba(0, 0, 0, var(--dropdown-shadow-opacity)); - border: 1px solid var(--dropdown-border-color); - padding: 32px; - border-radius: 8px; -} - -.jump-to-note-dialog .modal-header { - padding: unset !important; -} - -.jump-to-note-dialog .modal-body { - padding: 26px 0 !important; -} - -/* Search box wrapper */ -.jump-to-note-dialog .input-group { - margin-right: 16px; -} - -.jump-to-note-dialog .input-group:hover { - background: var(--quick-search-hover-background); -} - -/* Focused search box */ -.jump-to-note-dialog .input-group:focus-within { - border-color: var(--quick-search-focus-border); - background: var(--quick-search-focus-background); - color: var(--quick-search-focus-color); -} - -.jump-to-note-dialog .input-clearer-button { - background: transparent !important; -} - -/* - * Note Map - */ - -.note-detail-note-map .fixnodes-type-switcher .tn-tool-button.toggled { - color: var(--tab-close-button-hover-background); -} - -/* - * Recent changes list - */ - -.recent-changes-dialog .modal-body { - padding: 0; -} - -.recent-changes-content { - margin: var(--bs-modal-padding); -} - -/* Date headings */ -.recent-changes-content > div > b { - position: sticky; - display: block; - top: 0; - background: var(--modal-background-color); - padding: 10px 0 10px calc(var(--timeline-left-gap) + var(--timeline-right-gap)); - font-size: 1.25em; - font-weight: 300; - z-index: 10; -} - -.recent-changes-content ul { - list-style: none; - margin: 0; - padding: 0; -} - -/* Timeline items */ -.recent-changes-content ul li { - display: flex; - position: relative; - margin: 0; - border: unset; - padding-top: var(--timeline-item-top-padding); - padding-bottom: var(--timeline-item-bottom-padding); - padding-left: calc(var(--timeline-left-gap) + var(--timeline-right-gap)); - padding-right: var(--timeline-left-gap); - color: var(--active-item-text-color); -} - -.recent-changes-content li > span:first-child::after { - /* Remove the dash between time and note title */ - content: "" !important; -} - -.recent-changes-content ul li:not(.deleted-note):hover { - border-radius: 8px; - background: var(--hover-item-background-color); - color: var(--hover-item-text-color); -} - -.recent-changes-content ul li .note-path { - color: var(--muted-text-color); - font-size: 0.75em; -} - -/* Item time */ -.recent-changes-content ul li > span:first-child { - display: inline-block; - min-width: 80px; - vertical-align: top; - color: var(--muted-text-color); -} - -/* Item title & path container */ -.recent-changes-content ul li > span:nth-child(2) { - display: inline-block; -} - -/* Item title link */ - -.recent-changes-content ul li .note-title a { - color: currentColor; -} - -.recent-changes-content ul li .note-title a:hover { - text-decoration: underline; -} - -/* Item title for deleted notes */ -.recent-changes-content ul li.deleted-note .note-title > .note-title { - text-decoration: line-through; -} - -/* Item path */ -.recent-changes-content ul li > span:nth-child(2) small { - display: block; - line-height: 1; - opacity: 0.75; -} - -/* Timeline connector */ -.recent-changes-content ul li::before, -.recent-changes-content > div > b::before { - position: absolute; - content: ""; - top: var(--connector-top, 0); - left: calc(var(--timeline-left-gap) + ((var(--timeline-bullet-size) - var(--timeline-connector-size)) / 2)); - bottom: var(--connector-bottom, 0); - width: var(--timeline-connector-size); - border-radius: var(--connector-radius, 0) var(--connector-radius, 0) 0 0; - background: var(--timeline-connector-color); - transition: background-color 400ms ease-in-out; -} - -.recent-changes-content ul li:hover:before { - mix-blend-mode: var(--timeline-connector-hover-blend-mode); -} - -.recent-changes-content > div:hover { - --timeline-connector-color: var(--timeline-connector-active-color); -} - -/* The first item of the timeline */ -.recent-changes-content > div:first-child > *:first-child { - --connector-top: 50%; - --connector-radius: calc(var(--timeline-connector-size) / 2); -} - -/* The last item of the timeline */ -.recent-changes-content > div:last-child li:last-child { - --connector-bottom: 50%; -} - -/* Timeline bullet */ -.recent-changes-content ul li::after { - position: absolute; - content: ""; - top: calc(var(--timeline-item-top-padding) + var(--timeline-bullet-vertical-pos)); - left: var(--timeline-left-gap); - width: var(--timeline-bullet-size); - height: var(--timeline-bullet-size); - border-radius: 50%; - background: var(--timeline-bullet-color); - transform: translateY(-50%); -} - -/* Hovered timeline bullet */ -.recent-changes-content ul li:hover::after { - background: var(--timeline-bullet-hover-color); -} - -/* - * Bookmarks folder popup - */ - -div.bookmark-folder-widget { - min-width: auto; - max-width: 40vw; - padding: 0; - font-size: 1.1em; -} - -div.bookmark-folder-widget .children-notes { - margin: 0; -} - -/* Item */ -div.bookmark-folder-widget span.note-link { - display: flex; - align-items: center; - white-space: nowrap; - border-radius: 6px; - padding: 6px 25px; -} - -/* Item: the parent note */ -div.bookmark-folder-widget .parent-note .note-link { - padding: 6px 8px; - font-weight: bold; -} - -div.bookmark-folder-widget .note-link:hover { - background: var(--hover-item-background-color); -} - -div.bookmark-folder-widget .note-link a { - padding-left: 8px; - color: var(--menu-text-color); - cursor: default; -} - -div.bookmark-folder-widget .note-link:hover a { - color: var(--hover-item-text-color); -} - -/* The item's icon */ -div.bookmark-folder-widget .note-link .bx { - color: var(--menu-item-icon-color); - font-size: 1.2em; -} - -/* - * Note list - */ -.note-list .note-book-card { - --note-list-horizontal-padding: 22px; - --note-list-vertical-padding: 15px; - background-color: var(--card-background-color); - border: 1px solid var(--card-border-color) !important; - box-shadow: 2px 3px 4px var(--card-shadow-color); - border-radius: 12px; - user-select: none; - padding: 0; - margin: 5px 10px 5px 0; -} - -.note-list.list-view .note-book-card { - box-shadow: 0 0 3px var(--card-shadow-color); -} - -.note-list.list-view .note-book-card .note-book-header .note-icon { - vertical-align: middle; -} - -.note-list-wrapper .note-book-card:active { - background-color: var(--card-background-press-color); -} - -.note-list-wrapper .note-book-card a { - color: inherit !important; -} - -.note-list-wrapper .note-book-card .note-book-header { - font-size: 1em; - font-weight: bold; - padding: 0.5em 1rem; - border-bottom-color: var(--card-border-color); -} - -.note-list-wrapper .note-book-card .note-book-header .note-icon { - font-size: 17px; - vertical-align: text-bottom; -} - -.note-list-wrapper .note-book-card .note-book-header .note-book-title { - font-size: 1em; - color: var(--active-item-text-color); - vertical-align: middle; -} - -.note-list-wrapper .note-book-card .note-book-header .rendered-note-attributes { - font-size: 0.7em; - font-weight: normal; - margin-bottom: 0; -} - -.note-list-wrapper .note-book-card .note-book-header:last-child { - border-bottom: 0; -} - -.note-list-wrapper .note-book-card .note-book-content { - padding: 0 !important; - font-size: 0.8rem; -} - -.note-list-wrapper .note-book-card .note-book-content .rendered-content { - padding: 1rem; -} - -.note-list-wrapper .note-book-card .note-book-content .rendered-content.text-with-ellipsis { - padding: 1rem !important; -} - -.note-list-wrapper .note-book-card .note-book-content h1, -.note-list-wrapper .note-book-card .note-book-content h2, -.note-list-wrapper .note-book-card .note-book-content h3, -.note-list-wrapper .note-book-card .note-book-content h4, -.note-list-wrapper .note-book-card .note-book-content h5, -.note-list-wrapper .note-book-card .note-book-content h6 { - font-size: 1rem; - color: var(--active-item-text-color); -} - -.note-list-wrapper .note-book-card .note-book-content p:last-child { - margin-bottom: 0; -} - -.note-list-wrapper .note-book-card .note-book-content.type-canvas .rendered-content, -.note-list-wrapper .note-book-card .note-book-content.type-mindMap .rendered-content, -.note-list-wrapper .note-book-card .note-book-content.type-code .rendered-content, -.note-list-wrapper .note-book-card .note-book-content.type-video .rendered-content { - padding: 0; -} - -.note-list-wrapper .note-book-card .note-book-content.type-code pre { - height: 100%; - padding: 1em; -} - -.note-list-wrapper .note-book-card .bx { - color: var(--left-pane-icon-color) !important; -} - -.note-list.grid-view .note-book-card:hover { - background: var(--card-background-color) !important; - filter: contrast(105%); -} - -.note-list.grid-view .note-book-card img { - object-fit: cover !important; - width: 100%; -} - -.note-list.grid-view .ck-content { - line-height: 1.3; -} - -.note-list.grid-view .ck-content p { - margin-bottom: 0.5em; -} - -.note-list.grid-view .ck-content figure.image { - width: 25%; -} - -/* Note paths */ - -.note-path .path-bracket { - /* Hide the leading and trailing bracket from the path */ - display: none; -} - -.note-path .path-delimiter { - /* Hide the path delimiters (slashes) */ - display: none; -} - -.note-path .path-delimiter + span::before { - /* Replace the path delimiters with arrows */ - display: inline-block; - content: "\ed3b"; - padding: 0 0.25em; - font-family: boxicons; - opacity: 0.75; - transform: translateY(4%); -} - -/* - * Search - */ - - /* Button bar */ - .search-definition-widget .search-setting-table tbody:last-child div { - justify-content: flex-end !important; - gap: 8px; - } - -.search-result-widget-content .note-path .path-bracket { - display: inline; -} - -.search-result-widget-content .note-path { - opacity: 0.75; - font-weight: normal; -} - -/* - * SQL Console - */ - -/* Table buttons */ - -.sql-table-schemas-widget .sql-table-schemas button { - --color: var(--main-text-color); - --background: var(--card-background-color); - - display: inline-block; - box-shadow: 2px 2px 2px var(--card-shadow-color); - margin-top: 4px; - vertical-align: baseline; - border: unset; - border-radius: 12px; - padding: 2px 12px; - background: var(--background) !important; - color: var(--color) !important; - line-height: unset; - cursor: help; -} - -.sql-table-schemas-widget .sql-table-schemas button:hover, -.sql-table-schemas-widget .sql-table-schemas button:active, -.sql-table-schemas-widget .sql-table-schemas button:focus-visible { - --background: var(--card-background-press-color); - --color: var(--main-text-color); -} - -/* Tooltip */ - -.tooltip .table-schema { - font-family: var(--monospace-font-family); - font-size: .85em; -} - -/* Data type */ -.tooltip .table-schema td:nth-child(2) { - color: var(--muted-text-color); -} - -/* - * Help - */ - -.help-dialog .modal-content { - --modal-background-color: var(--help-background-color); - backdrop-filter: blur(var(--help-backdrop-blur)); -} - -.help-dialog .help-cards { - display: block; - columns: 3; - column-gap: 20px; -} - -.help-dialog .card { - margin: 0; - width: auto; - border: none; - background: unset; - padding: 16px 8px; - break-inside: avoid-column; -} - -.help-dialog .card-body { - box-shadow: var(--help-card-shadow); - border-radius: 6px; - background: var(--help-card-background); -} - -.help-dialog .card-body h5, -.help-dialog .card-body h6 { - color: var(--help-card-heading-color); - font-weight: 600; -} - -.help-dialog .card-body h5 { - font-size: 20px; -} - -.help-dialog .card-body h6 { - font-size: 15px; - padding-bottom: 0.5em; -} - -/* Help card item */ -.help-dialog .help-cards ul { - list-style-type: none; - padding: 0; -} - -.help-dialog .help-cards li + li { - margin-top: 0.4em; -} - -/* Keyboard shortcut */ -.help-dialog .help-cards kbd, -.ck-content kbd { - box-shadow: var(--help-kbd-shortcut-shadow); - margin: 0 4px; - border: none; - border-radius: 4px; - padding: 2px 10px; - background: var(--help-kbd-shortcut-background); - color: var(--help-kbd-shortcut-color); - font-weight: 500; - letter-spacing: 0.5pt; -} - -.help-dialog .help-cards kbd:first-child { - margin-left: 0; -} - -/* Inline code - used for Markdown samples */ -.help-dialog .help-cards code { - border-radius: 4px; - background: var(--help-code-background); - padding: 0 8px; - color: var(--help-code-color); -} - -/* Note area */ - .title-row > *:first-child { margin-right: 0; } @@ -1906,21 +1138,6 @@ div.bookmark-folder-widget .note-link .bx { padding-left: 12px; } -.note-actions { - --menu-item-icon-vert-offset: -2.5px; -} - -/* Promoted attributes */ -.promoted-attribute-cell div.input-group { - margin: 1px 0; -} - -/* Delete notes preview dialog */ - -.delete-notes-list .note-path { - padding-left: 8px; -} - /* The "Change note icon" button */ .note-icon-widget .note-icon { @@ -1933,7 +1150,13 @@ div.bookmark-folder-widget .note-link .bx { color: var(--icon-button-hover-color); } -/* Note icon popup */ +.note-actions { + --menu-item-icon-vert-offset: -2.5px; +} + +/* + * Note icon popup + */ .note-icon-widget .icon-list span { border-radius: 8px; @@ -1944,12 +1167,9 @@ div.bookmark-folder-widget .note-link .bx { color: var(--hover-item-text-color); } -body.background-effects.zen #root-widget { - --main-background-color: transparent; - --root-background: transparent; -} - -/* Alert bar */ +/* + * Alert bar + */ @keyframes alert-show { from { @@ -1977,6 +1197,10 @@ body.background-effects.zen #root-widget { * Promoted attributes */ +.promoted-attribute-cell div.input-group { + margin: 1px 0; +} + /* The promoted attributes section */ div.promoted-attributes-container { display: flex; @@ -2081,98 +1305,66 @@ div.promoted-attribute-cell .multiplicity:has(span) { } /* - * Modals + * RIGHT PANE: TABLE OF CONTENTS AND HIGHLIGHT LIST */ -/* Modal body */ -.modal .modal-content { - box-shadow: 0 .5em 3em .5em var(--modal-shadow-color); - border: 1px solid var(--modal-border-color); - background: var(--modal-background-color); +#right-pane { + background: var(--main-background-color); } -/* Modal header */ -.modal .modal-header { - border-bottom: unset; - user-select: none; -} - -.modal .modal-header .modal-title { - flex-grow: 1; - font-size: 1.2em; - color: var(--modal-title-color); -} - -/* Modal and toast control buttons (close and help) */ - -.modal .modal-header .btn-close, -.modal .modal-header .help-button, -#toast-container .toast .toast-header .btn-close { - display: flex; - justify-content: center; +#right-pane div.card-header { align-items: center; - margin-left: 8px; border: 0; - border-radius: 50%; - padding: 0; - width: var(--modal-control-button-size); - height: var(--modal-control-button-size); - background: var(--modal-control-button-background); - font-size: var(--modal-control-button-size); - line-height: normal; +} + +#right-pane .card-header-title { + margin-top: 2px; + font-weight: 600; + font-size: .85em; + letter-spacing: .3pt; + color: var(--right-pane-heading-color); +} + +#right-pane .card-header-buttons { + align-items: center; + top: 0; +} + +#right-pane .toc-widget, +#right-pane .highlights-list-widget { + padding: 0 0 0 10px; +} + +#right-pane .toc li, +#right-pane .highlights-list li { + padding: 2px 8px; + border-radius: 4px; + text-align: unset; + transition: + background-color 150ms ease-in, + color 150ms ease-in; +} + +#right-pane .highlights-list li { + line-height: 1.2; + padding: 8px; +} + +#right-pane .toc li::marker, +#right-pane .highlights-list li::marker { + color: var(--muted-text-color); +} + +#right-pane .toc li:hover, +#right-pane .highlights-list li:hover { + background: var(--right-pane-item-hover-background); + color: var(--right-pane-item-hover-color); font-weight: normal; - color: var(--modal-control-button-color); - opacity: 1; - cursor: default; + transition: background-color 300ms ease-out color 300ms ease-out; } -.modal .modal-header .btn-close, -#toast-container .toast .toast-header .btn-close { - --modal-control-button-hover-background: var(--modal-close-button-hover-background); -} - -.modal .modal-header .btn-close::after, -#toast-container .toast .toast-header .btn-close::after { - content: "\ec8d"; - font-family: boxicons; -} - -.modal .modal-header .help-button { - margin-right: 0; - font-size: calc(var(--modal-control-button-size) * .75); - font-family: unset; - font-weight: bold; -} - -.modal .modal-header .btn-close:hover, -.modal .modal-header .help-button:hover, -#toast-container .toast .toast-header .btn-close:hover { - background: var(--modal-control-button-hover-background); - color: var(--modal-control-button-hover-color); -} - -.modal .modal-header .btn-close:active, -.modal .modal-header .help-button:active, -#toast-container .toast .toast-header .btn-close:active { - transform: scale(.85); -} - -.modal .modal-header .btn-close:focus, -.modal .modal-header .help-button:focus, -#toast-container .toast .toast-header .btn-close:focus { - box-shadow: none !important; -} - -.modal .modal-header .btn-close:focus-visible, -.modal .modal-header .help-button:focus-visible, -#toast-container .toast .toast-header .btn-close:focus-visible { - outline: 2px solid var(--input-focus-outline-color); - outline-offset: 2px; -} - -/* Modal footer */ -.modal .modal-footer { - background: var(--modal-footer-background); - color: var(--modal-footer-color); - border-top: unset; +#right-pane .toc li:active, +#right-pane .highlights-list li:active { + background: transparent; + transition: none; } \ No newline at end of file diff --git a/src/routes/assets.ts b/src/routes/assets.ts index 4683a81fb..d2bf47c42 100644 --- a/src/routes/assets.ts +++ b/src/routes/assets.ts @@ -96,8 +96,6 @@ async function register(app: express.Application) { app.use(`/${assetPath}/node_modules/codemirror/mode/`, persistentCacheStatic(path.join(srcRoot, "..", "node_modules/codemirror/mode/"))); app.use(`/${assetPath}/node_modules/codemirror/keymap/`, persistentCacheStatic(path.join(srcRoot, "..", "node_modules/codemirror/keymap/"))); - app.use(`/${assetPath}/node_modules/mind-elixir/dist/`, persistentCacheStatic(path.join(srcRoot, "..", "node_modules/mind-elixir/dist/"))); - app.use(`/${assetPath}/node_modules/@mind-elixir/node-menu/dist/`, persistentCacheStatic(path.join(srcRoot, "..", "node_modules/@mind-elixir/node-menu/dist/"))); app.use(`/${assetPath}/node_modules/@highlightjs/cdn-assets/`, persistentCacheStatic(path.join(srcRoot, "..", "node_modules/@highlightjs/cdn-assets/"))); app.use(`/${assetPath}/node_modules/leaflet/dist/`, persistentCacheStatic(path.join(srcRoot, "..", "node_modules/leaflet/dist/"))); diff --git a/src/services/build.ts b/src/services/build.ts index 656db67ef..930c76e4e 100644 --- a/src/services/build.ts +++ b/src/services/build.ts @@ -1,4 +1,4 @@ export default { - buildDate: "2025-03-07T21:59:10Z", - buildRevision: "e76601cd21c0fe0d50745affe582f61bcd752fec" + buildDate: "2025-03-16T14:04:21Z", + buildRevision: "79c82b16ce1d42edabf1c8dd7fe685d1c7d3e21c" }; diff --git a/src/services/export/markdown.spec.ts b/src/services/export/markdown.spec.ts index b0285b046..1eccd25a0 100644 --- a/src/services/export/markdown.spec.ts +++ b/src/services/export/markdown.spec.ts @@ -193,4 +193,37 @@ describe("Markdown export", () => { expect(markdownExportService.toMarkdown(html)).toBe(expected); }); + it("exports code in tables properly", () => { + const html = trimIndentation`\ + + + + + +
      + Row 1 + +

      Allows displaying the value of one or more attributes in the calendar + like this: 

      +

      + +

      + +
      #weight="70"
      +                    #Mood="Good"
      +                    #calendar:displayedAttributes="weight,Mood"
      +

      It can also be used with relations, case in which it will display the + title of the target note:

      ~assignee=@My assignee
      +                    #calendar:displayedAttributes="assignee"
      +
      + `; + + const expected = trimIndentation`\ +
      Row 1

      Allows displaying the value of one or more attributes in the calendar like this: 

      #weight="70"
      +                        #Mood="Good"
      +                        #calendar:displayedAttributes="weight,Mood"

      It can also be used with relations, case in which it will display the title of the target note:

      ~assignee=@My assignee
      +                        #calendar:displayedAttributes="assignee"
      `; + expect(markdownExportService.toMarkdown(html)).toBe(expected); + }); + }); diff --git a/src/services/export/markdown.ts b/src/services/export/markdown.ts index a52517873..03ac1b744 100644 --- a/src/services/export/markdown.ts +++ b/src/services/export/markdown.ts @@ -1,7 +1,7 @@ "use strict"; import TurndownService from "turndown"; -import turndownPluginGfm from "@joplin/turndown-plugin-gfm"; +import { gfm } from "../../../packages/turndown-plugin-gfm/src/gfm.js"; let instance: TurndownService | null = null; @@ -43,7 +43,7 @@ function toMarkdown(content: string) { instance.addRule("fencedCodeBlock", fencedCodeBlockFilter); instance.addRule("img", buildImageFilter()); instance.addRule("admonition", buildAdmonitionFilter()); - instance.use(turndownPluginGfm.gfm); + instance.use(gfm); instance.keep([ "kbd" ]); } diff --git a/src/services/import/markdown.spec.ts b/src/services/import/markdown.spec.ts index 5d5ccd33c..297b68e2f 100644 --- a/src/services/import/markdown.spec.ts +++ b/src/services/import/markdown.spec.ts @@ -62,10 +62,16 @@ Title code block 1 second line 2 \`\`\` + +* Hello +* world + +1. Hello +2. World `; const expected = `\

      Heading 1

      Title

      code block 1
      -second line 2
      `; +second line 2
    • Hello
    • world
    1. Hello
    2. World
    `; expect(markdownService.renderToHtml(input, "Troubleshooting")).toBe(expected); }); @@ -93,7 +99,13 @@ second line 2
    `; After`; const expected = `

    Before

    After

    `; - expect(markdownService.renderToHtml(input, "Title")).toBe(expected); + expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); + }); + + it("imports images with same outcome as if inserted from CKEditor", () => { + const input = "![](api/attachments/YbkR3wt2zMcA/image/image)"; + const expected = `

    `; + expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); }); }); diff --git a/src/services/import/markdown.ts b/src/services/import/markdown.ts index e42846404..8f4973082 100644 --- a/src/services/import/markdown.ts +++ b/src/services/import/markdown.ts @@ -1,36 +1,66 @@ "use strict"; import { parse, Renderer, type Tokens } from "marked"; -import { minify as minifyHtml } from "html-minifier"; -// Keep renderer code up to date with https://github.com/markedjs/marked/blob/master/src/Renderer.ts. -const renderer = new Renderer({ async: false }); -renderer.code = ({ text, lang, escaped }: Tokens.Code) => { - if (!text) { - return ""; +/** + * Keep renderer code up to date with https://github.com/markedjs/marked/blob/master/src/Renderer.ts. + */ +class CustomMarkdownRenderer extends Renderer { + + heading(data: Tokens.Heading): string { + return super.heading(data).trimEnd(); } - const ckEditorLanguage = getNormalizedMimeFromMarkdownLanguage(lang); - return `
    ${text}
    `; -}; -renderer.blockquote = ({ tokens }: Tokens.Blockquote) => { - const body = renderer.parser.parse(tokens); + paragraph(data: Tokens.Paragraph): string { + return super.paragraph(data).trimEnd(); + } - const admonitionMatch = /^

    \[\!([A-Z]+)\]/.exec(body); - if (Array.isArray(admonitionMatch) && admonitionMatch.length === 2) { - const type = admonitionMatch[1].toLowerCase(); - - if (ADMONITION_TYPE_MAPPINGS[type]) { - const bodyWithoutHeader = body - .replace(/^

    \[\!([A-Z]+)\]/, "

    ") - .replace(/^

    <\/p>/, ""); // Having a heading will generate an empty paragraph that we need to remove. - - return `

    \n`; + code({ text, lang }: Tokens.Code): string { + if (!text) { + return ""; } + + const ckEditorLanguage = getNormalizedMimeFromMarkdownLanguage(lang); + return `
    ${text}
    `; } - return `
    \n${body}
    \n`; -}; + list(token: Tokens.List): string { + return super.list(token) + .replace("\n", "") // we replace the first one only. + .trimEnd(); + } + + listitem(item: Tokens.ListItem): string { + return super.listitem(item).trimEnd(); + } + + image(token: Tokens.Image): string { + return super.image(token) + .replace(` alt=""`, ""); + } + + blockquote({ tokens }: Tokens.Blockquote): string { + const body = renderer.parser.parse(tokens); + + const admonitionMatch = /^

    \[\!([A-Z]+)\]/.exec(body); + if (Array.isArray(admonitionMatch) && admonitionMatch.length === 2) { + const type = admonitionMatch[1].toLowerCase(); + + if (ADMONITION_TYPE_MAPPINGS[type]) { + const bodyWithoutHeader = body + .replace(/^

    \[\!([A-Z]+)\]\s*/, "

    ") + .replace(/^

    <\/p>/, ""); // Having a heading will generate an empty paragraph that we need to remove. + + return `

    `; + } + } + + return `
    ${body}
    `; + } + +} + +const renderer = new CustomMarkdownRenderer({ async: false }); import htmlSanitizer from "../html_sanitizer.js"; import importUtils from "./utils.js"; @@ -46,9 +76,9 @@ function renderToHtml(content: string, title: string) { // h1 handling needs to come before sanitization html = importUtils.handleH1(html, title); html = htmlSanitizer.sanitize(html); - html = minifyHtml(html, { - collapseWhitespace: true - }); + + // Remove slash for self-closing tags to match CKEditor's approach. + html = html.replace(/<(\w+)([^>]*)\s+\/>/g, "<$1$2>"); return html; } diff --git a/src/services/import/zip.ts b/src/services/import/zip.ts index 3f7d1ef8e..aa64251fc 100644 --- a/src/services/import/zip.ts +++ b/src/services/import/zip.ts @@ -1,7 +1,7 @@ "use strict"; import BAttribute from "../../becca/entities/battribute.js"; -import { removeTextFileExtension, newEntityId, getNoteTitle, processStringOrBuffer } from "../../services/utils.js"; +import { removeTextFileExtension, newEntityId, getNoteTitle, processStringOrBuffer, unescapeHtml } from "../../services/utils.js"; import log from "../../services/log.js"; import noteService from "../../services/notes.js"; import attributeService from "../../services/attributes.js"; @@ -109,11 +109,12 @@ async function importZip(taskContext: TaskContext, fileBuffer: Buffer, importRoo let parent: NoteMeta | undefined = undefined; - for (const segment of pathSegments) { + for (let segment of pathSegments) { if (!cursor?.children?.length) { return {}; } + segment = unescapeHtml(segment); parent = cursor; if (parent.children) { cursor = parent.children.find((file) => file.dataFileName === segment || file.dirFileName === segment); diff --git a/src/services/in_app_help.spec.ts b/src/services/in_app_help.spec.ts index a716be4ed..2871fc16b 100644 --- a/src/services/in_app_help.spec.ts +++ b/src/services/in_app_help.spec.ts @@ -30,7 +30,37 @@ describe("In-app help", () => { }; const item = parseNoteMeta(meta, "/"); - const icon = item.attributes?.find((a) => a.name === "iconClass"); + const icon = item?.attributes?.find((a) => a.name === "iconClass"); expect(icon?.value).toBe("bx bx-star"); }); + + it("hides note that is hidden from share tree", () => { + const meta: NoteMeta = { + isClone: false, + noteId: "yoAe4jV2yzbd", + notePath: ["OkOZllzB3fqN", "yoAe4jV2yzbd"], + title: "Features", + notePosition: 40, + prefix: null, + isExpanded: false, + type: "text", + mime: "text/html", + attributes: [ + { + type: "label", + name: "shareHiddenFromTree", + value: "", + isInheritable: false, + position: 10 + } + ], + format: "html", + attachments: [], + dirFileName: "Features", + children: [] + }; + + const item = parseNoteMeta(meta, "/"); + expect(item).toBeFalsy(); + }); }); diff --git a/src/services/in_app_help.ts b/src/services/in_app_help.ts index 7841ee71b..a2322ab75 100644 --- a/src/services/in_app_help.ts +++ b/src/services/in_app_help.ts @@ -25,15 +25,16 @@ export function getHelpHiddenSubtreeData() { function parseNoteMetaFile(noteMetaFile: NoteMetaFile): HiddenSubtreeItem[] { if (!noteMetaFile.files) { + console.log("No meta files"); return []; } const metaRoot = noteMetaFile.files[0]; const parsedMetaRoot = parseNoteMeta(metaRoot, "/" + (metaRoot.dirFileName ?? "")); - return parsedMetaRoot.children ?? []; + return parsedMetaRoot?.children ?? []; } -export function parseNoteMeta(noteMeta: NoteMeta, docNameRoot: string): HiddenSubtreeItem { +export function parseNoteMeta(noteMeta: NoteMeta, docNameRoot: string): HiddenSubtreeItem | null { let iconClass: string = "bx bx-file"; const item: HiddenSubtreeItem = { id: `_help_${noteMeta.noteId}`, @@ -62,6 +63,10 @@ export function parseNoteMeta(noteMeta: NoteMeta, docNameRoot: string): HiddenSu value: attribute.value }); } + + if (attribute.name === "shareHiddenFromTree") { + return null; + } } // Handle text notes @@ -84,7 +89,10 @@ export function parseNoteMeta(noteMeta: NoteMeta, docNameRoot: string): HiddenSu const children: HiddenSubtreeItem[] = []; for (const childMeta of noteMeta.children) { let newDocNameRoot = noteMeta.dirFileName ? `${docNameRoot}/${noteMeta.dirFileName}` : docNameRoot; - children.push(parseNoteMeta(childMeta, newDocNameRoot)); + const item = parseNoteMeta(childMeta, newDocNameRoot); + if (item) { + children.push(item); + } } item.children = children;