edytor 1.0.0-rc.2 → 1.0.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/README.md +65 -25
- package/dist/block/block.svelte.d.ts +10 -85
- package/dist/block/block.svelte.js +47 -141
- package/dist/block/colors.d.ts +0 -9
- package/dist/block/colors.js +1 -18
- package/dist/block/contentRange.d.ts +5 -1
- package/dist/block/contentRange.js +15 -16
- package/dist/block/inlineBlock.svelte.d.ts +8 -10
- package/dist/block/inlineBlock.svelte.js +14 -22
- package/dist/clipboard/createClipboardFragment.js +22 -64
- package/dist/clipboard/fragmentData.js +17 -42
- package/dist/clipboard/htmlFlow.d.ts +6 -1
- package/dist/clipboard/htmlFlow.js +26 -13
- package/dist/clipboard/insertClipboardFragment.js +5 -4
- package/dist/clipboard/moveText.js +16 -8
- package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
- package/dist/clipboard/serializeClipboardFragment.js +32 -28
- package/dist/cloudflare/DocumentRoom.d.ts +22 -17
- package/dist/cloudflare/DocumentRoom.js +10 -5
- package/dist/cloudflare/index.d.ts +1 -1
- package/dist/cloudflare/index.js +1 -1
- package/dist/cloudflare/move.d.ts +1 -18
- package/dist/cloudflare/move.js +2 -48
- package/dist/cloudflare/room/admission.d.ts +1 -60
- package/dist/cloudflare/room/admission.js +25 -29
- package/dist/cloudflare/room/comments.d.ts +1 -3
- package/dist/cloudflare/room/comments.js +6 -6
- package/dist/cloudflare/room/context.d.ts +20 -82
- package/dist/cloudflare/room/context.js +8 -8
- package/dist/cloudflare/room/forged.d.ts +1 -1
- package/dist/cloudflare/room/forged.js +2 -12
- package/dist/cloudflare/room/frames.d.ts +1 -1
- package/dist/cloudflare/room/frames.js +1 -1
- package/dist/cloudflare/room/history.d.ts +1 -25
- package/dist/cloudflare/room/history.js +39 -54
- package/dist/cloudflare/room/moves.d.ts +1 -13
- package/dist/cloudflare/room/moves.js +33 -57
- package/dist/cloudflare/room/presence.d.ts +1 -11
- package/dist/cloudflare/room/presence.js +4 -4
- package/dist/cloudflare/room/purge.d.ts +1 -2
- package/dist/cloudflare/room/purge.js +2 -2
- package/dist/cloudflare/room/replicas.d.ts +1 -7
- package/dist/cloudflare/room/replicas.js +2 -2
- package/dist/cloudflare/room/storage.d.ts +9 -30
- package/dist/cloudflare/room/storage.js +52 -104
- package/dist/cloudflare/room/updates.d.ts +4 -4
- package/dist/cloudflare/room/updates.js +17 -24
- package/dist/cloudflare/room/validation.d.ts +1 -5
- package/dist/cloudflare/room/validation.js +16 -37
- package/dist/collaboration/RemoteSelections.svelte +13 -17
- package/dist/collaboration/comments/client.d.ts +2 -2
- package/dist/collaboration/comments/client.js +1 -1
- package/dist/collaboration/history/index.d.ts +5 -5
- package/dist/collaboration/history/index.js +5 -5
- package/dist/collaboration/history/panel.svelte.d.ts +91 -0
- package/dist/collaboration/history/panel.svelte.js +223 -0
- package/dist/collaboration/providers.d.ts +12 -3
- package/dist/collaboration/providers.js +5 -4
- package/dist/components/Block.svelte +160 -119
- package/dist/components/Block.svelte.d.ts +8 -3
- package/dist/components/Content.svelte +91 -44
- package/dist/components/CustomMark.svelte +46 -0
- package/dist/components/CustomMark.svelte.d.ts +11 -0
- package/dist/components/Edytor.svelte +80 -95
- package/dist/components/Edytor.svelte.d.ts +8 -12
- package/dist/components/InlineBlock.svelte +4 -9
- package/dist/components/Mark.svelte +46 -35
- package/dist/components/Mark.svelte.d.ts +7 -0
- package/dist/components/Ranges.svelte +96 -0
- package/dist/components/Ranges.svelte.d.ts +19 -0
- package/dist/components/Suggestion.svelte +3 -2
- package/dist/components/Text.svelte +48 -14
- package/dist/components/Text.svelte.d.ts +1 -1
- package/dist/crdt/admission.d.ts +2 -9
- package/dist/crdt/admission.js +3 -9
- package/dist/crdt/attribution/attribution.d.ts +11 -72
- package/dist/crdt/attribution/attribution.js +5 -52
- package/dist/crdt/attribution/block.d.ts +0 -78
- package/dist/crdt/attribution/block.js +1 -144
- package/dist/crdt/data.d.ts +8 -13
- package/dist/crdt/data.js +30 -70
- package/dist/crdt/doc/anchors.js +4 -4
- package/dist/crdt/doc/content.d.ts +5 -1
- package/dist/crdt/doc/content.js +3 -1
- package/dist/crdt/doc/delete.d.ts +1 -0
- package/dist/crdt/doc/funnel.d.ts +0 -23
- package/dist/crdt/doc/funnel.js +34 -85
- package/dist/crdt/doc/gate.d.ts +8 -9
- package/dist/crdt/doc/gate.js +7 -17
- package/dist/crdt/doc/history.d.ts +87 -14
- package/dist/crdt/doc/history.js +334 -149
- package/dist/crdt/doc/layout.d.ts +0 -1
- package/dist/crdt/doc/layout.js +2 -3
- package/dist/crdt/doc/meta.d.ts +4 -4
- package/dist/crdt/doc/meta.js +10 -21
- package/dist/crdt/doc/moves.d.ts +4 -4
- package/dist/crdt/doc/moves.js +5 -5
- package/dist/crdt/doc/plan.d.ts +2 -0
- package/dist/crdt/doc/plan.js +2 -0
- package/dist/crdt/doc/reads.d.ts +1 -5
- package/dist/crdt/doc/reads.js +38 -49
- package/dist/crdt/doc/seed.d.ts +15 -6
- package/dist/crdt/doc/seed.js +27 -26
- package/dist/crdt/doc/split-merge.d.ts +1 -3
- package/dist/crdt/doc/split-merge.js +4 -5
- package/dist/crdt/doc/steps.d.ts +3 -7
- package/dist/crdt/doc/steps.js +20 -9
- package/dist/crdt/doc/types.d.ts +0 -10
- package/dist/crdt/document.d.ts +24 -115
- package/dist/crdt/document.js +207 -305
- package/dist/crdt/edytor-doc.d.ts +671 -90
- package/dist/crdt/edytor-doc.js +73 -149
- package/dist/crdt/engine-api.d.ts +15 -47
- package/dist/crdt/engine.d.ts +7 -17
- package/dist/crdt/engine.js +9 -19
- package/dist/crdt/flow.d.ts +9 -37
- package/dist/crdt/flow.js +260 -238
- package/dist/crdt/index.d.ts +26 -85
- package/dist/crdt/index.js +21 -47
- package/dist/crdt/operations.d.ts +24 -33
- package/dist/crdt/operations.js +7 -17
- package/dist/crdt/placement/display.d.ts +0 -2
- package/dist/crdt/placement/display.js +0 -15
- package/dist/crdt/placement/model.d.ts +160 -12
- package/dist/crdt/placement/model.js +413 -414
- package/dist/crdt/placement/rank.d.ts +1 -5
- package/dist/crdt/placement/rank.js +28 -38
- package/dist/crdt/protocol.d.ts +4 -5
- package/dist/crdt/protocol.js +3 -4
- package/dist/crdt/protocols/awareness.d.ts +3 -7
- package/dist/crdt/protocols/awareness.js +17 -33
- package/dist/crdt/protocols/envelope.d.ts +9 -29
- package/dist/crdt/protocols/envelope.js +8 -25
- package/dist/crdt/protocols/sync.d.ts +15 -30
- package/dist/crdt/protocols/sync.js +27 -89
- package/dist/crdt/providers/bound.d.ts +3 -1
- package/dist/crdt/providers/bound.js +3 -1
- package/dist/crdt/providers/container.d.ts +11 -17
- package/dist/crdt/providers/container.js +39 -27
- package/dist/crdt/providers/index.d.ts +34 -6
- package/dist/crdt/providers/index.js +106 -111
- package/dist/crdt/providers/indexeddb.d.ts +2 -12
- package/dist/crdt/providers/indexeddb.js +29 -90
- package/dist/crdt/providers/room.d.ts +58 -2
- package/dist/crdt/providers/room.js +38 -21
- package/dist/crdt/providers/websocket.d.ts +1 -1
- package/dist/crdt/providers/websocket.js +3 -4
- package/dist/crdt/purge.d.ts +2 -2
- package/dist/crdt/purge.js +69 -6
- package/dist/crdt/rangeDelete.d.ts +4 -42
- package/dist/crdt/rangeDelete.js +7 -6
- package/dist/crdt/restore.d.ts +21 -1
- package/dist/crdt/restore.js +54 -59
- package/dist/crdt/schema.d.ts +2 -2
- package/dist/crdt/schema.js +4 -5
- package/dist/crdt/semantics.d.ts +10 -15
- package/dist/crdt/semantics.js +22 -21
- package/dist/crdt/storage.d.ts +7 -13
- package/dist/crdt/storage.js +10 -24
- package/dist/crdt/structs.d.ts +42 -47
- package/dist/crdt/structs.js +76 -67
- package/dist/crdt/tables.d.ts +9 -0
- package/dist/crdt/tables.js +20 -0
- package/dist/crdt/text/delete-index.d.ts +0 -13
- package/dist/crdt/text/delete-index.js +7 -14
- package/dist/crdt/text/deletes.d.ts +9 -22
- package/dist/crdt/text/deletes.js +11 -74
- package/dist/crdt/text/index/cache.js +3 -3
- package/dist/crdt/text/index/fold.d.ts +1 -2
- package/dist/crdt/text/index/fold.js +15 -10
- package/dist/crdt/text/index/layout.d.ts +0 -10
- package/dist/crdt/text/index/layout.js +6 -20
- package/dist/crdt/text/index/records.js +2 -1
- package/dist/crdt/text/index/report.js +5 -6
- package/dist/crdt/text/index/shared.d.ts +11 -4
- package/dist/crdt/text/index/shared.js +8 -7
- package/dist/crdt/text/index/state.d.ts +3 -33
- package/dist/crdt/text/index/state.js +2 -4
- package/dist/crdt/text/model.d.ts +82 -2
- package/dist/crdt/text/model.js +344 -354
- package/dist/crdt/text/rows.d.ts +0 -2
- package/dist/crdt/text/rows.js +0 -11
- package/dist/crdt/text/runs.d.ts +6 -3
- package/dist/crdt/text/runs.js +132 -137
- package/dist/crdt/text/streams.d.ts +1 -1
- package/dist/crdt/text/streams.js +1 -1
- package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
- package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
- package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
- package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
- package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
- package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
- package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
- package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
- package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
- package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
- package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
- package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
- package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
- package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
- package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
- package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
- package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
- package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
- package/dist/crdt/vendor/yjs/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/src/index.js +11 -25
- package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
- package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
- package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
- package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
- package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
- package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
- package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
- package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
- package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
- package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
- package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
- package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
- package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
- package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
- package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
- package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
- package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
- package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
- package/dist/dnd/pragmatic.d.ts +4 -22
- package/dist/dnd/pragmatic.js +7 -26
- package/dist/dnd/track.d.ts +14 -0
- package/dist/dnd/track.js +55 -0
- package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
- package/dist/edytor.svelte.d.ts +34 -64
- package/dist/edytor.svelte.js +118 -180
- package/dist/events/beforeInputCommands.d.ts +6 -11
- package/dist/events/beforeInputCommands.js +189 -184
- package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
- package/dist/events/beforeInputDeleteCommands.js +153 -204
- package/dist/events/domTextOffset.d.ts +9 -9
- package/dist/events/domTextOffset.js +20 -48
- package/dist/events/events.utils.d.ts +0 -2
- package/dist/events/events.utils.js +0 -4
- package/dist/events/nativeInteractiveControl.d.ts +13 -13
- package/dist/events/nativeInteractiveControl.js +28 -56
- package/dist/events/onBeforeInput.d.ts +6 -1
- package/dist/events/onBeforeInput.js +207 -331
- package/dist/events/onCopy.js +1 -5
- package/dist/events/onDrop.d.ts +7 -1
- package/dist/events/onDrop.js +33 -72
- package/dist/events/onFocus.d.ts +9 -4
- package/dist/events/onFocus.js +92 -72
- package/dist/events/onInput.d.ts +8 -4
- package/dist/events/onInput.js +34 -147
- package/dist/events/onKeyDown.js +55 -122
- package/dist/events/onPaste.d.ts +13 -1
- package/dist/events/onPaste.js +46 -76
- package/dist/index.d.ts +10 -13
- package/dist/index.js +3 -3
- package/dist/kinds.d.ts +4 -6
- package/dist/kinds.js +28 -27
- package/dist/labels.d.ts +91 -314
- package/dist/labels.js +180 -396
- package/dist/plugins/Chrome.svelte +29 -0
- package/dist/plugins/Chrome.svelte.d.ts +32 -0
- package/dist/plugins/Control.svelte +23 -0
- package/dist/plugins/Control.svelte.d.ts +30 -0
- package/dist/plugins/anchored.svelte.d.ts +47 -0
- package/dist/plugins/anchored.svelte.js +73 -0
- package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
- package/dist/plugins/arrowMove/arrowMove.js +9 -5
- package/dist/plugins/bands.svelte.d.ts +57 -0
- package/dist/plugins/bands.svelte.js +95 -0
- package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
- package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
- package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
- package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
- package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
- package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
- package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
- package/dist/plugins/blockHandles/dragPreview.js +20 -17
- package/dist/plugins/blockHandles/dropIndicator.js +52 -60
- package/dist/plugins/blockHandles/geometry.d.ts +46 -1
- package/dist/plugins/blockHandles/geometry.js +51 -4
- package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
- package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
- package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
- package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
- package/dist/plugins/brand.d.ts +8 -0
- package/dist/plugins/brand.js +8 -0
- package/dist/plugins/chrome.d.ts +79 -0
- package/dist/plugins/chrome.js +87 -0
- package/dist/plugins/code/CodeHeader.svelte +12 -58
- package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
- package/dist/plugins/code/CodePlugin.svelte +75 -56
- package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
- package/dist/plugins/code/LanguageMenu.svelte +25 -0
- package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
- package/dist/plugins/code/code.css +5 -100
- package/dist/plugins/code/header.svelte.d.ts +47 -0
- package/dist/plugins/code/header.svelte.js +141 -0
- package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
- package/dist/plugins/code/languageMenu.svelte.js +199 -0
- package/dist/plugins/code/languages.d.ts +21 -10
- package/dist/plugins/code/languages.js +39 -126
- package/dist/plugins/columns/ColumnResize.svelte +13 -25
- package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
- package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
- package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
- package/dist/plugins/columns/columns.css +7 -26
- package/dist/plugins/columns/resize.svelte.d.ts +14 -51
- package/dist/plugins/columns/resize.svelte.js +70 -164
- package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
- package/dist/plugins/comments/CommentsController.svelte.js +14 -25
- package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
- package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
- package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
- package/dist/plugins/comments/commentsPlugin.js +12 -10
- package/dist/plugins/equation/EquationEditor.svelte +18 -129
- package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
- package/dist/plugins/equation/EquationPlugin.svelte +123 -168
- package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
- package/dist/plugins/equation/EquationView.svelte +20 -11
- package/dist/plugins/equation/equation.svelte.d.ts +74 -36
- package/dist/plugins/equation/equation.svelte.js +74 -66
- package/dist/plugins/equation/importUrl.d.ts +6 -0
- package/dist/plugins/equation/importUrl.js +6 -0
- package/dist/plugins/equation/katex.d.ts +8 -0
- package/dist/plugins/equation/katex.js +77 -0
- package/dist/plugins/find/FindController.svelte.d.ts +8 -13
- package/dist/plugins/find/FindController.svelte.js +34 -55
- package/dist/plugins/find/findPlugin.d.ts +4 -8
- package/dist/plugins/find/findPlugin.js +29 -9
- package/dist/plugins/image/ImageChrome.svelte +5 -151
- package/dist/plugins/image/ImagePlugin.svelte +49 -117
- package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
- package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
- package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
- package/dist/plugins/image/controls.svelte.d.ts +6 -57
- package/dist/plugins/image/controls.svelte.js +51 -174
- package/dist/plugins/image/image.d.ts +0 -5
- package/dist/plugins/image/image.js +0 -3
- package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
- package/dist/plugins/image/toolbar.svelte.js +145 -0
- package/dist/plugins/index.d.ts +39 -24
- package/dist/plugins/index.js +30 -22
- package/dist/plugins/list.svelte.d.ts +128 -0
- package/dist/plugins/list.svelte.js +217 -0
- package/dist/plugins/markdownShortcuts.d.ts +1 -1
- package/dist/plugins/markdownShortcuts.js +6 -5
- package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
- package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
- package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
- package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
- package/dist/plugins/marquee/marquee.d.ts +33 -0
- package/dist/plugins/marquee/marquee.js +89 -0
- package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
- package/dist/plugins/marquee/marqueePlugin.js +68 -0
- package/dist/plugins/media/AudioPlugin.svelte +3 -88
- package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
- package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
- package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
- package/dist/plugins/media/EmbedPlugin.svelte +93 -77
- package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
- package/dist/plugins/media/EmptySlot.svelte +44 -0
- package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
- package/dist/plugins/media/FilePlugin.svelte +35 -111
- package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
- package/dist/plugins/media/MediaEmpty.svelte +55 -112
- package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
- package/dist/plugins/media/SourceBlock.svelte +164 -0
- package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
- package/dist/plugins/media/VideoPlugin.svelte +4 -97
- package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
- package/dist/plugins/media/empty.svelte.d.ts +69 -0
- package/dist/plugins/media/empty.svelte.js +111 -0
- package/dist/plugins/media/media.d.ts +93 -30
- package/dist/plugins/media/media.js +79 -86
- package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
- package/dist/plugins/media/urlPaste.svelte.js +46 -75
- package/dist/plugins/mention/MentionPlugin.svelte +47 -124
- package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
- package/dist/plugins/page/PageLink.svelte +54 -38
- package/dist/plugins/page/PagePlugin.svelte +20 -18
- package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
- package/dist/plugins/page/page.d.ts +35 -9
- package/dist/plugins/page/page.js +3 -4
- package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
- package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
- package/dist/plugins/planned.d.ts +10 -0
- package/dist/plugins/planned.js +12 -0
- package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
- package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
- package/dist/plugins/richtext/EmptyBody.svelte +25 -0
- package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextControl.svelte +39 -0
- package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
- package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
- package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
- package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
- package/dist/plugins/richtext/body.d.ts +9 -0
- package/dist/plugins/richtext/body.js +16 -0
- package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
- package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
- package/dist/plugins/richtext/callouts.d.ts +15 -0
- package/dist/plugins/richtext/callouts.js +23 -0
- package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
- package/dist/plugins/richtext/controls.svelte.js +126 -0
- package/dist/plugins/richtext/richTextOperations.js +37 -28
- package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
- package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
- package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
- package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
- package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
- package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
- package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
- package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
- package/dist/plugins/table/TableChrome.svelte +96 -127
- package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
- package/dist/plugins/table/TablePlugin.svelte +116 -171
- package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
- package/dist/plugins/table/chrome.svelte.d.ts +110 -117
- package/dist/plugins/table/chrome.svelte.js +643 -289
- package/dist/plugins/table/ops.d.ts +47 -0
- package/dist/plugins/table/ops.js +233 -0
- package/dist/plugins/table/table.css +55 -134
- package/dist/plugins/table/table.d.ts +26 -7
- package/dist/plugins/table/table.js +23 -49
- package/dist/plugins/toc/TableOfContents.svelte +32 -38
- package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
- package/dist/plugins/toc/TocPlugin.svelte +22 -22
- package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
- package/dist/plugins/toc/toc.d.ts +41 -10
- package/dist/plugins/toc/toc.js +2 -3
- package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
- package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
- package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
- package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
- package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
- package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
- package/dist/plugins/triggers/place.d.ts +0 -9
- package/dist/plugins/triggers/place.js +1 -17
- package/dist/plugins/triggers/triggers.d.ts +31 -9
- package/dist/plugins/triggers/triggers.js +82 -62
- package/dist/plugins/uploads.svelte.d.ts +38 -20
- package/dist/plugins/uploads.svelte.js +39 -32
- package/dist/plugins.d.ts +167 -60
- package/dist/selection/domSelection.d.ts +13 -4
- package/dist/selection/domSelection.js +110 -183
- package/dist/selection/pointer.svelte.d.ts +12 -10
- package/dist/selection/pointer.svelte.js +154 -71
- package/dist/selection/replaceSelection.d.ts +21 -22
- package/dist/selection/replaceSelection.js +60 -69
- package/dist/selection/selection.svelte.d.ts +5 -73
- package/dist/selection/selection.svelte.js +263 -542
- package/dist/selection/selection.utils.d.ts +34 -11
- package/dist/selection/selection.utils.js +128 -247
- package/dist/selection/visibility.d.ts +11 -8
- package/dist/selection/visibility.js +23 -8
- package/dist/session/announcer.svelte.d.ts +2 -1
- package/dist/session/announcer.svelte.js +7 -3
- package/dist/session/attempt.d.ts +33 -39
- package/dist/session/attempt.js +61 -53
- package/dist/session/bindings.js +108 -139
- package/dist/session/commands.d.ts +47 -22
- package/dist/session/commands.js +206 -208
- package/dist/session/composition.svelte.d.ts +2 -4
- package/dist/session/composition.svelte.js +55 -65
- package/dist/session/editing/text.d.ts +6 -0
- package/dist/session/editing/text.js +17 -3
- package/dist/session/handles.d.ts +10 -1
- package/dist/session/handles.js +28 -0
- package/dist/session/history.d.ts +0 -4
- package/dist/session/history.js +15 -21
- package/dist/session/inputRules.js +75 -84
- package/dist/session/keymap.d.ts +1 -6
- package/dist/session/keymap.js +17 -20
- package/dist/session/moves.d.ts +10 -10
- package/dist/session/moves.js +31 -59
- package/dist/session/navigation.d.ts +18 -3
- package/dist/session/navigation.js +194 -153
- package/dist/session/ports.d.ts +7 -0
- package/dist/session/selection.d.ts +4 -3
- package/dist/session/selection.js +8 -0
- package/dist/session/suggestions.svelte.d.ts +1 -1
- package/dist/session/suggestions.svelte.js +64 -47
- package/dist/session/virtual.d.ts +3 -3
- package/dist/session/virtual.js +18 -40
- package/dist/surface/attributes.d.ts +1 -0
- package/dist/surface/attributes.js +3 -26
- package/dist/surface/cells.d.ts +5 -0
- package/dist/surface/cells.js +5 -0
- package/dist/surface/lines.d.ts +32 -0
- package/dist/surface/lines.js +43 -0
- package/dist/surface/observer.svelte.d.ts +3 -20
- package/dist/surface/observer.svelte.js +73 -77
- package/dist/surface/overlay.d.ts +48 -6
- package/dist/surface/overlay.js +133 -23
- package/dist/surface/pin.svelte.d.ts +5 -0
- package/dist/surface/pin.svelte.js +5 -0
- package/dist/surface/projector.svelte.d.ts +4 -6
- package/dist/surface/projector.svelte.js +42 -69
- package/dist/text/text.svelte.d.ts +14 -40
- package/dist/text/text.svelte.js +35 -51
- package/dist/text/wordBoundary.d.ts +19 -0
- package/dist/text/wordBoundary.js +29 -44
- package/dist/themes/notion.css +315 -126
- package/dist/utils/json.d.ts +3 -1
- package/dist/utils/json.js +52 -51
- package/dist/utils/listen.d.ts +8 -0
- package/dist/utils/listen.js +19 -0
- package/package.json +4 -5
- package/dist/block/block.utils.d.ts +0 -340
- package/dist/block/block.utils.js +0 -356
- package/dist/collaboration/history/HistoryPanel.svelte +0 -525
- package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
- package/dist/collaboration/history/panel.d.ts +0 -43
- package/dist/collaboration/history/panel.js +0 -3
- package/dist/components/SuggestionRanges.svelte +0 -58
- package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
- package/dist/crdt/doc/table.d.ts +0 -21
- package/dist/crdt/doc/table.js +0 -288
- package/dist/crdt/migration/generation.d.ts +0 -58
- package/dist/crdt/migration/generation.js +0 -70
- package/dist/crdt/migration/legacy-schema.d.ts +0 -61
- package/dist/crdt/migration/legacy-schema.js +0 -151
- package/dist/crdt/migration/migrate.d.ts +0 -56
- package/dist/crdt/migration/migrate.js +0 -227
- package/dist/crdt/nodes.d.ts +0 -121
- package/dist/crdt/nodes.js +0 -56
- package/dist/crdt/text/index/checks.d.ts +0 -15
- package/dist/crdt/text/index/checks.js +0 -156
- package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
- package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
- package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
- package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
- package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
- package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
- package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
- package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
- package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
- package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
- package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
- package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
- package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
- package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
- package/dist/edytor.utils.d.ts +0 -50
- package/dist/edytor.utils.js +0 -67
- package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
- package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
- package/dist/plugins/find/FindBar.svelte +0 -170
- package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
- package/dist/plugins/find/FindHighlights.svelte +0 -75
- package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
- package/dist/plugins/icons.d.ts +0 -2
- package/dist/plugins/icons.js +0 -63
- package/dist/plugins/image/ImageEmpty.svelte +0 -116
- package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
- package/dist/plugins/keepInView.d.ts +0 -4
- package/dist/plugins/keepInView.js +0 -6
- package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
- package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
- package/dist/plugins/richtext/labels.d.ts +0 -5
- package/dist/plugins/richtext/labels.js +0 -3
- package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
- package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
- package/dist/plugins/toolbar/LinkCard.svelte +0 -118
- package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
- package/dist/plugins/toolbar/Toolbar.svelte +0 -400
- package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
- package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
- package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
- package/dist/session/props.d.ts +0 -28
- package/dist/session/props.js +0 -162
- package/dist/text/deltas.d.ts +0 -22
- package/dist/text/deltas.js +0 -46
- package/dist/text/text.utils.d.ts +0 -45
- package/dist/text/text.utils.js +0 -199
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { BlockId } from '../../crdt/placement/model.js';
|
|
2
|
+
import type { DocumentOperations } from '../../crdt/operations.js';
|
|
3
|
+
import type { Prepared } from '../../crdt/doc/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Insert a row at `index` among `table`'s rows (`table.insert-row`): one
|
|
6
|
+
* empty cell per column, in one plan. `ids`: the new row.
|
|
7
|
+
*/
|
|
8
|
+
export declare const insertTableRow: (doc: Omit<DocumentOperations, "transact">, table: BlockId, index: number) => Prepared;
|
|
9
|
+
/**
|
|
10
|
+
* Delete `rows` with their cells (`table.delete-row`): one plan; a table
|
|
11
|
+
* left with no row goes with them. `ids`: the rows.
|
|
12
|
+
*/
|
|
13
|
+
export declare const deleteTableRows: (doc: Omit<DocumentOperations, "transact">, rows: readonly BlockId[]) => Prepared;
|
|
14
|
+
/**
|
|
15
|
+
* Insert a column at `index` among `table`'s listed columns
|
|
16
|
+
* (`table.insert-column`): a new id in `data.columns` and an empty cell
|
|
17
|
+
* for it in every row the table shows, in one plan. `width`: the new
|
|
18
|
+
* column's. `ids`: the table.
|
|
19
|
+
*/
|
|
20
|
+
export declare const insertTableColumn: (doc: Omit<DocumentOperations, "transact">, table: BlockId, index: number, width?: number) => Prepared;
|
|
21
|
+
/**
|
|
22
|
+
* Delete a column (`table.delete-column`, by id or position among the
|
|
23
|
+
* grid's): it leaves `data.columns` (every entry naming it) and every
|
|
24
|
+
* shown cell of it is deleted, in one plan; a table left with no column
|
|
25
|
+
* goes with it. A column the table shows but no longer lists
|
|
26
|
+
* (`table.cell`) loses its cells. `ids`: the table.
|
|
27
|
+
*/
|
|
28
|
+
export declare const deleteTableColumn: (doc: Omit<DocumentOperations, "transact">, table: BlockId, column: string | number) => Prepared;
|
|
29
|
+
/**
|
|
30
|
+
* Move a listed column to position `to` among them (`table.move-column`):
|
|
31
|
+
* one `order` patch of `data.columns`; no cell moves, every row shows its
|
|
32
|
+
* cells in the new order. `ids`: the table.
|
|
33
|
+
*/
|
|
34
|
+
export declare const moveTableColumn: (doc: Omit<DocumentOperations, "transact">, table: BlockId, column: string | number, to: number) => Prepared;
|
|
35
|
+
/**
|
|
36
|
+
* Move rows to position `to` among their table's rows
|
|
37
|
+
* (`table.move-row`): a move. Refused unless every one is a row of the
|
|
38
|
+
* same table. `ids`: the rows.
|
|
39
|
+
*/
|
|
40
|
+
export declare const moveTableRows: (doc: Omit<DocumentOperations, "transact">, rows: readonly BlockId[], to: number) => Prepared;
|
|
41
|
+
/**
|
|
42
|
+
* Create the cell `row` shows none of for `column` (an id, or a
|
|
43
|
+
* position among the grid's; `table.pad`: the first edit in a padded
|
|
44
|
+
* cell), empty, in one plan. A column the table shows but no longer
|
|
45
|
+
* lists (`table.cell`) is listed again, last. `ids`: the new cell.
|
|
46
|
+
*/
|
|
47
|
+
export declare const fillTableCell: (doc: Omit<DocumentOperations, "transact">, row: BlockId, column: string | number) => Prepared;
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The table ops (`table.*`), prepared over any document's public
|
|
3
|
+
* operations (a view's `edytor.document`, a headless document, a room's
|
|
4
|
+
* `transact`): each answers one plan composed of the document's own
|
|
5
|
+
* (`patchData`, `insertBlocks`, `deleteBlocks`, `moveBlocks`), which
|
|
6
|
+
* `document.apply(…)` writes (`document.apply(insertTableRow(document,
|
|
7
|
+
* 'T', 0))`), or a refusal. A table (a kind whose role says `table`) holds
|
|
8
|
+
* rows, a row cells, each cell names its column (`data.column`) and the
|
|
9
|
+
* table lists its columns in order (`data.columns`: `{ id, width? }`). The
|
|
10
|
+
* columns are data: inserting, deleting or moving one writes the table's
|
|
11
|
+
* `columns` array (and the cells of the rows it shows) in one plan, and
|
|
12
|
+
* the index shows every row's cells in that order (`table.columns`); a
|
|
13
|
+
* cell of no listed column does not display (`table.cell`), and the view
|
|
14
|
+
* pads a row that shows fewer cells than the table's columns
|
|
15
|
+
* (`table.pad`). Rows are blocks: a row moves among its table's rows by
|
|
16
|
+
* placement. No core code references these: the table plugin's commands
|
|
17
|
+
* dispatch them (`table.ts`).
|
|
18
|
+
*/
|
|
19
|
+
import { id as newId } from '../../utils.js';
|
|
20
|
+
import { columnIds } from '../../crdt/tables.js';
|
|
21
|
+
import { ref, refused } from '../../crdt/doc/plan.js';
|
|
22
|
+
const REFUSED = refused(null);
|
|
23
|
+
/**
|
|
24
|
+
* The table's columns and grid. A table listing none gets one column
|
|
25
|
+
* per column of its widest row, with ids from their positions (`c1`,
|
|
26
|
+
* `c2`, … as `tableBlock`'s), and `adopt` names each shown cell's column:
|
|
27
|
+
* two peers adopting one table write the same array items and the same
|
|
28
|
+
* cells' columns. The op then writes that array first, in its plan
|
|
29
|
+
* ({@link columnsParts}).
|
|
30
|
+
*/
|
|
31
|
+
const adopted = (doc, table) => {
|
|
32
|
+
const grid = doc.tableGrid(table);
|
|
33
|
+
const head = grid?.rows[0];
|
|
34
|
+
const sample = head?.cells.find((cell) => cell !== null);
|
|
35
|
+
if (!grid || !head || !sample)
|
|
36
|
+
return null;
|
|
37
|
+
const kinds = { row: doc.blockTypeOf(head.id), cell: doc.blockTypeOf(sample) };
|
|
38
|
+
const listed = doc.tableColumns(table);
|
|
39
|
+
if (listed !== null)
|
|
40
|
+
return {
|
|
41
|
+
columns: listed,
|
|
42
|
+
raw: columnIds(doc.blockDataOf(table)),
|
|
43
|
+
adopt: [],
|
|
44
|
+
first: [],
|
|
45
|
+
grid,
|
|
46
|
+
...kinds
|
|
47
|
+
};
|
|
48
|
+
const columns = grid.columns.map((_, i) => ({ id: `c${i + 1}` }));
|
|
49
|
+
return {
|
|
50
|
+
columns,
|
|
51
|
+
raw: columns.map((col) => col.id),
|
|
52
|
+
adopt: grid.rows.flatMap((row) => row.cells.flatMap((cell, i) => cell === null
|
|
53
|
+
? []
|
|
54
|
+
: [doc.prepare.patchData(cell, [{ path: ['column'], value: columns[i].id }])])),
|
|
55
|
+
first: [{ path: ['columns'], value: columns }],
|
|
56
|
+
grid: { columns: columns.map((col) => col.id), rows: grid.rows },
|
|
57
|
+
...kinds
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
/** The adoption's plans, then `patches` of the table's `data.columns` (one plan, empty without any). */
|
|
61
|
+
const columnsParts = (doc, table, a, patches = []) => [...a.adopt, doc.prepare.patchData(table, [...a.first, ...patches])];
|
|
62
|
+
/** `parts` as one plan answering `ids` (a composed plan answers its parts'). */
|
|
63
|
+
const planOf = (doc, ids, parts) => {
|
|
64
|
+
const p = doc.compose(...parts);
|
|
65
|
+
return 'writes' in p ? { ...p, ids } : p;
|
|
66
|
+
};
|
|
67
|
+
const cellSpec = (a, column) => ({
|
|
68
|
+
id: newId('b'),
|
|
69
|
+
type: a.cell,
|
|
70
|
+
data: { column }
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* The position among the grid's columns of `column`: a position, or an
|
|
74
|
+
* id (a table listing no columns names them by position until it adopts
|
|
75
|
+
* them); `-1` when none.
|
|
76
|
+
*/
|
|
77
|
+
const positionIn = (a, listed, column) => {
|
|
78
|
+
const at = typeof column === 'number' ? column : listed ? a.grid.columns.indexOf(column) : Number(column);
|
|
79
|
+
return Number.isInteger(at) && at >= 0 && at < a.grid.columns.length ? at : -1;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* The stored entry (its index in `data.columns`) the listed column at
|
|
83
|
+
* position `at` is: the first naming it; the array's length past them.
|
|
84
|
+
*/
|
|
85
|
+
const rawIndex = (a, at) => {
|
|
86
|
+
const id = a.columns[at]?.id;
|
|
87
|
+
const i = id === undefined ? -1 : a.raw.indexOf(id);
|
|
88
|
+
return i < 0 ? a.raw.length : i;
|
|
89
|
+
};
|
|
90
|
+
/** Where among `row`'s children a new cell at grid position `at` goes. */
|
|
91
|
+
const slotOf = (doc, cells, row, at) => Math.min(cells.slice(0, at).filter((x) => x !== null).length, doc.childrenIds(row).length);
|
|
92
|
+
/**
|
|
93
|
+
* Insert a row at `index` among `table`'s rows (`table.insert-row`): one
|
|
94
|
+
* empty cell per column, in one plan. `ids`: the new row.
|
|
95
|
+
*/
|
|
96
|
+
export const insertTableRow = (doc, table, index) => {
|
|
97
|
+
table = ref(table);
|
|
98
|
+
const a = adopted(doc, table);
|
|
99
|
+
if (a === null)
|
|
100
|
+
return REFUSED;
|
|
101
|
+
const at = Math.max(0, Math.min(Math.trunc(index) || 0, doc.childrenIds(table).length));
|
|
102
|
+
const row = {
|
|
103
|
+
id: newId('b'),
|
|
104
|
+
type: a.row,
|
|
105
|
+
data: {},
|
|
106
|
+
children: a.columns.map((col) => cellSpec(a, col.id))
|
|
107
|
+
};
|
|
108
|
+
return planOf(doc, [row.id], [...columnsParts(doc, table, a), doc.prepare.insertBlocks({ parent: table, index: at }, [row])]);
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Delete `rows` with their cells (`table.delete-row`): one plan; a table
|
|
112
|
+
* left with no row goes with them. `ids`: the rows.
|
|
113
|
+
*/
|
|
114
|
+
export const deleteTableRows = (doc, rows) => {
|
|
115
|
+
const ids = [...new Set(rows.map(ref))];
|
|
116
|
+
if (ids.length === 0 || ids.some((id) => !doc.isVisibleBlock(id) || !doc.isTableRow(id)))
|
|
117
|
+
return REFUSED;
|
|
118
|
+
return doc.prepare.deleteBlocks(ids);
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Insert a column at `index` among `table`'s listed columns
|
|
122
|
+
* (`table.insert-column`): a new id in `data.columns` and an empty cell
|
|
123
|
+
* for it in every row the table shows, in one plan. `width`: the new
|
|
124
|
+
* column's. `ids`: the table.
|
|
125
|
+
*/
|
|
126
|
+
export const insertTableColumn = (doc, table, index, width) => {
|
|
127
|
+
table = ref(table);
|
|
128
|
+
const a = adopted(doc, table);
|
|
129
|
+
if (a === null)
|
|
130
|
+
return REFUSED;
|
|
131
|
+
const at = Math.max(0, Math.min(Math.trunc(index) || 0, a.columns.length));
|
|
132
|
+
const column = typeof width === 'number' && Number.isFinite(width) && width > 0
|
|
133
|
+
? { id: newId('c'), width }
|
|
134
|
+
: { id: newId('c') };
|
|
135
|
+
return planOf(doc, [table], [
|
|
136
|
+
...columnsParts(doc, table, a, [{ path: ['columns'], splice: [rawIndex(a, at), 0, column] }]),
|
|
137
|
+
...a.grid.rows.map((row) => doc.prepare.insertBlocks({ parent: row.id, index: slotOf(doc, row.cells, row.id, at) }, [
|
|
138
|
+
cellSpec(a, column.id)
|
|
139
|
+
]))
|
|
140
|
+
]);
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Delete a column (`table.delete-column`, by id or position among the
|
|
144
|
+
* grid's): it leaves `data.columns` (every entry naming it) and every
|
|
145
|
+
* shown cell of it is deleted, in one plan; a table left with no column
|
|
146
|
+
* goes with it. A column the table shows but no longer lists
|
|
147
|
+
* (`table.cell`) loses its cells. `ids`: the table.
|
|
148
|
+
*/
|
|
149
|
+
export const deleteTableColumn = (doc, table, column) => {
|
|
150
|
+
table = ref(table);
|
|
151
|
+
const listed = doc.tableColumns(table) !== null;
|
|
152
|
+
const a = adopted(doc, table);
|
|
153
|
+
if (a === null)
|
|
154
|
+
return REFUSED;
|
|
155
|
+
const at = positionIn(a, listed, column);
|
|
156
|
+
if (at < 0)
|
|
157
|
+
return REFUSED;
|
|
158
|
+
if (a.grid.columns.length === 1)
|
|
159
|
+
return doc.prepare.deleteBlock(table, { keepChildren: false });
|
|
160
|
+
const id = a.grid.columns[at];
|
|
161
|
+
const items = listed ? doc.dataItemIds(table, ['columns']) : [];
|
|
162
|
+
const gone = a.grid.rows.flatMap((row) => row.cells[at] ?? []);
|
|
163
|
+
return planOf(doc, [table], [
|
|
164
|
+
...columnsParts(doc, table, a, listed
|
|
165
|
+
? a.raw.flatMap((c, i) => c === id && items[i] ? [{ path: ['columns', items[i]] }] : [])
|
|
166
|
+
: [{ path: ['columns'], splice: [at, 1] }]),
|
|
167
|
+
doc.prepare.deleteBlocks(gone)
|
|
168
|
+
]);
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Move a listed column to position `to` among them (`table.move-column`):
|
|
172
|
+
* one `order` patch of `data.columns`; no cell moves, every row shows its
|
|
173
|
+
* cells in the new order. `ids`: the table.
|
|
174
|
+
*/
|
|
175
|
+
export const moveTableColumn = (doc, table, column, to) => {
|
|
176
|
+
table = ref(table);
|
|
177
|
+
const listed = doc.tableColumns(table) !== null;
|
|
178
|
+
const a = adopted(doc, table);
|
|
179
|
+
if (a === null)
|
|
180
|
+
return REFUSED;
|
|
181
|
+
const from = positionIn(a, listed, column);
|
|
182
|
+
const dest = Math.trunc(to);
|
|
183
|
+
if (from < 0 || from >= a.columns.length || !(dest >= 0 && dest < a.columns.length))
|
|
184
|
+
return REFUSED;
|
|
185
|
+
if (from === dest)
|
|
186
|
+
return planOf(doc, [table], columnsParts(doc, table, a));
|
|
187
|
+
const moved = a.columns.map((_, i) => i);
|
|
188
|
+
moved.splice(from, 1);
|
|
189
|
+
moved.splice(dest, 0, from);
|
|
190
|
+
// Over the stored entries: the listed ones in their new order, then the rest as they were.
|
|
191
|
+
const firsts = moved.map((i) => rawIndex(a, i));
|
|
192
|
+
const rest = a.raw.map((_, i) => i).filter((i) => !firsts.includes(i));
|
|
193
|
+
return planOf(doc, [table], columnsParts(doc, table, a, [{ path: ['columns'], order: [...firsts, ...rest] }]));
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Move rows to position `to` among their table's rows
|
|
197
|
+
* (`table.move-row`): a move. Refused unless every one is a row of the
|
|
198
|
+
* same table. `ids`: the rows.
|
|
199
|
+
*/
|
|
200
|
+
export const moveTableRows = (doc, rows, to) => {
|
|
201
|
+
const ids = rows.map(ref);
|
|
202
|
+
const table = ids.length > 0 ? doc.parentOf(ids[0]) : null;
|
|
203
|
+
if (table === null || ids.some((id) => !doc.isTableRow(id) || doc.parentOf(id) !== table))
|
|
204
|
+
return REFUSED;
|
|
205
|
+
const at = Math.max(0, Math.min(Math.trunc(to) || 0, doc.childrenIds(table).length));
|
|
206
|
+
return doc.prepare.moveBlocks(ids, { parent: table, index: at });
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* Create the cell `row` shows none of for `column` (an id, or a
|
|
210
|
+
* position among the grid's; `table.pad`: the first edit in a padded
|
|
211
|
+
* cell), empty, in one plan. A column the table shows but no longer
|
|
212
|
+
* lists (`table.cell`) is listed again, last. `ids`: the new cell.
|
|
213
|
+
*/
|
|
214
|
+
export const fillTableCell = (doc, row, column) => {
|
|
215
|
+
row = ref(row);
|
|
216
|
+
if (!doc.isTableRow(row))
|
|
217
|
+
return REFUSED;
|
|
218
|
+
const table = doc.parentOf(row);
|
|
219
|
+
const listed = doc.tableColumns(table) !== null;
|
|
220
|
+
const a = adopted(doc, table);
|
|
221
|
+
if (a === null)
|
|
222
|
+
return REFUSED;
|
|
223
|
+
const at = positionIn(a, listed, column);
|
|
224
|
+
const shown = a.grid.rows.find((r) => r.id === row);
|
|
225
|
+
if (at < 0 || shown === undefined || shown.cells[at] !== null)
|
|
226
|
+
return REFUSED;
|
|
227
|
+
const id = a.grid.columns[at];
|
|
228
|
+
const spec = cellSpec(a, id);
|
|
229
|
+
return planOf(doc, [spec.id], [
|
|
230
|
+
...columnsParts(doc, table, a, at < a.columns.length ? [] : [{ path: ['columns'], splice: [a.raw.length, 0, { id }] }]),
|
|
231
|
+
doc.prepare.insertBlocks({ parent: row, index: slotOf(doc, shown.cells, row, at) }, [spec])
|
|
232
|
+
]);
|
|
233
|
+
};
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Tables (`table.*` in the delete contract):
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Tables (`table.*` in the delete contract): the table's grid is a CSS
|
|
3
|
+
* grid of its columns' widths (the template the kind sets from
|
|
4
|
+
* `data.columns`); each row is a subgrid of it, its cells and its
|
|
5
5
|
* placeholders (`table.pad`) items of that row: a placeholder sits at its
|
|
6
|
-
* column, the cells fill the others in order. Neither the grid nor a
|
|
7
|
-
* a nesting step: their indent is zeroed. Wider than the page, the
|
|
8
|
-
* scrolls sideways.
|
|
6
|
+
* column, the cells fill the others in order. Neither the grid nor a cell
|
|
7
|
+
* is a nesting step: their indent is zeroed. Wider than the page, the
|
|
8
|
+
* table scrolls sideways. The look (borders, the cells' padding, a header
|
|
9
|
+
* cell's shade) is a theme's: `edytor/themes/notion.css`.
|
|
9
10
|
*/
|
|
10
|
-
[data-edytor-block][data-edytor-table][data-edytor-type] {
|
|
11
|
-
padding-inline: 0;
|
|
12
|
-
--edytor-table-border-color: var(--edytor-table-border, rgb(233, 233, 231));
|
|
13
|
-
}
|
|
14
11
|
[data-edytor-table-scroll] {
|
|
12
|
+
/*
|
|
13
|
+
* The table's place sizes the box, never its columns (`table.overflow`):
|
|
14
|
+
* its content gives it no intrinsic width, so a page laying the editor out
|
|
15
|
+
* by its content (a grid or flex item, a float) does not grow with a wide
|
|
16
|
+
* table; the grid scrolls inside.
|
|
17
|
+
*/
|
|
18
|
+
contain: inline-size;
|
|
15
19
|
overflow-x: auto;
|
|
16
20
|
overflow-y: hidden;
|
|
17
21
|
/* Room for the `+` under it (the chrome's), so it never covers the next block. */
|
|
@@ -21,16 +25,11 @@
|
|
|
21
25
|
display: grid;
|
|
22
26
|
width: max-content;
|
|
23
27
|
padding-inline-start: 0;
|
|
24
|
-
border-top: 1px solid var(--edytor-table-border-color);
|
|
25
|
-
border-left: 1px solid var(--edytor-table-border-color);
|
|
26
28
|
}
|
|
27
29
|
[data-edytor-block][data-edytor-table-row][data-edytor-type] {
|
|
28
30
|
display: grid;
|
|
29
31
|
grid-column: 1 / -1;
|
|
30
32
|
grid-template-columns: subgrid;
|
|
31
|
-
margin: 0;
|
|
32
|
-
padding: 0;
|
|
33
|
-
border-radius: 0;
|
|
34
33
|
}
|
|
35
34
|
[data-edytor-table-row] > [data-edytor-children][data-edytor-table-cells] {
|
|
36
35
|
display: contents;
|
|
@@ -39,12 +38,6 @@
|
|
|
39
38
|
[data-edytor-table-pad] {
|
|
40
39
|
grid-row: 1;
|
|
41
40
|
min-width: 0;
|
|
42
|
-
min-height: 33px;
|
|
43
|
-
margin: 0;
|
|
44
|
-
padding: 7px 9px;
|
|
45
|
-
border-radius: 0;
|
|
46
|
-
border-right: 1px solid var(--edytor-table-border-color);
|
|
47
|
-
border-bottom: 1px solid var(--edytor-table-border-color);
|
|
48
41
|
white-space: pre-wrap;
|
|
49
42
|
overflow-wrap: anywhere;
|
|
50
43
|
box-sizing: border-box;
|
|
@@ -54,18 +47,33 @@
|
|
|
54
47
|
user-select: none;
|
|
55
48
|
-webkit-user-select: none;
|
|
56
49
|
}
|
|
57
|
-
/* A header row's or header column's cells: Notion's gray, a little bolder. */
|
|
58
|
-
[data-edytor-block][data-edytor-table-cell][data-edytor-table-header='true'] {
|
|
59
|
-
background: var(--edytor-table-header-background, rgb(247, 246, 243));
|
|
60
|
-
font-weight: 600;
|
|
61
|
-
}
|
|
62
50
|
[data-edytor-table-row] [data-edytor-table-cell] > [data-edytor-children] {
|
|
63
51
|
padding-inline-start: 0;
|
|
64
52
|
}
|
|
65
53
|
|
|
66
54
|
/* ── The chrome (overlay): grips, `+` bars, resize bands, menus ─────── */
|
|
67
|
-
|
|
68
|
-
[data-edytor-table-chrome]
|
|
55
|
+
/* Where a grip stands (a point: the app's grip centered on it), a `+`, a menu. */
|
|
56
|
+
[data-edytor-table-chrome] [data-edytor-table-grip-host] {
|
|
57
|
+
position: absolute;
|
|
58
|
+
display: flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
justify-content: center;
|
|
61
|
+
width: 0;
|
|
62
|
+
height: 0;
|
|
63
|
+
}
|
|
64
|
+
[data-edytor-table-chrome] [data-edytor-table-add-host],
|
|
65
|
+
[data-edytor-table-chrome] [data-edytor-table-menu-host] {
|
|
66
|
+
position: absolute;
|
|
67
|
+
}
|
|
68
|
+
[data-edytor-table-chrome] [data-edytor-table-menu-host] {
|
|
69
|
+
z-index: 1;
|
|
70
|
+
}
|
|
71
|
+
[data-edytor-table-chrome] [data-edytor-table-grip-host] > *,
|
|
72
|
+
[data-edytor-table-chrome] [data-edytor-table-add-host] > * {
|
|
73
|
+
flex: none;
|
|
74
|
+
pointer-events: auto;
|
|
75
|
+
touch-action: none;
|
|
76
|
+
}
|
|
69
77
|
[data-edytor-table-chrome] [data-edytor-table-resize] {
|
|
70
78
|
position: absolute;
|
|
71
79
|
margin: 0;
|
|
@@ -74,56 +82,25 @@
|
|
|
74
82
|
pointer-events: auto;
|
|
75
83
|
touch-action: none;
|
|
76
84
|
}
|
|
77
|
-
[data-edytor-table-chrome][data-selecting='true'] >
|
|
85
|
+
[data-edytor-table-chrome][data-selecting='true'] > *,
|
|
86
|
+
[data-edytor-table-chrome][data-selecting='true'] [data-edytor-table-grip-host] > *,
|
|
87
|
+
[data-edytor-table-chrome][data-selecting='true'] [data-edytor-table-add-host] > * {
|
|
78
88
|
pointer-events: none;
|
|
79
89
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
[data-edytor-table-chrome] button[data-edytor-table-grip]::before {
|
|
96
|
-
content: '⋮⋮';
|
|
97
|
-
font-size: 10px;
|
|
98
|
-
letter-spacing: -2px;
|
|
99
|
-
line-height: 24px;
|
|
100
|
-
}
|
|
101
|
-
[data-edytor-table-chrome] button[data-edytor-table-grip='column']::before {
|
|
102
|
-
content: '⋯';
|
|
103
|
-
font-size: 14px;
|
|
104
|
-
letter-spacing: 0;
|
|
105
|
-
line-height: 18px;
|
|
106
|
-
}
|
|
107
|
-
[data-edytor-table-chrome] button[data-edytor-table-add] {
|
|
108
|
-
height: 16px;
|
|
109
|
-
border-radius: 3px;
|
|
110
|
-
background: rgba(55, 53, 47, 0.04);
|
|
111
|
-
color: rgba(55, 53, 47, 0.45);
|
|
112
|
-
cursor: pointer;
|
|
113
|
-
opacity: 0;
|
|
114
|
-
transition: opacity 80ms ease;
|
|
115
|
-
}
|
|
116
|
-
[data-edytor-table-chrome] button[data-edytor-table-add='column'] {
|
|
117
|
-
width: 16px;
|
|
118
|
-
}
|
|
119
|
-
[data-edytor-table-chrome] button[data-edytor-table-add]::before {
|
|
120
|
-
content: '+';
|
|
121
|
-
font-size: 14px;
|
|
122
|
-
}
|
|
123
|
-
[data-edytor-table-chrome] button[data-edytor-table-add]:hover,
|
|
124
|
-
[data-edytor-table-chrome] button[data-edytor-table-add]:focus-visible {
|
|
125
|
-
opacity: 1;
|
|
126
|
-
background: rgba(55, 53, 47, 0.08);
|
|
90
|
+
/*
|
|
91
|
+
* A grip's drag (`table.drag`): the drop line between two rows or two
|
|
92
|
+
* columns, and a band's guide; placed here, painted by a theme
|
|
93
|
+
* (`edytor/themes/notion.css`: Notion's blue line).
|
|
94
|
+
*/
|
|
95
|
+
[data-edytor-table-chrome] [data-edytor-table-drop] {
|
|
96
|
+
position: absolute;
|
|
97
|
+
pointer-events: none;
|
|
98
|
+
}
|
|
99
|
+
[data-edytor-table-chrome] [data-edytor-table-drop='row'] {
|
|
100
|
+
height: 4px;
|
|
101
|
+
}
|
|
102
|
+
[data-edytor-table-chrome] [data-edytor-table-drop='column'] {
|
|
103
|
+
width: 4px;
|
|
127
104
|
}
|
|
128
105
|
[data-edytor-table-chrome] [data-edytor-table-resize] {
|
|
129
106
|
width: 8px;
|
|
@@ -136,67 +113,11 @@
|
|
|
136
113
|
bottom: 0;
|
|
137
114
|
left: 3px;
|
|
138
115
|
width: 2px;
|
|
139
|
-
background: var(--edytor-table-resize-color, rgba(35, 131, 226, 0.43));
|
|
140
|
-
opacity: 0;
|
|
141
116
|
pointer-events: none;
|
|
117
|
+
visibility: hidden;
|
|
142
118
|
}
|
|
143
119
|
[data-edytor-table-chrome] [data-edytor-table-resize]:hover::after,
|
|
144
120
|
[data-edytor-table-chrome] [data-edytor-table-resize]:focus-visible::after,
|
|
145
121
|
[data-edytor-table-chrome] [data-edytor-table-resize][data-dragging='true']::after {
|
|
146
|
-
|
|
147
|
-
}
|
|
148
|
-
[data-edytor-table-chrome] [data-edytor-table-resize]:focus-visible {
|
|
149
|
-
outline: none;
|
|
150
|
-
}
|
|
151
|
-
.edytor-table-menu {
|
|
152
|
-
position: absolute;
|
|
153
|
-
z-index: 1;
|
|
154
|
-
min-width: 180px;
|
|
155
|
-
padding: 6px;
|
|
156
|
-
border-radius: 10px;
|
|
157
|
-
background: var(--edytor-menu-background, #fff);
|
|
158
|
-
box-shadow:
|
|
159
|
-
0 0 0 1px rgba(15, 15, 15, 0.05),
|
|
160
|
-
0 3px 6px rgba(15, 15, 15, 0.1),
|
|
161
|
-
0 9px 24px rgba(15, 15, 15, 0.2);
|
|
162
|
-
pointer-events: auto;
|
|
163
|
-
}
|
|
164
|
-
.edytor-table-menu-row {
|
|
165
|
-
display: flex;
|
|
166
|
-
align-items: center;
|
|
167
|
-
gap: 8px;
|
|
168
|
-
width: 100%;
|
|
169
|
-
padding: 4px 8px;
|
|
170
|
-
border: none;
|
|
171
|
-
border-radius: 6px;
|
|
172
|
-
background: transparent;
|
|
173
|
-
color: rgb(55, 53, 47);
|
|
174
|
-
font: inherit;
|
|
175
|
-
font-size: 14px;
|
|
176
|
-
text-align: start;
|
|
177
|
-
cursor: pointer;
|
|
178
|
-
}
|
|
179
|
-
.edytor-table-menu-row::before {
|
|
180
|
-
content: '';
|
|
181
|
-
flex: none;
|
|
182
|
-
width: 20px;
|
|
183
|
-
height: 20px;
|
|
184
|
-
background: #383836;
|
|
185
|
-
-webkit-mask: var(--table-menu-icon) center / 20px no-repeat;
|
|
186
|
-
mask: var(--table-menu-icon) center / 20px no-repeat;
|
|
187
|
-
}
|
|
188
|
-
.edytor-table-menu-row:hover:not(:disabled),
|
|
189
|
-
.edytor-table-menu-row:focus-visible {
|
|
190
|
-
background: rgba(33, 27, 23, 0.06);
|
|
191
|
-
outline: none;
|
|
192
|
-
}
|
|
193
|
-
.edytor-table-menu-row:disabled {
|
|
194
|
-
opacity: 0.4;
|
|
195
|
-
cursor: default;
|
|
196
|
-
}
|
|
197
|
-
.edytor-table-menu-row.danger:hover:not(:disabled) {
|
|
198
|
-
color: #cf5148;
|
|
199
|
-
}
|
|
200
|
-
.edytor-table-menu-row.danger:hover:not(:disabled)::before {
|
|
201
|
-
background: #cf5148;
|
|
122
|
+
visibility: visible;
|
|
202
123
|
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The table plugin's commands and reads over
|
|
3
|
-
*
|
|
2
|
+
* The table plugin's commands and reads over its table ops (`ops.ts`,
|
|
3
|
+
* `table.*` in the delete contract): each command is one dispatched plan
|
|
4
4
|
* (hooks see it by its name: `insertTableRow`, `deleteTableRows`,
|
|
5
5
|
* `insertTableColumn`, `deleteTableColumn`, `moveTableColumn`,
|
|
6
6
|
* `moveTableRows`, `fillTableCell`), its own undo step, refused in a
|
|
7
7
|
* readonly view. The grid is the document's (`facade.tableGrid`): a padded
|
|
8
8
|
* cell is `null` there, and the first edit in it creates it.
|
|
9
9
|
*/
|
|
10
|
+
import type { Snippet } from 'svelte';
|
|
10
11
|
import type { Block } from '../../block/block.svelte.js';
|
|
12
|
+
import type { TableAddPayload, TableChrome, TableGripPayload } from './chrome.svelte.js';
|
|
11
13
|
import type { Edytor } from '../../edytor.svelte.js';
|
|
12
|
-
import type { PartialLabels } from '../../labels.js';
|
|
13
14
|
export type TablePluginOptions = {
|
|
14
15
|
/** The rows a new table has (default 3). */
|
|
15
16
|
rows?: number;
|
|
@@ -19,10 +20,26 @@ export type TablePluginOptions = {
|
|
|
19
20
|
columnWidth?: number;
|
|
20
21
|
/** The narrowest a column may be resized to, in pixels (default 48). */
|
|
21
22
|
minColumnWidth?: number;
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
/**
|
|
24
|
+
* A row's or a column's grip: it renders centered where the grip stands
|
|
25
|
+
* (left of the hovered row, above the hovered column; without it, no
|
|
26
|
+
* grip). Put
|
|
27
|
+
* `{@attach payload.grip}` on its element: the drag, the click that
|
|
28
|
+
* opens its menu, its keys and its ARIA.
|
|
29
|
+
*/
|
|
30
|
+
grip?: Snippet<[TableGripPayload]>;
|
|
31
|
+
/**
|
|
32
|
+
* A grip's menu: it renders under its grip while `chrome.menu` is set
|
|
33
|
+
* (without it, nothing shows). Put `{@attach chrome.popup}` and
|
|
34
|
+
* `{@attach chrome.keys}` on its element and `{@attach item.option}` on
|
|
35
|
+
* each row of `chrome.items` (its highlight from `item.selected`).
|
|
36
|
+
*/
|
|
37
|
+
menu?: Snippet<[TableChrome]>;
|
|
38
|
+
/**
|
|
39
|
+
* The `+` under the table (a row) and beside it (a column): it renders
|
|
40
|
+
* along that edge (without it, no `+`).
|
|
41
|
+
*/
|
|
42
|
+
add?: Snippet<[TableAddPayload]>;
|
|
26
43
|
};
|
|
27
44
|
/** A table's grid as the document shows it (`facade.tableGrid`). */
|
|
28
45
|
export type TableGrid = {
|
|
@@ -71,6 +88,8 @@ export declare const moveRows: (table: Block, rows: readonly Block[], to: number
|
|
|
71
88
|
export declare const fillCell: (table: Block, row: string, column: string | number) => Block | null;
|
|
72
89
|
/** Toggle `flag` (`headerRow` or `headerColumn`) of `table`'s data (`table.header`). */
|
|
73
90
|
export declare const toggleHeader: (table: Block, flag: "headerRow" | "headerColumn") => void;
|
|
91
|
+
/** A label key as a row id: `insertRowAbove` → `insert-row-above`. */
|
|
92
|
+
export declare const kebab: (key: string) => string;
|
|
74
93
|
/** A cell's width as set, else `fallback`: `data.columns[i].width`. */
|
|
75
94
|
export declare const widthOf: (column: unknown, fallback: number) => number;
|
|
76
95
|
/**
|