@doxi/react 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.
Files changed (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +60 -0
  3. package/dist/DoxivaEditor.d.ts +20 -0
  4. package/dist/DoxivaEditor.d.ts.map +1 -0
  5. package/dist/DoxivaEditor.js +448 -0
  6. package/dist/DoxivaEditor.js.map +1 -0
  7. package/dist/Editor.d.ts +21 -0
  8. package/dist/Editor.d.ts.map +1 -0
  9. package/dist/Editor.js +49 -0
  10. package/dist/Editor.js.map +1 -0
  11. package/dist/HeaderFooterPopover.d.ts +49 -0
  12. package/dist/HeaderFooterPopover.d.ts.map +1 -0
  13. package/dist/HeaderFooterPopover.js +139 -0
  14. package/dist/HeaderFooterPopover.js.map +1 -0
  15. package/dist/ImagePopover.d.ts +23 -0
  16. package/dist/ImagePopover.d.ts.map +1 -0
  17. package/dist/ImagePopover.js +59 -0
  18. package/dist/ImagePopover.js.map +1 -0
  19. package/dist/LinkPopover.d.ts +25 -0
  20. package/dist/LinkPopover.d.ts.map +1 -0
  21. package/dist/LinkPopover.js +67 -0
  22. package/dist/LinkPopover.js.map +1 -0
  23. package/dist/PageSettingsPopover.d.ts +33 -0
  24. package/dist/PageSettingsPopover.d.ts.map +1 -0
  25. package/dist/PageSettingsPopover.js +48 -0
  26. package/dist/PageSettingsPopover.js.map +1 -0
  27. package/dist/TablePicker.d.ts +27 -0
  28. package/dist/TablePicker.d.ts.map +1 -0
  29. package/dist/TablePicker.js +38 -0
  30. package/dist/TablePicker.js.map +1 -0
  31. package/dist/Toolbar.d.ts +103 -0
  32. package/dist/Toolbar.d.ts.map +1 -0
  33. package/dist/Toolbar.js +161 -0
  34. package/dist/Toolbar.js.map +1 -0
  35. package/dist/index.d.ts +14 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +14 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/toolbar-builders/alignment.d.ts +4 -0
  40. package/dist/toolbar-builders/alignment.d.ts.map +1 -0
  41. package/dist/toolbar-builders/alignment.js +56 -0
  42. package/dist/toolbar-builders/alignment.js.map +1 -0
  43. package/dist/toolbar-builders/blocks.d.ts +4 -0
  44. package/dist/toolbar-builders/blocks.d.ts.map +1 -0
  45. package/dist/toolbar-builders/blocks.js +39 -0
  46. package/dist/toolbar-builders/blocks.js.map +1 -0
  47. package/dist/toolbar-builders/font-size.d.ts +4 -0
  48. package/dist/toolbar-builders/font-size.d.ts.map +1 -0
  49. package/dist/toolbar-builders/font-size.js +41 -0
  50. package/dist/toolbar-builders/font-size.js.map +1 -0
  51. package/dist/toolbar-builders/headings.d.ts +4 -0
  52. package/dist/toolbar-builders/headings.d.ts.map +1 -0
  53. package/dist/toolbar-builders/headings.js +18 -0
  54. package/dist/toolbar-builders/headings.js.map +1 -0
  55. package/dist/toolbar-builders/history.d.ts +3 -0
  56. package/dist/toolbar-builders/history.d.ts.map +1 -0
  57. package/dist/toolbar-builders/history.js +13 -0
  58. package/dist/toolbar-builders/history.js.map +1 -0
  59. package/dist/toolbar-builders/images.d.ts +4 -0
  60. package/dist/toolbar-builders/images.d.ts.map +1 -0
  61. package/dist/toolbar-builders/images.js +8 -0
  62. package/dist/toolbar-builders/images.js.map +1 -0
  63. package/dist/toolbar-builders/line-height.d.ts +4 -0
  64. package/dist/toolbar-builders/line-height.d.ts.map +1 -0
  65. package/dist/toolbar-builders/line-height.js +46 -0
  66. package/dist/toolbar-builders/line-height.js.map +1 -0
  67. package/dist/toolbar-builders/links.d.ts +4 -0
  68. package/dist/toolbar-builders/links.d.ts.map +1 -0
  69. package/dist/toolbar-builders/links.js +19 -0
  70. package/dist/toolbar-builders/links.js.map +1 -0
  71. package/dist/toolbar-builders/lists.d.ts +4 -0
  72. package/dist/toolbar-builders/lists.d.ts.map +1 -0
  73. package/dist/toolbar-builders/lists.js +38 -0
  74. package/dist/toolbar-builders/lists.js.map +1 -0
  75. package/dist/toolbar-builders/marks.d.ts +4 -0
  76. package/dist/toolbar-builders/marks.d.ts.map +1 -0
  77. package/dist/toolbar-builders/marks.js +41 -0
  78. package/dist/toolbar-builders/marks.js.map +1 -0
  79. package/dist/toolbar-builders/system.d.ts +12 -0
  80. package/dist/toolbar-builders/system.d.ts.map +1 -0
  81. package/dist/toolbar-builders/system.js +28 -0
  82. package/dist/toolbar-builders/system.js.map +1 -0
  83. package/dist/toolbar-builders/tables.d.ts +4 -0
  84. package/dist/toolbar-builders/tables.d.ts.map +1 -0
  85. package/dist/toolbar-builders/tables.js +235 -0
  86. package/dist/toolbar-builders/tables.js.map +1 -0
  87. package/dist/toolbar-builders/typography.d.ts +4 -0
  88. package/dist/toolbar-builders/typography.d.ts.map +1 -0
  89. package/dist/toolbar-builders/typography.js +123 -0
  90. package/dist/toolbar-builders/typography.js.map +1 -0
  91. package/dist/types.d.ts +85 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +28 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/useDoxivaEditor.d.ts +10 -0
  96. package/dist/useDoxivaEditor.d.ts.map +1 -0
  97. package/dist/useDoxivaEditor.js +30 -0
  98. package/dist/useDoxivaEditor.js.map +1 -0
  99. package/package.json +48 -0
@@ -0,0 +1,13 @@
1
+ import { TOOLBAR_SEPARATOR } from '../Toolbar.js';
2
+ const ICON_UNDO = '<path d="M3 7v6h6" /><path d="M3 13a8 8 0 1 1 3.5 6.5" />';
3
+ const ICON_REDO = '<path d="M21 7v6h-6" /><path d="M21 13a8 8 0 1 0-3.5 6.5" />';
4
+ export function buildHistory(history) {
5
+ if (!history)
6
+ return [];
7
+ return [
8
+ { id: 'undo', label: 'Undo', icon: ICON_UNDO, command: history.commands.undo },
9
+ { id: 'redo', label: 'Redo', icon: ICON_REDO, command: history.commands.redo },
10
+ TOOLBAR_SEPARATOR,
11
+ ];
12
+ }
13
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/toolbar-builders/history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,SAAS,GAAG,2DAA2D,CAAA;AAC7E,MAAM,SAAS,GAAG,8DAA8D,CAAA;AAEhF,MAAM,UAAU,YAAY,CAAC,OAA8B;IACzD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACvB,OAAO;QACL,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC9E,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC9E,iBAAiB;KAClB,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Schema } from '@doxi/core';
2
+ import type { ToolbarItem } from '../Toolbar.js';
3
+ export declare function buildImages(schema: Schema): ToolbarItem[];
4
+ //# sourceMappingURL=images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../src/toolbar-builders/images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAMhD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAGzD"}
@@ -0,0 +1,8 @@
1
+ // A picture-frame glyph with a sun + horizon in the shared 24×24 viewBox.
2
+ const ICON_IMAGE = '<rect x="3" y="5" width="18" height="14" rx="2" /><circle cx="9" cy="11" r="1.5" /><path d="M21 19l-6-7-4 5-3-3-5 5" />';
3
+ export function buildImages(schema) {
4
+ if (!schema.nodes.image)
5
+ return [];
6
+ return [{ type: 'popover', id: 'image', label: 'Insert image', icon: ICON_IMAGE }];
7
+ }
8
+ //# sourceMappingURL=images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.js","sourceRoot":"","sources":["../../src/toolbar-builders/images.ts"],"names":[],"mappings":"AAGA,0EAA0E;AAC1E,MAAM,UAAU,GACd,yHAAyH,CAAA;AAE3H,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IAClC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;AACpF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type Schema } from '@doxi/core';
2
+ import type { ToolbarItem } from '../Toolbar.js';
3
+ export declare function buildLineHeight(_schema: Schema): ToolbarItem[];
4
+ //# sourceMappingURL=line-height.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-height.d.ts","sourceRoot":"","sources":["../../src/toolbar-builders/line-height.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAmBhD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CA2B9D"}
@@ -0,0 +1,46 @@
1
+ import { setLineHeight } from '@doxi/core';
2
+ const ICON_1 = '<path d="M4 6h16" /><path d="M4 12h16" /><path d="M4 18h16" />';
3
+ const ICON_1_5 = '<path d="M4 5h16" /><path d="M4 12h16" /><path d="M4 19h16" />';
4
+ const ICON_2 = '<path d="M4 4h16" /><path d="M4 12h16" /><path d="M4 20h16" />';
5
+ function blockAttr(attr) {
6
+ return (s) => {
7
+ let offset = 0;
8
+ for (let i = 0; i < s.doc.content.childCount; i++) {
9
+ const child = s.doc.content.child(i);
10
+ const end = offset + child.nodeSize;
11
+ if (s.selection.from >= offset && s.selection.from <= end)
12
+ return child.attrs[attr];
13
+ offset = end;
14
+ }
15
+ return null;
16
+ };
17
+ }
18
+ export function buildLineHeight(_schema) {
19
+ return [
20
+ {
21
+ id: 'line-1',
22
+ label: 'Line spacing 1.0×',
23
+ icon: ICON_1,
24
+ isActive: (s) => {
25
+ const v = blockAttr('lineHeight')(s);
26
+ return v === 1 || v === null;
27
+ },
28
+ command: setLineHeight(null),
29
+ },
30
+ {
31
+ id: 'line-1-5',
32
+ label: 'Line spacing 1.5×',
33
+ icon: ICON_1_5,
34
+ isActive: (s) => blockAttr('lineHeight')(s) === 1.5,
35
+ command: setLineHeight(1.5),
36
+ },
37
+ {
38
+ id: 'line-2',
39
+ label: 'Line spacing 2.0×',
40
+ icon: ICON_2,
41
+ isActive: (s) => blockAttr('lineHeight')(s) === 2,
42
+ command: setLineHeight(2),
43
+ },
44
+ ];
45
+ }
46
+ //# sourceMappingURL=line-height.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-height.js","sourceRoot":"","sources":["../../src/toolbar-builders/line-height.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiC,MAAM,YAAY,CAAA;AAGzE,MAAM,MAAM,GAAG,gEAAgE,CAAA;AAC/E,MAAM,QAAQ,GAAG,gEAAgE,CAAA;AACjF,MAAM,MAAM,GAAG,gEAAgE,CAAA;AAE/E,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,CAAC,CAAc,EAAW,EAAE;QACjC,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAmE,CAAA;YACtG,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAA;YACnC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG;gBAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACnF,MAAM,GAAG,GAAG,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO;QACL;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,MAAM,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;gBACpC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;YAC9B,CAAC;YACD,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC;SAC7B;QACD;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;YACnD,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC;SAC5B;QACD;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACjD,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;SAC1B;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type Schema } from '@doxi/core';
2
+ import type { ToolbarItem } from '../Toolbar.js';
3
+ export declare function buildLinks(schema: Schema): ToolbarItem[];
4
+ //# sourceMappingURL=links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/toolbar-builders/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAOhD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAYxD"}
@@ -0,0 +1,19 @@
1
+ import { getLinkAt } from '@doxi/core';
2
+ // A two-segment chain-link glyph in the shared 24×24 viewBox.
3
+ const ICON_LINK = '<path d="M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.7 1.7" />' +
4
+ '<path d="M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.7-1.7" />';
5
+ export function buildLinks(schema) {
6
+ const linkType = schema.marks.link;
7
+ if (!linkType)
8
+ return [];
9
+ return [
10
+ {
11
+ type: 'popover',
12
+ id: 'link',
13
+ label: 'Insert link (Ctrl+K)',
14
+ icon: ICON_LINK,
15
+ isActive: (state) => getLinkAt(state, linkType) !== null,
16
+ },
17
+ ];
18
+ }
19
+ //# sourceMappingURL=links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/toolbar-builders/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,YAAY,CAAA;AAGnD,8DAA8D;AAC9D,MAAM,SAAS,GACb,gEAAgE;IAChE,iEAAiE,CAAA;AAEnE,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAA;IAClC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAA;IACxB,OAAO;QACL;YACE,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI;SACzD;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type Schema } from '@doxi/core';
2
+ import type { ToolbarItem } from '../Toolbar.js';
3
+ export declare function buildLists(schema: Schema): ToolbarItem[];
4
+ //# sourceMappingURL=lists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../../src/toolbar-builders/lists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AAC9F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAUhD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAoBxD"}
@@ -0,0 +1,38 @@
1
+ import { resolve, toggleList } from '@doxi/core';
2
+ import { TOOLBAR_SEPARATOR } from '../Toolbar.js';
3
+ const ICON_BULLET = '<circle cx="5" cy="7" r="1.2" /><circle cx="5" cy="12" r="1.2" /><circle cx="5" cy="17" r="1.2" />' +
4
+ '<path d="M9 7h11" /><path d="M9 12h11" /><path d="M9 17h11" />';
5
+ const ICON_NUMBERED = '<path d="M9 7h11" /><path d="M9 12h11" /><path d="M9 17h11" />' +
6
+ '<path d="M4 5h2v3.5H4" /><path d="M4 11h2c0 .8-.5 1-1 1.4-.6.4-1 .8-1 1.6h2" /><path d="M4 16h2v1H5v.6h1v1.4H4" />';
7
+ export function buildLists(schema) {
8
+ const list = schema.nodes.list;
9
+ if (!list)
10
+ return [];
11
+ return [
12
+ {
13
+ id: 'list-bullet',
14
+ label: 'Bulleted list',
15
+ icon: ICON_BULLET,
16
+ isActive: (s) => insideListOfKind(s, list, false),
17
+ command: toggleList(list, { ordered: false }),
18
+ },
19
+ {
20
+ id: 'list-numbered',
21
+ label: 'Numbered list',
22
+ icon: ICON_NUMBERED,
23
+ isActive: (s) => insideListOfKind(s, list, true),
24
+ command: toggleList(list, { ordered: true }),
25
+ },
26
+ TOOLBAR_SEPARATOR,
27
+ ];
28
+ }
29
+ function insideListOfKind(state, listType, ordered) {
30
+ const rp = resolve(state.doc, state.selection.from);
31
+ for (let d = rp.depth; d >= 1; d--) {
32
+ const n = rp.node(d);
33
+ if (n.type === listType && Object.is(n.attrs.ordered, ordered))
34
+ return true;
35
+ }
36
+ return false;
37
+ }
38
+ //# sourceMappingURL=lists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.js","sourceRoot":"","sources":["../../src/toolbar-builders/lists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAgD,MAAM,YAAY,CAAA;AAE9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,WAAW,GACf,oGAAoG;IACpG,gEAAgE,CAAA;AAClE,MAAM,aAAa,GACjB,gEAAgE;IAChE,oHAAoH,CAAA;AAEtH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAA;IAC9B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,OAAO;QACL;YACE,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;YACjD,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC9C;QACD;YACE,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;YAChD,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SAC7C;QACD,iBAAiB;KAClB,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAkB,EAAE,QAAkB,EAAE,OAAgB;IAChF,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACnD,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;YAAE,OAAO,IAAI,CAAA;IAC7E,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type Schema } from '@doxi/core';
2
+ import type { ToolbarItem } from '../Toolbar.js';
3
+ export declare function buildMarks(schema: Schema): ToolbarItem[];
4
+ //# sourceMappingURL=marks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marks.d.ts","sourceRoot":"","sources":["../../src/toolbar-builders/marks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAOhD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAkCxD"}
@@ -0,0 +1,41 @@
1
+ import { markActive, toggleMark } from '@doxi/core';
2
+ import { TOOLBAR_SEPARATOR } from '../Toolbar.js';
3
+ const ICON_BOLD = '<path d="M6 4h6.5a3.5 3.5 0 0 1 0 7H6V4zm0 7h7.5a3.5 3.5 0 0 1 0 7H6v-7z" />';
4
+ const ICON_ITALIC = '<path d="M10 4h8" /><path d="M6 20h8" /><path d="M14 4l-4 16" />';
5
+ const ICON_UNDERLINE = '<path d="M7 4v8a5 5 0 0 0 10 0V4" /><path d="M5 21h14" />';
6
+ export function buildMarks(schema) {
7
+ const items = [];
8
+ const bold = schema.marks.bold;
9
+ if (bold) {
10
+ items.push({
11
+ id: 'bold',
12
+ label: 'Bold',
13
+ icon: ICON_BOLD,
14
+ isActive: (s) => markActive(s, bold),
15
+ command: toggleMark(bold),
16
+ });
17
+ }
18
+ const italic = schema.marks.italic;
19
+ if (italic) {
20
+ items.push({
21
+ id: 'italic',
22
+ label: 'Italic',
23
+ icon: ICON_ITALIC,
24
+ isActive: (s) => markActive(s, italic),
25
+ command: toggleMark(italic),
26
+ });
27
+ }
28
+ const underline = schema.marks.underline;
29
+ if (underline) {
30
+ items.push({
31
+ id: 'underline',
32
+ label: 'Underline',
33
+ icon: ICON_UNDERLINE,
34
+ isActive: (s) => markActive(s, underline),
35
+ command: toggleMark(underline),
36
+ });
37
+ }
38
+ items.push(TOOLBAR_SEPARATOR);
39
+ return items;
40
+ }
41
+ //# sourceMappingURL=marks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marks.js","sourceRoot":"","sources":["../../src/toolbar-builders/marks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAe,MAAM,YAAY,CAAA;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,SAAS,GAAG,8EAA8E,CAAA;AAChG,MAAM,WAAW,GAAG,kEAAkE,CAAA;AACtF,MAAM,cAAc,GAAG,2DAA2D,CAAA;AAElF,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAA;IAC9B,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC;YACpC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAA;IAClC,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC;YACtC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC;SAC5B,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAA;IACxC,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC;YACzC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;SAC/B,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAC7B,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Schema } from '@doxi/core';
2
+ import type { ToolbarItem } from '../Toolbar.js';
3
+ /**
4
+ * "System" toolbar group — host-facing actions that don't run as core
5
+ * Commands. The Print button dispatches a `doxiva:print` CustomEvent on
6
+ * `document` so the host app (which holds the EditorView reference) can
7
+ * call `printDocument(view)` from its own listener. The toolbar lives in
8
+ * `@doxi/react` and has no direct view handle, so this bridge keeps
9
+ * the toolbar adapter independent of `@doxi/core/view`.
10
+ */
11
+ export declare function buildSystem(_schema: Schema): ToolbarItem[];
12
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/toolbar-builders/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAQhD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAc1D"}
@@ -0,0 +1,28 @@
1
+ // Printer icon, drawn inside the toolbar's 24×24 stroke-currentColor svg.
2
+ // Three-piece layout: top paper stub, the body of the printer, then the
3
+ // output tray rectangle below.
4
+ const ICON_PRINT = '<rect x="6" y="3" width="12" height="6" /><path d="M6 14H4a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-2" /><rect x="6" y="14" width="12" height="7" />';
5
+ /**
6
+ * "System" toolbar group — host-facing actions that don't run as core
7
+ * Commands. The Print button dispatches a `doxiva:print` CustomEvent on
8
+ * `document` so the host app (which holds the EditorView reference) can
9
+ * call `printDocument(view)` from its own listener. The toolbar lives in
10
+ * `@doxi/react` and has no direct view handle, so this bridge keeps
11
+ * the toolbar adapter independent of `@doxi/core/view`.
12
+ */
13
+ export function buildSystem(_schema) {
14
+ return [
15
+ {
16
+ id: 'print',
17
+ label: 'Print',
18
+ icon: ICON_PRINT,
19
+ command: () => {
20
+ if (typeof document !== 'undefined') {
21
+ document.dispatchEvent(new CustomEvent('doxiva:print'));
22
+ }
23
+ return true;
24
+ },
25
+ },
26
+ ];
27
+ }
28
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/toolbar-builders/system.ts"],"names":[],"mappings":"AAGA,0EAA0E;AAC1E,wEAAwE;AACxE,+BAA+B;AAC/B,MAAM,UAAU,GACd,8KAA8K,CAAA;AAEhL;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO;QACL;YACE,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;oBACpC,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,cAAc,CAAC,CAAC,CAAA;gBACzD,CAAC;gBACD,OAAO,IAAI,CAAA;YACb,CAAC;SACF;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type Schema } from '@doxi/core';
2
+ import type { ToolbarItem } from '../Toolbar.js';
3
+ export declare function buildTables(schema: Schema): ToolbarItem[];
4
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/toolbar-builders/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,MAAM,EACZ,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AA6GhD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CA2HzD"}
@@ -0,0 +1,235 @@
1
+ import { AttrStep, CellSelection, resolve, tableGrid, toggleHeaderRow, } from '@doxi/core';
2
+ import { TOOLBAR_BLANK_VALUE } from '../Toolbar.js';
3
+ // A 3×3 grid glyph in the shared 24×24 viewBox. Outer rectangle plus two
4
+ // horizontal + two vertical interior lines — reads unambiguously as "table".
5
+ const ICON_TABLE = '<rect x="3" y="4" width="18" height="16" rx="1" />' +
6
+ '<path d="M3 10h18" />' +
7
+ '<path d="M3 15h18" />' +
8
+ '<path d="M9 4v16" />' +
9
+ '<path d="M15 4v16" />';
10
+ // A header-row icon: a darker top stripe sitting above two regular rows.
11
+ const ICON_HEADER = '<rect x="3" y="4" width="18" height="16" rx="1" />' +
12
+ '<path d="M3 9h18" />' +
13
+ '<path d="M3 14h18" />' +
14
+ '<rect x="3" y="4" width="18" height="5" fill="currentColor" stroke="none" />';
15
+ // A "paint bucket on a cell" glyph — paint-bucket triangle over a small
16
+ // rectangle to read as "fill the cell".
17
+ const ICON_CELL_BG = '<rect x="3" y="4" width="18" height="16" rx="1" />' +
18
+ '<path d="M3 10h18" />' +
19
+ '<path d="M9 4v16" />' +
20
+ '<rect x="9" y="10" width="6" height="5" fill="currentColor" stroke="none" />';
21
+ /**
22
+ * Cell-background palette. 16 swatches — a tasteful subset of the typography
23
+ * COLOR_SWATCHES focusing on light tints (the typical background usage).
24
+ */
25
+ const BG_SWATCHES = [
26
+ // Pastel tints
27
+ { value: '#ffffff', label: 'White', css: '#ffffff' },
28
+ { value: '#f4cccc', label: 'Light red', css: '#f4cccc' },
29
+ { value: '#fce5cd', label: 'Light orange', css: '#fce5cd' },
30
+ { value: '#fff2cc', label: 'Light yellow', css: '#fff2cc' },
31
+ { value: '#d9ead3', label: 'Light green', css: '#d9ead3' },
32
+ { value: '#d0e0e3', label: 'Light teal', css: '#d0e0e3' },
33
+ { value: '#cfe2f3', label: 'Light blue', css: '#cfe2f3' },
34
+ { value: '#d9d2e9', label: 'Light purple', css: '#d9d2e9' },
35
+ // Soft mid tones
36
+ { value: '#ead1dc', label: 'Light pink', css: '#ead1dc' },
37
+ { value: '#cccccc', label: 'Light grey', css: '#cccccc' },
38
+ { value: '#fce8e6', label: 'Red tint', css: '#fce8e6' },
39
+ { value: '#fef7e0', label: 'Yellow tint', css: '#fef7e0' },
40
+ { value: '#e6f4ea', label: 'Green tint', css: '#e6f4ea' },
41
+ { value: '#e8f0fe', label: 'Blue tint', css: '#e8f0fe' },
42
+ { value: '#f3e8fd', label: 'Purple tint', css: '#f3e8fd' },
43
+ { value: '#f1f3f4', label: 'Grey tint', css: '#f1f3f4' },
44
+ ];
45
+ /**
46
+ * Walk up from `pos` in `doc` and return the table_row node's `header` attr,
47
+ * or null when the position isn't inside any table_row.
48
+ */
49
+ function rowHeaderAt(doc, pos) {
50
+ let rp;
51
+ try {
52
+ rp = resolve(doc, pos);
53
+ }
54
+ catch {
55
+ return null;
56
+ }
57
+ for (let d = rp.depth; d >= 1; d--) {
58
+ if (rp.node(d).type.name === 'table_row') {
59
+ return rp.node(d).attrs.header ?? false;
60
+ }
61
+ }
62
+ return null;
63
+ }
64
+ /**
65
+ * Find the `table_cell`'s [open] position covering `pos`. Returns null if
66
+ * not inside a cell.
67
+ */
68
+ function cellOpenPosAt(doc, pos) {
69
+ let rp;
70
+ try {
71
+ rp = resolve(doc, pos);
72
+ }
73
+ catch {
74
+ return null;
75
+ }
76
+ for (let d = rp.depth; d >= 1; d--) {
77
+ if (rp.node(d).type.name === 'table_cell') {
78
+ return rp.before(d);
79
+ }
80
+ }
81
+ return null;
82
+ }
83
+ /** Find the table node + tableStart containing the cell at `cellPos`. */
84
+ function findTableForCellPos(doc, cellPos) {
85
+ let rp;
86
+ try {
87
+ rp = resolve(doc, cellPos + 1);
88
+ }
89
+ catch {
90
+ return null;
91
+ }
92
+ for (let d = rp.depth; d >= 1; d--) {
93
+ if (rp.node(d).type.name === 'table') {
94
+ return { tableStart: rp.before(d), table: rp.node(d) };
95
+ }
96
+ }
97
+ return null;
98
+ }
99
+ export function buildTables(schema) {
100
+ if (!schema.nodes.table)
101
+ return [];
102
+ const items = [
103
+ {
104
+ type: 'popover',
105
+ id: 'table',
106
+ label: 'Insert table',
107
+ icon: ICON_TABLE,
108
+ },
109
+ {
110
+ id: 'table-header-row',
111
+ label: 'Toggle header row',
112
+ icon: ICON_HEADER,
113
+ isActive: (s) => rowHeaderAt(s.doc, s.selection.from) === true,
114
+ command: toggleHeaderRow(),
115
+ },
116
+ {
117
+ type: 'palette',
118
+ id: 'cell-bg',
119
+ label: 'Cell background',
120
+ icon: ICON_CELL_BG,
121
+ swatches: BG_SWATCHES,
122
+ clearLabel: 'Default',
123
+ getValue: (s) => {
124
+ // CellSelection: probe across selected cells.
125
+ if (s.selection instanceof CellSelection) {
126
+ const located = findTableForCellPos(s.doc, s.selection.anchorCell);
127
+ if (!located)
128
+ return TOOLBAR_BLANK_VALUE;
129
+ const { tableStart, table } = located;
130
+ const grid = tableGrid(table, tableStart);
131
+ const a = grid.byPos(s.selection.anchorCell);
132
+ const h = grid.byPos(s.selection.headCell);
133
+ if (!a || !h)
134
+ return TOOLBAR_BLANK_VALUE;
135
+ const r0 = Math.min(a.row, h.row);
136
+ const c0 = Math.min(a.col, h.col);
137
+ const r1 = Math.max(a.row + a.rowspan - 1, h.row + h.rowspan - 1);
138
+ const c1 = Math.max(a.col + a.colspan - 1, h.col + h.colspan - 1);
139
+ const cells = grid.cells.filter((c) => c.row >= r0 && c.row <= r1 && c.col >= c0 && c.col <= c1);
140
+ if (cells.length === 0)
141
+ return TOOLBAR_BLANK_VALUE;
142
+ const first = cells[0].node.attrs.background ?? '';
143
+ for (let i = 1; i < cells.length; i++) {
144
+ const bg = cells[i].node.attrs.background ?? '';
145
+ if (bg !== first)
146
+ return TOOLBAR_BLANK_VALUE;
147
+ }
148
+ return first;
149
+ }
150
+ // TextSelection inside a cell.
151
+ const cellPos = cellOpenPosAt(s.doc, s.selection.from);
152
+ if (cellPos == null)
153
+ return TOOLBAR_BLANK_VALUE;
154
+ const located = findTableForCellPos(s.doc, cellPos);
155
+ if (!located)
156
+ return TOOLBAR_BLANK_VALUE;
157
+ const grid = tableGrid(located.table, located.tableStart);
158
+ const c = grid.byPos(cellPos);
159
+ if (!c)
160
+ return TOOLBAR_BLANK_VALUE;
161
+ return c.node.attrs.background ?? '';
162
+ },
163
+ apply: (s, dispatch, value) => {
164
+ const attrValue = value === '' ? null : value;
165
+ // CellSelection: one transaction, one AttrStep per selected cell.
166
+ if (s.selection instanceof CellSelection) {
167
+ const located = findTableForCellPos(s.doc, s.selection.anchorCell);
168
+ if (!located)
169
+ return false;
170
+ const { tableStart, table } = located;
171
+ const grid = tableGrid(table, tableStart);
172
+ const a = grid.byPos(s.selection.anchorCell);
173
+ const h = grid.byPos(s.selection.headCell);
174
+ if (!a || !h)
175
+ return false;
176
+ const r0 = Math.min(a.row, h.row);
177
+ const c0 = Math.min(a.col, h.col);
178
+ const r1 = Math.max(a.row + a.rowspan - 1, h.row + h.rowspan - 1);
179
+ const c1 = Math.max(a.col + a.colspan - 1, h.col + h.colspan - 1);
180
+ const positions = grid.cellPositionsInRect(r0, r1, c0, c1);
181
+ if (positions.length === 0)
182
+ return false;
183
+ let tr = s.tr;
184
+ for (const p of positions) {
185
+ tr = tr.step(new AttrStep(p, 'background', attrValue));
186
+ }
187
+ dispatch(tr);
188
+ return true;
189
+ }
190
+ // TextSelection inside a cell.
191
+ const cellPos = cellOpenPosAt(s.doc, s.selection.from);
192
+ if (cellPos == null)
193
+ return false;
194
+ const tr = s.tr.step(new AttrStep(cellPos, 'background', attrValue));
195
+ dispatch(tr);
196
+ return true;
197
+ },
198
+ clear: (s, dispatch) => {
199
+ // Reuse apply with empty value semantics.
200
+ if (s.selection instanceof CellSelection) {
201
+ const located = findTableForCellPos(s.doc, s.selection.anchorCell);
202
+ if (!located)
203
+ return false;
204
+ const { tableStart, table } = located;
205
+ const grid = tableGrid(table, tableStart);
206
+ const a = grid.byPos(s.selection.anchorCell);
207
+ const h = grid.byPos(s.selection.headCell);
208
+ if (!a || !h)
209
+ return false;
210
+ const r0 = Math.min(a.row, h.row);
211
+ const c0 = Math.min(a.col, h.col);
212
+ const r1 = Math.max(a.row + a.rowspan - 1, h.row + h.rowspan - 1);
213
+ const c1 = Math.max(a.col + a.colspan - 1, h.col + h.colspan - 1);
214
+ const positions = grid.cellPositionsInRect(r0, r1, c0, c1);
215
+ if (positions.length === 0)
216
+ return false;
217
+ let tr = s.tr;
218
+ for (const p of positions) {
219
+ tr = tr.step(new AttrStep(p, 'background', null));
220
+ }
221
+ dispatch(tr);
222
+ return true;
223
+ }
224
+ const cellPos = cellOpenPosAt(s.doc, s.selection.from);
225
+ if (cellPos == null)
226
+ return false;
227
+ const tr = s.tr.step(new AttrStep(cellPos, 'background', null));
228
+ dispatch(tr);
229
+ return true;
230
+ },
231
+ },
232
+ ];
233
+ return items;
234
+ }
235
+ //# sourceMappingURL=tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/toolbar-builders/tables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type Schema } from '@doxi/core';
2
+ import type { ToolbarItem } from '../Toolbar.js';
3
+ export declare function buildTypography(schema: Schema): ToolbarItem[];
4
+ //# sourceMappingURL=typography.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../src/toolbar-builders/typography.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAyEhD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAkD7D"}