@formicoidea/labre-core 0.31.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_pkgs/affine-block-callout/callout-block.d.ts +6 -0
- package/dist/_pkgs/affine-block-callout/callout-block.js +25 -3
- package/dist/_pkgs/affine-block-callout/callout-keymap.js +59 -19
- package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.d.ts +20 -0
- package/dist/_pkgs/affine-block-callout/commands/callout-to-paragraph.js +60 -0
- package/dist/_pkgs/affine-block-callout/commands/split-callout.d.ts +17 -0
- package/dist/_pkgs/affine-block-callout/commands/split-callout.js +42 -0
- package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +9 -6
- package/dist/_pkgs/affine-block-callout/emoji-margin.d.ts +9 -0
- package/dist/_pkgs/affine-block-callout/emoji-margin.js +36 -0
- package/dist/_pkgs/affine-block-callout/emoji-menu.d.ts +5 -1
- package/dist/_pkgs/affine-block-callout/emoji-menu.js +5 -0
- package/dist/_pkgs/affine-block-code/code-block.d.ts +14 -0
- package/dist/_pkgs/affine-block-code/code-block.js +44 -6
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.d.ts +2 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +23 -14
- package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.d.ts +16 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/components/more-menu.js +93 -0
- package/dist/_pkgs/affine-block-code/code-toolbar/config.js +52 -5
- package/dist/_pkgs/affine-block-code/effects.d.ts +2 -0
- package/dist/_pkgs/affine-block-code/effects.js +2 -0
- package/dist/_pkgs/affine-block-code/highlight/affine-code-unit.js +6 -1
- package/dist/_pkgs/affine-block-code/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-code/index.js +1 -0
- package/dist/_pkgs/affine-block-code/line-numbers.d.ts +25 -0
- package/dist/_pkgs/affine-block-code/line-numbers.js +27 -0
- package/dist/_pkgs/affine-block-code/styles.js +31 -0
- package/dist/_pkgs/affine-block-data-view/data-view-block.js +1 -0
- package/dist/_pkgs/affine-block-database/components/title/index.js +4 -1
- package/dist/_pkgs/affine-block-database/configs/slash-menu.js +28 -1
- package/dist/_pkgs/affine-block-database/database-block.js +13 -0
- package/dist/_pkgs/affine-block-database/properties/paste-url.d.ts +24 -0
- package/dist/_pkgs/affine-block-database/properties/paste-url.js +98 -0
- package/dist/_pkgs/affine-block-database/properties/rich-text/cell-renderer.js +9 -19
- package/dist/_pkgs/affine-block-database/properties/title/text.js +20 -25
- package/dist/_pkgs/affine-block-database/views/index.js +1 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-text-block.js +10 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.d.ts +3 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +48 -1
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.d.ts +17 -0
- package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/font-size.js +24 -0
- package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.d.ts +9 -0
- package/dist/_pkgs/affine-block-embed-doc/common/doc-trashed.js +10 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +8 -4
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.d.ts +4 -0
- package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +22 -3
- package/dist/_pkgs/affine-block-frame/frame-manager.d.ts +13 -0
- package/dist/_pkgs/affine-block-frame/frame-manager.js +32 -2
- package/dist/_pkgs/affine-block-latex/styles.js +6 -1
- package/dist/_pkgs/affine-block-note/note-edgeless-block.d.ts +9 -0
- package/dist/_pkgs/affine-block-note/note-edgeless-block.js +29 -1
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.d.ts +37 -0
- package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +168 -0
- package/dist/_pkgs/affine-block-root/commands/reading-commands.d.ts +23 -0
- package/dist/_pkgs/affine-block-root/commands/reading-commands.js +107 -0
- package/dist/_pkgs/affine-block-root/commands/tag-commands.d.ts +47 -0
- package/dist/_pkgs/affine-block-root/commands/tag-commands.js +159 -0
- package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -2
- package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/render-linked-doc.js +1 -1
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +26 -1
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +11 -2
- package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-service.js +14 -0
- package/dist/_pkgs/affine-block-root/edgeless/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/index.js +1 -0
- package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.d.ts +21 -0
- package/dist/_pkgs/affine-block-root/edgeless/reserved-keys.js +34 -0
- package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.d.ts +7 -1
- package/dist/_pkgs/affine-block-root/edgeless/utils/clone-utils.js +11 -2
- package/dist/_pkgs/affine-block-root/index.d.ts +4 -1
- package/dist/_pkgs/affine-block-root/index.js +4 -1
- package/dist/_pkgs/affine-block-root/keyboard/commands.d.ts +2 -0
- package/dist/_pkgs/affine-block-root/keyboard/commands.js +147 -0
- package/dist/_pkgs/affine-block-root/view.js +13 -4
- package/dist/_pkgs/affine-block-surface/commands/reassociate-connectors.js +0 -1
- package/dist/_pkgs/affine-block-surface/effects.js +6 -0
- package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +5 -2
- package/dist/_pkgs/affine-block-surface/element-model/index.js +4 -2
- package/dist/_pkgs/affine-block-surface/extensions/audit.d.ts +107 -0
- package/dist/_pkgs/affine-block-surface/extensions/audit.js +472 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.d.ts +14 -0
- package/dist/_pkgs/affine-block-surface/extensions/crud-extension.js +27 -0
- package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.d.ts +133 -0
- package/dist/_pkgs/affine-block-surface/extensions/editor-anchored-panel.js +326 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +13 -0
- package/dist/_pkgs/affine-block-surface/extensions/index.js +13 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.d.ts +146 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality-widget.js +528 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality.d.ts +109 -0
- package/dist/_pkgs/affine-block-surface/extensions/map-quality.js +84 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.d.ts +15 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-toolbar.js +158 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +145 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +590 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +494 -0
- package/dist/_pkgs/affine-block-surface/extensions/reading.js +767 -0
- package/dist/_pkgs/affine-block-surface/extensions/spotlight.d.ts +45 -0
- package/dist/_pkgs/affine-block-surface/extensions/spotlight.js +177 -0
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.d.ts +10 -0
- package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +295 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.d.ts +27 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation-toolbar.js +361 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +1340 -0
- package/dist/_pkgs/affine-block-surface/extensions/validation.js +3009 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.d.ts +286 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-detail-widget.js +907 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.d.ts +80 -0
- package/dist/_pkgs/affine-block-surface/extensions/violation-timeline.js +123 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +321 -0
- package/dist/_pkgs/affine-block-surface/framework-background/def.js +81 -0
- package/dist/_pkgs/affine-block-surface/framework-background/facts.d.ts +188 -0
- package/dist/_pkgs/affine-block-surface/framework-background/facts.js +284 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +5 -0
- package/dist/_pkgs/affine-block-surface/framework-background/index.js +5 -0
- package/dist/_pkgs/affine-block-surface/framework-background/interaction.d.ts +12 -0
- package/dist/_pkgs/affine-block-surface/framework-background/interaction.js +24 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +59 -0
- package/dist/_pkgs/affine-block-surface/framework-background/labels.js +117 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.d.ts +8 -0
- package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +238 -0
- package/dist/_pkgs/affine-block-surface/index.d.ts +1 -0
- package/dist/_pkgs/affine-block-surface/index.js +1 -0
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +69 -3
- package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +333 -44
- package/dist/_pkgs/affine-block-surface/renderer/dom-renderer.js +18 -2
- package/dist/_pkgs/affine-block-surface/tool/default-tool.js +8 -0
- package/dist/_pkgs/affine-block-surface/utils/font.js +9 -3
- package/dist/_pkgs/affine-block-surface/view.d.ts +17 -0
- package/dist/_pkgs/affine-block-surface/view.js +57 -2
- package/dist/_pkgs/affine-block-table/selection-controller.d.ts +6 -0
- package/dist/_pkgs/affine-block-table/selection-controller.js +24 -1
- package/dist/_pkgs/affine-block-table/table-block.js +8 -2
- package/dist/_pkgs/affine-block-table/table-cell.js +5 -6
- package/dist/_pkgs/affine-block-table/table-keymap.d.ts +18 -0
- package/dist/_pkgs/affine-block-table/table-keymap.js +41 -0
- package/dist/_pkgs/affine-block-table/utils.d.ts +7 -0
- package/dist/_pkgs/affine-block-table/utils.js +12 -0
- package/dist/_pkgs/affine-block-table/view.js +2 -0
- package/dist/_pkgs/affine-components/caption/captioned-block-component.js +2 -1
- package/dist/_pkgs/affine-components/context-menu/button.d.ts +7 -0
- package/dist/_pkgs/affine-components/context-menu/button.js +7 -2
- package/dist/_pkgs/affine-components/context-menu/input.d.ts +4 -0
- package/dist/_pkgs/affine-components/context-menu/input.js +12 -0
- package/dist/_pkgs/affine-components/context-menu/menu-all.d.ts +2 -0
- package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +8 -1
- package/dist/_pkgs/affine-components/context-menu/sub-menu.js +3 -0
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/highlight-duotone-icon.js +8 -8
- package/dist/_pkgs/affine-components/highlight-dropdown-menu/text-duotone-icon.js +11 -11
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +28 -0
- package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +231 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-data.d.ts +40 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-data.js +99 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +32 -0
- package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +276 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-data.d.ts +34 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-data.js +83 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +39 -0
- package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +233 -0
- package/dist/_pkgs/affine-components/icon-picker/index.d.ts +8 -0
- package/dist/_pkgs/affine-components/icon-picker/index.js +15 -0
- package/dist/_pkgs/affine-components/icon-picker/recent-store.d.ts +8 -0
- package/dist/_pkgs/affine-components/icon-picker/recent-store.js +41 -0
- package/dist/_pkgs/affine-components/icon-picker/styles.d.ts +5 -0
- package/dist/_pkgs/affine-components/icon-picker/styles.js +166 -0
- package/dist/_pkgs/affine-components/icon-picker/types.d.ts +22 -0
- package/dist/_pkgs/affine-components/icon-picker/types.js +10 -0
- package/dist/_pkgs/affine-components/icons/text.js +426 -426
- package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.d.ts +1 -0
- package/dist/_pkgs/affine-components/portal/portal.d.ts +1 -1
- package/dist/_pkgs/affine-components/toolbar/menu-button.js +1 -0
- package/dist/_pkgs/affine-components/toolbar/toolbar.js +11 -10
- package/dist/_pkgs/affine-foundation/view.js +11 -2
- package/dist/_pkgs/affine-gfx-brush/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/index.js +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/brush.js +11 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/highlighter.js +11 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/index.js +2 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.d.ts +14 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/dom/shared.js +54 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-brush/renderer/index.js +4 -0
- package/dist/_pkgs/affine-gfx-brush/view.d.ts +14 -0
- package/dist/_pkgs/affine-gfx-brush/view.js +29 -3
- package/dist/_pkgs/affine-gfx-connector/connector-manager.js +32 -6
- package/dist/_pkgs/affine-gfx-connector/connector-tool.d.ts +7 -0
- package/dist/_pkgs/affine-gfx-connector/connector-tool.js +2 -1
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.d.ts +123 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-reveal.js +281 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.d.ts +65 -0
- package/dist/_pkgs/affine-gfx-connector/direction/direction-widget.js +395 -0
- package/dist/_pkgs/affine-gfx-connector/direction/index.d.ts +4 -0
- package/dist/_pkgs/affine-gfx-connector/direction/index.js +4 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +72 -0
- package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +187 -0
- package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.d.ts +69 -0
- package/dist/_pkgs/affine-gfx-connector/direction/typed-edge.js +66 -0
- package/dist/_pkgs/affine-gfx-connector/effects.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-connector/effects.js +2 -0
- package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +78 -41
- package/dist/_pkgs/affine-gfx-connector/index.d.ts +1 -0
- package/dist/_pkgs/affine-gfx-connector/index.js +1 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +50 -0
- package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +67 -1
- package/dist/_pkgs/affine-gfx-connector/view.js +16 -0
- package/dist/_pkgs/affine-gfx-group/command/group-api.js +150 -62
- package/dist/_pkgs/affine-gfx-group/text/edgeless-group-title-editor.js +4 -1
- package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.d.ts +16 -0
- package/dist/_pkgs/affine-gfx-pointer/tools/pan-tool.js +102 -32
- package/dist/_pkgs/affine-gfx-shape/commands.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-shape/commands.js +33 -0
- package/dist/_pkgs/affine-gfx-shape/element-renderer/shape-dom/index.js +48 -19
- package/dist/_pkgs/affine-gfx-shape/index.d.ts +1 -1
- package/dist/_pkgs/affine-gfx-shape/index.js +1 -1
- package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.d.ts +26 -0
- package/dist/_pkgs/affine-gfx-shape/text/edgeless-shape-text-editor.js +124 -13
- package/dist/_pkgs/affine-gfx-shape/view.js +3 -3
- package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.d.ts +2 -0
- package/dist/_pkgs/affine-gfx-template/toolbar/template-tool-button.js +18 -1
- package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +9 -5
- package/dist/_pkgs/affine-inline-latex/command.js +46 -26
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.d.ts +10 -0
- package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +23 -0
- package/dist/_pkgs/affine-inline-link/link-node/affine-link.js +4 -1
- package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.d.ts +3 -0
- package/dist/_pkgs/affine-inline-preset/adapters/html/html-inline.js +29 -1
- package/dist/_pkgs/affine-model/blocks/code/code-model.d.ts +1 -0
- package/dist/_pkgs/affine-model/blocks/code/code-model.js +1 -0
- package/dist/_pkgs/affine-model/elements/connector/connector.js +24 -0
- package/dist/_pkgs/affine-model/elements/edgy/board.d.ts +32 -0
- package/dist/_pkgs/affine-model/elements/edgy/board.js +112 -0
- package/dist/_pkgs/affine-model/elements/edgy/facets.d.ts +12 -0
- package/dist/_pkgs/affine-model/elements/edgy/facets.js +25 -1
- package/dist/_pkgs/affine-model/elements/edgy/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/edgy/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +42 -0
- package/dist/_pkgs/affine-model/elements/framework-background/background.js +42 -0
- package/dist/_pkgs/affine-model/elements/framework-background/index.d.ts +1 -0
- package/dist/_pkgs/affine-model/elements/framework-background/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/index.d.ts +3 -1
- package/dist/_pkgs/affine-model/elements/index.js +1 -0
- package/dist/_pkgs/affine-model/elements/mindmap/mindmap.js +8 -3
- package/dist/_pkgs/affine-model/elements/mindmap/style.d.ts +10 -0
- package/dist/_pkgs/affine-model/elements/mindmap/style.js +8 -0
- package/dist/_pkgs/affine-model/elements/wardley/wardley.d.ts +21 -29
- package/dist/_pkgs/affine-model/elements/wardley/wardley.js +41 -48
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.d.ts +6 -1
- package/dist/_pkgs/affine-shared/adapters/markdown/delta-converter.js +160 -2
- package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -1
- package/dist/_pkgs/affine-shared/adapters/types/delta-converter.d.ts +1 -0
- package/dist/_pkgs/affine-shared/adapters/utils/color.d.ts +24 -0
- package/dist/_pkgs/affine-shared/adapters/utils/color.js +280 -0
- package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
- package/dist/_pkgs/affine-shared/commands/block-crud/get-selected-blocks.js +10 -2
- package/dist/_pkgs/affine-shared/services/audit-service.d.ts +300 -0
- package/dist/_pkgs/affine-shared/services/audit-service.js +228 -0
- package/dist/_pkgs/affine-shared/services/edit-props-store.d.ts +7 -0
- package/dist/_pkgs/affine-shared/services/edit-props-store.js +11 -0
- package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.d.ts +26 -1
- package/dist/_pkgs/affine-shared/services/font-loader/font-loader-service.js +124 -7
- package/dist/_pkgs/affine-shared/services/index.d.ts +5 -0
- package/dist/_pkgs/affine-shared/services/index.js +5 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.d.ts +129 -0
- package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +311 -0
- package/dist/_pkgs/affine-shared/services/pivot-properties-service.d.ts +217 -0
- package/dist/_pkgs/affine-shared/services/pivot-properties-service.js +114 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/code-block.d.ts +1 -1
- package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +182 -0
- package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
- package/dist/_pkgs/affine-shared/services/telemetry-service/types.d.ts +6 -1
- package/dist/_pkgs/affine-shared/services/toolbar-service/action.d.ts +10 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/layout.d.ts +134 -0
- package/dist/_pkgs/affine-shared/services/toolbar-service/layout.js +146 -0
- package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +68 -0
- package/dist/_pkgs/affine-shared/services/translation-service/index.js +39 -0
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +155 -0
- package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +254 -0
- package/dist/_pkgs/affine-shared/utils/dom/point-to-range.d.ts +4 -0
- package/dist/_pkgs/affine-shared/utils/dom/point-to-range.js +58 -2
- package/dist/_pkgs/affine-shared/utils/dom/viewport.d.ts +60 -0
- package/dist/_pkgs/affine-shared/utils/dom/viewport.js +58 -0
- package/dist/_pkgs/affine-shared/utils/print-to-pdf.d.ts +21 -0
- package/dist/_pkgs/affine-shared/utils/print-to-pdf.js +166 -32
- package/dist/_pkgs/affine-shared/utils/zod-schema.d.ts +7 -0
- package/dist/_pkgs/affine-shared/utils/zod-schema.js +27 -1
- package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.d.ts +19 -10
- package/dist/_pkgs/affine-widget-drag-handle/watchers/edgeless-watcher.js +122 -23
- package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.d.ts +2 -0
- package/dist/_pkgs/affine-widget-drag-handle/watchers/pointer-event-watcher.js +25 -4
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +10 -5
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.d.ts +15 -1
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +37 -32
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +5 -4
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-selected-rect.js +19 -9
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.d.ts +16 -2
- package/dist/_pkgs/affine-widget-edgeless-selected-rect/utils.js +19 -2
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +1 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +1 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +38 -0
- package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +99 -0
- package/dist/_pkgs/affine-widget-frame-title/edgeless-frame-title-editor.js +4 -1
- package/dist/_pkgs/affine-widget-keyboard-toolbar/icons.js +98 -98
- package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +2 -15
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.d.ts +10 -1
- package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +133 -6
- package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.d.ts +10 -0
- package/dist/_pkgs/affine-widget-linked-doc/transformers/utils.js +120 -3
- package/dist/_pkgs/affine-widget-linked-doc/utils.d.ts +12 -0
- package/dist/_pkgs/affine-widget-linked-doc/utils.js +33 -0
- package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +6 -4
- package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +8 -4
- package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +9 -0
- package/dist/_pkgs/affine-widget-slash-menu/utils.js +24 -0
- package/dist/_pkgs/affine-widget-toolbar/toolbar.d.ts +6 -0
- package/dist/_pkgs/affine-widget-toolbar/toolbar.js +34 -6
- package/dist/_pkgs/affine-widget-toolbar/utils.d.ts +146 -3
- package/dist/_pkgs/affine-widget-toolbar/utils.js +738 -56
- package/dist/_pkgs/data-view/core/common/property-menu.js +3 -16
- package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.d.ts +4 -0
- package/dist/_pkgs/data-view/core/component/tags/multi-tag-select.js +28 -1
- package/dist/_pkgs/data-view/core/data-view.d.ts +3 -1
- package/dist/_pkgs/data-view/core/data-view.js +25 -3
- package/dist/_pkgs/data-view/core/detail/field.js +2 -2
- package/dist/_pkgs/data-view/core/detail/selection.d.ts +4 -2
- package/dist/_pkgs/data-view/core/detail/selection.js +23 -7
- package/dist/_pkgs/data-view/core/effect.js +2 -0
- package/dist/_pkgs/data-view/core/filter/eval.js +36 -23
- package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.d.ts +7 -0
- package/dist/_pkgs/data-view/core/filter/filter-fn/matcher.js +12 -0
- package/dist/_pkgs/data-view/core/group-by/compare-date-keys.d.ts +11 -0
- package/dist/_pkgs/data-view/core/group-by/compare-date-keys.js +55 -0
- package/dist/_pkgs/data-view/core/group-by/define.d.ts +6 -0
- package/dist/_pkgs/data-view/core/group-by/define.js +114 -0
- package/dist/_pkgs/data-view/core/group-by/matcher.d.ts +7 -0
- package/dist/_pkgs/data-view/core/group-by/matcher.js +13 -0
- package/dist/_pkgs/data-view/core/group-by/renderer/boolean-group.js +11 -11
- package/dist/_pkgs/data-view/core/group-by/renderer/date-group.d.ts +9 -0
- package/dist/_pkgs/data-view/core/group-by/renderer/date-group.js +97 -0
- package/dist/_pkgs/data-view/core/group-by/setting.js +86 -7
- package/dist/_pkgs/data-view/core/group-by/trait.d.ts +34 -0
- package/dist/_pkgs/data-view/core/group-by/trait.js +106 -10
- package/dist/_pkgs/data-view/core/utils/menu-title.js +17 -17
- package/dist/_pkgs/data-view/property-presets/multi-select/cell-renderer.js +3 -1
- package/dist/_pkgs/data-view/property-presets/number/define.js +2 -1
- package/dist/_pkgs/data-view/property-presets/select/cell-renderer.js +3 -1
- package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.d.ts +70 -0
- package/dist/_pkgs/data-view/view-presets/calendar/calendar-view-manager.js +449 -0
- package/dist/_pkgs/data-view/view-presets/calendar/define.d.ts +10 -0
- package/dist/_pkgs/data-view/view-presets/calendar/define.js +27 -0
- package/dist/_pkgs/data-view/view-presets/calendar/effect.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/effect.js +4 -0
- package/dist/_pkgs/data-view/view-presets/calendar/index.d.ts +6 -0
- package/dist/_pkgs/data-view/view-presets/calendar/index.js +6 -0
- package/dist/_pkgs/data-view/view-presets/calendar/layout.d.ts +37 -0
- package/dist/_pkgs/data-view/view-presets/calendar/layout.js +138 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.d.ts +7 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/actions.js +68 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.d.ts +32 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/dnd.js +159 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/effect.js +7 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/hit-test.js +28 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/styles.js +707 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/view.d.ts +89 -0
- package/dist/_pkgs/data-view/view-presets/calendar/pc/view.js +837 -0
- package/dist/_pkgs/data-view/view-presets/calendar/renderer.d.ts +2 -0
- package/dist/_pkgs/data-view/view-presets/calendar/renderer.js +8 -0
- package/dist/_pkgs/data-view/view-presets/calendar/source.d.ts +8 -0
- package/dist/_pkgs/data-view/view-presets/calendar/source.js +3 -0
- package/dist/_pkgs/data-view/view-presets/calendar/types.d.ts +79 -0
- package/dist/_pkgs/data-view/view-presets/calendar/types.js +1 -0
- package/dist/_pkgs/data-view/view-presets/convert.js +28 -0
- package/dist/_pkgs/data-view/view-presets/effect.js +2 -0
- package/dist/_pkgs/data-view/view-presets/index.d.ts +2 -0
- package/dist/_pkgs/data-view/view-presets/index.js +3 -0
- package/dist/_pkgs/data-view/view-presets/kanban/kanban-view-manager.js +3 -1
- package/dist/_pkgs/data-view/view-presets/kanban/mobile/cell.js +2 -2
- package/dist/_pkgs/data-view/view-presets/table/collapsed-state.d.ts +18 -0
- package/dist/_pkgs/data-view/view-presets/table/collapsed-state.js +36 -0
- package/dist/_pkgs/data-view/view-presets/table/mobile/cell.js +2 -2
- package/dist/_pkgs/data-view/view-presets/table/mobile/group.d.ts +11 -0
- package/dist/_pkgs/data-view/view-presets/table/mobile/group.js +87 -4
- package/dist/_pkgs/data-view/view-presets/table/pc/cell.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/cell.js +11 -2
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/controller/hotkeys.js +39 -33
- package/dist/_pkgs/data-view/view-presets/table/pc/group.d.ts +10 -0
- package/dist/_pkgs/data-view/view-presets/table/pc/group.js +84 -5
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.d.ts +1 -0
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/controller/hotkeys.js +39 -33
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/group/top/group-title.js +18 -18
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/pc-virtual/row/cell.js +8 -0
- package/dist/_pkgs/data-view/view-presets/table/table-view-manager.js +3 -1
- package/dist/_pkgs/data-view/view-presets/table/utils.d.ts +3 -0
- package/dist/_pkgs/data-view/view-presets/table/utils.js +16 -1
- package/dist/_pkgs/data-view/widget-presets/tools/presets/view-options/view-options.js +3 -1
- package/dist/_pkgs/global/gfx/curve.js +4 -3
- package/dist/_pkgs/std/clipboard/clipboard.js +13 -3
- package/dist/_pkgs/std/clipboard/utils.d.ts +5 -0
- package/dist/_pkgs/std/clipboard/utils.js +7 -0
- package/dist/_pkgs/std/event/dispatcher.js +27 -1
- package/dist/_pkgs/std/event/keymap.js +16 -6
- package/dist/_pkgs/std/extension/command-registry.d.ts +321 -0
- package/dist/_pkgs/std/extension/command-registry.js +233 -0
- package/dist/_pkgs/std/extension/dnd/index.d.ts +1 -1
- package/dist/_pkgs/std/extension/index.d.ts +2 -0
- package/dist/_pkgs/std/extension/index.js +2 -0
- package/dist/_pkgs/std/extension/translation-manifest.d.ts +49 -0
- package/dist/_pkgs/std/extension/translation-manifest.js +71 -0
- package/dist/_pkgs/std/gfx/index.d.ts +7 -3
- package/dist/_pkgs/std/gfx/index.js +6 -2
- package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +6 -1
- package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +8 -0
- package/dist/_pkgs/std/gfx/interactivity/manager.js +18 -0
- package/dist/_pkgs/std/gfx/layer.d.ts +1 -1
- package/dist/_pkgs/std/gfx/layer.js +1 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/field.js +9 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/index.d.ts +2 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/index.js +2 -2
- package/dist/_pkgs/std/gfx/model/surface/decorators/local.d.ts +14 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/local.js +22 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/observer.d.ts +2 -0
- package/dist/_pkgs/std/gfx/model/surface/decorators/observer.js +40 -1
- package/dist/_pkgs/std/gfx/model/surface/element-model.d.ts +282 -0
- package/dist/_pkgs/std/gfx/model/surface/element-model.js +436 -25
- package/dist/_pkgs/std/gfx/model/surface/pivot.d.ts +48 -0
- package/dist/_pkgs/std/gfx/model/surface/pivot.js +34 -0
- package/dist/_pkgs/std/gfx/model/surface/role.d.ts +153 -0
- package/dist/_pkgs/std/gfx/model/surface/role.js +115 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +70 -0
- package/dist/_pkgs/std/gfx/model/surface/surface-model.js +304 -17
- package/dist/_pkgs/std/gfx/model/surface/tags.d.ts +77 -0
- package/dist/_pkgs/std/gfx/model/surface/tags.js +246 -0
- package/dist/_pkgs/std/gfx/perf.d.ts +10 -0
- package/dist/_pkgs/std/gfx/perf.js +30 -0
- package/dist/_pkgs/std/gfx/tool/tool-controller.d.ts +13 -0
- package/dist/_pkgs/std/gfx/tool/tool-controller.js +26 -0
- package/dist/_pkgs/std/gfx/viewport.d.ts +12 -0
- package/dist/_pkgs/std/gfx/viewport.js +19 -1
- package/dist/_pkgs/std/inline/services/event.d.ts +2 -0
- package/dist/_pkgs/std/inline/services/event.js +96 -21
- package/dist/_pkgs/std/utils/layer.js +2 -6
- package/dist/_pkgs/std/utils/tree.d.ts +14 -0
- package/dist/_pkgs/std/utils/tree.js +59 -8
- package/dist/_pkgs/std/view/element/gfx-block-component.js +23 -13
- package/dist/_pkgs/store/extension/workspace/workspace-meta.d.ts +10 -0
- package/dist/_pkgs/store/model/block/flat-sync-controller.js +2 -12
- package/dist/_pkgs/store/model/store/crud.js +7 -4
- package/dist/_pkgs/store/reactive/flat-native-y/index.d.ts +1 -1
- package/dist/_pkgs/store/reactive/flat-native-y/index.js +24 -2
- package/dist/commands.d.ts +58 -0
- package/dist/commands.js +66 -0
- package/dist/extensions/command-telemetry.d.ts +21 -0
- package/dist/extensions/command-telemetry.js +89 -0
- package/dist/extensions/store.d.ts +9 -4
- package/dist/extensions/store.js +27 -24
- package/dist/extensions/view.d.ts +9 -4
- package/dist/extensions/view.js +23 -8
- package/dist/flags.d.ts +98 -21
- package/dist/flags.js +103 -22
- package/dist/frameworks.d.ts +45 -0
- package/dist/frameworks.js +154 -0
- package/dist/schemas.d.ts +8 -5
- package/dist/schemas.js +28 -32
- package/dist/shortcuts.d.ts +16 -16
- package/dist/shortcuts.js +8 -36
- package/dist/translations.d.ts +56 -0
- package/dist/translations.js +112 -0
- package/package.json +16 -4
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.d.ts +0 -8
- package/dist/_pkgs/affine-block-root/keyboard/shortcuts.js +0 -48
- package/dist/_pkgs/affine-gfx-shape/shortcuts.d.ts +0 -6
- package/dist/_pkgs/affine-gfx-shape/shortcuts.js +0 -28
- package/dist/_pkgs/data-view/core/utils/cache.d.ts +0 -5
- package/dist/_pkgs/data-view/core/utils/cache.js +0 -28
|
@@ -19,105 +19,105 @@ export function HeadingIcon(i) {
|
|
|
19
19
|
return Heading1Icon();
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
export const HighLightDuotoneIcon = (color) => html `<svg
|
|
23
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
24
|
-
width="24"
|
|
25
|
-
height="24"
|
|
26
|
-
viewBox="0 0 24 24"
|
|
27
|
-
fill="none"
|
|
28
|
-
>
|
|
29
|
-
<path
|
|
30
|
-
d="M5.8291 16.441L7.91757 18.5295L6.57811 19.8689C6.53119 19.9158 6.46406 19.9364 6.3989 19.9239L3.37036 19.3412C3.21285 19.3109 3.15331 19.1168 3.26673 19.0034L5.8291 16.441Z"
|
|
31
|
-
fill="${color}"
|
|
32
|
-
/>
|
|
33
|
-
<path
|
|
34
|
-
fill-rule="evenodd"
|
|
35
|
-
clip-rule="evenodd"
|
|
36
|
-
d="M19.0095 3.63759C17.9526 2.58067 16.26 2.516 15.1255 3.48919L7.32135 10.1837C6.35438 11.0132 6.05275 12.3823 6.58163 13.5414L6.73501 13.8775L5.67697 14.9356C5.30169 15.3108 5.30169 15.9193 5.67697 16.2946L8.06379 18.6814C8.43907 19.0567 9.04752 19.0567 9.4228 18.6814L10.4808 17.6234L10.8171 17.7768C11.9761 18.3057 13.3452 18.0041 14.1747 17.0371L20.8692 9.23294C21.8424 8.09846 21.7778 6.40588 20.7208 5.34896L19.0095 3.63759ZM16.1021 4.62769C16.6415 4.16498 17.4463 4.19572 17.9488 4.69825L19.6602 6.40962C20.1627 6.91215 20.1935 7.7169 19.7307 8.25631L14.6424 14.188L10.1704 9.71604L16.1021 4.62769ZM9.02857 10.6955L8.29798 11.3222C7.83822 11.7166 7.6948 12.3676 7.94627 12.9187L8.29785 13.6892C8.4348 13.9893 8.37947 14.3544 8.13372 14.6001L7.11878 15.6151L8.74329 17.2396L9.75812 16.2247C10.004 15.9789 10.3691 15.9236 10.6693 16.0606L11.4398 16.4122C11.9908 16.6636 12.6418 16.5202 13.0362 16.0605L13.6629 15.3299L9.02857 10.6955Z"
|
|
37
|
-
fill="${cssVarV2('icon/primary')}"
|
|
38
|
-
/>
|
|
22
|
+
export const HighLightDuotoneIcon = (color) => html `<svg
|
|
23
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
24
|
+
width="24"
|
|
25
|
+
height="24"
|
|
26
|
+
viewBox="0 0 24 24"
|
|
27
|
+
fill="none"
|
|
28
|
+
>
|
|
29
|
+
<path
|
|
30
|
+
d="M5.8291 16.441L7.91757 18.5295L6.57811 19.8689C6.53119 19.9158 6.46406 19.9364 6.3989 19.9239L3.37036 19.3412C3.21285 19.3109 3.15331 19.1168 3.26673 19.0034L5.8291 16.441Z"
|
|
31
|
+
fill="${color}"
|
|
32
|
+
/>
|
|
33
|
+
<path
|
|
34
|
+
fill-rule="evenodd"
|
|
35
|
+
clip-rule="evenodd"
|
|
36
|
+
d="M19.0095 3.63759C17.9526 2.58067 16.26 2.516 15.1255 3.48919L7.32135 10.1837C6.35438 11.0132 6.05275 12.3823 6.58163 13.5414L6.73501 13.8775L5.67697 14.9356C5.30169 15.3108 5.30169 15.9193 5.67697 16.2946L8.06379 18.6814C8.43907 19.0567 9.04752 19.0567 9.4228 18.6814L10.4808 17.6234L10.8171 17.7768C11.9761 18.3057 13.3452 18.0041 14.1747 17.0371L20.8692 9.23294C21.8424 8.09846 21.7778 6.40588 20.7208 5.34896L19.0095 3.63759ZM16.1021 4.62769C16.6415 4.16498 17.4463 4.19572 17.9488 4.69825L19.6602 6.40962C20.1627 6.91215 20.1935 7.7169 19.7307 8.25631L14.6424 14.188L10.1704 9.71604L16.1021 4.62769ZM9.02857 10.6955L8.29798 11.3222C7.83822 11.7166 7.6948 12.3676 7.94627 12.9187L8.29785 13.6892C8.4348 13.9893 8.37947 14.3544 8.13372 14.6001L7.11878 15.6151L8.74329 17.2396L9.75812 16.2247C10.004 15.9789 10.3691 15.9236 10.6693 16.0606L11.4398 16.4122C11.9908 16.6636 12.6418 16.5202 13.0362 16.0605L13.6629 15.3299L9.02857 10.6955Z"
|
|
37
|
+
fill="${cssVarV2('icon/primary')}"
|
|
38
|
+
/>
|
|
39
39
|
</svg>`;
|
|
40
|
-
export const TextColorIcon = (color) => html `<svg
|
|
41
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
42
|
-
width="32"
|
|
43
|
-
height="32"
|
|
44
|
-
viewBox="0 0 32 32"
|
|
45
|
-
fill="none"
|
|
46
|
-
>
|
|
47
|
-
<path
|
|
48
|
-
fill-rule="evenodd"
|
|
49
|
-
clip-rule="evenodd"
|
|
50
|
-
d="M14.0627 6.16255C14.385 5.30291 15.2068 4.7334 16.1249 4.7334C17.043 4.7334 17.8648 5.30291 18.1872 6.16255L23.7279 20.9378C23.9219 21.455 23.6599 22.0314 23.1427 22.2253C22.6256 22.4192 22.0492 22.1572 21.8553 21.6401L20.2289 17.3031H12.021L10.3946 21.6401C10.2007 22.1572 9.62428 22.4192 9.10716 22.2253C8.59004 22.0314 8.32803 21.455 8.52195 20.9378L14.0627 6.16255ZM12.771 15.3031H19.4789L16.3146 6.8648C16.2849 6.78576 16.2094 6.7334 16.1249 6.7334C16.0405 6.7334 15.965 6.78576 15.9353 6.8648L12.771 15.3031Z"
|
|
51
|
-
fill="${cssVarV2('icon/primary')}"
|
|
52
|
-
/>
|
|
53
|
-
<rect
|
|
54
|
-
x="5.45837"
|
|
55
|
-
y="24"
|
|
56
|
-
width="21.3333"
|
|
57
|
-
height="3.33333"
|
|
58
|
-
rx="1"
|
|
59
|
-
fill=${color}
|
|
60
|
-
/>
|
|
40
|
+
export const TextColorIcon = (color) => html `<svg
|
|
41
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
42
|
+
width="32"
|
|
43
|
+
height="32"
|
|
44
|
+
viewBox="0 0 32 32"
|
|
45
|
+
fill="none"
|
|
46
|
+
>
|
|
47
|
+
<path
|
|
48
|
+
fill-rule="evenodd"
|
|
49
|
+
clip-rule="evenodd"
|
|
50
|
+
d="M14.0627 6.16255C14.385 5.30291 15.2068 4.7334 16.1249 4.7334C17.043 4.7334 17.8648 5.30291 18.1872 6.16255L23.7279 20.9378C23.9219 21.455 23.6599 22.0314 23.1427 22.2253C22.6256 22.4192 22.0492 22.1572 21.8553 21.6401L20.2289 17.3031H12.021L10.3946 21.6401C10.2007 22.1572 9.62428 22.4192 9.10716 22.2253C8.59004 22.0314 8.32803 21.455 8.52195 20.9378L14.0627 6.16255ZM12.771 15.3031H19.4789L16.3146 6.8648C16.2849 6.78576 16.2094 6.7334 16.1249 6.7334C16.0405 6.7334 15.965 6.78576 15.9353 6.8648L12.771 15.3031Z"
|
|
51
|
+
fill="${cssVarV2('icon/primary')}"
|
|
52
|
+
/>
|
|
53
|
+
<rect
|
|
54
|
+
x="5.45837"
|
|
55
|
+
y="24"
|
|
56
|
+
width="21.3333"
|
|
57
|
+
height="3.33333"
|
|
58
|
+
rx="1"
|
|
59
|
+
fill=${color}
|
|
60
|
+
/>
|
|
61
61
|
</svg>`;
|
|
62
|
-
export const TextBackgroundDuotoneIcon = (color) => html `<svg
|
|
63
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
64
|
-
width="32"
|
|
65
|
-
height="32"
|
|
66
|
-
viewBox="0 0 32 32"
|
|
67
|
-
fill="none"
|
|
68
|
-
>
|
|
69
|
-
<path
|
|
70
|
-
fill-rule="evenodd"
|
|
71
|
-
clip-rule="evenodd"
|
|
72
|
-
d="M4.57507 7.33336C4.57507 5.60287 5.97791 4.20003 7.70841 4.20003H25.0417C26.7722 4.20003 28.1751 5.60287 28.1751 7.33336V24.6667C28.1751 26.3972 26.7722 27.8 25.0417 27.8H7.70841C5.97791 27.8 4.57507 26.3972 4.57507 24.6667V7.33336Z"
|
|
73
|
-
fill="${color}"
|
|
74
|
-
/>
|
|
75
|
-
<path
|
|
76
|
-
fill-rule="evenodd"
|
|
77
|
-
clip-rule="evenodd"
|
|
78
|
-
d="M4.57495 7.33333C4.57495 5.60284 5.97779 4.2 7.70828 4.2H25.0416C26.7721 4.2 28.175 5.60284 28.175 7.33333V24.6667C28.175 26.3972 26.7721 27.8 25.0416 27.8H7.70828C5.97779 27.8 4.57495 26.3972 4.57495 24.6667V7.33333ZM7.70828 5.13333C6.49326 5.13333 5.50828 6.1183 5.50828 7.33333V24.6667C5.50828 25.8817 6.49326 26.8667 7.70828 26.8667H25.0416C26.2566 26.8667 27.2416 25.8817 27.2416 24.6667V7.33333C27.2416 6.1183 26.2566 5.13333 25.0416 5.13333H7.70828Z"
|
|
79
|
-
fill="black"
|
|
80
|
-
fill-opacity="0.22"
|
|
81
|
-
/>
|
|
82
|
-
<path
|
|
83
|
-
fill-rule="evenodd"
|
|
84
|
-
clip-rule="evenodd"
|
|
85
|
-
d="M14.5379 10.0064C14.8251 9.24064 15.5571 8.73332 16.375 8.73332C17.1928 8.73332 17.9249 9.24064 18.2121 10.0064L22.6446 21.8266C22.8386 22.3438 22.5766 22.9202 22.0594 23.1141C21.5423 23.308 20.9659 23.046 20.772 22.5289L19.5196 19.1891H13.2304L11.978 22.5289C11.7841 23.046 11.2076 23.308 10.6905 23.1141C10.1734 22.9202 9.9114 22.3438 10.1053 21.8266L14.5379 10.0064ZM13.9804 17.1891H18.7696L16.375 10.8035L13.9804 17.1891Z"
|
|
86
|
-
fill="${cssVarV2('text/primary')}"
|
|
87
|
-
/>
|
|
62
|
+
export const TextBackgroundDuotoneIcon = (color) => html `<svg
|
|
63
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
64
|
+
width="32"
|
|
65
|
+
height="32"
|
|
66
|
+
viewBox="0 0 32 32"
|
|
67
|
+
fill="none"
|
|
68
|
+
>
|
|
69
|
+
<path
|
|
70
|
+
fill-rule="evenodd"
|
|
71
|
+
clip-rule="evenodd"
|
|
72
|
+
d="M4.57507 7.33336C4.57507 5.60287 5.97791 4.20003 7.70841 4.20003H25.0417C26.7722 4.20003 28.1751 5.60287 28.1751 7.33336V24.6667C28.1751 26.3972 26.7722 27.8 25.0417 27.8H7.70841C5.97791 27.8 4.57507 26.3972 4.57507 24.6667V7.33336Z"
|
|
73
|
+
fill="${color}"
|
|
74
|
+
/>
|
|
75
|
+
<path
|
|
76
|
+
fill-rule="evenodd"
|
|
77
|
+
clip-rule="evenodd"
|
|
78
|
+
d="M4.57495 7.33333C4.57495 5.60284 5.97779 4.2 7.70828 4.2H25.0416C26.7721 4.2 28.175 5.60284 28.175 7.33333V24.6667C28.175 26.3972 26.7721 27.8 25.0416 27.8H7.70828C5.97779 27.8 4.57495 26.3972 4.57495 24.6667V7.33333ZM7.70828 5.13333C6.49326 5.13333 5.50828 6.1183 5.50828 7.33333V24.6667C5.50828 25.8817 6.49326 26.8667 7.70828 26.8667H25.0416C26.2566 26.8667 27.2416 25.8817 27.2416 24.6667V7.33333C27.2416 6.1183 26.2566 5.13333 25.0416 5.13333H7.70828Z"
|
|
79
|
+
fill="black"
|
|
80
|
+
fill-opacity="0.22"
|
|
81
|
+
/>
|
|
82
|
+
<path
|
|
83
|
+
fill-rule="evenodd"
|
|
84
|
+
clip-rule="evenodd"
|
|
85
|
+
d="M14.5379 10.0064C14.8251 9.24064 15.5571 8.73332 16.375 8.73332C17.1928 8.73332 17.9249 9.24064 18.2121 10.0064L22.6446 21.8266C22.8386 22.3438 22.5766 22.9202 22.0594 23.1141C21.5423 23.308 20.9659 23.046 20.772 22.5289L19.5196 19.1891H13.2304L11.978 22.5289C11.7841 23.046 11.2076 23.308 10.6905 23.1141C10.1734 22.9202 9.9114 22.3438 10.1053 21.8266L14.5379 10.0064ZM13.9804 17.1891H18.7696L16.375 10.8035L13.9804 17.1891Z"
|
|
86
|
+
fill="${cssVarV2('text/primary')}"
|
|
87
|
+
/>
|
|
88
88
|
</svg>`;
|
|
89
|
-
export const FigmaDuotoneIcon = html `<svg
|
|
90
|
-
width="32"
|
|
91
|
-
height="32"
|
|
92
|
-
viewBox="0 0 24 24"
|
|
93
|
-
fill="none"
|
|
94
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
95
|
-
>
|
|
96
|
-
<g id="Figma_Duotone">
|
|
97
|
-
<path
|
|
98
|
-
id="Vector"
|
|
99
|
-
d="M8.41842 22.5027C10.3047 22.5027 11.8356 20.9719 11.8356 19.0856V15.6685H8.41842C6.53216 15.6685 5.00128 17.1993 5.00128 19.0856C5.00128 20.9719 6.53216 22.5027 8.41842 22.5027Z"
|
|
100
|
-
fill="#0ACF83"
|
|
101
|
-
/>
|
|
102
|
-
<path
|
|
103
|
-
id="Vector_2"
|
|
104
|
-
d="M5.00128 12.2514C5.00128 10.3651 6.53216 8.83423 8.41842 8.83423H11.8356V15.6685H8.41842C6.53216 15.6685 5.00128 14.1376 5.00128 12.2514Z"
|
|
105
|
-
fill="#A259FF"
|
|
106
|
-
/>
|
|
107
|
-
<path
|
|
108
|
-
id="Vector_3"
|
|
109
|
-
d="M5.00146 5.41714C5.00146 3.53088 6.53234 2 8.4186 2H11.8357V8.83428H8.4186C6.53234 8.83428 5.00146 7.3034 5.00146 5.41714Z"
|
|
110
|
-
fill="#F24E1E"
|
|
111
|
-
/>
|
|
112
|
-
<path
|
|
113
|
-
id="Vector_4"
|
|
114
|
-
d="M11.8356 2H15.2527C17.139 2 18.6699 3.53088 18.6699 5.41714C18.6699 7.3034 17.139 8.83428 15.2527 8.83428H11.8356V2Z"
|
|
115
|
-
fill="#FF7262"
|
|
116
|
-
/>
|
|
117
|
-
<path
|
|
118
|
-
id="Vector_5"
|
|
119
|
-
d="M18.6699 12.2514C18.6699 14.1376 17.139 15.6685 15.2527 15.6685C13.3665 15.6685 11.8356 14.1376 11.8356 12.2514C11.8356 10.3651 13.3665 8.83423 15.2527 8.83423C17.139 8.83423 18.6699 10.3651 18.6699 12.2514Z"
|
|
120
|
-
fill="#1ABCFE"
|
|
121
|
-
/>
|
|
122
|
-
</g>
|
|
89
|
+
export const FigmaDuotoneIcon = html `<svg
|
|
90
|
+
width="32"
|
|
91
|
+
height="32"
|
|
92
|
+
viewBox="0 0 24 24"
|
|
93
|
+
fill="none"
|
|
94
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
95
|
+
>
|
|
96
|
+
<g id="Figma_Duotone">
|
|
97
|
+
<path
|
|
98
|
+
id="Vector"
|
|
99
|
+
d="M8.41842 22.5027C10.3047 22.5027 11.8356 20.9719 11.8356 19.0856V15.6685H8.41842C6.53216 15.6685 5.00128 17.1993 5.00128 19.0856C5.00128 20.9719 6.53216 22.5027 8.41842 22.5027Z"
|
|
100
|
+
fill="#0ACF83"
|
|
101
|
+
/>
|
|
102
|
+
<path
|
|
103
|
+
id="Vector_2"
|
|
104
|
+
d="M5.00128 12.2514C5.00128 10.3651 6.53216 8.83423 8.41842 8.83423H11.8356V15.6685H8.41842C6.53216 15.6685 5.00128 14.1376 5.00128 12.2514Z"
|
|
105
|
+
fill="#A259FF"
|
|
106
|
+
/>
|
|
107
|
+
<path
|
|
108
|
+
id="Vector_3"
|
|
109
|
+
d="M5.00146 5.41714C5.00146 3.53088 6.53234 2 8.4186 2H11.8357V8.83428H8.4186C6.53234 8.83428 5.00146 7.3034 5.00146 5.41714Z"
|
|
110
|
+
fill="#F24E1E"
|
|
111
|
+
/>
|
|
112
|
+
<path
|
|
113
|
+
id="Vector_4"
|
|
114
|
+
d="M11.8356 2H15.2527C17.139 2 18.6699 3.53088 18.6699 5.41714C18.6699 7.3034 17.139 8.83428 15.2527 8.83428H11.8356V2Z"
|
|
115
|
+
fill="#FF7262"
|
|
116
|
+
/>
|
|
117
|
+
<path
|
|
118
|
+
id="Vector_5"
|
|
119
|
+
d="M18.6699 12.2514C18.6699 14.1376 17.139 15.6685 15.2527 15.6685C13.3665 15.6685 11.8356 14.1376 11.8356 12.2514C11.8356 10.3651 13.3665 8.83423 15.2527 8.83423C17.139 8.83423 18.6699 10.3651 18.6699 12.2514Z"
|
|
120
|
+
fill="#1ABCFE"
|
|
121
|
+
/>
|
|
122
|
+
</g>
|
|
123
123
|
</svg> `;
|
|
@@ -46,7 +46,7 @@ import { property, query, queryAll, state } from 'lit/decorators.js';
|
|
|
46
46
|
import { styleMap } from 'lit/directives/style-map.js';
|
|
47
47
|
import throttle from 'lodash-es/throttle.js';
|
|
48
48
|
import { linkedDocPopoverStyles } from './styles.js';
|
|
49
|
-
import { resolveSignal } from './utils.js';
|
|
49
|
+
import { createLinkedDocKeydownInterceptor, resolveSignal, } from './utils.js';
|
|
50
50
|
let LinkedDocPopover = (() => {
|
|
51
51
|
let _classDecorators = [requiredProperties({
|
|
52
52
|
context: PropTypes.object,
|
|
@@ -162,20 +162,7 @@ let LinkedDocPopover = (() => {
|
|
|
162
162
|
createKeydownObserver({
|
|
163
163
|
target: eventSource,
|
|
164
164
|
signal: keydownObserverAbortController.signal,
|
|
165
|
-
interceptor: (
|
|
166
|
-
if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {
|
|
167
|
-
event.preventDefault();
|
|
168
|
-
event.stopPropagation();
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
if (event.key === 'Escape') {
|
|
172
|
-
this.context.close();
|
|
173
|
-
event.preventDefault();
|
|
174
|
-
event.stopPropagation();
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
next();
|
|
178
|
-
},
|
|
165
|
+
interceptor: createLinkedDocKeydownInterceptor(() => this.context.close()),
|
|
179
166
|
onInput: isComposition => {
|
|
180
167
|
if (isComposition) {
|
|
181
168
|
this._updateLinkedDocGroup().catch(console.error);
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import type { ExtensionType, Schema, Store, Workspace } from '../../store/index.js';
|
|
1
|
+
import type { DocMeta, ExtensionType, Schema, Store, Workspace } from '../../store/index.js';
|
|
2
|
+
type ParsedFrontmatterMeta = Partial<Pick<DocMeta, 'title' | 'createDate' | 'updatedDate' | 'tags' | 'favorite'>>;
|
|
3
|
+
/**
|
|
4
|
+
* Read the frontmatter off a markdown file and hand back the content without
|
|
5
|
+
* it, so the metadata never lands in the document as a paragraph of its own.
|
|
6
|
+
*/
|
|
7
|
+
export declare function parseFrontmatter(markdown: string): {
|
|
8
|
+
content: string;
|
|
9
|
+
meta: ParsedFrontmatterMeta;
|
|
10
|
+
};
|
|
2
11
|
type ImportMarkdownToBlockOptions = {
|
|
3
12
|
doc: Store;
|
|
4
13
|
markdown: string;
|
|
@@ -3,7 +3,131 @@ import { Container } from '../../global/di/index.js';
|
|
|
3
3
|
import { BlockSuiteError, ErrorCode } from '../../global/exceptions/index.js';
|
|
4
4
|
import { sha } from '../../global/utils/index.js';
|
|
5
5
|
import { extMimeMap, Transformer } from '../../store/index.js';
|
|
6
|
-
import { createAssetsArchive, download, Unzip } from './utils.js';
|
|
6
|
+
import { createAssetsArchive, download, parseMatter, Unzip, } from './utils.js';
|
|
7
|
+
/**
|
|
8
|
+
* The spellings the tools people export markdown from actually use. Anything
|
|
9
|
+
* else in the frontmatter is metadata we have no field for, and is dropped.
|
|
10
|
+
*/
|
|
11
|
+
const FRONTMATTER_KEYS = {
|
|
12
|
+
title: ['title', 'name'],
|
|
13
|
+
created: [
|
|
14
|
+
'created',
|
|
15
|
+
'createdat',
|
|
16
|
+
'created_at',
|
|
17
|
+
'createddate',
|
|
18
|
+
'created_date',
|
|
19
|
+
'creationdate',
|
|
20
|
+
'date',
|
|
21
|
+
'time',
|
|
22
|
+
],
|
|
23
|
+
updated: [
|
|
24
|
+
'updated',
|
|
25
|
+
'updatedat',
|
|
26
|
+
'updated_at',
|
|
27
|
+
'updateddate',
|
|
28
|
+
'updated_date',
|
|
29
|
+
'modified',
|
|
30
|
+
'modifiedat',
|
|
31
|
+
'modified_at',
|
|
32
|
+
'lastmodified',
|
|
33
|
+
'last_modified',
|
|
34
|
+
'lastedited',
|
|
35
|
+
'last_edited',
|
|
36
|
+
'lasteditedtime',
|
|
37
|
+
'last_edited_time',
|
|
38
|
+
],
|
|
39
|
+
tags: ['tags', 'tag', 'categories', 'category', 'labels', 'keywords'],
|
|
40
|
+
favorite: ['favorite', 'favourite', 'star', 'starred', 'pinned'],
|
|
41
|
+
};
|
|
42
|
+
const truthyStrings = new Set(['true', 'yes', 'y', '1', 'on']);
|
|
43
|
+
const falsyStrings = new Set(['false', 'no', 'n', '0', 'off']);
|
|
44
|
+
function parseBoolean(value) {
|
|
45
|
+
if (typeof value !== 'string')
|
|
46
|
+
return undefined;
|
|
47
|
+
const normalized = value.trim().toLowerCase();
|
|
48
|
+
if (truthyStrings.has(normalized))
|
|
49
|
+
return true;
|
|
50
|
+
if (falsyStrings.has(normalized))
|
|
51
|
+
return false;
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
function parseTimestamp(value) {
|
|
55
|
+
if (typeof value !== 'string')
|
|
56
|
+
return undefined;
|
|
57
|
+
const seconds = Number(value);
|
|
58
|
+
if (value.trim() && !Number.isNaN(seconds)) {
|
|
59
|
+
// A bare number is an epoch: in seconds unless it is far too large for one.
|
|
60
|
+
return seconds > 1e10 ? seconds : Math.round(seconds * 1000);
|
|
61
|
+
}
|
|
62
|
+
const parsed = Date.parse(value);
|
|
63
|
+
return Number.isNaN(parsed) ? undefined : parsed;
|
|
64
|
+
}
|
|
65
|
+
function parseTags(value) {
|
|
66
|
+
const tags = (Array.isArray(value) ? value : value.split(/[,;]+/))
|
|
67
|
+
.map(tag => tag.trim())
|
|
68
|
+
.filter(Boolean);
|
|
69
|
+
return tags.length ? [...new Set(tags)] : undefined;
|
|
70
|
+
}
|
|
71
|
+
function buildMetaFromFrontmatter(data) {
|
|
72
|
+
const meta = {};
|
|
73
|
+
for (const [rawKey, value] of Object.entries(data)) {
|
|
74
|
+
const key = rawKey.trim().toLowerCase();
|
|
75
|
+
if (FRONTMATTER_KEYS.title.includes(key) && typeof value === 'string') {
|
|
76
|
+
const title = value.trim();
|
|
77
|
+
if (title)
|
|
78
|
+
meta.title = title;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (FRONTMATTER_KEYS.created.includes(key)) {
|
|
82
|
+
const timestamp = parseTimestamp(value);
|
|
83
|
+
if (timestamp !== undefined)
|
|
84
|
+
meta.createDate = timestamp;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (FRONTMATTER_KEYS.updated.includes(key)) {
|
|
88
|
+
const timestamp = parseTimestamp(value);
|
|
89
|
+
if (timestamp !== undefined)
|
|
90
|
+
meta.updatedDate = timestamp;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (FRONTMATTER_KEYS.tags.includes(key)) {
|
|
94
|
+
const tags = parseTags(value);
|
|
95
|
+
if (tags)
|
|
96
|
+
meta.tags = tags;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (FRONTMATTER_KEYS.favorite.includes(key)) {
|
|
100
|
+
const favorite = parseBoolean(value);
|
|
101
|
+
if (favorite !== undefined)
|
|
102
|
+
meta.favorite = favorite;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return meta;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Read the frontmatter off a markdown file and hand back the content without
|
|
109
|
+
* it, so the metadata never lands in the document as a paragraph of its own.
|
|
110
|
+
*/
|
|
111
|
+
export function parseFrontmatter(markdown) {
|
|
112
|
+
try {
|
|
113
|
+
const parsed = parseMatter(markdown);
|
|
114
|
+
if (!parsed) {
|
|
115
|
+
return { content: markdown, meta: {} };
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
content: parsed.body,
|
|
119
|
+
meta: buildMetaFromFrontmatter(parsed.metadata),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return { content: markdown, meta: {} };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function applyMetaPatch(collection, docId, meta) {
|
|
127
|
+
if (Object.keys(meta).length) {
|
|
128
|
+
collection.meta.setDocMeta(docId, meta);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
7
131
|
function getProvider(extensions) {
|
|
8
132
|
const container = new Container();
|
|
9
133
|
extensions.forEach(ext => {
|
|
@@ -90,6 +214,7 @@ async function importMarkdownToBlock({ doc, markdown, blockId, extensions, }) {
|
|
|
90
214
|
* @returns A Promise that resolves to the ID of the newly created doc, or undefined if import fails
|
|
91
215
|
*/
|
|
92
216
|
async function importMarkdownToDoc({ collection, schema, markdown, fileName, extensions, }) {
|
|
217
|
+
const { content, meta } = parseFrontmatter(markdown);
|
|
93
218
|
const provider = getProvider(extensions);
|
|
94
219
|
const job = new Transformer({
|
|
95
220
|
schema,
|
|
@@ -101,18 +226,19 @@ async function importMarkdownToDoc({ collection, schema, markdown, fileName, ext
|
|
|
101
226
|
},
|
|
102
227
|
middlewares: [
|
|
103
228
|
defaultImageProxyMiddleware,
|
|
104
|
-
fileNameMiddleware(fileName),
|
|
229
|
+
fileNameMiddleware(meta.title ?? fileName),
|
|
105
230
|
docLinkBaseURLMiddleware(collection.id),
|
|
106
231
|
],
|
|
107
232
|
});
|
|
108
233
|
const mdAdapter = new MarkdownAdapter(job, provider);
|
|
109
234
|
const page = await mdAdapter.toDoc({
|
|
110
|
-
file:
|
|
235
|
+
file: content,
|
|
111
236
|
assets: job.assetsManager,
|
|
112
237
|
});
|
|
113
238
|
if (!page) {
|
|
114
239
|
return;
|
|
115
240
|
}
|
|
241
|
+
applyMetaPatch(collection, page.id, meta);
|
|
116
242
|
return page.id;
|
|
117
243
|
}
|
|
118
244
|
/**
|
|
@@ -159,6 +285,7 @@ async function importMarkdownZip({ collection, schema, imported, extensions, })
|
|
|
159
285
|
await Promise.all(markdownBlobs.map(async (markdownFile) => {
|
|
160
286
|
const { filename, contentBlob, fullPath } = markdownFile;
|
|
161
287
|
const fileNameWithoutExt = filename.replace(/\.[^/.]+$/, '');
|
|
288
|
+
const { content, meta } = parseFrontmatter(await contentBlob.text());
|
|
162
289
|
const job = new Transformer({
|
|
163
290
|
schema,
|
|
164
291
|
blobCRUD: collection.blobSync,
|
|
@@ -169,7 +296,7 @@ async function importMarkdownZip({ collection, schema, imported, extensions, })
|
|
|
169
296
|
},
|
|
170
297
|
middlewares: [
|
|
171
298
|
defaultImageProxyMiddleware,
|
|
172
|
-
fileNameMiddleware(fileNameWithoutExt),
|
|
299
|
+
fileNameMiddleware(meta.title ?? fileNameWithoutExt),
|
|
173
300
|
docLinkBaseURLMiddleware(collection.id),
|
|
174
301
|
filePathMiddleware(fullPath),
|
|
175
302
|
],
|
|
@@ -188,12 +315,12 @@ async function importMarkdownZip({ collection, schema, imported, extensions, })
|
|
|
188
315
|
}
|
|
189
316
|
}
|
|
190
317
|
const mdAdapter = new MarkdownAdapter(job, provider);
|
|
191
|
-
const markdown = await contentBlob.text();
|
|
192
318
|
const doc = await mdAdapter.toDoc({
|
|
193
|
-
file:
|
|
319
|
+
file: content,
|
|
194
320
|
assets: job.assetsManager,
|
|
195
321
|
});
|
|
196
322
|
if (doc) {
|
|
323
|
+
applyMetaPatch(collection, doc.id, meta);
|
|
197
324
|
docIds.push(doc.id);
|
|
198
325
|
}
|
|
199
326
|
}));
|
|
@@ -21,4 +21,14 @@ export declare class Unzip {
|
|
|
21
21
|
}, void, unknown>;
|
|
22
22
|
}
|
|
23
23
|
export declare function createAssetsArchive(assetsMap: Map<string, Blob>, assetsIds: string[]): Promise<Zip>;
|
|
24
|
+
export type FrontmatterValue = string | string[];
|
|
25
|
+
/**
|
|
26
|
+
* Split a markdown file into its frontmatter metadata and the content below,
|
|
27
|
+
* or `null` when it opens with no frontmatter at all.
|
|
28
|
+
*/
|
|
29
|
+
export declare const parseMatter: (contents: string) => {
|
|
30
|
+
matter: string;
|
|
31
|
+
body: string;
|
|
32
|
+
metadata: Record<string, FrontmatterValue>;
|
|
33
|
+
} | null;
|
|
24
34
|
export declare function download(blob: Blob, name: string): void;
|
|
@@ -52,6 +52,42 @@ export class Zip {
|
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
+
const strictUtf8Decoder = new TextDecoder('utf-8', { fatal: true });
|
|
56
|
+
/**
|
|
57
|
+
* Repair an entry name that was decoded as Latin-1.
|
|
58
|
+
*
|
|
59
|
+
* fflate follows the zip spec: unless an entry sets the UTF-8 flag (general
|
|
60
|
+
* purpose bit 11) its name is decoded as Latin-1. Common archivers — the macOS
|
|
61
|
+
* `zip` tool among them — write UTF-8 bytes without ever setting that flag, so
|
|
62
|
+
* a CJK name comes back as mojibake, one character per raw byte.
|
|
63
|
+
*
|
|
64
|
+
* Such a name only ever holds code points in the 0x00-0xff range, so it can be
|
|
65
|
+
* turned back into the original bytes and decoded again, strictly, as UTF-8.
|
|
66
|
+
* Anything that is not valid UTF-8 — a name that really was Latin-1, or one
|
|
67
|
+
* fflate already decoded correctly — is left untouched.
|
|
68
|
+
*/
|
|
69
|
+
function fixFileNameEncoding(fileName) {
|
|
70
|
+
const bytes = new Uint8Array(fileName.length);
|
|
71
|
+
let hasNonAscii = false;
|
|
72
|
+
for (let i = 0; i < fileName.length; i++) {
|
|
73
|
+
const code = fileName.charCodeAt(i);
|
|
74
|
+
// A code point above 0xff cannot come out of a Latin-1 decode: the name was
|
|
75
|
+
// already decoded from its declared UTF-8 bytes, nothing to repair.
|
|
76
|
+
if (code > 0xff)
|
|
77
|
+
return fileName;
|
|
78
|
+
if (code > 0x7f)
|
|
79
|
+
hasNonAscii = true;
|
|
80
|
+
bytes[i] = code;
|
|
81
|
+
}
|
|
82
|
+
if (!hasNonAscii)
|
|
83
|
+
return fileName;
|
|
84
|
+
try {
|
|
85
|
+
return strictUtf8Decoder.decode(bytes);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return fileName;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
55
91
|
export class Unzip {
|
|
56
92
|
async load(blob) {
|
|
57
93
|
this.unzipped = fflate.unzipSync(new Uint8Array(await blob.arrayBuffer()));
|
|
@@ -60,15 +96,17 @@ export class Unzip {
|
|
|
60
96
|
const keys = Object.keys(this.unzipped ?? {});
|
|
61
97
|
let index = 0;
|
|
62
98
|
while (keys.length) {
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
99
|
+
const rawPath = keys.shift();
|
|
100
|
+
if (rawPath.includes('__MACOSX') || rawPath.includes('DS_Store')) {
|
|
65
101
|
continue;
|
|
66
102
|
}
|
|
103
|
+
const data = this.unzipped[rawPath];
|
|
104
|
+
const path = fixFileNameEncoding(rawPath);
|
|
67
105
|
const lastSplitIndex = path.lastIndexOf('/');
|
|
68
106
|
const fileName = path.substring(lastSplitIndex + 1);
|
|
69
107
|
const fileExt = fileName.lastIndexOf('.') === -1 ? '' : fileName.split('.').at(-1);
|
|
70
108
|
const mime = extMimeMap.get(fileExt ?? '');
|
|
71
|
-
const content = new File([
|
|
109
|
+
const content = new File([data], fileName, {
|
|
72
110
|
type: mime ?? '',
|
|
73
111
|
});
|
|
74
112
|
yield { path, content, index };
|
|
@@ -86,6 +124,85 @@ export async function createAssetsArchive(assetsMap, assetsIds) {
|
|
|
86
124
|
}
|
|
87
125
|
return zip;
|
|
88
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* A frontmatter block, and only at the very top of the file: a `---` further
|
|
129
|
+
* down is a horizontal rule and the reader expects to see it.
|
|
130
|
+
*/
|
|
131
|
+
const FRONTMATTER = /^---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)/;
|
|
132
|
+
const unquote = (value) => {
|
|
133
|
+
const trimmed = value.trim();
|
|
134
|
+
const quote = trimmed[0];
|
|
135
|
+
if (trimmed.length >= 2 &&
|
|
136
|
+
(quote === '"' || quote === "'") &&
|
|
137
|
+
trimmed.endsWith(quote)) {
|
|
138
|
+
return trimmed.slice(1, -1);
|
|
139
|
+
}
|
|
140
|
+
return trimmed;
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Parse the flat subset of YAML a frontmatter block actually uses: `key: value`
|
|
144
|
+
* pairs, flow sequences (`tags: [a, b]`) and block sequences. Every scalar
|
|
145
|
+
* stays a string — the caller knows which of them is a date, a flag or a list,
|
|
146
|
+
* and a full YAML parser would only add a dependency to guess it for us.
|
|
147
|
+
* Nested mappings are ignored rather than flattened.
|
|
148
|
+
*/
|
|
149
|
+
const parseFrontmatterBody = (source) => {
|
|
150
|
+
const data = {};
|
|
151
|
+
let listKey = null;
|
|
152
|
+
for (const line of source.split(/\r?\n/)) {
|
|
153
|
+
const trimmed = line.trim();
|
|
154
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
155
|
+
continue;
|
|
156
|
+
const item = trimmed.match(/^-\s+(.*)$/);
|
|
157
|
+
if (item && listKey) {
|
|
158
|
+
const list = data[listKey];
|
|
159
|
+
const value = unquote(item[1]);
|
|
160
|
+
if (Array.isArray(list))
|
|
161
|
+
list.push(value);
|
|
162
|
+
else
|
|
163
|
+
data[listKey] = [value];
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
// Keys are read at the top level only, so an indented mapping under a key
|
|
167
|
+
// does not silently become a sibling of it.
|
|
168
|
+
const entry = line.match(/^([A-Za-z0-9_][A-Za-z0-9_ -]*):(.*)$/);
|
|
169
|
+
if (!entry) {
|
|
170
|
+
listKey = null;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
const key = entry[1].trim();
|
|
174
|
+
const value = entry[2].trim();
|
|
175
|
+
listKey = null;
|
|
176
|
+
if (!value) {
|
|
177
|
+
// Either a block sequence follows, or a nested mapping we will ignore.
|
|
178
|
+
data[key] = [];
|
|
179
|
+
listKey = key;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
const flow = value.match(/^\[(.*)\]$/);
|
|
183
|
+
data[key] = flow
|
|
184
|
+
? flow[1].split(',').map(unquote).filter(Boolean)
|
|
185
|
+
: unquote(value);
|
|
186
|
+
}
|
|
187
|
+
return Object.keys(data).length ? data : null;
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* Split a markdown file into its frontmatter metadata and the content below,
|
|
191
|
+
* or `null` when it opens with no frontmatter at all.
|
|
192
|
+
*/
|
|
193
|
+
export const parseMatter = (contents) => {
|
|
194
|
+
const match = contents.match(FRONTMATTER);
|
|
195
|
+
if (!match)
|
|
196
|
+
return null;
|
|
197
|
+
const metadata = parseFrontmatterBody(match[1]);
|
|
198
|
+
if (!metadata)
|
|
199
|
+
return null;
|
|
200
|
+
return {
|
|
201
|
+
matter: match[1],
|
|
202
|
+
body: contents.slice(match[0].length),
|
|
203
|
+
metadata,
|
|
204
|
+
};
|
|
205
|
+
};
|
|
89
206
|
export function download(blob, name) {
|
|
90
207
|
const element = document.createElement('a');
|
|
91
208
|
element.setAttribute('download', name);
|
|
@@ -1,2 +1,14 @@
|
|
|
1
1
|
import { Signal } from '@preact/signals-core';
|
|
2
2
|
export declare function resolveSignal<T>(data: T | Signal<T>): T;
|
|
3
|
+
/**
|
|
4
|
+
* The keydown interceptor of the linked-doc popover.
|
|
5
|
+
*
|
|
6
|
+
* The shared keydown observer treats "a modifier plus any other key" as a
|
|
7
|
+
* reason to abort, so every key the popover wants to survive has to be caught
|
|
8
|
+
* here first — which is why changing the OS keyboard LAYOUT used to close the
|
|
9
|
+
* popover: on Windows and Linux, Alt+Shift arrives as a keydown whose `key` is
|
|
10
|
+
* `GroupNext` or `GroupPrevious`, and that reads as modifier + key.
|
|
11
|
+
*
|
|
12
|
+
* @param close - what `Escape` does; the popover's own `close`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createLinkedDocKeydownInterceptor(close: () => void): (event: KeyboardEvent, next: () => void) => void;
|
|
@@ -2,3 +2,36 @@ import { Signal } from '@preact/signals-core';
|
|
|
2
2
|
export function resolveSignal(data) {
|
|
3
3
|
return data instanceof Signal ? data.value : data;
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* The keydown interceptor of the linked-doc popover.
|
|
7
|
+
*
|
|
8
|
+
* The shared keydown observer treats "a modifier plus any other key" as a
|
|
9
|
+
* reason to abort, so every key the popover wants to survive has to be caught
|
|
10
|
+
* here first — which is why changing the OS keyboard LAYOUT used to close the
|
|
11
|
+
* popover: on Windows and Linux, Alt+Shift arrives as a keydown whose `key` is
|
|
12
|
+
* `GroupNext` or `GroupPrevious`, and that reads as modifier + key.
|
|
13
|
+
*
|
|
14
|
+
* @param close - what `Escape` does; the popover's own `close`.
|
|
15
|
+
*/
|
|
16
|
+
export function createLinkedDocKeydownInterceptor(close) {
|
|
17
|
+
return (event, next) => {
|
|
18
|
+
if (event.key === 'GroupNext' || event.key === 'GroupPrevious') {
|
|
19
|
+
// The user switched keyboard layout, not documents. Swallow it and leave
|
|
20
|
+
// the query, the selection and the popover exactly as they were.
|
|
21
|
+
event.stopPropagation();
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {
|
|
25
|
+
event.preventDefault();
|
|
26
|
+
event.stopPropagation();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (event.key === 'Escape') {
|
|
30
|
+
close();
|
|
31
|
+
event.preventDefault();
|
|
32
|
+
event.stopPropagation();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
next();
|
|
36
|
+
};
|
|
37
|
+
}
|