@growth-labs/cms 0.5.18 → 0.5.20

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 (41) hide show
  1. package/README.md +46 -0
  2. package/dist/content/index.d.ts +4 -0
  3. package/dist/content/index.d.ts.map +1 -0
  4. package/dist/content/index.js +10 -0
  5. package/dist/content/index.js.map +1 -0
  6. package/dist/schema/insights-ingest.d.ts +18 -18
  7. package/dist/schema/portable-text.d.ts.map +1 -1
  8. package/dist/schema/portable-text.js +8 -0
  9. package/dist/schema/portable-text.js.map +1 -1
  10. package/dist/ui/editor/Rte.d.ts.map +1 -1
  11. package/dist/ui/editor/Rte.js +22 -0
  12. package/dist/ui/editor/Rte.js.map +1 -1
  13. package/dist/ui/editor/blocks.d.ts +17 -0
  14. package/dist/ui/editor/blocks.d.ts.map +1 -0
  15. package/dist/ui/editor/blocks.js +113 -0
  16. package/dist/ui/editor/blocks.js.map +1 -0
  17. package/dist/ui/editor/extensions.d.ts +1 -1
  18. package/dist/ui/editor/extensions.d.ts.map +1 -1
  19. package/dist/ui/editor/extensions.js +19 -0
  20. package/dist/ui/editor/extensions.js.map +1 -1
  21. package/dist/ui/editor/portable-text.d.ts.map +1 -1
  22. package/dist/ui/editor/portable-text.js +57 -1
  23. package/dist/ui/editor/portable-text.js.map +1 -1
  24. package/dist/ui/editor/serialize.d.ts.map +1 -1
  25. package/dist/ui/editor/serialize.js +96 -2
  26. package/dist/ui/editor/serialize.js.map +1 -1
  27. package/dist/ui/editor/slash-menu.d.ts +14 -0
  28. package/dist/ui/editor/slash-menu.d.ts.map +1 -0
  29. package/dist/ui/editor/slash-menu.js +200 -0
  30. package/dist/ui/editor/slash-menu.js.map +1 -0
  31. package/dist/ui/styles/broadsheet.css +20 -0
  32. package/package.json +11 -1
  33. package/src/content/index.ts +16 -0
  34. package/src/schema/portable-text.ts +8 -0
  35. package/src/ui/editor/Rte.tsx +25 -0
  36. package/src/ui/editor/blocks.ts +140 -0
  37. package/src/ui/editor/extensions.ts +20 -0
  38. package/src/ui/editor/portable-text.ts +60 -1
  39. package/src/ui/editor/serialize.ts +100 -2
  40. package/src/ui/editor/slash-menu.ts +218 -0
  41. package/src/ui/styles/broadsheet.css +20 -0
package/README.md CHANGED
@@ -170,6 +170,52 @@ envelope means "no structured body, render the markdown".
170
170
  so an external markdown writer can never leave a stale structured body for
171
171
  renderers to prefer.
172
172
  - Golden round-trip tests: `__tests__/ui/portable-text.test.ts`.
173
+ - Typed editorial blocks (Phase 1): `callout` (`{ tone, content }`, markdown
174
+ form = GFM alert `> [!NOTE]`), `pullQuote` (`{ attribution, content }`,
175
+ markdown form = `:::pullquote` directive), `generatedFaq` (`{ markdown }`,
176
+ the machine-owned `<!-- generated-faq -->` region as an opaque atom that
177
+ re-serializes byte-identically), and the `citation` annotation
178
+ (`markDef { _type: 'citation', href }`, markdown form `[[label]](href)`).
179
+ Editor node specs live in `src/ui/editor/blocks.ts`.
180
+ - Editor UX: a `/` slash menu at line start inserts any block
181
+ (`src/ui/editor/slash-menu.ts` — the item list + filter are pure and
182
+ tested), a drag handle reorders blocks
183
+ (`@tiptap/extension-drag-handle`; its collaboration peer set is a hard
184
+ static-import requirement at 3.24.0 and ships in the admin bundle only),
185
+ and toolbar buttons cover callout / pull quote / citation.
186
+ - Site tooling imports the serializer quartet from
187
+ `@growth-labs/cms/content` (backfills, HTML-diff gates, importers) —
188
+ never from deep `ui/editor` paths.
189
+
190
+ ### How to add a new block type
191
+
192
+ Every block exists in four places; a change is complete only when all four
193
+ round-trip in the golden tests:
194
+
195
+ 1. **Editor node** — a pure Tiptap `Node.create`/`Mark.create` spec in
196
+ `src/ui/editor/blocks.ts` (no Editor/EditorView usage), registered in
197
+ `src/ui/editor/extensions.ts`, plus minimal styling in
198
+ `src/ui/styles/broadsheet.css`.
199
+ 2. **Portable Text** — a `_type` mapping in BOTH directions in
200
+ `src/ui/editor/portable-text.ts` (`serializeBlockNode` and `parseObject`;
201
+ annotations additionally touch the mark handling in `buildTextBlock` /
202
+ `parseSpan`). Follow the @portabletext/markdown canonical shape when one
203
+ exists so ecosystem tooling understands the type. Document the shape in
204
+ `src/schema/portable-text.ts`.
205
+ 3. **Markdown dialect** — a serialization in `serializeBlock` and a parse in
206
+ `parseBlocks`/`parseInline` in `src/ui/editor/serialize.ts`. The derived
207
+ markdown is what every legacy `body_markdown` consumer sees; prefer
208
+ ecosystem syntax (GFM) over invented directives when possible.
209
+ 4. **Site renderer** — a component for the `_type` in each consuming site
210
+ (fronts: `src/lib/article-portable-text.ts`). Until the site ships it, the
211
+ renderer's unknown-type guard falls the article back to the markdown path
212
+ — safe, but the block renders in its markdown form.
213
+
214
+ Add golden tests in `__tests__/ui/portable-text.test.ts` covering: doc → PT →
215
+ doc identity, markdown → doc → markdown byte-stability, and (for annotations)
216
+ markDef structure. A block whose markdown form is lossy (like table cell
217
+ spans) is fine — Portable Text is the durable store — but the loss must be
218
+ deliberate and documented in the dialect header of `serialize.ts`.
173
219
 
174
220
  ## Use the routes
175
221
 
@@ -0,0 +1,4 @@
1
+ export { PORTABLE_TEXT_VERSION, type PortableTextEnvelope, type PortableTextObject, parsePortableTextEnvelope, wrapPortableText, } from '../schema/portable-text.js';
2
+ export { docToPortableText, portableTextToDoc } from '../ui/editor/portable-text.js';
3
+ export { docToMarkdown, markdownToDoc } from '../ui/editor/serialize.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,yBAAyB,EACzB,gBAAgB,GAChB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACpF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,10 @@
1
+ // src/content/index.ts
2
+ // Site-side content tooling surface (`@growth-labs/cms/content`): the pure
3
+ // serializer quartet plus the envelope contract, for backfills, gates, and
4
+ // import tooling that must convert between markdown, Tiptap JSON, and
5
+ // Portable Text OUTSIDE the editor. No Editor/EditorView/DOM anywhere on
6
+ // this import path.
7
+ export { PORTABLE_TEXT_VERSION, parsePortableTextEnvelope, wrapPortableText, } from '../schema/portable-text.js';
8
+ export { docToPortableText, portableTextToDoc } from '../ui/editor/portable-text.js';
9
+ export { docToMarkdown, markdownToDoc } from '../ui/editor/serialize.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,2EAA2E;AAC3E,2EAA2E;AAC3E,sEAAsE;AACtE,yEAAyE;AACzE,oBAAoB;AAEpB,OAAO,EACN,qBAAqB,EAGrB,yBAAyB,EACzB,gBAAgB,GAChB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACpF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA"}
@@ -2774,21 +2774,6 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
2774
2774
  beat: "defense" | "intelligence" | "diplomacy" | "analysis" | null;
2775
2775
  }>, "many">;
2776
2776
  }, "strip", z.ZodTypeAny, {
2777
- meta: {
2778
- status: "failed" | "running" | "completed" | "partial";
2779
- counts: {
2780
- demand_count: number;
2781
- opportunity_count: number;
2782
- };
2783
- site_id: string;
2784
- run_date: string;
2785
- event_id: string;
2786
- run_id: string;
2787
- run_attempt: number;
2788
- generated_at: number;
2789
- content_hash: string;
2790
- error?: string | null | undefined;
2791
- };
2792
2777
  rows: {
2793
2778
  site_id: string;
2794
2779
  run_date: string;
@@ -2913,7 +2898,6 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
2913
2898
  intent_key: string;
2914
2899
  beat: "defense" | "intelligence" | "diplomacy" | "analysis" | null;
2915
2900
  }[];
2916
- }, {
2917
2901
  meta: {
2918
2902
  status: "failed" | "running" | "completed" | "partial";
2919
2903
  counts: {
@@ -2929,6 +2913,7 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
2929
2913
  content_hash: string;
2930
2914
  error?: string | null | undefined;
2931
2915
  };
2916
+ }, {
2932
2917
  rows: {
2933
2918
  site_id: string;
2934
2919
  run_date: string;
@@ -3053,7 +3038,6 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
3053
3038
  intent_key: string;
3054
3039
  beat: "defense" | "intelligence" | "diplomacy" | "analysis" | null;
3055
3040
  }[];
3056
- }>, {
3057
3041
  meta: {
3058
3042
  status: "failed" | "running" | "completed" | "partial";
3059
3043
  counts: {
@@ -3069,6 +3053,7 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
3069
3053
  content_hash: string;
3070
3054
  error?: string | null | undefined;
3071
3055
  };
3056
+ }>, {
3072
3057
  rows: {
3073
3058
  site_id: string;
3074
3059
  run_date: string;
@@ -3193,7 +3178,6 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
3193
3178
  intent_key: string;
3194
3179
  beat: "defense" | "intelligence" | "diplomacy" | "analysis" | null;
3195
3180
  }[];
3196
- }, {
3197
3181
  meta: {
3198
3182
  status: "failed" | "running" | "completed" | "partial";
3199
3183
  counts: {
@@ -3209,6 +3193,7 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
3209
3193
  content_hash: string;
3210
3194
  error?: string | null | undefined;
3211
3195
  };
3196
+ }, {
3212
3197
  rows: {
3213
3198
  site_id: string;
3214
3199
  run_date: string;
@@ -3333,6 +3318,21 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
3333
3318
  intent_key: string;
3334
3319
  beat: "defense" | "intelligence" | "diplomacy" | "analysis" | null;
3335
3320
  }[];
3321
+ meta: {
3322
+ status: "failed" | "running" | "completed" | "partial";
3323
+ counts: {
3324
+ demand_count: number;
3325
+ opportunity_count: number;
3326
+ };
3327
+ site_id: string;
3328
+ run_date: string;
3329
+ event_id: string;
3330
+ run_id: string;
3331
+ run_attempt: number;
3332
+ generated_at: number;
3333
+ content_hash: string;
3334
+ error?: string | null | undefined;
3335
+ };
3336
3336
  }>;
3337
3337
  export type InsightsIngestPayload = z.infer<typeof InsightsIngestPayloadSchema>;
3338
3338
  export type InsightsIngestMeta = z.infer<typeof InsightsIngestMetaSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"portable-text.d.ts","sourceRoot":"","sources":["../../src/schema/portable-text.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,qBAAqB,IAAI,CAAA;AAEtC,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,OAAO,qBAAqB,CAAA;IACrC,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAC7B;AA+CD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGrC,CAAA;AAEF,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,oBAAoB,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB,GAAG,IAAI,CAWnF"}
1
+ {"version":3,"file":"portable-text.d.ts","sourceRoot":"","sources":["../../src/schema/portable-text.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,qBAAqB,IAAI,CAAA;AAEtC,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,OAAO,qBAAqB,CAAA;IACrC,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAC7B;AA+CD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGrC,CAAA;AAEF,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,oBAAoB,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB,GAAG,IAAI,CAWnF"}
@@ -19,6 +19,14 @@
19
19
  // Text arrays so in-cell links are ordinary annotations.
20
20
  // Cell extension fields: header, colspan, rowspan, colwidth,
21
21
  // align.
22
+ // callout { tone: note|tip|important|warning|caution, content:
23
+ // block[] } (@portabletext/markdown callout shape; markdown
24
+ // form is a GFM alert)
25
+ // pullQuote { attribution: string|null, content: block[] }
26
+ // generatedFaq { markdown } — the machine-owned <!-- generated-faq -->
27
+ // region as an opaque atom
28
+ // citation annotation markDef { _type: 'citation', href } (markdown
29
+ // form [[label]](href))
22
30
  import { z } from 'zod';
23
31
  export const PORTABLE_TEXT_VERSION = 1;
24
32
  const typedObjectSchema = z
@@ -1 +1 @@
1
- {"version":3,"file":"portable-text.js","sourceRoot":"","sources":["../../src/schema/portable-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portable-text.js","sourceRoot":"","sources":["../../src/schema/portable-text.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Rte.d.ts","sourceRoot":"","sources":["../../../src/ui/editor/Rte.tsx"],"names":[],"mappings":"AAsGA,MAAM,WAAW,QAAQ;IACxB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B;;;;OAIG;IACH,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD,wFAAwF;IACxF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxD,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB;AAMD,wBAAgB,GAAG,CAAC,EACnB,KAAK,EACL,YAAmB,EACnB,QAAQ,EACR,aAAa,EACb,WAAW,EAAE,YAAY,EACzB,QAAgB,GAChB,EAAE,QAAQ,+BA+IV"}
1
+ {"version":3,"file":"Rte.d.ts","sourceRoot":"","sources":["../../../src/ui/editor/Rte.tsx"],"names":[],"mappings":"AA4GA,MAAM,WAAW,QAAQ;IACxB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B;;;;OAIG;IACH,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD,wFAAwF;IACxF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxD,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB;AAMD,wBAAgB,GAAG,CAAC,EACnB,KAAK,EACL,YAAmB,EACnB,QAAQ,EACR,aAAa,EACb,WAAW,EAAE,YAAY,EACzB,QAAgB,GAChB,EAAE,QAAQ,+BA+IV"}
@@ -50,7 +50,10 @@ const RTE_TOOLS = [
50
50
  { cmd: 'bullet', label: 'Bullet list', icon: 'rows' },
51
51
  { cmd: 'ordered', label: 'Ordered list', icon: 'rows' },
52
52
  { cmd: 'link', label: 'Link', icon: 'link' },
53
+ { cmd: 'citation', label: 'Citation', icon: 'globe' },
53
54
  { cmd: 'image', label: 'Image', icon: 'image' },
55
+ { cmd: 'callout', label: 'Callout', icon: 'flag' },
56
+ { cmd: 'pullquote', label: 'Pull quote', icon: 'star' },
54
57
  { cmd: 'table', label: 'Insert table', icon: 'grid' },
55
58
  ];
56
59
  /** Shown only while the selection sits inside a table. */
@@ -222,6 +225,19 @@ function ToolButton({ tool, editor, onImageUploadClick, disabled = false, }) {
222
225
  }
223
226
  break;
224
227
  }
228
+ case 'callout':
229
+ chain.toggleWrap('callout', { tone: 'note' }).run();
230
+ break;
231
+ case 'pullquote':
232
+ chain.toggleWrap('pullQuote').run();
233
+ break;
234
+ case 'citation': {
235
+ const href = window.prompt('Citation URL');
236
+ if (href) {
237
+ chain.toggleMark('citation', { href }).run();
238
+ }
239
+ break;
240
+ }
225
241
  case 'table':
226
242
  chain.insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run();
227
243
  break;
@@ -267,6 +283,12 @@ function ToolButton({ tool, editor, onImageUploadClick, disabled = false, }) {
267
283
  return editor.isActive('bulletList');
268
284
  case 'ordered':
269
285
  return editor.isActive('orderedList');
286
+ case 'callout':
287
+ return editor.isActive('callout');
288
+ case 'pullquote':
289
+ return editor.isActive('pullQuote');
290
+ case 'citation':
291
+ return editor.isActive('citation');
270
292
  case 'table':
271
293
  return editor.isActive('table');
272
294
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"Rte.js","sourceRoot":"","sources":["../../../src/ui/editor/Rte.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Rte.js","sourceRoot":"","sources":["../../../src/ui/editor/Rte.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Mark, Node } from '@tiptap/core';
2
+ export declare const CALLOUT_TONES: readonly ["note", "tip", "important", "warning", "caution"];
3
+ export type CalloutTone = (typeof CALLOUT_TONES)[number];
4
+ /** Editorial callout: an aside with a tone, rendered as a GFM alert in markdown. */
5
+ export declare const Callout: Node<any, any>;
6
+ /** Pull quote with an optional attribution line. */
7
+ export declare const PullQuote: Node<any, any>;
8
+ /**
9
+ * Generated-FAQ block: an opaque, machine-owned region. The editor shows a
10
+ * read-only marker; the inner markdown (without the comment markers) rides in
11
+ * the attrs and re-serializes byte-identically so the FAQ/JSON-LD consumers
12
+ * of body_markdown never notice the editor round trip.
13
+ */
14
+ export declare const GeneratedFaq: Node<any, any>;
15
+ /** Citation annotation: a source reference rendered as [[label]](href) in markdown. */
16
+ export declare const Citation: Mark<any, any>;
17
+ //# sourceMappingURL=blocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/ui/editor/blocks.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAmB,IAAI,EAAE,MAAM,cAAc,CAAA;AAE1D,eAAO,MAAM,aAAa,6DAA8D,CAAA;AACxF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD,oFAAoF;AACpF,eAAO,MAAM,OAAO,gBA+BlB,CAAA;AAEF,oDAAoD;AACpD,eAAO,MAAM,SAAS,gBA2BpB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,gBA8BvB,CAAA;AAEF,uFAAuF;AACvF,eAAO,MAAM,QAAQ,gBAsBnB,CAAA"}
@@ -0,0 +1,113 @@
1
+ // src/ui/editor/blocks.ts
2
+ // Pure Tiptap specs for the Phase 1 typed blocks. Like tweet-embed.ts these
3
+ // NEVER instantiate Editor/EditorView; the HTML encodings exist for Tiptap's
4
+ // clipboard pipeline. Durable forms live in the serializers:
5
+ // callout ↔ PT { tone, content } ↔ GFM alert (> [!NOTE] …)
6
+ // pullQuote ↔ PT { attribution, content } ↔ :::pullquote directive
7
+ // generatedFaq ↔ PT { markdown } ↔ <!-- generated-faq --> comment block
8
+ // citation ↔ PT markDef { _type: 'citation', href } ↔ [[label]](href)
9
+ import { Mark, mergeAttributes, Node } from '@tiptap/core';
10
+ export const CALLOUT_TONES = ['note', 'tip', 'important', 'warning', 'caution'];
11
+ /** Editorial callout: an aside with a tone, rendered as a GFM alert in markdown. */
12
+ export const Callout = Node.create({
13
+ name: 'callout',
14
+ group: 'block',
15
+ content: 'paragraph+',
16
+ defining: true,
17
+ addAttributes() {
18
+ return {
19
+ tone: {
20
+ default: 'note',
21
+ parseHTML: (element) => {
22
+ const tone = element.getAttribute('data-tone');
23
+ return tone && CALLOUT_TONES.includes(tone) ? tone : 'note';
24
+ },
25
+ renderHTML: (attributes) => ({
26
+ 'data-tone': attributes.tone,
27
+ }),
28
+ },
29
+ };
30
+ },
31
+ parseHTML() {
32
+ return [{ tag: 'div[data-callout]' }];
33
+ },
34
+ renderHTML({ HTMLAttributes }) {
35
+ return ['div', mergeAttributes(HTMLAttributes, { 'data-callout': '' }), 0];
36
+ },
37
+ });
38
+ /** Pull quote with an optional attribution line. */
39
+ export const PullQuote = Node.create({
40
+ name: 'pullQuote',
41
+ group: 'block',
42
+ content: 'paragraph+',
43
+ defining: true,
44
+ addAttributes() {
45
+ return {
46
+ attribution: {
47
+ default: null,
48
+ parseHTML: (element) => element.getAttribute('data-attribution'),
49
+ renderHTML: (attributes) => attributes.attribution ? { 'data-attribution': attributes.attribution } : {},
50
+ },
51
+ };
52
+ },
53
+ parseHTML() {
54
+ return [{ tag: 'figure[data-pull-quote]' }];
55
+ },
56
+ renderHTML({ HTMLAttributes }) {
57
+ return ['figure', mergeAttributes(HTMLAttributes, { 'data-pull-quote': '' }), 0];
58
+ },
59
+ });
60
+ /**
61
+ * Generated-FAQ block: an opaque, machine-owned region. The editor shows a
62
+ * read-only marker; the inner markdown (without the comment markers) rides in
63
+ * the attrs and re-serializes byte-identically so the FAQ/JSON-LD consumers
64
+ * of body_markdown never notice the editor round trip.
65
+ */
66
+ export const GeneratedFaq = Node.create({
67
+ name: 'generatedFaq',
68
+ group: 'block',
69
+ atom: true,
70
+ addAttributes() {
71
+ return {
72
+ markdown: {
73
+ default: '',
74
+ parseHTML: (element) => element.getAttribute('data-markdown') ?? '',
75
+ renderHTML: (attributes) => ({
76
+ 'data-markdown': attributes.markdown,
77
+ }),
78
+ },
79
+ };
80
+ },
81
+ parseHTML() {
82
+ return [{ tag: 'div[data-generated-faq]' }];
83
+ },
84
+ renderHTML({ HTMLAttributes }) {
85
+ return [
86
+ 'div',
87
+ mergeAttributes(HTMLAttributes, { 'data-generated-faq': '' }),
88
+ 'Generated FAQ block (machine-managed)',
89
+ ];
90
+ },
91
+ });
92
+ /** Citation annotation: a source reference rendered as [[label]](href) in markdown. */
93
+ export const Citation = Mark.create({
94
+ name: 'citation',
95
+ addAttributes() {
96
+ return {
97
+ href: {
98
+ default: '',
99
+ parseHTML: (element) => element.getAttribute('href') ?? '',
100
+ renderHTML: (attributes) => ({
101
+ href: attributes.href,
102
+ }),
103
+ },
104
+ };
105
+ },
106
+ parseHTML() {
107
+ return [{ tag: 'a[data-citation]' }];
108
+ },
109
+ renderHTML({ HTMLAttributes }) {
110
+ return ['a', mergeAttributes(HTMLAttributes, { 'data-citation': '' }), 0];
111
+ },
112
+ });
113
+ //# sourceMappingURL=blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/ui/editor/blocks.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,5 @@
6
6
  * and interleaved underscores through link syntax (the recurring "hyperlinks
7
7
  * formatted incorrectly" incidents). With no underline extension, TipTap
8
8
  * silently drops underline styling on paste — Word documents come in clean. */
9
- export declare function createRteExtensions(): (import("@tiptap/core").Extension<any, any> | import("@tiptap/core").Node<any, any> | import("@tiptap/core").Extension<import("@tiptap/starter-kit").StarterKitOptions, any> | import("@tiptap/core").Mark<import("@tiptap/extension-link").LinkOptions, any> | import("@tiptap/core").Node<import("@tiptap/extension-image").ImageOptions, any> | import("@tiptap/core").Extension<import("@tiptap/extension-table").TableKitOptions, any>)[];
9
+ export declare function createRteExtensions(): (import("@tiptap/core").Extension<any, any> | import("@tiptap/core").Node<any, any> | import("@tiptap/core").Mark<any, any> | import("@tiptap/core").Extension<import("@tiptap/starter-kit").StarterKitOptions, any> | import("@tiptap/core").Mark<import("@tiptap/extension-link").LinkOptions, any> | import("@tiptap/core").Node<import("@tiptap/extension-image").ImageOptions, any> | import("@tiptap/core").Extension<import("@tiptap/extension-table").TableKitOptions, any> | import("@tiptap/core").Extension<import("@tiptap/extension-drag-handle").DragHandleOptions, any>)[];
10
10
  //# sourceMappingURL=extensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../src/ui/editor/extensions.ts"],"names":[],"mappings":"AAOA;;;;;;;+EAO+E;AAC/E,wBAAgB,mBAAmB,mbAWlC"}
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../src/ui/editor/extensions.ts"],"names":[],"mappings":"AAiBA;;;;;;;+EAO+E;AAC/E,wBAAgB,mBAAmB,8jBAqBlC"}
@@ -1,9 +1,18 @@
1
+ import { DragHandle } from '@tiptap/extension-drag-handle';
1
2
  import Image from '@tiptap/extension-image';
2
3
  import Link from '@tiptap/extension-link';
3
4
  import { TableKit } from '@tiptap/extension-table';
4
5
  import StarterKit from '@tiptap/starter-kit';
6
+ import { Callout, Citation, GeneratedFaq, PullQuote } from './blocks.js';
7
+ import { SlashMenu } from './slash-menu.js';
5
8
  import { TrimBoundaryMarks } from './trim-boundary-marks.js';
6
9
  import { TweetEmbed } from './tweet-embed.js';
10
+ function renderDragHandle() {
11
+ const handle = document.createElement('div');
12
+ handle.className = 'drag-handle';
13
+ handle.textContent = '⋮⋮';
14
+ return handle;
15
+ }
7
16
  /** The single extension set used by Masthead and its behavioral editor tests.
8
17
  *
9
18
  * Underline is deliberately ABSENT. It has no markdown form — the serializer
@@ -22,6 +31,16 @@ export function createRteExtensions() {
22
31
  // One consolidated package registers table/tableRow/tableHeader/tableCell.
23
32
  // Gapcursor (via StarterKit) lets the caret sit before/after a table.
24
33
  TableKit.configure({ table: { resizable: true } }),
34
+ Callout,
35
+ PullQuote,
36
+ GeneratedFaq,
37
+ Citation,
38
+ SlashMenu,
39
+ // DragHandle constructs its handle element (render()) during plugin
40
+ // setup, not lazily — browser-only, unlike every other extension here.
41
+ ...(typeof document !== 'undefined'
42
+ ? [DragHandle.configure({ render: renderDragHandle })]
43
+ : []),
25
44
  ];
26
45
  }
27
46
  //# sourceMappingURL=extensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../src/ui/editor/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAC3C,OAAO,IAAI,MAAM,wBAAwB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,UAAU,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;;;;;+EAO+E;AAC/E,MAAM,UAAU,mBAAmB;IAClC,OAAO;QACN,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACtC,iBAAiB;QACjB,KAAK;QACL,UAAU;QACV,2EAA2E;QAC3E,sEAAsE;QACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;KAClD,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../src/ui/editor/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,MAAM,yBAAyB,CAAA;AAC3C,OAAO,IAAI,MAAM,wBAAwB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,UAAU,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,SAAS,gBAAgB;IACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,CAAC,SAAS,GAAG,aAAa,CAAA;IAChC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,OAAO,MAAM,CAAA;AACd,CAAC;AAED;;;;;;;+EAO+E;AAC/E,MAAM,UAAU,mBAAmB;IAClC,OAAO;QACN,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACtC,iBAAiB;QACjB,KAAK;QACL,UAAU;QACV,2EAA2E;QAC3E,sEAAsE;QACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;QAClD,OAAO;QACP,SAAS;QACT,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,oEAAoE;QACpE,uEAAuE;QACvE,GAAG,CAAC,OAAO,QAAQ,KAAK,WAAW;YAClC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,EAAE,CAAC;KACN,CAAA;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"portable-text.d.ts","sourceRoot":"","sources":["../../../src/ui/editor/portable-text.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AA+BvE,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAIxE;AAsQD,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,WAAW,CAE3E"}
1
+ {"version":3,"file":"portable-text.d.ts","sourceRoot":"","sources":["../../../src/ui/editor/portable-text.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AA+BvE,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAIxE;AA8SD,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,WAAW,CAE3E"}
@@ -99,6 +99,29 @@ function serializeBlockNode(node, out, nextKey, list) {
99
99
  case 'table':
100
100
  out.push(serializeTable(node, nextKey));
101
101
  return;
102
+ case 'callout':
103
+ out.push({
104
+ _type: 'callout',
105
+ _key: nextKey(),
106
+ tone: node.attrs?.tone ?? 'note',
107
+ content: serializeBlocks(node.content ?? [], nextKey),
108
+ });
109
+ return;
110
+ case 'pullQuote':
111
+ out.push({
112
+ _type: 'pullQuote',
113
+ _key: nextKey(),
114
+ attribution: node.attrs?.attribution ?? null,
115
+ content: serializeBlocks(node.content ?? [], nextKey),
116
+ });
117
+ return;
118
+ case 'generatedFaq':
119
+ out.push({
120
+ _type: 'generatedFaq',
121
+ _key: nextKey(),
122
+ markdown: node.attrs?.markdown ?? '',
123
+ });
124
+ return;
102
125
  default: {
103
126
  // Unknown block: keep its text content rather than dropping it.
104
127
  const inline = node.content ?? [];
@@ -169,6 +192,10 @@ function buildTextBlock(style, inline, nextKey, list) {
169
192
  }
170
193
  if (mark.type === 'link') {
171
194
  marks.push(linkMarkDefKey(mark, markDefs, nextKey));
195
+ continue;
196
+ }
197
+ if (mark.type === 'citation') {
198
+ marks.push(citationMarkDefKey(mark, markDefs, nextKey));
172
199
  }
173
200
  // Marks without a Portable Text form (legacy underline) are dropped,
174
201
  // matching the markdown serializer.
@@ -212,6 +239,15 @@ function linkMarkDefKey(mark, markDefs, nextKey) {
212
239
  markDefs.push(def);
213
240
  return def._key;
214
241
  }
242
+ function citationMarkDefKey(mark, markDefs, nextKey) {
243
+ const href = mark.attrs?.href ?? '';
244
+ const existing = markDefs.find((def) => def._type === 'citation' && def.href === href);
245
+ if (existing)
246
+ return existing._key;
247
+ const def = { _key: nextKey(), _type: 'citation', href };
248
+ markDefs.push(def);
249
+ return def._key;
250
+ }
215
251
  function serializeTable(node, nextKey) {
216
252
  const rows = (node.content ?? []).filter((row) => row.type === 'tableRow');
217
253
  let headerRows = 0;
@@ -338,6 +374,23 @@ function parseObject(block) {
338
374
  return { type: 'horizontalRule' };
339
375
  case 'table':
340
376
  return parseTable(block);
377
+ case 'callout':
378
+ return {
379
+ type: 'callout',
380
+ attrs: { tone: block.tone ?? 'note' },
381
+ content: parseBlocks(block.content ?? []),
382
+ };
383
+ case 'pullQuote':
384
+ return {
385
+ type: 'pullQuote',
386
+ attrs: { attribution: block.attribution ?? null },
387
+ content: parseBlocks(block.content ?? []),
388
+ };
389
+ case 'generatedFaq':
390
+ return {
391
+ type: 'generatedFaq',
392
+ attrs: { markdown: block.markdown ?? '' },
393
+ };
341
394
  default:
342
395
  throw new Error(`portableTextToDoc: unknown Portable Text _type "${block._type}" — the stored content is newer than this serializer`);
343
396
  }
@@ -412,7 +465,10 @@ function parseSpan(span, markDefs) {
412
465
  },
413
466
  });
414
467
  }
415
- // Unknown annotation types have no Tiptap node yet; drop the mark but
468
+ else if (def._type === 'citation') {
469
+ marks.push({ type: 'citation', attrs: { href: def.href ?? '' } });
470
+ }
471
+ // Other annotation types have no Tiptap node yet; drop the mark but
416
472
  // keep the text.
417
473
  continue;
418
474
  }