@doxi/angular 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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/dist/doxiva-doxiva-editor.component.d.ts +118 -0
  4. package/dist/doxiva-doxiva-editor.component.d.ts.map +1 -0
  5. package/dist/doxiva-doxiva-editor.component.js +1095 -0
  6. package/dist/doxiva-doxiva-editor.component.js.map +1 -0
  7. package/dist/doxiva-editor.component.d.ts +23 -0
  8. package/dist/doxiva-editor.component.d.ts.map +1 -0
  9. package/dist/doxiva-editor.component.js +92 -0
  10. package/dist/doxiva-editor.component.js.map +1 -0
  11. package/dist/doxiva-toolbar.component.d.ts +118 -0
  12. package/dist/doxiva-toolbar.component.d.ts.map +1 -0
  13. package/dist/doxiva-toolbar.component.js +339 -0
  14. package/dist/doxiva-toolbar.component.js.map +1 -0
  15. package/dist/doxiva.types.d.ts +71 -0
  16. package/dist/doxiva.types.d.ts.map +1 -0
  17. package/dist/doxiva.types.js +28 -0
  18. package/dist/doxiva.types.js.map +1 -0
  19. package/dist/index.d.ts +8 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +8 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/toolbar-builders/alignment.d.ts +4 -0
  24. package/dist/toolbar-builders/alignment.d.ts.map +1 -0
  25. package/dist/toolbar-builders/alignment.js +56 -0
  26. package/dist/toolbar-builders/alignment.js.map +1 -0
  27. package/dist/toolbar-builders/blocks.d.ts +4 -0
  28. package/dist/toolbar-builders/blocks.d.ts.map +1 -0
  29. package/dist/toolbar-builders/blocks.js +39 -0
  30. package/dist/toolbar-builders/blocks.js.map +1 -0
  31. package/dist/toolbar-builders/font-size.d.ts +4 -0
  32. package/dist/toolbar-builders/font-size.d.ts.map +1 -0
  33. package/dist/toolbar-builders/font-size.js +35 -0
  34. package/dist/toolbar-builders/font-size.js.map +1 -0
  35. package/dist/toolbar-builders/headings.d.ts +4 -0
  36. package/dist/toolbar-builders/headings.d.ts.map +1 -0
  37. package/dist/toolbar-builders/headings.js +18 -0
  38. package/dist/toolbar-builders/headings.js.map +1 -0
  39. package/dist/toolbar-builders/history.d.ts +3 -0
  40. package/dist/toolbar-builders/history.d.ts.map +1 -0
  41. package/dist/toolbar-builders/history.js +13 -0
  42. package/dist/toolbar-builders/history.js.map +1 -0
  43. package/dist/toolbar-builders/images.d.ts +4 -0
  44. package/dist/toolbar-builders/images.d.ts.map +1 -0
  45. package/dist/toolbar-builders/images.js +8 -0
  46. package/dist/toolbar-builders/images.js.map +1 -0
  47. package/dist/toolbar-builders/line-height.d.ts +4 -0
  48. package/dist/toolbar-builders/line-height.d.ts.map +1 -0
  49. package/dist/toolbar-builders/line-height.js +46 -0
  50. package/dist/toolbar-builders/line-height.js.map +1 -0
  51. package/dist/toolbar-builders/links.d.ts +4 -0
  52. package/dist/toolbar-builders/links.d.ts.map +1 -0
  53. package/dist/toolbar-builders/links.js +19 -0
  54. package/dist/toolbar-builders/links.js.map +1 -0
  55. package/dist/toolbar-builders/lists.d.ts +4 -0
  56. package/dist/toolbar-builders/lists.d.ts.map +1 -0
  57. package/dist/toolbar-builders/lists.js +38 -0
  58. package/dist/toolbar-builders/lists.js.map +1 -0
  59. package/dist/toolbar-builders/marks.d.ts +4 -0
  60. package/dist/toolbar-builders/marks.d.ts.map +1 -0
  61. package/dist/toolbar-builders/marks.js +41 -0
  62. package/dist/toolbar-builders/marks.js.map +1 -0
  63. package/dist/toolbar-builders/system.d.ts +12 -0
  64. package/dist/toolbar-builders/system.d.ts.map +1 -0
  65. package/dist/toolbar-builders/system.js +28 -0
  66. package/dist/toolbar-builders/system.js.map +1 -0
  67. package/dist/toolbar-builders/tables.d.ts +4 -0
  68. package/dist/toolbar-builders/tables.d.ts.map +1 -0
  69. package/dist/toolbar-builders/tables.js +212 -0
  70. package/dist/toolbar-builders/tables.js.map +1 -0
  71. package/dist/toolbar-builders/typography.d.ts +4 -0
  72. package/dist/toolbar-builders/typography.d.ts.map +1 -0
  73. package/dist/toolbar-builders/typography.js +118 -0
  74. package/dist/toolbar-builders/typography.js.map +1 -0
  75. package/package.json +50 -0
@@ -0,0 +1,41 @@
1
+ import { markActive, toggleMark } from '@doxi/core';
2
+ import { TOOLBAR_SEPARATOR } from '../doxiva-toolbar.component.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,gCAAgC,CAAA;AAElE,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 '../doxiva-toolbar.component.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/angular` 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,gCAAgC,CAAA;AAQjE;;;;;;;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/angular` 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 '../doxiva-toolbar.component.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,gCAAgC,CAAA;AA2FjE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAsHzD"}
@@ -0,0 +1,212 @@
1
+ import { AttrStep, CellSelection, resolve, tableGrid, toggleHeaderRow, } from '@doxi/core';
2
+ import { TOOLBAR_BLANK_VALUE } from '../doxiva-toolbar.component.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
+ const ICON_HEADER = '<rect x="3" y="4" width="18" height="16" rx="1" />' +
11
+ '<path d="M3 9h18" />' +
12
+ '<path d="M3 14h18" />' +
13
+ '<rect x="3" y="4" width="18" height="5" fill="currentColor" stroke="none" />';
14
+ const ICON_CELL_BG = '<rect x="3" y="4" width="18" height="16" rx="1" />' +
15
+ '<path d="M3 10h18" />' +
16
+ '<path d="M9 4v16" />' +
17
+ '<rect x="9" y="10" width="6" height="5" fill="currentColor" stroke="none" />';
18
+ const BG_SWATCHES = [
19
+ { value: '#ffffff', label: 'White', css: '#ffffff' },
20
+ { value: '#f4cccc', label: 'Light red', css: '#f4cccc' },
21
+ { value: '#fce5cd', label: 'Light orange', css: '#fce5cd' },
22
+ { value: '#fff2cc', label: 'Light yellow', css: '#fff2cc' },
23
+ { value: '#d9ead3', label: 'Light green', css: '#d9ead3' },
24
+ { value: '#d0e0e3', label: 'Light teal', css: '#d0e0e3' },
25
+ { value: '#cfe2f3', label: 'Light blue', css: '#cfe2f3' },
26
+ { value: '#d9d2e9', label: 'Light purple', css: '#d9d2e9' },
27
+ { value: '#ead1dc', label: 'Light pink', css: '#ead1dc' },
28
+ { value: '#cccccc', label: 'Light grey', css: '#cccccc' },
29
+ { value: '#fce8e6', label: 'Red tint', css: '#fce8e6' },
30
+ { value: '#fef7e0', label: 'Yellow tint', css: '#fef7e0' },
31
+ { value: '#e6f4ea', label: 'Green tint', css: '#e6f4ea' },
32
+ { value: '#e8f0fe', label: 'Blue tint', css: '#e8f0fe' },
33
+ { value: '#f3e8fd', label: 'Purple tint', css: '#f3e8fd' },
34
+ { value: '#f1f3f4', label: 'Grey tint', css: '#f1f3f4' },
35
+ ];
36
+ function rowHeaderAt(doc, pos) {
37
+ let rp;
38
+ try {
39
+ rp = resolve(doc, pos);
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ for (let d = rp.depth; d >= 1; d--) {
45
+ if (rp.node(d).type.name === 'table_row') {
46
+ return rp.node(d).attrs.header ?? false;
47
+ }
48
+ }
49
+ return null;
50
+ }
51
+ function cellOpenPosAt(doc, pos) {
52
+ let rp;
53
+ try {
54
+ rp = resolve(doc, pos);
55
+ }
56
+ catch {
57
+ return null;
58
+ }
59
+ for (let d = rp.depth; d >= 1; d--) {
60
+ if (rp.node(d).type.name === 'table_cell') {
61
+ return rp.before(d);
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ function findTableForCellPos(doc, cellPos) {
67
+ let rp;
68
+ try {
69
+ rp = resolve(doc, cellPos + 1);
70
+ }
71
+ catch {
72
+ return null;
73
+ }
74
+ for (let d = rp.depth; d >= 1; d--) {
75
+ if (rp.node(d).type.name === 'table') {
76
+ return { tableStart: rp.before(d), table: rp.node(d) };
77
+ }
78
+ }
79
+ return null;
80
+ }
81
+ export function buildTables(schema) {
82
+ if (!schema.nodes.table)
83
+ return [];
84
+ const items = [
85
+ {
86
+ type: 'popover',
87
+ id: 'table',
88
+ label: 'Insert table',
89
+ icon: ICON_TABLE,
90
+ },
91
+ {
92
+ id: 'table-header-row',
93
+ label: 'Toggle header row',
94
+ icon: ICON_HEADER,
95
+ isActive: (s) => rowHeaderAt(s.doc, s.selection.from) === true,
96
+ command: toggleHeaderRow(),
97
+ },
98
+ {
99
+ type: 'palette',
100
+ id: 'cell-bg',
101
+ label: 'Cell background',
102
+ icon: ICON_CELL_BG,
103
+ swatches: BG_SWATCHES,
104
+ clearLabel: 'Default',
105
+ getValue: (s) => {
106
+ if (s.selection instanceof CellSelection) {
107
+ const located = findTableForCellPos(s.doc, s.selection.anchorCell);
108
+ if (!located)
109
+ return TOOLBAR_BLANK_VALUE;
110
+ const { tableStart, table } = located;
111
+ const grid = tableGrid(table, tableStart);
112
+ const a = grid.byPos(s.selection.anchorCell);
113
+ const h = grid.byPos(s.selection.headCell);
114
+ if (!a || !h)
115
+ return TOOLBAR_BLANK_VALUE;
116
+ const r0 = Math.min(a.row, h.row);
117
+ const c0 = Math.min(a.col, h.col);
118
+ const r1 = Math.max(a.row + a.rowspan - 1, h.row + h.rowspan - 1);
119
+ const c1 = Math.max(a.col + a.colspan - 1, h.col + h.colspan - 1);
120
+ const cells = grid.cells.filter((c) => c.row >= r0 && c.row <= r1 && c.col >= c0 && c.col <= c1);
121
+ if (cells.length === 0)
122
+ return TOOLBAR_BLANK_VALUE;
123
+ const first = cells[0].node.attrs.background ?? '';
124
+ for (let i = 1; i < cells.length; i++) {
125
+ const bg = cells[i].node.attrs.background ?? '';
126
+ if (bg !== first)
127
+ return TOOLBAR_BLANK_VALUE;
128
+ }
129
+ return first;
130
+ }
131
+ const cellPos = cellOpenPosAt(s.doc, s.selection.from);
132
+ if (cellPos == null)
133
+ return TOOLBAR_BLANK_VALUE;
134
+ const located = findTableForCellPos(s.doc, cellPos);
135
+ if (!located)
136
+ return TOOLBAR_BLANK_VALUE;
137
+ const grid = tableGrid(located.table, located.tableStart);
138
+ const c = grid.byPos(cellPos);
139
+ if (!c)
140
+ return TOOLBAR_BLANK_VALUE;
141
+ return c.node.attrs.background ?? '';
142
+ },
143
+ apply: (s, dispatch, value) => {
144
+ const attrValue = value === '' ? null : value;
145
+ if (s.selection instanceof CellSelection) {
146
+ const located = findTableForCellPos(s.doc, s.selection.anchorCell);
147
+ if (!located)
148
+ return false;
149
+ const { tableStart, table } = located;
150
+ const grid = tableGrid(table, tableStart);
151
+ const a = grid.byPos(s.selection.anchorCell);
152
+ const h = grid.byPos(s.selection.headCell);
153
+ if (!a || !h)
154
+ return false;
155
+ const r0 = Math.min(a.row, h.row);
156
+ const c0 = Math.min(a.col, h.col);
157
+ const r1 = Math.max(a.row + a.rowspan - 1, h.row + h.rowspan - 1);
158
+ const c1 = Math.max(a.col + a.colspan - 1, h.col + h.colspan - 1);
159
+ const positions = grid.cellPositionsInRect(r0, r1, c0, c1);
160
+ if (positions.length === 0)
161
+ return false;
162
+ let tr = s.tr;
163
+ for (const p of positions) {
164
+ tr = tr.step(new AttrStep(p, 'background', attrValue));
165
+ }
166
+ dispatch(tr);
167
+ return true;
168
+ }
169
+ const cellPos = cellOpenPosAt(s.doc, s.selection.from);
170
+ if (cellPos == null)
171
+ return false;
172
+ const tr = s.tr.step(new AttrStep(cellPos, 'background', attrValue));
173
+ dispatch(tr);
174
+ return true;
175
+ },
176
+ clear: (s, dispatch) => {
177
+ if (s.selection instanceof CellSelection) {
178
+ const located = findTableForCellPos(s.doc, s.selection.anchorCell);
179
+ if (!located)
180
+ return false;
181
+ const { tableStart, table } = located;
182
+ const grid = tableGrid(table, tableStart);
183
+ const a = grid.byPos(s.selection.anchorCell);
184
+ const h = grid.byPos(s.selection.headCell);
185
+ if (!a || !h)
186
+ return false;
187
+ const r0 = Math.min(a.row, h.row);
188
+ const c0 = Math.min(a.col, h.col);
189
+ const r1 = Math.max(a.row + a.rowspan - 1, h.row + h.rowspan - 1);
190
+ const c1 = Math.max(a.col + a.colspan - 1, h.col + h.colspan - 1);
191
+ const positions = grid.cellPositionsInRect(r0, r1, c0, c1);
192
+ if (positions.length === 0)
193
+ return false;
194
+ let tr = s.tr;
195
+ for (const p of positions) {
196
+ tr = tr.step(new AttrStep(p, 'background', null));
197
+ }
198
+ dispatch(tr);
199
+ return true;
200
+ }
201
+ const cellPos = cellOpenPosAt(s.doc, s.selection.from);
202
+ if (cellPos == null)
203
+ return false;
204
+ const tr = s.tr.step(new AttrStep(cellPos, 'background', null));
205
+ dispatch(tr);
206
+ return true;
207
+ },
208
+ },
209
+ ];
210
+ return items;
211
+ }
212
+ //# 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 '../doxiva-toolbar.component.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,gCAAgC,CAAA;AAoEjE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAkD7D"}
@@ -0,0 +1,118 @@
1
+ import { clearMark, probeMarkAttr, setMark } from '@doxi/core';
2
+ import { TOOLBAR_BLANK_VALUE } from '../doxiva-toolbar.component.js';
3
+ /**
4
+ * Tasteful Google-Docs-flavoured palette. 36 swatches: 9 hues × 4 shades.
5
+ * Mirrors the React typography builder verbatim so both adapters render the
6
+ * same palette grid.
7
+ */
8
+ const COLOR_SWATCHES = [
9
+ // Row 1 — light/pastel tints
10
+ { value: '#ffffff', label: 'White', css: '#ffffff' },
11
+ { value: '#f4cccc', label: 'Light red', css: '#f4cccc' },
12
+ { value: '#fce5cd', label: 'Light orange', css: '#fce5cd' },
13
+ { value: '#fff2cc', label: 'Light yellow', css: '#fff2cc' },
14
+ { value: '#d9ead3', label: 'Light green', css: '#d9ead3' },
15
+ { value: '#d0e0e3', label: 'Light teal', css: '#d0e0e3' },
16
+ { value: '#cfe2f3', label: 'Light blue', css: '#cfe2f3' },
17
+ { value: '#d9d2e9', label: 'Light purple', css: '#d9d2e9' },
18
+ { value: '#ead1dc', label: 'Light pink', css: '#ead1dc' },
19
+ // Row 2 — mid tones
20
+ { value: '#cccccc', label: 'Light grey', css: '#cccccc' },
21
+ { value: '#ea9999', label: 'Soft red', css: '#ea9999' },
22
+ { value: '#f9cb9c', label: 'Soft orange', css: '#f9cb9c' },
23
+ { value: '#ffe599', label: 'Soft yellow', css: '#ffe599' },
24
+ { value: '#b6d7a8', label: 'Soft green', css: '#b6d7a8' },
25
+ { value: '#a2c4c9', label: 'Soft teal', css: '#a2c4c9' },
26
+ { value: '#9fc5e8', label: 'Soft blue', css: '#9fc5e8' },
27
+ { value: '#b4a7d6', label: 'Soft purple', css: '#b4a7d6' },
28
+ { value: '#d5a6bd', label: 'Soft pink', css: '#d5a6bd' },
29
+ // Row 3 — vivid Google brand tones
30
+ { value: '#999999', label: 'Grey', css: '#999999' },
31
+ { value: '#d93025', label: 'Red', css: '#d93025' },
32
+ { value: '#e8710a', label: 'Orange', css: '#e8710a' },
33
+ { value: '#f9ab00', label: 'Yellow', css: '#f9ab00' },
34
+ { value: '#1e8e3e', label: 'Green', css: '#1e8e3e' },
35
+ { value: '#00897b', label: 'Teal', css: '#00897b' },
36
+ { value: '#1a73e8', label: 'Blue', css: '#1a73e8' },
37
+ { value: '#9334e6', label: 'Purple', css: '#9334e6' },
38
+ { value: '#d2185c', label: 'Pink', css: '#d2185c' },
39
+ // Row 4 — dark shades + black
40
+ { value: '#000000', label: 'Black', css: '#000000' },
41
+ { value: '#990000', label: 'Dark red', css: '#990000' },
42
+ { value: '#b45f06', label: 'Dark orange', css: '#b45f06' },
43
+ { value: '#bf9000', label: 'Dark yellow', css: '#bf9000' },
44
+ { value: '#0b6623', label: 'Dark green', css: '#0b6623' },
45
+ { value: '#0f5963', label: 'Dark teal', css: '#0f5963' },
46
+ { value: '#0b5394', label: 'Dark blue', css: '#0b5394' },
47
+ { value: '#5b14b3', label: 'Dark purple', css: '#5b14b3' },
48
+ { value: '#85104a', label: 'Dark pink', css: '#85104a' },
49
+ ];
50
+ // "A" with an underline bar — text-color glyph.
51
+ const ICON_COLOR = '<path d="M6 17l4-11h2l4 11" />' +
52
+ '<path d="M7.5 13.5h5" />' +
53
+ '<path d="M5 20h12" />';
54
+ const FONT_FAMILIES = [
55
+ 'Arial',
56
+ 'Calibri',
57
+ 'Georgia',
58
+ 'Inter',
59
+ 'Roboto',
60
+ 'Times New Roman',
61
+ 'Verdana',
62
+ 'Courier New',
63
+ ];
64
+ export function buildTypography(schema) {
65
+ const items = [];
66
+ const color = schema.marks.color;
67
+ if (color) {
68
+ items.push({
69
+ type: 'palette',
70
+ id: 'color',
71
+ label: 'Text color',
72
+ icon: ICON_COLOR,
73
+ swatches: COLOR_SWATCHES,
74
+ clearLabel: 'Default',
75
+ getValue: (s) => {
76
+ const r = probeMarkAttr(s, color, 'value');
77
+ if (r.state === 'uniform' && typeof r.value === 'string')
78
+ return r.value;
79
+ if (r.state === 'unset')
80
+ return '';
81
+ return TOOLBAR_BLANK_VALUE;
82
+ },
83
+ apply: (s, dispatch, value) => {
84
+ if (!value)
85
+ return clearMark(color)(s, dispatch) || true;
86
+ return setMark(color, { value })(s, dispatch);
87
+ },
88
+ clear: (s, dispatch) => clearMark(color)(s, dispatch),
89
+ });
90
+ }
91
+ const fontFamily = schema.marks.font_family;
92
+ if (fontFamily) {
93
+ items.push({
94
+ type: 'select',
95
+ id: 'font-family',
96
+ label: 'Font family',
97
+ options: [
98
+ { value: '', label: 'Default' },
99
+ ...FONT_FAMILIES.map((n) => ({ value: n, label: n })),
100
+ ],
101
+ getValue: (s) => {
102
+ const r = probeMarkAttr(s, fontFamily, 'name');
103
+ if (r.state === 'uniform' && typeof r.value === 'string')
104
+ return r.value;
105
+ if (r.state === 'unset')
106
+ return '';
107
+ return TOOLBAR_BLANK_VALUE;
108
+ },
109
+ apply: (s, dispatch, value) => {
110
+ if (!value)
111
+ return clearMark(fontFamily)(s, dispatch) || true;
112
+ return setMark(fontFamily, { name: value })(s, dispatch);
113
+ },
114
+ });
115
+ }
116
+ return items;
117
+ }
118
+ //# sourceMappingURL=typography.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typography.js","sourceRoot":"","sources":["../../src/toolbar-builders/typography.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@doxi/angular",
3
+ "version": "0.11.0",
4
+ "description": "Doxiva Angular adapter — standalone component wrapping @doxi/core's EditorView.",
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/angular"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/mahbub-hasaan/doxiva/issues"
15
+ },
16
+ "keywords": ["editor", "angular", "rich-text", "doxiva"],
17
+ "publishConfig": {
18
+ "access": "public"
19
+ },
20
+ "type": "module",
21
+ "sideEffects": false,
22
+ "files": ["dist", "README.md", "LICENSE"],
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.js"
27
+ }
28
+ },
29
+ "scripts": {
30
+ "build": "tsc -p tsconfig.json",
31
+ "typecheck": "tsc -p tsconfig.typecheck.json",
32
+ "test": "echo \"@doxi/angular has only type-level tests (.test-d.ts); covered by typecheck\"",
33
+ "test:watch": "echo \"no watchable unit tests\"",
34
+ "clean": "rimraf dist"
35
+ },
36
+ "peerDependencies": {
37
+ "@angular/common": "^18.0.0 || ^19.0.0",
38
+ "@angular/core": "^18.0.0 || ^19.0.0",
39
+ "@doxi/core": "workspace:*",
40
+ "@doxi/docx": "workspace:*",
41
+ "rxjs": "^7.0.0"
42
+ },
43
+ "peerDependenciesMeta": {
44
+ "@doxi/docx": { "optional": true }
45
+ },
46
+ "devDependencies": {
47
+ "@doxi/docx": "workspace:*",
48
+ "rimraf": "6.0.1"
49
+ }
50
+ }