@heyramzi/ui 2.11.0 → 2.11.2

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 (267) hide show
  1. package/dist/agents/helpers.js +38 -38
  2. package/dist/agents/page-state.js +49 -50
  3. package/dist/agents/vendor/color.js +146 -127
  4. package/dist/agents/vendor/draw.js +617 -508
  5. package/dist/agents/vendor/engine.js +698 -599
  6. package/dist/agents/vendor/mesh.js +653 -683
  7. package/dist/agents/vendor/plastic.js +3913 -3112
  8. package/dist/agents/vendor/presets.js +163 -164
  9. package/dist/agents/vendor/shapes.js +21 -20
  10. package/dist/agents/vendor/ticker.js +41 -42
  11. package/dist/agents/vendor/types.js +1 -0
  12. package/dist/agents/vendor/wear.js +1421 -1448
  13. package/dist/ai/confirmation/confirmation-context.svelte.js +6 -6
  14. package/dist/ai/confirmation/index.js +3 -1
  15. package/dist/ai/index.js +33 -0
  16. package/dist/ai/prompt-input/index.js +3 -1
  17. package/dist/ai/reasoning/index.js +3 -1
  18. package/dist/ai/reasoning/reasoning-context.svelte.js +6 -6
  19. package/dist/ai/suggestion/index.js +3 -1
  20. package/dist/ai/typing-dots/index.js +3 -1
  21. package/dist/animations/text-swap.js +24 -24
  22. package/dist/brand/index.js +54 -48
  23. package/dist/canvas/card/resize.js +5 -3
  24. package/dist/canvas/edges/edge-path.js +255 -242
  25. package/dist/canvas/editor/context-menu.js +39 -36
  26. package/dist/canvas/editor/dispatch.svelte.js +154 -151
  27. package/dist/canvas/editor/editor-context.js +7 -2
  28. package/dist/canvas/editor/editor-mode.js +1 -0
  29. package/dist/canvas/editor/frame.js +73 -76
  30. package/dist/canvas/editor/hand-context.js +5 -2
  31. package/dist/canvas/editor/history-core.js +163 -191
  32. package/dist/canvas/editor/keymap.js +95 -169
  33. package/dist/canvas/editor/layout-actions.js +143 -144
  34. package/dist/canvas/editor/lock.js +52 -51
  35. package/dist/canvas/editor/rebase.js +217 -240
  36. package/dist/canvas/editor/style.js +132 -137
  37. package/dist/canvas/editor/text-field-context.js +7 -2
  38. package/dist/canvas/editor/z-order.js +65 -70
  39. package/dist/canvas/headless/alignment.js +22 -16
  40. package/dist/canvas/headless/break-apart-find.js +286 -279
  41. package/dist/canvas/headless/break-apart-pieces.js +62 -58
  42. package/dist/canvas/headless/break-apart-plan.js +299 -325
  43. package/dist/canvas/headless/break-apart-style.js +75 -70
  44. package/dist/canvas/headless/break-apart.js +188 -181
  45. package/dist/canvas/headless/canvas-cleanup.js +78 -58
  46. package/dist/canvas/headless/edge-anchors.js +115 -116
  47. package/dist/canvas/headless/edge-memo.js +24 -22
  48. package/dist/canvas/headless/edge-serialization.js +17 -27
  49. package/dist/canvas/headless/figure-geometry.js +232 -264
  50. package/dist/canvas/headless/fit-viewport.js +84 -67
  51. package/dist/canvas/headless/grid.js +88 -86
  52. package/dist/canvas/headless/icon-node.js +44 -36
  53. package/dist/canvas/headless/index.js +1 -0
  54. package/dist/canvas/headless/linkify.js +17 -19
  55. package/dist/canvas/headless/pen-marks.js +101 -95
  56. package/dist/canvas/headless/sketch.js +231 -209
  57. package/dist/canvas/headless/snap-guides.js +99 -83
  58. package/dist/canvas/headless/svg-figure.js +133 -117
  59. package/dist/canvas/headless/table-layout.js +146 -107
  60. package/dist/canvas/index.js +2 -0
  61. package/dist/canvas/lod/lod-mode.svelte.js +20 -18
  62. package/dist/canvas/lod/render-all.svelte.js +36 -39
  63. package/dist/canvas/ops/arrange.js +78 -71
  64. package/dist/canvas/ops/ops.js +260 -255
  65. package/dist/canvas/pen/colors.js +37 -35
  66. package/dist/canvas/pen/eraser.js +28 -27
  67. package/dist/canvas/pen/geometry.js +120 -130
  68. package/dist/canvas/pen/index.js +1 -0
  69. package/dist/canvas/pen/ops.js +11 -11
  70. package/dist/canvas/pen/pen-session.js +150 -159
  71. package/dist/canvas/pen/plugin.js +107 -104
  72. package/dist/canvas/pen/shapes.js +73 -68
  73. package/dist/canvas/pen/stroke-path.js +32 -30
  74. package/dist/canvas/pen/types.js +21 -21
  75. package/dist/canvas/pen/ui.js +10 -8
  76. package/dist/canvas/plugin.js +46 -46
  77. package/dist/canvas/screen/glyphs.js +12 -11
  78. package/dist/canvas/screen/labels.js +22 -22
  79. package/dist/canvas/screen/parts.js +98 -111
  80. package/dist/canvas/screen/plugin.js +47 -56
  81. package/dist/canvas/screen/types.js +30 -35
  82. package/dist/canvas/screen/ui.js +7 -7
  83. package/dist/canvas/test-utils.js +14 -14
  84. package/dist/canvas/types.js +1 -0
  85. package/dist/canvas/ui/forward-wheel.js +24 -25
  86. package/dist/canvas/ui/icons.js +64 -131
  87. package/dist/canvas/ui/place-panel.js +58 -49
  88. package/dist/canvas/ui/shortcut-tip.js +14 -12
  89. package/dist/canvas/ui/tools.js +300 -385
  90. package/dist/charts/dashboard/chart.js +4 -0
  91. package/dist/charts/dashboard/data-table.js +11 -0
  92. package/dist/charts/dashboard/windows.js +8 -3
  93. package/dist/charts/edge-fade.js +10 -5
  94. package/dist/charts/hover-band.js +16 -11
  95. package/dist/charts/index.js +0 -1
  96. package/dist/charts/motion.js +11 -7
  97. package/dist/charts/primitives/chart-utils.js +12 -12
  98. package/dist/components/copy/clipboard.js +32 -32
  99. package/dist/components/copy/copied.svelte.js +31 -23
  100. package/dist/components/data-table/data-table.js +39 -39
  101. package/dist/components/docs/index.js +4 -0
  102. package/dist/components/docs/scroll-spy.svelte.js +73 -68
  103. package/dist/components/list-page/filter-section.js +4 -1
  104. package/dist/components/list-page/index.js +2 -0
  105. package/dist/components/list-page/list-table.js +7 -2
  106. package/dist/components/list-page/queue-rail.js +14 -0
  107. package/dist/components/list-page/section-host.js +4 -2
  108. package/dist/components/list-page/step.js +4 -3
  109. package/dist/components/list-page/types.js +1 -0
  110. package/dist/components/picker/trigger.js +48 -30
  111. package/dist/components/picker/types.js +1 -0
  112. package/dist/components/segmented/collapse.js +38 -27
  113. package/dist/components/segmented/index.js +8 -0
  114. package/dist/components/segmented/segmented.js +67 -42
  115. package/dist/components/star-rating-input/index.js +3 -1
  116. package/dist/components/table-view/types.js +1 -0
  117. package/dist/components/tags-input/tags.js +81 -69
  118. package/dist/components/theme/index.js +4 -0
  119. package/dist/components/toolbar/index.js +4 -0
  120. package/dist/components/toolbar/toolbar-trigger.js +14 -1
  121. package/dist/editor/anchors.js +17 -13
  122. package/dist/editor/block-id.js +52 -51
  123. package/dist/editor/block-ops.js +108 -80
  124. package/dist/editor/doc-blocks.js +155 -166
  125. package/dist/editor/extensions.js +139 -180
  126. package/dist/editor/index.js +4 -0
  127. package/dist/editor/markdown-test-helpers.js +4 -2
  128. package/dist/editor/markdown.js +420 -408
  129. package/dist/editor/serializer.js +204 -200
  130. package/dist/editor/slash-items.js +89 -101
  131. package/dist/editor/youtube-url.js +25 -20
  132. package/dist/effects/animated-beam/path-calculator.svelte.js +43 -38
  133. package/dist/effects/animated-beam/types.js +1 -0
  134. package/dist/effects/border-beam/css.js +92 -78
  135. package/dist/effects/border-beam/presets.js +1705 -1720
  136. package/dist/effects/border-beam/register-properties.js +43 -33
  137. package/dist/effects/border-beam/types.js +1 -0
  138. package/dist/effects/image-comparison/compare.js +3 -2
  139. package/dist/effects/image-reveal/types.js +1 -0
  140. package/dist/effects/magnetic/magnetic.js +58 -52
  141. package/dist/effects/reveal/observe.js +50 -40
  142. package/dist/effects/reveal/types.js +1 -0
  143. package/dist/effects/shader-gradient/color.js +36 -29
  144. package/dist/effects/shader-gradient/renderer.js +384 -295
  145. package/dist/effects/shader-gradient/shaders.js +31 -0
  146. package/dist/effects/shader-gradient/types.js +1 -0
  147. package/dist/icons/apple-symbol-exports.js +99 -124
  148. package/dist/icons/sf-symbols.js +357 -461
  149. package/dist/icons/trades.js +43 -28
  150. package/dist/inbox/index.js +1 -0
  151. package/dist/inbox/logic.js +126 -122
  152. package/dist/inbox/types.js +43 -43
  153. package/dist/lib/arrive.js +19 -12
  154. package/dist/lib/icon-types.js +1 -0
  155. package/dist/lib/initials.js +16 -10
  156. package/dist/lib/layout.js +5 -0
  157. package/dist/lib/panel.js +13 -0
  158. package/dist/lib/result.js +22 -22
  159. package/dist/lib/sliding-pill.js +59 -44
  160. package/dist/lib/theme-transition.js +43 -43
  161. package/dist/lib/tone.js +31 -24
  162. package/dist/lib/utils.js +3 -1
  163. package/dist/onboarding/define-tours.js +24 -23
  164. package/dist/onboarding/onboarding.svelte.js +16 -12
  165. package/dist/onboarding/pick.js +10 -6
  166. package/dist/onboarding/stores.js +40 -41
  167. package/dist/onboarding/wait.js +24 -23
  168. package/dist/panel/side-panel-types.js +1 -0
  169. package/dist/record/demo-data.js +459 -486
  170. package/dist/record/fields.js +129 -131
  171. package/dist/record/format.js +70 -82
  172. package/dist/record/gutter.js +1 -0
  173. package/dist/record/kinds.js +95 -105
  174. package/dist/record/logic.js +238 -219
  175. package/dist/record/types.js +49 -48
  176. package/dist/shadcn/accordion/index.js +3 -1
  177. package/dist/shadcn/alert/index.js +3 -1
  178. package/dist/shadcn/alert-dialog/index.js +3 -1
  179. package/dist/shadcn/attachment/index.js +3 -1
  180. package/dist/shadcn/avatar/index.js +3 -1
  181. package/dist/shadcn/breadcrumb/index.js +3 -1
  182. package/dist/shadcn/bubble/index.js +3 -1
  183. package/dist/shadcn/button/index.js +3 -1
  184. package/dist/shadcn/calendar/index.js +3 -1
  185. package/dist/shadcn/card/index.js +3 -1
  186. package/dist/shadcn/checkbox/index.js +3 -1
  187. package/dist/shadcn/code-block/index.js +3 -1
  188. package/dist/shadcn/collapsible/index.js +3 -1
  189. package/dist/shadcn/command/index.js +4 -1
  190. package/dist/shadcn/context-menu/index.js +3 -1
  191. package/dist/shadcn/dialog/index.js +3 -1
  192. package/dist/shadcn/dropdown-menu/menu-item.js +40 -20
  193. package/dist/shadcn/empty/index.js +3 -1
  194. package/dist/shadcn/field/index.js +3 -1
  195. package/dist/shadcn/hooks/highlighter.js +77 -75
  196. package/dist/shadcn/hooks/is-mobile.svelte.js +3 -3
  197. package/dist/shadcn/hooks/use-highlighted-code.svelte.js +62 -62
  198. package/dist/shadcn/input/index.js +3 -1
  199. package/dist/shadcn/kbd/index.js +3 -1
  200. package/dist/shadcn/label/index.js +3 -1
  201. package/dist/shadcn/marker/index.js +3 -1
  202. package/dist/shadcn/message/index.js +3 -1
  203. package/dist/shadcn/message-scroller/index.js +3 -1
  204. package/dist/shadcn/popover/index.js +3 -1
  205. package/dist/shadcn/progress/index.js +3 -1
  206. package/dist/shadcn/progress/tone.js +8 -7
  207. package/dist/shadcn/radio-group/index.js +3 -1
  208. package/dist/shadcn/scroll-area/index.js +3 -1
  209. package/dist/shadcn/select/index.js +3 -1
  210. package/dist/shadcn/separator/index.js +3 -1
  211. package/dist/shadcn/sheet/index.js +3 -1
  212. package/dist/shadcn/sidebar/context.svelte.js +42 -28
  213. package/dist/shadcn/sidebar/index.js +3 -1
  214. package/dist/shadcn/skeleton/index.js +3 -1
  215. package/dist/shadcn/slider/index.js +3 -1
  216. package/dist/shadcn/switch/index.js +3 -1
  217. package/dist/shadcn/table/index.js +3 -1
  218. package/dist/shadcn/tabs/index.js +3 -1
  219. package/dist/shadcn/textarea/index.js +3 -1
  220. package/dist/shadcn/toggle/index.js +3 -1
  221. package/dist/shadcn/toggle-group/index.js +3 -1
  222. package/dist/shadcn/tooltip/context.js +7 -2
  223. package/dist/shadcn/tooltip/index.js +3 -1
  224. package/dist/shadcn/trace/index.js +3 -1
  225. package/dist/slides/bridges.js +65 -59
  226. package/dist/slides/deck-controller.svelte.js +210 -207
  227. package/dist/slides/export/capture.js +66 -71
  228. package/dist/slides/export/ffmpeg.js +76 -72
  229. package/dist/slides/export/index.js +3 -0
  230. package/dist/slides/export/launch.js +9 -6
  231. package/dist/slides/export/pdf.js +60 -54
  232. package/dist/slides/export/types.js +1 -0
  233. package/dist/slides/labels.js +24 -24
  234. package/dist/slides/layout.js +39 -41
  235. package/dist/slides/model.js +9 -7
  236. package/dist/slides/navigation.js +78 -73
  237. package/dist/slides/types.js +2 -2
  238. package/dist/status/define-statuses.js +18 -14
  239. package/dist/status/status-types.js +1 -0
  240. package/dist/test-setup.js +24 -20
  241. package/dist/thread/logic.js +73 -77
  242. package/dist/thread/types.js +21 -21
  243. package/dist/work/board-order.js +94 -90
  244. package/dist/work/dates.js +16 -9
  245. package/dist/work/detail/detail-types.js +18 -18
  246. package/dist/work/docs/edited.js +32 -29
  247. package/dist/work/docs/index.js +4 -0
  248. package/dist/work/docs/labels.js +34 -34
  249. package/dist/work/docs/menu.js +113 -106
  250. package/dist/work/docs/outline.js +39 -29
  251. package/dist/work/gantt/logic.js +211 -235
  252. package/dist/work/inbox/inbox-logic.js +71 -75
  253. package/dist/work/inbox/inbox-statuses.js +75 -72
  254. package/dist/work/inbox/inbox-types.js +1 -0
  255. package/dist/work/kanban-drag.js +27 -22
  256. package/dist/work/kanban-types.js +1 -0
  257. package/dist/work/presets/sales.js +36 -32
  258. package/dist/work/reorder.js +9 -8
  259. package/dist/work/task-types.js +1 -0
  260. package/dist/work/time/duration.js +51 -46
  261. package/dist/work/time/time-types.js +23 -23
  262. package/dist/work/use-kanban-dnd.svelte.js +126 -125
  263. package/package.json +3 -1
  264. package/src/components/list-page/master-detail.svelte +3 -1
  265. package/src/components/list-page/rail-row.svelte +4 -4
  266. package/src/components/tags-input/tags-input.svelte +2 -0
  267. package/src/editor/markdown.ts +30 -35
@@ -8,193 +8,152 @@ import { Table, TableCell, TableHeader, TableRow } from "@tiptap/extension-table
8
8
  import { BlockIdExtension } from "./block-id.js";
9
9
  import { CodeBlockChrome, HeadingAnchors } from "./doc-blocks.js";
10
10
  const CmsBlock = TiptapNode.create({
11
- name: "cmsBlock",
12
- group: "block",
13
- atom: true,
14
- draggable: true,
15
- selectable: true,
16
- addAttributes () {
17
- return {
18
- blockType: {
19
- default: "unknown"
20
- },
21
- data: {
22
- default: {}
23
- }
24
- };
25
- },
26
- parseHTML () {
27
- return [
28
- {
29
- tag: 'div[data-type="cms-block"]'
30
- }
31
- ];
32
- },
33
- renderHTML ({ HTMLAttributes }) {
34
- const blockType = typeof HTMLAttributes.blockType === "string" ? HTMLAttributes.blockType : "unknown";
35
- const { data: _data, blockType: _blockType, ...attrs } = HTMLAttributes;
36
- return [
37
- "div",
38
- mergeAttributes(attrs, {
39
- class: "cms-block-node",
40
- "data-type": "cms-block",
41
- "data-block-type": blockType
42
- }),
43
- [
44
- "strong",
45
- {},
46
- "CMS block"
47
- ],
48
- [
49
- "span",
50
- {},
51
- ` ${blockType}`
52
- ]
53
- ];
54
- }
11
+ name: "cmsBlock",
12
+ group: "block",
13
+ atom: true,
14
+ draggable: true,
15
+ selectable: true,
16
+ addAttributes() {
17
+ return {
18
+ blockType: { default: "unknown" },
19
+ data: { default: {} }
20
+ };
21
+ },
22
+ parseHTML() {
23
+ return [{ tag: "div[data-type=\"cms-block\"]" }];
24
+ },
25
+ renderHTML({ HTMLAttributes }) {
26
+ const blockType = typeof HTMLAttributes.blockType === "string" ? HTMLAttributes.blockType : "unknown";
27
+ const { data: _data, blockType: _blockType, ...attrs } = HTMLAttributes;
28
+ return [
29
+ "div",
30
+ mergeAttributes(attrs, {
31
+ class: "cms-block-node",
32
+ "data-type": "cms-block",
33
+ "data-block-type": blockType
34
+ }),
35
+ [
36
+ "strong",
37
+ {},
38
+ "CMS block"
39
+ ],
40
+ [
41
+ "span",
42
+ {},
43
+ ` ${blockType}`
44
+ ]
45
+ ];
46
+ }
55
47
  });
48
+ // WHY: the same facade markup as serializer.ts, so authors see what ships. The
49
+ // editor only needs an atomic node; click-to-load lives in renderer.svelte.
56
50
  const Youtube = TiptapNode.create({
57
- name: "youtube",
58
- group: "block",
59
- atom: true,
60
- draggable: true,
61
- selectable: true,
62
- addAttributes () {
63
- return {
64
- videoId: {
65
- default: null
66
- },
67
- title: {
68
- default: ""
69
- },
70
- start: {
71
- default: 0
72
- }
73
- };
74
- },
75
- parseHTML () {
76
- return [
77
- {
78
- tag: "div[data-video-id]"
79
- }
80
- ];
81
- },
82
- renderHTML ({ HTMLAttributes }) {
83
- const videoId = typeof HTMLAttributes.videoId === "string" ? HTMLAttributes.videoId : "";
84
- const title = typeof HTMLAttributes.title === "string" ? HTMLAttributes.title : "";
85
- const start = typeof HTMLAttributes.start === "number" ? HTMLAttributes.start : 0;
86
- return [
87
- "div",
88
- mergeAttributes({
89
- class: "tiptap-youtube",
90
- "data-video-id": videoId,
91
- "data-start": String(start)
92
- }),
93
- [
94
- "button",
95
- {
96
- type: "button",
97
- class: "tiptap-youtube-trigger",
98
- "aria-label": `Play video: ${title}`
99
- },
100
- [
101
- "img",
102
- {
103
- class: "tiptap-youtube-poster",
104
- src: `https://i.ytimg.com/vi/${videoId}/hqdefault.jpg`,
105
- alt: "",
106
- loading: "lazy",
107
- width: "480",
108
- height: "360"
109
- }
110
- ],
111
- [
112
- "span",
113
- {
114
- class: "tiptap-youtube-play",
115
- "aria-hidden": "true"
116
- }
117
- ],
118
- [
119
- "span",
120
- {
121
- class: "tiptap-youtube-title"
122
- },
123
- title
124
- ]
125
- ]
126
- ];
127
- }
51
+ name: "youtube",
52
+ group: "block",
53
+ atom: true,
54
+ draggable: true,
55
+ selectable: true,
56
+ addAttributes() {
57
+ return {
58
+ videoId: { default: null },
59
+ title: { default: "" },
60
+ start: { default: 0 }
61
+ };
62
+ },
63
+ parseHTML() {
64
+ return [{ tag: "div[data-video-id]" }];
65
+ },
66
+ renderHTML({ HTMLAttributes }) {
67
+ const videoId = typeof HTMLAttributes.videoId === "string" ? HTMLAttributes.videoId : "";
68
+ const title = typeof HTMLAttributes.title === "string" ? HTMLAttributes.title : "";
69
+ const start = typeof HTMLAttributes.start === "number" ? HTMLAttributes.start : 0;
70
+ return [
71
+ "div",
72
+ mergeAttributes({
73
+ class: "tiptap-youtube",
74
+ "data-video-id": videoId,
75
+ "data-start": String(start)
76
+ }),
77
+ [
78
+ "button",
79
+ {
80
+ type: "button",
81
+ class: "tiptap-youtube-trigger",
82
+ "aria-label": `Play video: ${title}`
83
+ },
84
+ ["img", {
85
+ class: "tiptap-youtube-poster",
86
+ src: `https://i.ytimg.com/vi/${videoId}/hqdefault.jpg`,
87
+ alt: "",
88
+ loading: "lazy",
89
+ width: "480",
90
+ height: "360"
91
+ }],
92
+ ["span", {
93
+ class: "tiptap-youtube-play",
94
+ "aria-hidden": "true"
95
+ }],
96
+ [
97
+ "span",
98
+ { class: "tiptap-youtube-title" },
99
+ title
100
+ ]
101
+ ]
102
+ ];
103
+ }
128
104
  });
129
105
  function dedupeExtensions(extensions) {
130
- const seen = new Set();
131
- return extensions.filter((extension)=>{
132
- if (!extension || typeof extension !== "object") return false;
133
- const name = "name" in extension && typeof extension.name === "string" ? extension.name : "";
134
- if (!name) return true;
135
- if (seen.has(name)) return false;
136
- seen.add(name);
137
- return true;
138
- });
106
+ const seen = new Set();
107
+ return extensions.filter((extension) => {
108
+ if (!extension || typeof extension !== "object") return false;
109
+ const name = "name" in extension && typeof extension.name === "string" ? extension.name : "";
110
+ if (!name) return true;
111
+ if (seen.has(name)) return false;
112
+ seen.add(name);
113
+ return true;
114
+ });
139
115
  }
140
116
  const DRAG_DOTS = `<svg width="12" height="12" viewBox="0 0 12 12" fill="none"><circle cx="2.5" cy="2.5" r="1" fill="currentColor"/><circle cx="2.5" cy="6" r="1" fill="currentColor"/><circle cx="2.5" cy="9.5" r="1" fill="currentColor"/><circle cx="6" cy="2.5" r="1" fill="currentColor"/><circle cx="6" cy="6" r="1" fill="currentColor"/><circle cx="6" cy="9.5" r="1" fill="currentColor"/></svg>`;
141
117
  function dragHandle() {
142
- return DragHandle.configure({
143
- render () {
144
- const el = document.createElement("div");
145
- el.classList.add("drag-handle");
146
- el.innerHTML = DRAG_DOTS;
147
- return el;
148
- }
149
- });
118
+ return DragHandle.configure({ render() {
119
+ const el = document.createElement("div");
120
+ el.classList.add("drag-handle");
121
+ el.innerHTML = DRAG_DOTS;
122
+ return el;
123
+ } });
150
124
  }
125
+ /** The extension list for a preset: `full` adds CMS blocks, YouTube, images and H4. */
151
126
  export function buildExtensions({ preset, placeholder, blockIds, anchors = false }) {
152
- const full = preset === "full";
153
- return dedupeExtensions([
154
- StarterKit.configure({
155
- heading: {
156
- levels: full ? [
157
- 1,
158
- 2,
159
- 3,
160
- 4
161
- ] : [
162
- 1,
163
- 2,
164
- 3
165
- ]
166
- },
167
- link: {
168
- openOnClick: false
169
- }
170
- }),
171
- ...full ? [
172
- CmsBlock,
173
- Youtube,
174
- Image.configure({
175
- inline: false
176
- }),
177
- TaskList,
178
- TaskItem.configure({
179
- nested: true
180
- }),
181
- Table.configure({
182
- resizable: false
183
- }),
184
- TableRow,
185
- TableHeader,
186
- TableCell,
187
- CodeBlockChrome
188
- ] : [],
189
- ...anchors ? [
190
- HeadingAnchors.configure(anchors)
191
- ] : [],
192
- Placeholder.configure({
193
- placeholder
194
- }),
195
- dragHandle(),
196
- ...blockIds ? [
197
- BlockIdExtension
198
- ] : []
199
- ]);
127
+ const full = preset === "full";
128
+ return dedupeExtensions([
129
+ StarterKit.configure({
130
+ heading: { levels: full ? [
131
+ 1,
132
+ 2,
133
+ 3,
134
+ 4
135
+ ] : [
136
+ 1,
137
+ 2,
138
+ 3
139
+ ] },
140
+ link: { openOnClick: false }
141
+ }),
142
+ ...full ? [
143
+ CmsBlock,
144
+ Youtube,
145
+ Image.configure({ inline: false }),
146
+ TaskList,
147
+ TaskItem.configure({ nested: true }),
148
+ Table.configure({ resizable: false }),
149
+ TableRow,
150
+ TableHeader,
151
+ TableCell,
152
+ CodeBlockChrome
153
+ ] : [],
154
+ ...anchors ? [HeadingAnchors.configure(anchors)] : [],
155
+ Placeholder.configure({ placeholder }),
156
+ dragHandle(),
157
+ ...blockIds ? [BlockIdExtension] : []
158
+ ]);
200
159
  }
@@ -2,3 +2,7 @@ export { default as RichEditor } from "../../src/editor/editor.svelte";
2
2
  export { default as RichRenderer } from "../../src/editor/renderer.svelte";
3
3
  export { renderTiptapContent, extractHeadings, extractYoutubeVideos } from "./serializer.js";
4
4
  export { BlockIdExtension, generateBlockId } from "./block-id.js";
5
+ // WHY: the markdown bridge and block-ops pull in markdown-it, so they aren't
6
+ // re-exported here. Blog pages would bundle it. Import from their subpaths:
7
+ // @heyramzi/ui/editor/markdown
8
+ // @heyramzi/ui/editor/block-ops
@@ -1,6 +1,8 @@
1
+ /** The top-level block nodes of a doc. */
1
2
  export function blocks(doc) {
2
- return doc.content;
3
+ return doc.content;
3
4
  }
5
+ /** True when every top-level block carries a string id. */
4
6
  export function allHaveIds(doc) {
5
- return doc.content.every((n)=>typeof n.attrs?.id === "string" && n.attrs.id.length > 0);
7
+ return doc.content.every((n) => typeof n.attrs?.id === "string" && n.attrs.id.length > 0);
6
8
  }