@doxi/core 0.11.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/LICENSE +21 -0
- package/README.md +81 -0
- package/dist/collab/port.d.ts +46 -0
- package/dist/collab/port.d.ts.map +1 -0
- package/dist/collab/port.js +11 -0
- package/dist/collab/port.js.map +1 -0
- package/dist/commands/block-commands.d.ts +62 -0
- package/dist/commands/block-commands.d.ts.map +1 -0
- package/dist/commands/block-commands.js +208 -0
- package/dist/commands/block-commands.js.map +1 -0
- package/dist/commands/command.d.ts +13 -0
- package/dist/commands/command.d.ts.map +1 -0
- package/dist/commands/command.js +13 -0
- package/dist/commands/command.js.map +1 -0
- package/dist/commands/edit-commands.d.ts +5 -0
- package/dist/commands/edit-commands.d.ts.map +1 -0
- package/dist/commands/edit-commands.js +147 -0
- package/dist/commands/edit-commands.js.map +1 -0
- package/dist/commands/image-commands.d.ts +31 -0
- package/dist/commands/image-commands.d.ts.map +1 -0
- package/dist/commands/image-commands.js +130 -0
- package/dist/commands/image-commands.js.map +1 -0
- package/dist/commands/index.d.ts +11 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +11 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/keymap.d.ts +34 -0
- package/dist/commands/keymap.d.ts.map +1 -0
- package/dist/commands/keymap.js +84 -0
- package/dist/commands/keymap.js.map +1 -0
- package/dist/commands/link-commands.d.ts +54 -0
- package/dist/commands/link-commands.d.ts.map +1 -0
- package/dist/commands/link-commands.js +151 -0
- package/dist/commands/link-commands.js.map +1 -0
- package/dist/commands/list-commands.d.ts +42 -0
- package/dist/commands/list-commands.d.ts.map +1 -0
- package/dist/commands/list-commands.js +316 -0
- package/dist/commands/list-commands.js.map +1 -0
- package/dist/commands/mark-commands.d.ts +53 -0
- package/dist/commands/mark-commands.d.ts.map +1 -0
- package/dist/commands/mark-commands.js +181 -0
- package/dist/commands/mark-commands.js.map +1 -0
- package/dist/commands/selection-commands.d.ts +3 -0
- package/dist/commands/selection-commands.d.ts.map +1 -0
- package/dist/commands/selection-commands.js +11 -0
- package/dist/commands/selection-commands.js.map +1 -0
- package/dist/commands/table-commands.d.ts +109 -0
- package/dist/commands/table-commands.d.ts.map +1 -0
- package/dist/commands/table-commands.js +884 -0
- package/dist/commands/table-commands.js.map +1 -0
- package/dist/history/history.d.ts +40 -0
- package/dist/history/history.d.ts.map +1 -0
- package/dist/history/history.js +139 -0
- package/dist/history/history.js.map +1 -0
- package/dist/history/index.d.ts +2 -0
- package/dist/history/index.d.ts.map +1 -0
- package/dist/history/index.js +2 -0
- package/dist/history/index.js.map +1 -0
- package/dist/html/index.d.ts +3 -0
- package/dist/html/index.d.ts.map +1 -0
- package/dist/html/index.js +3 -0
- package/dist/html/index.js.map +1 -0
- package/dist/html/parse.d.ts +4 -0
- package/dist/html/parse.d.ts.map +1 -0
- package/dist/html/parse.js +0 -0
- package/dist/html/parse.js.map +1 -0
- package/dist/html/serialize.d.ts +4 -0
- package/dist/html/serialize.d.ts.map +1 -0
- package/dist/html/serialize.js +75 -0
- package/dist/html/serialize.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/index.d.ts +6 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +6 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/layout-engine.d.ts +20 -0
- package/dist/layout/layout-engine.d.ts.map +1 -0
- package/dist/layout/layout-engine.js +198 -0
- package/dist/layout/layout-engine.js.map +1 -0
- package/dist/layout/measure.d.ts +9 -0
- package/dist/layout/measure.d.ts.map +1 -0
- package/dist/layout/measure.js +37 -0
- package/dist/layout/measure.js.map +1 -0
- package/dist/layout/split-paragraph.d.ts +28 -0
- package/dist/layout/split-paragraph.d.ts.map +1 -0
- package/dist/layout/split-paragraph.js +122 -0
- package/dist/layout/split-paragraph.js.map +1 -0
- package/dist/layout/split-table.d.ts +46 -0
- package/dist/layout/split-table.d.ts.map +1 -0
- package/dist/layout/split-table.js +84 -0
- package/dist/layout/split-table.js.map +1 -0
- package/dist/layout/types.d.ts +73 -0
- package/dist/layout/types.d.ts.map +1 -0
- package/dist/layout/types.js +36 -0
- package/dist/layout/types.js.map +1 -0
- package/dist/layout/widow-orphan.d.ts +15 -0
- package/dist/layout/widow-orphan.d.ts.map +1 -0
- package/dist/layout/widow-orphan.js +14 -0
- package/dist/layout/widow-orphan.js.map +1 -0
- package/dist/model/content-expr.d.ts +32 -0
- package/dist/model/content-expr.d.ts.map +1 -0
- package/dist/model/content-expr.js +106 -0
- package/dist/model/content-expr.js.map +1 -0
- package/dist/model/fragment.d.ts +17 -0
- package/dist/model/fragment.d.ts.map +1 -0
- package/dist/model/fragment.js +44 -0
- package/dist/model/fragment.js.map +1 -0
- package/dist/model/index.d.ts +10 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +10 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/mark.d.ts +35 -0
- package/dist/model/mark.d.ts.map +1 -0
- package/dist/model/mark.js +89 -0
- package/dist/model/mark.js.map +1 -0
- package/dist/model/node-type.d.ts +36 -0
- package/dist/model/node-type.d.ts.map +1 -0
- package/dist/model/node-type.js +14 -0
- package/dist/model/node-type.js.map +1 -0
- package/dist/model/node.d.ts +36 -0
- package/dist/model/node.d.ts.map +1 -0
- package/dist/model/node.js +192 -0
- package/dist/model/node.js.map +1 -0
- package/dist/model/position.d.ts +66 -0
- package/dist/model/position.d.ts.map +1 -0
- package/dist/model/position.js +158 -0
- package/dist/model/position.js.map +1 -0
- package/dist/model/schema.d.ts +28 -0
- package/dist/model/schema.d.ts.map +1 -0
- package/dist/model/schema.js +195 -0
- package/dist/model/schema.js.map +1 -0
- package/dist/model/slice.d.ts +26 -0
- package/dist/model/slice.d.ts.map +1 -0
- package/dist/model/slice.js +56 -0
- package/dist/model/slice.js.map +1 -0
- package/dist/model/table-grid.d.ts +71 -0
- package/dist/model/table-grid.d.ts.map +1 -0
- package/dist/model/table-grid.js +130 -0
- package/dist/model/table-grid.js.map +1 -0
- package/dist/plugin/index.d.ts +3 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +3 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/plugin-key.d.ts +13 -0
- package/dist/plugin/plugin-key.d.ts.map +1 -0
- package/dist/plugin/plugin-key.js +13 -0
- package/dist/plugin/plugin-key.js.map +1 -0
- package/dist/plugin/plugin-state.d.ts +2 -0
- package/dist/plugin/plugin-state.d.ts.map +1 -0
- package/dist/plugin/plugin-state.js +3 -0
- package/dist/plugin/plugin-state.js.map +1 -0
- package/dist/plugin/plugin.d.ts +39 -0
- package/dist/plugin/plugin.d.ts.map +1 -0
- package/dist/plugin/plugin.js +10 -0
- package/dist/plugin/plugin.js.map +1 -0
- package/dist/schema/default.d.ts +163 -0
- package/dist/schema/default.d.ts.map +1 -0
- package/dist/schema/default.js +94 -0
- package/dist/schema/default.js.map +1 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/serialize/index.d.ts +2 -0
- package/dist/serialize/index.d.ts.map +1 -0
- package/dist/serialize/index.js +2 -0
- package/dist/serialize/index.js.map +1 -0
- package/dist/serialize/json.d.ts +15 -0
- package/dist/serialize/json.d.ts.map +1 -0
- package/dist/serialize/json.js +23 -0
- package/dist/serialize/json.js.map +1 -0
- package/dist/state/all-selection.d.ts +11 -0
- package/dist/state/all-selection.d.ts.map +1 -0
- package/dist/state/all-selection.js +17 -0
- package/dist/state/all-selection.js.map +1 -0
- package/dist/state/cell-selection.d.ts +30 -0
- package/dist/state/cell-selection.d.ts.map +1 -0
- package/dist/state/cell-selection.js +38 -0
- package/dist/state/cell-selection.js.map +1 -0
- package/dist/state/editor-state.d.ts +46 -0
- package/dist/state/editor-state.d.ts.map +1 -0
- package/dist/state/editor-state.js +211 -0
- package/dist/state/editor-state.js.map +1 -0
- package/dist/state/index.d.ts +7 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +7 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/node-selection.d.ts +16 -0
- package/dist/state/node-selection.d.ts.map +1 -0
- package/dist/state/node-selection.js +51 -0
- package/dist/state/node-selection.js.map +1 -0
- package/dist/state/selection.d.ts +29 -0
- package/dist/state/selection.d.ts.map +1 -0
- package/dist/state/selection.js +24 -0
- package/dist/state/selection.js.map +1 -0
- package/dist/state/text-selection.d.ts +10 -0
- package/dist/state/text-selection.d.ts.map +1 -0
- package/dist/state/text-selection.js +26 -0
- package/dist/state/text-selection.js.map +1 -0
- package/dist/transform/attr-step.d.ts +16 -0
- package/dist/transform/attr-step.d.ts.map +1 -0
- package/dist/transform/attr-step.js +98 -0
- package/dist/transform/attr-step.js.map +1 -0
- package/dist/transform/index.d.ts +10 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/index.js +10 -0
- package/dist/transform/index.js.map +1 -0
- package/dist/transform/mapping.d.ts +44 -0
- package/dist/transform/mapping.d.ts.map +1 -0
- package/dist/transform/mapping.js +101 -0
- package/dist/transform/mapping.js.map +1 -0
- package/dist/transform/mark-step.d.ts +27 -0
- package/dist/transform/mark-step.d.ts.map +1 -0
- package/dist/transform/mark-step.js +146 -0
- package/dist/transform/mark-step.js.map +1 -0
- package/dist/transform/replace-around-step.d.ts +35 -0
- package/dist/transform/replace-around-step.d.ts.map +1 -0
- package/dist/transform/replace-around-step.js +144 -0
- package/dist/transform/replace-around-step.js.map +1 -0
- package/dist/transform/replace-step.d.ts +17 -0
- package/dist/transform/replace-step.d.ts.map +1 -0
- package/dist/transform/replace-step.js +72 -0
- package/dist/transform/replace-step.js.map +1 -0
- package/dist/transform/replace.d.ts +18 -0
- package/dist/transform/replace.d.ts.map +1 -0
- package/dist/transform/replace.js +132 -0
- package/dist/transform/replace.js.map +1 -0
- package/dist/transform/set-page-meta-step.d.ts +42 -0
- package/dist/transform/set-page-meta-step.d.ts.map +1 -0
- package/dist/transform/set-page-meta-step.js +75 -0
- package/dist/transform/set-page-meta-step.js.map +1 -0
- package/dist/transform/step.d.ts +34 -0
- package/dist/transform/step.d.ts.map +1 -0
- package/dist/transform/step.js +23 -0
- package/dist/transform/step.js.map +1 -0
- package/dist/transform/transaction.d.ts +20 -0
- package/dist/transform/transaction.d.ts.map +1 -0
- package/dist/transform/transaction.js +38 -0
- package/dist/transform/transaction.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/dist/view/cell-drag.d.ts +33 -0
- package/dist/view/cell-drag.d.ts.map +1 -0
- package/dist/view/cell-drag.js +177 -0
- package/dist/view/cell-drag.js.map +1 -0
- package/dist/view/clipboard.d.ts +5 -0
- package/dist/view/clipboard.d.ts.map +1 -0
- package/dist/view/clipboard.js +97 -0
- package/dist/view/clipboard.js.map +1 -0
- package/dist/view/default-renderer.d.ts +3 -0
- package/dist/view/default-renderer.d.ts.map +1 -0
- package/dist/view/default-renderer.js +142 -0
- package/dist/view/default-renderer.js.map +1 -0
- package/dist/view/dom-spec.d.ts +11 -0
- package/dist/view/dom-spec.d.ts.map +1 -0
- package/dist/view/dom-spec.js +32 -0
- package/dist/view/dom-spec.js.map +1 -0
- package/dist/view/editor-view.d.ts +55 -0
- package/dist/view/editor-view.d.ts.map +1 -0
- package/dist/view/editor-view.js +143 -0
- package/dist/view/editor-view.js.map +1 -0
- package/dist/view/image-resize.d.ts +37 -0
- package/dist/view/image-resize.d.ts.map +1 -0
- package/dist/view/image-resize.js +191 -0
- package/dist/view/image-resize.js.map +1 -0
- package/dist/view/index.d.ts +15 -0
- package/dist/view/index.d.ts.map +1 -0
- package/dist/view/index.js +15 -0
- package/dist/view/index.js.map +1 -0
- package/dist/view/input-pipeline.d.ts +24 -0
- package/dist/view/input-pipeline.d.ts.map +1 -0
- package/dist/view/input-pipeline.js +226 -0
- package/dist/view/input-pipeline.js.map +1 -0
- package/dist/view/mutation-observer.d.ts +17 -0
- package/dist/view/mutation-observer.d.ts.map +1 -0
- package/dist/view/mutation-observer.js +62 -0
- package/dist/view/mutation-observer.js.map +1 -0
- package/dist/view/page-slots.d.ts +56 -0
- package/dist/view/page-slots.d.ts.map +1 -0
- package/dist/view/page-slots.js +230 -0
- package/dist/view/page-slots.js.map +1 -0
- package/dist/view/paginator.d.ts +17 -0
- package/dist/view/paginator.d.ts.map +1 -0
- package/dist/view/paginator.js +93 -0
- package/dist/view/paginator.js.map +1 -0
- package/dist/view/print.d.ts +42 -0
- package/dist/view/print.d.ts.map +1 -0
- package/dist/view/print.js +70 -0
- package/dist/view/print.js.map +1 -0
- package/dist/view/reconcile.d.ts +16 -0
- package/dist/view/reconcile.d.ts.map +1 -0
- package/dist/view/reconcile.js +158 -0
- package/dist/view/reconcile.js.map +1 -0
- package/dist/view/renderer.d.ts +31 -0
- package/dist/view/renderer.d.ts.map +1 -0
- package/dist/view/renderer.js +89 -0
- package/dist/view/renderer.js.map +1 -0
- package/dist/view/selection-sync.d.ts +35 -0
- package/dist/view/selection-sync.d.ts.map +1 -0
- package/dist/view/selection-sync.js +324 -0
- package/dist/view/selection-sync.js.map +1 -0
- package/dist/view/table-resize.d.ts +41 -0
- package/dist/view/table-resize.d.ts.map +1 -0
- package/dist/view/table-resize.js +216 -0
- package/dist/view/table-resize.js.map +1 -0
- package/package.json +93 -0
- package/styles/base.css +269 -0
- package/styles/dark.css +36 -0
- package/styles/light.css +13 -0
- package/styles/page.css +93 -0
- package/styles/print-a4.css +87 -0
- package/styles/print.css +88 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-sync.js","sourceRoot":"","sources":["../../src/view/selection-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { EditorView } from './editor-view.js';
|
|
2
|
+
/**
|
|
3
|
+
* Pointer-driven column-width resize for tables.
|
|
4
|
+
*
|
|
5
|
+
* Hot zone: within 5px of the right edge of a `.dx-table-cell`.
|
|
6
|
+
*
|
|
7
|
+
* Strategy:
|
|
8
|
+
* - On pointerdown inside the hot zone, capture the starting clientX, the
|
|
9
|
+
* cell element, its column index (count `<td>` siblings before it in its
|
|
10
|
+
* `<tr>`), the host `<table>` element, and the table's absolute [open]
|
|
11
|
+
* position in the model (read from a NodeRef attached by the renderer).
|
|
12
|
+
* - During the drag, we mutate the DOM directly — writing
|
|
13
|
+
* `cell.style.width = '${newWidth}px'` on every cell in the affected
|
|
14
|
+
* column. This avoids history bloat from per-pixel AttrStep transactions
|
|
15
|
+
* and avoids racing with the MutationObserver mid-drag.
|
|
16
|
+
* - On pointerup we dispatch a SINGLE `setCellWidth(tableStart, col, final)`
|
|
17
|
+
* transaction. The view re-renders from the new doc, which restores any
|
|
18
|
+
* direct DOM mutations (they're now reflected in the model).
|
|
19
|
+
*
|
|
20
|
+
* The MutationObserver's snapshot mechanism (see `mutation-observer.ts`)
|
|
21
|
+
* treats the dispatched re-render as authorized because `view.state.doc`
|
|
22
|
+
* advances. The DOM writes that happened during the drag fire MutationRecords
|
|
23
|
+
* too, but those are observed asynchronously — by the time the observer
|
|
24
|
+
* callback runs, the doc has usually already advanced from the pointerup
|
|
25
|
+
* dispatch, so the observer sees `view.state.doc !== lastDocSnapshot` and
|
|
26
|
+
* skips reverting. (A rare race where the observer fires between a
|
|
27
|
+
* drag-time DOM write and the pointerup dispatch is theoretically
|
|
28
|
+
* possible but unobserved in practice; if it appears, the fix is to
|
|
29
|
+
* tag drag-time writes via a dataset attribute the observer ignores.)
|
|
30
|
+
*
|
|
31
|
+
* v0.3c: Drag-time DOM writes are coalesced through `requestAnimationFrame`.
|
|
32
|
+
* Pointermove updates the pending width and (if no frame is already queued)
|
|
33
|
+
* schedules a single rAF callback that flushes the latest width to every cell
|
|
34
|
+
* in the column. This caps DOM writes at the browser's frame rate (~60 Hz)
|
|
35
|
+
* instead of firing on every pointermove (which can be 240+/sec on
|
|
36
|
+
* high-refresh displays). On pointerup the pending frame is cancelled and the
|
|
37
|
+
* final width is written synchronously before dispatching the AttrStep
|
|
38
|
+
* transaction — preserving the existing one-commit-on-pointerup invariant.
|
|
39
|
+
*/
|
|
40
|
+
export declare function installTableResize(view: EditorView): () => void;
|
|
41
|
+
//# sourceMappingURL=table-resize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-resize.d.ts","sourceRoot":"","sources":["../../src/view/table-resize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,IAAI,CAsL/D"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { setCellWidth } from '../commands/table-commands.js';
|
|
2
|
+
import { getNodeRef } from './renderer.js';
|
|
3
|
+
/**
|
|
4
|
+
* Pointer-driven column-width resize for tables.
|
|
5
|
+
*
|
|
6
|
+
* Hot zone: within 5px of the right edge of a `.dx-table-cell`.
|
|
7
|
+
*
|
|
8
|
+
* Strategy:
|
|
9
|
+
* - On pointerdown inside the hot zone, capture the starting clientX, the
|
|
10
|
+
* cell element, its column index (count `<td>` siblings before it in its
|
|
11
|
+
* `<tr>`), the host `<table>` element, and the table's absolute [open]
|
|
12
|
+
* position in the model (read from a NodeRef attached by the renderer).
|
|
13
|
+
* - During the drag, we mutate the DOM directly — writing
|
|
14
|
+
* `cell.style.width = '${newWidth}px'` on every cell in the affected
|
|
15
|
+
* column. This avoids history bloat from per-pixel AttrStep transactions
|
|
16
|
+
* and avoids racing with the MutationObserver mid-drag.
|
|
17
|
+
* - On pointerup we dispatch a SINGLE `setCellWidth(tableStart, col, final)`
|
|
18
|
+
* transaction. The view re-renders from the new doc, which restores any
|
|
19
|
+
* direct DOM mutations (they're now reflected in the model).
|
|
20
|
+
*
|
|
21
|
+
* The MutationObserver's snapshot mechanism (see `mutation-observer.ts`)
|
|
22
|
+
* treats the dispatched re-render as authorized because `view.state.doc`
|
|
23
|
+
* advances. The DOM writes that happened during the drag fire MutationRecords
|
|
24
|
+
* too, but those are observed asynchronously — by the time the observer
|
|
25
|
+
* callback runs, the doc has usually already advanced from the pointerup
|
|
26
|
+
* dispatch, so the observer sees `view.state.doc !== lastDocSnapshot` and
|
|
27
|
+
* skips reverting. (A rare race where the observer fires between a
|
|
28
|
+
* drag-time DOM write and the pointerup dispatch is theoretically
|
|
29
|
+
* possible but unobserved in practice; if it appears, the fix is to
|
|
30
|
+
* tag drag-time writes via a dataset attribute the observer ignores.)
|
|
31
|
+
*
|
|
32
|
+
* v0.3c: Drag-time DOM writes are coalesced through `requestAnimationFrame`.
|
|
33
|
+
* Pointermove updates the pending width and (if no frame is already queued)
|
|
34
|
+
* schedules a single rAF callback that flushes the latest width to every cell
|
|
35
|
+
* in the column. This caps DOM writes at the browser's frame rate (~60 Hz)
|
|
36
|
+
* instead of firing on every pointermove (which can be 240+/sec on
|
|
37
|
+
* high-refresh displays). On pointerup the pending frame is cancelled and the
|
|
38
|
+
* final width is written synchronously before dispatching the AttrStep
|
|
39
|
+
* transaction — preserving the existing one-commit-on-pointerup invariant.
|
|
40
|
+
*/
|
|
41
|
+
export function installTableResize(view) {
|
|
42
|
+
const HOT_ZONE_PX = 5;
|
|
43
|
+
const MIN_WIDTH_PX = 48;
|
|
44
|
+
let drag = null;
|
|
45
|
+
// rAF-coalesced live DOM writes. `pendingWidth` holds the most-recent
|
|
46
|
+
// computed width from pointermove; `pendingFrame` is the requestAnimationFrame
|
|
47
|
+
// handle if a flush is queued. Additional pointermoves while a frame is
|
|
48
|
+
// pending simply update `pendingWidth` — the queued callback will see the
|
|
49
|
+
// latest value when it runs.
|
|
50
|
+
let pendingFrame = null;
|
|
51
|
+
let pendingWidth = null;
|
|
52
|
+
function getRaf() {
|
|
53
|
+
const win = view.dom.ownerDocument.defaultView;
|
|
54
|
+
if (win && typeof win.requestAnimationFrame === 'function') {
|
|
55
|
+
return {
|
|
56
|
+
request: win.requestAnimationFrame.bind(win),
|
|
57
|
+
cancel: win.cancelAnimationFrame.bind(win),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Fallback (e.g. happy-dom without rAF): synchronous flush so behavior
|
|
61
|
+
// remains observable in tests, matching the pre-coalescing semantics.
|
|
62
|
+
return {
|
|
63
|
+
request: (cb) => {
|
|
64
|
+
cb(0);
|
|
65
|
+
return 0;
|
|
66
|
+
},
|
|
67
|
+
cancel: () => {
|
|
68
|
+
/* no-op */
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function flushPendingWidth() {
|
|
73
|
+
pendingFrame = null;
|
|
74
|
+
if (!drag || pendingWidth == null)
|
|
75
|
+
return;
|
|
76
|
+
applyDragWidthToColumn(drag.table, drag.columnIndex, pendingWidth);
|
|
77
|
+
}
|
|
78
|
+
function cancelPendingFrame() {
|
|
79
|
+
if (pendingFrame != null) {
|
|
80
|
+
getRaf().cancel(pendingFrame);
|
|
81
|
+
pendingFrame = null;
|
|
82
|
+
}
|
|
83
|
+
pendingWidth = null;
|
|
84
|
+
}
|
|
85
|
+
function findCellWithinHotZone(target, clientX) {
|
|
86
|
+
if (!(target instanceof Element))
|
|
87
|
+
return null;
|
|
88
|
+
const cell = target.closest('.dx-table-cell');
|
|
89
|
+
if (!cell)
|
|
90
|
+
return null;
|
|
91
|
+
if (!view.dom.contains(cell))
|
|
92
|
+
return null;
|
|
93
|
+
const rect = cell.getBoundingClientRect();
|
|
94
|
+
if (clientX >= rect.right - HOT_ZONE_PX && clientX <= rect.right + HOT_ZONE_PX) {
|
|
95
|
+
return cell;
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
function columnIndexOf(cell) {
|
|
100
|
+
let idx = 0;
|
|
101
|
+
let sib = cell.previousElementSibling;
|
|
102
|
+
while (sib) {
|
|
103
|
+
if (sib.tagName === 'TD')
|
|
104
|
+
idx++;
|
|
105
|
+
sib = sib.previousElementSibling;
|
|
106
|
+
}
|
|
107
|
+
return idx;
|
|
108
|
+
}
|
|
109
|
+
function tableStartFromCell(cell) {
|
|
110
|
+
const table = cell.closest('table.dx-table');
|
|
111
|
+
if (!table)
|
|
112
|
+
return null;
|
|
113
|
+
const ref = getNodeRef(table);
|
|
114
|
+
if (!ref || ref.pos < 0)
|
|
115
|
+
return null;
|
|
116
|
+
return { table, tableStart: ref.pos };
|
|
117
|
+
}
|
|
118
|
+
function applyDragWidthToColumn(table, columnIndex, widthPx) {
|
|
119
|
+
const rows = table.querySelectorAll('tr.dx-table-row');
|
|
120
|
+
rows.forEach((row) => {
|
|
121
|
+
const cells = row.querySelectorAll(':scope > td.dx-table-cell');
|
|
122
|
+
const target = cells.item(columnIndex);
|
|
123
|
+
if (target)
|
|
124
|
+
target.style.width = `${widthPx}px`;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function onPointerMove(event) {
|
|
128
|
+
if (drag) {
|
|
129
|
+
const delta = event.clientX - drag.startX;
|
|
130
|
+
const newWidth = Math.max(MIN_WIDTH_PX, Math.round(drag.startWidth + delta));
|
|
131
|
+
drag.finalWidth = newWidth;
|
|
132
|
+
pendingWidth = newWidth;
|
|
133
|
+
if (pendingFrame == null) {
|
|
134
|
+
pendingFrame = getRaf().request(flushPendingWidth);
|
|
135
|
+
}
|
|
136
|
+
event.preventDefault();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const hit = findCellWithinHotZone(event.target, event.clientX);
|
|
140
|
+
view.dom.style.cursor = hit ? 'col-resize' : '';
|
|
141
|
+
}
|
|
142
|
+
function onPointerDown(event) {
|
|
143
|
+
if (event.button !== 0)
|
|
144
|
+
return;
|
|
145
|
+
const hit = findCellWithinHotZone(event.target, event.clientX);
|
|
146
|
+
if (!hit)
|
|
147
|
+
return;
|
|
148
|
+
const tableInfo = tableStartFromCell(hit);
|
|
149
|
+
if (!tableInfo)
|
|
150
|
+
return;
|
|
151
|
+
const columnIndex = columnIndexOf(hit);
|
|
152
|
+
const startWidth = hit.getBoundingClientRect().width;
|
|
153
|
+
const captureTarget = (event.target instanceof HTMLElement ? event.target : view.dom);
|
|
154
|
+
try {
|
|
155
|
+
captureTarget.setPointerCapture(event.pointerId);
|
|
156
|
+
}
|
|
157
|
+
catch { /* ignore */ }
|
|
158
|
+
drag = {
|
|
159
|
+
cell: hit,
|
|
160
|
+
table: tableInfo.table,
|
|
161
|
+
columnIndex,
|
|
162
|
+
tableStart: tableInfo.tableStart,
|
|
163
|
+
startX: event.clientX,
|
|
164
|
+
startWidth,
|
|
165
|
+
pointerId: event.pointerId,
|
|
166
|
+
captureTarget,
|
|
167
|
+
finalWidth: startWidth,
|
|
168
|
+
};
|
|
169
|
+
event.preventDefault();
|
|
170
|
+
}
|
|
171
|
+
function onPointerUp(event) {
|
|
172
|
+
if (!drag)
|
|
173
|
+
return;
|
|
174
|
+
const finished = drag;
|
|
175
|
+
drag = null;
|
|
176
|
+
// Cancel any pending rAF flush and apply the final width synchronously so
|
|
177
|
+
// the post-dispatch render sees a consistent DOM state.
|
|
178
|
+
cancelPendingFrame();
|
|
179
|
+
applyDragWidthToColumn(finished.table, finished.columnIndex, finished.finalWidth);
|
|
180
|
+
try {
|
|
181
|
+
finished.captureTarget.releasePointerCapture(finished.pointerId);
|
|
182
|
+
}
|
|
183
|
+
catch { /* ignore */ }
|
|
184
|
+
view.dom.style.cursor = '';
|
|
185
|
+
const cmd = setCellWidth(finished.tableStart, finished.columnIndex, finished.finalWidth);
|
|
186
|
+
cmd(view.state, (tr) => view.dispatch(tr));
|
|
187
|
+
event.preventDefault();
|
|
188
|
+
}
|
|
189
|
+
function onPointerCancel(_event) {
|
|
190
|
+
if (!drag)
|
|
191
|
+
return;
|
|
192
|
+
const cancelled = drag;
|
|
193
|
+
drag = null;
|
|
194
|
+
cancelPendingFrame();
|
|
195
|
+
try {
|
|
196
|
+
cancelled.captureTarget.releasePointerCapture(cancelled.pointerId);
|
|
197
|
+
}
|
|
198
|
+
catch { /* ignore */ }
|
|
199
|
+
view.dom.style.cursor = '';
|
|
200
|
+
// Re-render from current model state to undo any direct DOM mutations.
|
|
201
|
+
view.forceRender();
|
|
202
|
+
}
|
|
203
|
+
view.dom.addEventListener('pointermove', onPointerMove);
|
|
204
|
+
view.dom.addEventListener('pointerdown', onPointerDown);
|
|
205
|
+
view.dom.addEventListener('pointerup', onPointerUp);
|
|
206
|
+
view.dom.addEventListener('pointercancel', onPointerCancel);
|
|
207
|
+
return () => {
|
|
208
|
+
cancelPendingFrame();
|
|
209
|
+
view.dom.removeEventListener('pointermove', onPointerMove);
|
|
210
|
+
view.dom.removeEventListener('pointerdown', onPointerDown);
|
|
211
|
+
view.dom.removeEventListener('pointerup', onPointerUp);
|
|
212
|
+
view.dom.removeEventListener('pointercancel', onPointerCancel);
|
|
213
|
+
view.dom.style.cursor = '';
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=table-resize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-resize.js","sourceRoot":"","sources":["../../src/view/table-resize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,MAAM,WAAW,GAAG,CAAC,CAAA;IACrB,MAAM,YAAY,GAAG,EAAE,CAAA;IAcvB,IAAI,IAAI,GAAqB,IAAI,CAAA;IAEjC,sEAAsE;IACtE,+EAA+E;IAC/E,wEAAwE;IACxE,0EAA0E;IAC1E,6BAA6B;IAC7B,IAAI,YAAY,GAAkB,IAAI,CAAA;IACtC,IAAI,YAAY,GAAkB,IAAI,CAAA;IAEtC,SAAS,MAAM;QAIb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAA;QAC9C,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;YAC3D,OAAO;gBACL,OAAO,EAAE,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC5C,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;aAC3C,CAAA;QACH,CAAC;QACD,uEAAuE;QACvE,sEAAsE;QACtE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;gBACd,EAAE,CAAC,CAAC,CAAC,CAAA;gBACL,OAAO,CAAC,CAAA;YACV,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,WAAW;YACb,CAAC;SACF,CAAA;IACH,CAAC;IAED,SAAS,iBAAiB;QACxB,YAAY,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,IAAI,IAAI,YAAY,IAAI,IAAI;YAAE,OAAM;QACzC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IACpE,CAAC;IAED,SAAS,kBAAkB;QACzB,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC7B,YAAY,GAAG,IAAI,CAAA;QACrB,CAAC;QACD,YAAY,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,SAAS,qBAAqB,CAAC,MAA0B,EAAE,OAAe;QACxE,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC;YAAE,OAAO,IAAI,CAAA;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAA;QACnE,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;QACzC,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,aAAa,CAAC,IAAiB;QACtC,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAA;QACrC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;gBAAE,GAAG,EAAE,CAAA;YAC/B,GAAG,GAAG,GAAG,CAAC,sBAAsB,CAAA;QAClC,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,SAAS,kBAAkB,CAAC,IAAiB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAA;QAClE,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QACpC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;IACvC,CAAC;IAED,SAAS,sBAAsB,CAAC,KAAkB,EAAE,WAAmB,EAAE,OAAe;QACtF,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;QACtD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,CAAA;YAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAuB,CAAA;YAC5D,IAAI,MAAM;gBAAE,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,OAAO,IAAI,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,aAAa,CAAC,KAAmB;QACxC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAA;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAA;YAC5E,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAA;YAC1B,YAAY,GAAG,QAAQ,CAAA;YACvB,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;gBACzB,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;YACpD,CAAC;YACD,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,OAAM;QACR,CAAC;QACD,MAAM,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QAC9D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;IACjD,CAAC;IAED,SAAS,aAAa,CAAC,KAAmB;QACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC9B,MAAM,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QAC9D,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,SAAS;YAAE,OAAM;QACtB,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACtC,MAAM,UAAU,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAA;QACpD,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACrF,IAAI,CAAC;YAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC/E,IAAI,GAAG;YACL,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,WAAW;YACX,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,MAAM,EAAE,KAAK,CAAC,OAAO;YACrB,UAAU;YACV,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,aAAa;YACb,UAAU,EAAE,UAAU;SACvB,CAAA;QACD,KAAK,CAAC,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,SAAS,WAAW,CAAC,KAAmB;QACtC,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAA;QACrB,IAAI,GAAG,IAAI,CAAA;QACX,0EAA0E;QAC1E,wDAAwD;QACxD,kBAAkB,EAAE,CAAA;QACpB,sBAAsB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;QACjF,IAAI,CAAC;YAAC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC/F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAA;QAC1B,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;QACxF,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1C,KAAK,CAAC,cAAc,EAAE,CAAA;IACxB,CAAC;IAED,SAAS,eAAe,CAAC,MAAoB;QAC3C,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,MAAM,SAAS,GAAG,IAAI,CAAA;QACtB,IAAI,GAAG,IAAI,CAAA;QACX,kBAAkB,EAAE,CAAA;QACpB,IAAI,CAAC;YAAC,SAAS,CAAC,aAAa,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACjG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAA;QAC1B,uEAAuE;QACvE,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IACvD,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IACvD,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IACnD,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAA;IAE3D,OAAO,GAAG,EAAE;QACV,kBAAkB,EAAE,CAAA;QACpB,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;QAC1D,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;QAC1D,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QACtD,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAA;QAC9D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAA;IAC5B,CAAC,CAAA;AACH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@doxi/core",
|
|
3
|
+
"version": "0.11.0",
|
|
4
|
+
"description": "Doxiva core: engine, model, view, plugins.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Mahbub Hasan",
|
|
7
|
+
"homepage": "https://github.com/mahbub-hasaan/doxiva#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/mahbub-hasaan/doxiva.git",
|
|
11
|
+
"directory": "packages/core"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/mahbub-hasaan/doxiva/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": ["editor", "rich-text", "wysiwyg", "document", "typescript", "doxiva"],
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public"
|
|
19
|
+
},
|
|
20
|
+
"type": "module",
|
|
21
|
+
"sideEffects": ["*.css"],
|
|
22
|
+
"files": ["dist", "styles", "README.md", "LICENSE"],
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"import": "./dist/index.js"
|
|
27
|
+
},
|
|
28
|
+
"./model": {
|
|
29
|
+
"types": "./dist/model/index.d.ts",
|
|
30
|
+
"import": "./dist/model/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./transform": {
|
|
33
|
+
"types": "./dist/transform/index.d.ts",
|
|
34
|
+
"import": "./dist/transform/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./state": {
|
|
37
|
+
"types": "./dist/state/index.d.ts",
|
|
38
|
+
"import": "./dist/state/index.js"
|
|
39
|
+
},
|
|
40
|
+
"./plugin": {
|
|
41
|
+
"types": "./dist/plugin/index.d.ts",
|
|
42
|
+
"import": "./dist/plugin/index.js"
|
|
43
|
+
},
|
|
44
|
+
"./history": {
|
|
45
|
+
"types": "./dist/history/index.d.ts",
|
|
46
|
+
"import": "./dist/history/index.js"
|
|
47
|
+
},
|
|
48
|
+
"./commands": {
|
|
49
|
+
"types": "./dist/commands/index.d.ts",
|
|
50
|
+
"import": "./dist/commands/index.js"
|
|
51
|
+
},
|
|
52
|
+
"./view": {
|
|
53
|
+
"types": "./dist/view/index.d.ts",
|
|
54
|
+
"import": "./dist/view/index.js"
|
|
55
|
+
},
|
|
56
|
+
"./layout": {
|
|
57
|
+
"types": "./dist/layout/index.d.ts",
|
|
58
|
+
"import": "./dist/layout/index.js"
|
|
59
|
+
},
|
|
60
|
+
"./schema": {
|
|
61
|
+
"types": "./dist/schema/index.d.ts",
|
|
62
|
+
"import": "./dist/schema/index.js"
|
|
63
|
+
},
|
|
64
|
+
"./serialize": {
|
|
65
|
+
"types": "./dist/serialize/index.d.ts",
|
|
66
|
+
"import": "./dist/serialize/index.js"
|
|
67
|
+
},
|
|
68
|
+
"./html": {
|
|
69
|
+
"types": "./dist/html/index.d.ts",
|
|
70
|
+
"import": "./dist/html/index.js"
|
|
71
|
+
},
|
|
72
|
+
"./collab": {
|
|
73
|
+
"types": "./dist/collab/port.d.ts",
|
|
74
|
+
"import": "./dist/collab/port.js"
|
|
75
|
+
},
|
|
76
|
+
"./styles/base.css": "./styles/base.css",
|
|
77
|
+
"./styles/light.css": "./styles/light.css",
|
|
78
|
+
"./styles/dark.css": "./styles/dark.css",
|
|
79
|
+
"./styles/page.css": "./styles/page.css",
|
|
80
|
+
"./styles/print.css": "./styles/print.css",
|
|
81
|
+
"./styles/print-a4.css": "./styles/print-a4.css"
|
|
82
|
+
},
|
|
83
|
+
"scripts": {
|
|
84
|
+
"build": "tsc -p tsconfig.json",
|
|
85
|
+
"typecheck": "tsc -p tsconfig.typecheck.json",
|
|
86
|
+
"test": "vitest run",
|
|
87
|
+
"test:watch": "vitest",
|
|
88
|
+
"clean": "rimraf dist"
|
|
89
|
+
},
|
|
90
|
+
"devDependencies": {
|
|
91
|
+
"rimraf": "6.0.1"
|
|
92
|
+
}
|
|
93
|
+
}
|
package/styles/base.css
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/* @doxi/core base.css — structural rules; theming via CSS variables. */
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
--dx-font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
5
|
+
--dx-font-size: 16px;
|
|
6
|
+
--dx-line-height: 1.6;
|
|
7
|
+
--dx-color-text: #1a1a1a;
|
|
8
|
+
--dx-color-muted: #6b7280;
|
|
9
|
+
--dx-color-bg: #ffffff;
|
|
10
|
+
--dx-color-selection: #b3d7ff;
|
|
11
|
+
--dx-color-accent: #2563eb;
|
|
12
|
+
--dx-color-border: #e5e7eb;
|
|
13
|
+
--dx-spacing-paragraph: 0.75em;
|
|
14
|
+
--dx-spacing-heading-top: 1.2em;
|
|
15
|
+
--dx-spacing-heading-bottom: 0.4em;
|
|
16
|
+
--dx-radius: 6px;
|
|
17
|
+
--dx-page-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
|
|
18
|
+
--dx-toolbar-bg: #f9fafb;
|
|
19
|
+
--dx-toolbar-fg: #111827;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.dx-editor {
|
|
23
|
+
font-family: var(--dx-font-family);
|
|
24
|
+
font-size: var(--dx-font-size);
|
|
25
|
+
line-height: var(--dx-line-height);
|
|
26
|
+
color: var(--dx-color-text);
|
|
27
|
+
background: var(--dx-color-bg);
|
|
28
|
+
caret-color: var(--dx-color-accent);
|
|
29
|
+
outline: none;
|
|
30
|
+
white-space: pre-wrap;
|
|
31
|
+
word-break: break-word;
|
|
32
|
+
tab-size: 4;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.dx-editor::selection,
|
|
36
|
+
.dx-editor *::selection {
|
|
37
|
+
background: var(--dx-color-selection);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.dx-editor p,
|
|
41
|
+
.dx-editor .dx-paragraph {
|
|
42
|
+
margin: 0 0 var(--dx-spacing-paragraph) 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.dx-editor h1,
|
|
46
|
+
.dx-editor h2,
|
|
47
|
+
.dx-editor h3,
|
|
48
|
+
.dx-editor h4,
|
|
49
|
+
.dx-editor h5,
|
|
50
|
+
.dx-editor h6,
|
|
51
|
+
.dx-editor .dx-heading {
|
|
52
|
+
margin: var(--dx-spacing-heading-top) 0 var(--dx-spacing-heading-bottom) 0;
|
|
53
|
+
font-weight: 600;
|
|
54
|
+
line-height: 1.3;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.dx-editor h1 { font-size: 2.0em; }
|
|
58
|
+
.dx-editor h2 { font-size: 1.5em; }
|
|
59
|
+
.dx-editor h3 { font-size: 1.25em; }
|
|
60
|
+
.dx-editor h4 { font-size: 1.1em; }
|
|
61
|
+
.dx-editor h5 { font-size: 1.0em; }
|
|
62
|
+
.dx-editor h6 { font-size: 0.9em; color: var(--dx-color-muted); }
|
|
63
|
+
|
|
64
|
+
.dx-editor ul,
|
|
65
|
+
.dx-editor ol,
|
|
66
|
+
.dx-editor .dx-list {
|
|
67
|
+
margin: 0 0 var(--dx-spacing-paragraph) 0;
|
|
68
|
+
padding-left: 1.5em;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.dx-editor li,
|
|
72
|
+
.dx-editor .dx-list-item {
|
|
73
|
+
margin: 0.15em 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.dx-editor blockquote,
|
|
77
|
+
.dx-editor .dx-blockquote {
|
|
78
|
+
margin: var(--dx-spacing-paragraph) 0;
|
|
79
|
+
padding: 0 1em;
|
|
80
|
+
border-left: 3px solid var(--dx-color-border);
|
|
81
|
+
color: var(--dx-color-muted);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.dx-editor hr,
|
|
85
|
+
.dx-editor .dx-hr {
|
|
86
|
+
border: none;
|
|
87
|
+
border-top: 1px solid var(--dx-color-border);
|
|
88
|
+
margin: 1.5em 0;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.dx-editor a,
|
|
92
|
+
.dx-editor .dx-link {
|
|
93
|
+
color: var(--dx-color-accent);
|
|
94
|
+
text-decoration: underline;
|
|
95
|
+
text-underline-offset: 2px;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.dx-editor img,
|
|
99
|
+
.dx-editor .dx-image {
|
|
100
|
+
max-width: 100%;
|
|
101
|
+
height: auto;
|
|
102
|
+
display: inline-block;
|
|
103
|
+
border-radius: var(--dx-radius);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.dx-image.dx-image-selected {
|
|
107
|
+
outline: 2px solid #1a73e8;
|
|
108
|
+
outline-offset: 2px;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.dx-toolbar {
|
|
112
|
+
display: flex;
|
|
113
|
+
flex-wrap: wrap;
|
|
114
|
+
gap: 4px;
|
|
115
|
+
padding: 6px 8px;
|
|
116
|
+
background: var(--dx-toolbar-bg);
|
|
117
|
+
color: var(--dx-toolbar-fg);
|
|
118
|
+
border: 1px solid var(--dx-color-border);
|
|
119
|
+
border-radius: var(--dx-radius);
|
|
120
|
+
font: 14px/1 var(--dx-font-family);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.dx-toolbar-btn {
|
|
124
|
+
appearance: none;
|
|
125
|
+
background: transparent;
|
|
126
|
+
border: 1px solid transparent;
|
|
127
|
+
border-radius: 4px;
|
|
128
|
+
padding: 4px 8px;
|
|
129
|
+
color: inherit;
|
|
130
|
+
cursor: pointer;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.dx-toolbar-btn[aria-pressed="true"] {
|
|
134
|
+
background: var(--dx-color-selection);
|
|
135
|
+
border-color: var(--dx-color-accent);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.dx-toolbar-btn:disabled {
|
|
139
|
+
opacity: 0.5;
|
|
140
|
+
cursor: not-allowed;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/*
|
|
144
|
+
* Focus-visible outlines (v0.9 a11y). Browsers expose :focus-visible only
|
|
145
|
+
* when the focus came from keyboard nav (Tab / arrow keys) and not from
|
|
146
|
+
* a pointer click, so mouse users don't see the outline.
|
|
147
|
+
*/
|
|
148
|
+
.dx-toolbar-btn:focus-visible,
|
|
149
|
+
.dx-toolbar-select:focus-visible,
|
|
150
|
+
.dx-toolbar-swatch:focus-visible {
|
|
151
|
+
outline: 2px solid var(--dx-color-accent, #1a73e8);
|
|
152
|
+
outline-offset: 2px;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/*
|
|
156
|
+
* The contenteditable surface itself receives focus on click — for
|
|
157
|
+
* keyboard users we want a subtle visible cue. The default browser
|
|
158
|
+
* outline (typically the user-agent's blue ring) is fine; we only
|
|
159
|
+
* tighten it so it doesn't clash with the page chrome.
|
|
160
|
+
*/
|
|
161
|
+
.dx-editor:focus-visible {
|
|
162
|
+
outline: 2px solid var(--dx-color-accent, #1a73e8);
|
|
163
|
+
outline-offset: -2px;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Document container (used when pagination is off — v0.1) */
|
|
167
|
+
.dx-doc {
|
|
168
|
+
max-width: 800px;
|
|
169
|
+
margin: 0 auto;
|
|
170
|
+
padding: 2em 1em;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/* Tables (v0.3b) */
|
|
174
|
+
.dx-editor table,
|
|
175
|
+
.dx-editor .dx-table {
|
|
176
|
+
border-collapse: collapse;
|
|
177
|
+
width: 100%;
|
|
178
|
+
margin: 0.75em 0;
|
|
179
|
+
table-layout: fixed;
|
|
180
|
+
}
|
|
181
|
+
.dx-editor td,
|
|
182
|
+
.dx-editor .dx-table-cell {
|
|
183
|
+
border: 1px solid var(--dx-color-border);
|
|
184
|
+
padding: 6px 10px;
|
|
185
|
+
vertical-align: top;
|
|
186
|
+
min-width: 48px;
|
|
187
|
+
position: relative;
|
|
188
|
+
}
|
|
189
|
+
.dx-editor .dx-table-cell > * { margin: 0; }
|
|
190
|
+
.dx-editor .dx-table-cell > * + * { margin-top: 0.5em; }
|
|
191
|
+
|
|
192
|
+
/* Bundled DoxivaEditor (v0.11) — wrapper shell + top action row + page chrome.
|
|
193
|
+
* These rules are framework-agnostic so both the React `<DoxivaEditor>` and
|
|
194
|
+
* the Angular `<dx-doxiva-editor>` can render identical chrome.
|
|
195
|
+
*/
|
|
196
|
+
.dx-doxiva-shell {
|
|
197
|
+
display: flex;
|
|
198
|
+
flex-direction: column;
|
|
199
|
+
background: var(--dx-color-bg);
|
|
200
|
+
color: var(--dx-color-text);
|
|
201
|
+
font-family: var(--dx-font-family);
|
|
202
|
+
}
|
|
203
|
+
.dx-doxiva-toprow {
|
|
204
|
+
display: flex;
|
|
205
|
+
gap: 6px;
|
|
206
|
+
padding: 6px 8px;
|
|
207
|
+
border-bottom: 1px solid var(--dx-color-border);
|
|
208
|
+
}
|
|
209
|
+
.dx-doxiva-toprow button {
|
|
210
|
+
height: 28px;
|
|
211
|
+
padding: 0 12px;
|
|
212
|
+
border: 1px solid var(--dx-color-border);
|
|
213
|
+
border-radius: 4px;
|
|
214
|
+
background: var(--dx-color-bg);
|
|
215
|
+
color: var(--dx-color-text);
|
|
216
|
+
cursor: pointer;
|
|
217
|
+
font: 500 13px/1 inherit;
|
|
218
|
+
}
|
|
219
|
+
.dx-doxiva-toprow button:hover { background: var(--dx-toolbar-bg, #f1f3f4); }
|
|
220
|
+
.dx-doxiva-toprow button:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
221
|
+
.dx-doxiva-editor-wrap {
|
|
222
|
+
border: 1px solid var(--dx-color-border);
|
|
223
|
+
border-radius: 0 0 6px 6px;
|
|
224
|
+
overflow-y: auto;
|
|
225
|
+
max-height: 80vh;
|
|
226
|
+
}
|
|
227
|
+
.dx-doxiva-shell .dx-page-header { min-height: var(--dx-header-height, 24px); }
|
|
228
|
+
.dx-doxiva-shell .dx-page-footer { min-height: var(--dx-footer-height, 24px); }
|
|
229
|
+
.dx-doxiva-shell.no-header .dx-page-header { display: none; }
|
|
230
|
+
.dx-doxiva-shell.no-footer .dx-page-footer { display: none; }
|
|
231
|
+
.dx-doxiva-import-warnings {
|
|
232
|
+
margin: 8px 12px;
|
|
233
|
+
padding: 8px 12px;
|
|
234
|
+
background: #fef7e0;
|
|
235
|
+
border-left: 3px solid #f9ab00;
|
|
236
|
+
font-size: 12px;
|
|
237
|
+
color: var(--dx-color-muted);
|
|
238
|
+
}
|
|
239
|
+
.dx-doxiva-import-warnings ul { margin: 4px 0 0 0; padding-left: 20px; }
|
|
240
|
+
|
|
241
|
+
@media print {
|
|
242
|
+
.dx-doxiva-shell .dx-doxiva-toprow,
|
|
243
|
+
.dx-doxiva-shell .dx-toolbar,
|
|
244
|
+
.dx-doxiva-shell .dx-doxiva-import-warnings { display: none !important; }
|
|
245
|
+
.dx-doxiva-shell .dx-doxiva-editor-wrap {
|
|
246
|
+
max-height: none !important; overflow: visible !important; height: auto !important;
|
|
247
|
+
border: none !important; border-radius: 0 !important;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.dx-page-break {
|
|
252
|
+
height: 1px;
|
|
253
|
+
background: var(--dx-color-border);
|
|
254
|
+
margin: 1em 0;
|
|
255
|
+
position: relative;
|
|
256
|
+
}
|
|
257
|
+
.dx-page-break::after {
|
|
258
|
+
content: 'Page break';
|
|
259
|
+
position: absolute;
|
|
260
|
+
top: -0.6em;
|
|
261
|
+
left: 50%;
|
|
262
|
+
transform: translateX(-50%);
|
|
263
|
+
background: var(--dx-color-bg);
|
|
264
|
+
padding: 0 8px;
|
|
265
|
+
font-size: 11px;
|
|
266
|
+
color: var(--dx-color-muted);
|
|
267
|
+
font-variant: small-caps;
|
|
268
|
+
letter-spacing: 0.5px;
|
|
269
|
+
}
|