@shadow-garden/bapbong-model 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -102,12 +102,15 @@ function pastedImageAttrs(el) {
102
102
  src,
103
103
  alt: e.getAttribute("alt") ?? "",
104
104
  width: dim(e.getAttribute("width")),
105
- height: dim(e.getAttribute("height"))
105
+ height: dim(e.getAttribute("height")),
106
+ crop: dataJson(el, "data-crop"),
107
+ outline: dataJson(el, "data-outline")
106
108
  };
107
109
  }
108
110
  function pastedLinkAttrs(el) {
109
- const href = (el.getAttribute("href") ?? "").trim();
110
- return /^(https?:|mailto:|#)/i.test(href) ? { href } : false;
111
+ const e = el;
112
+ const href = (e.getAttribute("href") ?? "").trim();
113
+ return /^(https?:|mailto:|#)/i.test(href) ? { href, targetFrame: e.getAttribute("data-target-frame") } : false;
111
114
  }
112
115
  function pastedCellAttrs(el) {
113
116
  const e = el;
@@ -124,6 +127,7 @@ function pastedCellAttrs(el) {
124
127
  background: bg ? bg[1].trim() : null,
125
128
  vAlign: e.getAttribute("data-valign"),
126
129
  borders: dataJson(el, "data-borders"),
130
+ diagonals: dataJson(el, "data-diagonals"),
127
131
  padding: dataJson(el, "data-padding"),
128
132
  carry: dataJson(el, "data-carry")
129
133
  };
@@ -145,7 +149,14 @@ var schema = new import_prosemirror_model.Schema({
145
149
  page: { default: null },
146
150
  // CommentNode[] (contracts) — comment threads keyed to `comment` marks.
147
151
  // Edited via setDocAttribute so add/reply/resolve/delete undo cleanly.
148
- comments: { default: null }
152
+ comments: { default: null },
153
+ // Per-section header/footer story OVERRIDES, keyed by section index →
154
+ // story ('headers'|'footers') → variant ('default'|'first'|'even') →
155
+ // the full story doc as JSON. The first chrome EDIT the model supports
156
+ // (the section marker's page-number toggle): an override replaces the
157
+ // section's inherited story (Word's "unlink from previous"), rides the
158
+ // doc so it undoes cleanly, and exports as a real header/footer part.
159
+ sectionChromeOverrides: { default: null }
149
160
  }
150
161
  },
151
162
  paragraph: {
@@ -188,6 +199,11 @@ var schema = new import_prosemirror_model.Schema({
188
199
  field: { default: null },
189
200
  // w:pageBreakBefore — start this paragraph on a new page.
190
201
  pageBreakBefore: { default: false },
202
+ // w:contextualSpacing — "ignore spacing above and below when using
203
+ // identical styles". Present ⇒ the flag is on; the two booleans say
204
+ // which side actually borders a paragraph of the SAME style, which is
205
+ // resolved at import (only there is both sides of a boundary visible).
206
+ contextualSpacing: { default: null },
191
207
  // w:keepNext — stay on the same page as the next block's first line.
192
208
  keepNext: { default: false },
193
209
  // w:keepLines — never split this paragraph across pages.
@@ -198,6 +214,10 @@ var schema = new import_prosemirror_model.Schema({
198
214
  // w:pBdr — { top?, bottom?, left?, right? } of BorderSide, or null.
199
215
  // Importer-set; painted as a box around the paragraph's lines.
200
216
  borders: { default: null },
217
+ // w:shd at the paragraph layer, resolved to a fill "#RRGGBB" (or
218
+ // null). Painted behind the paragraph's lines, in the same box the
219
+ // borders use.
220
+ shading: { default: null },
201
221
  // Carry-through fidelity (docx round-trip): OOXML paragraph
202
222
  // properties the model does NOT represent, preserved verbatim so a
203
223
  // customer's save never drops them. { pPr?: string, markRPr?: string }
@@ -223,6 +243,8 @@ var schema = new import_prosemirror_model.Schema({
223
243
  if (attrs.styleId) dom["data-style"] = attrs.styleId;
224
244
  if (node.attrs["borders"])
225
245
  dom["data-borders"] = JSON.stringify(node.attrs["borders"]);
246
+ if (node.attrs["shading"])
247
+ dom["data-shading"] = String(node.attrs["shading"]);
226
248
  if (node.attrs["carry"])
227
249
  dom["data-carry"] = JSON.stringify(node.attrs["carry"]);
228
250
  return [tag, dom, 0];
@@ -264,7 +286,13 @@ var schema = new import_prosemirror_model.Schema({
264
286
  textbox: { default: null },
265
287
  // Clockwise rotation in degrees around the box center (a:xfrm@rot).
266
288
  // Paint-only: the layout box stays axis-aligned.
267
- rotation: { default: 0 }
289
+ rotation: { default: 0 },
290
+ // a:srcRect — { l, t, r, b } ratios of the BITMAP, inward from each
291
+ // edge, or null for the whole image. Negative values outset. The box
292
+ // keeps its size; the selected region scales to fill it.
293
+ crop: { default: null },
294
+ // a:ln on pic:spPr — Word's picture border, as a BorderSide, or null.
295
+ outline: { default: null }
268
296
  },
269
297
  parseDOM: [{ tag: "img[src]", getAttrs: pastedImageAttrs }],
270
298
  toDOM(node) {
@@ -275,6 +303,8 @@ var schema = new import_prosemirror_model.Schema({
275
303
  };
276
304
  if (a["width"] != null) attrs["width"] = String(a["width"]);
277
305
  if (a["height"] != null) attrs["height"] = String(a["height"]);
306
+ if (a["crop"]) attrs["data-crop"] = JSON.stringify(a["crop"]);
307
+ if (a["outline"]) attrs["data-outline"] = JSON.stringify(a["outline"]);
278
308
  return ["img", attrs];
279
309
  }
280
310
  },
@@ -388,6 +418,8 @@ var schema = new import_prosemirror_model.Schema({
388
418
  // w:vAlign — 'center' | 'bottom' (top default)
389
419
  borders: { default: null },
390
420
  // w:tcBorders per-side visibility override
421
+ // w:tcBorders/w:tl2br + w:br2tl — rules across the cell's corners
422
+ diagonals: { default: null },
391
423
  padding: { default: null },
392
424
  // w:tcMar per-side margin override (px)
393
425
  // Carry-through fidelity: unmodelled w:tcPr children ({ tcPr: string
@@ -412,6 +444,8 @@ var schema = new import_prosemirror_model.Schema({
412
444
  attrs["data-valign"] = String(node.attrs["vAlign"]);
413
445
  if (node.attrs["borders"])
414
446
  attrs["data-borders"] = JSON.stringify(node.attrs["borders"]);
447
+ if (node.attrs["diagonals"])
448
+ attrs["data-diagonals"] = JSON.stringify(node.attrs["diagonals"]);
415
449
  if (node.attrs["padding"])
416
450
  attrs["data-padding"] = JSON.stringify(node.attrs["padding"]);
417
451
  if (node.attrs["carry"])
@@ -530,6 +564,29 @@ var schema = new import_prosemirror_model.Schema({
530
564
  0
531
565
  ]
532
566
  },
567
+ // w:kern — the smallest font size (HALF-POINTS) that gets pair kerning.
568
+ // A threshold, not a switch: whether it bites depends on the run's own
569
+ // size, so the declared number is what the model keeps and the layout
570
+ // compares. No DOM representation — CSS font-kerning cannot express a
571
+ // size threshold, so an external paste simply has no opinion.
572
+ kern: {
573
+ attrs: { halfPoints: {} },
574
+ parseDOM: [
575
+ {
576
+ tag: "span[data-kern]",
577
+ getAttrs: (el) => {
578
+ const raw = el.getAttribute("data-kern");
579
+ const n = Number(raw);
580
+ return Number.isFinite(n) ? { halfPoints: n } : false;
581
+ }
582
+ }
583
+ ],
584
+ toDOM: (mark) => [
585
+ "span",
586
+ { "data-kern": String(mark.attrs["halfPoints"]) },
587
+ 0
588
+ ]
589
+ },
533
590
  // w:w — horizontal glyph scale as a PERCENT (100 = normal). Squeezes the
534
591
  // glyphs and their advances; independent of letterSpacing, which rides on
535
592
  // top at its absolute value.
@@ -610,7 +667,11 @@ var schema = new import_prosemirror_model.Schema({
610
667
  },
611
668
  // w:hyperlink — external URL or "#anchor"
612
669
  link: {
613
- attrs: { href: {} },
670
+ // w:hyperlink @w:tgtFrame the frame the link was meant to open in
671
+ // ("_blank", "_top", or a frame name), from the HTML-frames era. There
672
+ // is no frame here to obey it and nothing acts on it; it is modelled so
673
+ // that saving the file gives the attribute back instead of dropping it.
674
+ attrs: { href: {}, targetFrame: { default: null } },
614
675
  inclusive: false,
615
676
  parseDOM: [{ tag: "a[href]", getAttrs: pastedLinkAttrs }],
616
677
  toDOM(mark) {
@@ -619,7 +680,8 @@ var schema = new import_prosemirror_model.Schema({
619
680
  {
620
681
  href: mark.attrs["href"],
621
682
  rel: "noopener",
622
- target: "_blank"
683
+ target: "_blank",
684
+ ...mark.attrs["targetFrame"] ? { "data-target-frame": String(mark.attrs["targetFrame"]) } : {}
623
685
  },
624
686
  0
625
687
  ];
package/dist/index.js CHANGED
@@ -70,12 +70,15 @@ function pastedImageAttrs(el) {
70
70
  src,
71
71
  alt: e.getAttribute("alt") ?? "",
72
72
  width: dim(e.getAttribute("width")),
73
- height: dim(e.getAttribute("height"))
73
+ height: dim(e.getAttribute("height")),
74
+ crop: dataJson(el, "data-crop"),
75
+ outline: dataJson(el, "data-outline")
74
76
  };
75
77
  }
76
78
  function pastedLinkAttrs(el) {
77
- const href = (el.getAttribute("href") ?? "").trim();
78
- return /^(https?:|mailto:|#)/i.test(href) ? { href } : false;
79
+ const e = el;
80
+ const href = (e.getAttribute("href") ?? "").trim();
81
+ return /^(https?:|mailto:|#)/i.test(href) ? { href, targetFrame: e.getAttribute("data-target-frame") } : false;
79
82
  }
80
83
  function pastedCellAttrs(el) {
81
84
  const e = el;
@@ -92,6 +95,7 @@ function pastedCellAttrs(el) {
92
95
  background: bg ? bg[1].trim() : null,
93
96
  vAlign: e.getAttribute("data-valign"),
94
97
  borders: dataJson(el, "data-borders"),
98
+ diagonals: dataJson(el, "data-diagonals"),
95
99
  padding: dataJson(el, "data-padding"),
96
100
  carry: dataJson(el, "data-carry")
97
101
  };
@@ -113,7 +117,14 @@ var schema = new Schema({
113
117
  page: { default: null },
114
118
  // CommentNode[] (contracts) — comment threads keyed to `comment` marks.
115
119
  // Edited via setDocAttribute so add/reply/resolve/delete undo cleanly.
116
- comments: { default: null }
120
+ comments: { default: null },
121
+ // Per-section header/footer story OVERRIDES, keyed by section index →
122
+ // story ('headers'|'footers') → variant ('default'|'first'|'even') →
123
+ // the full story doc as JSON. The first chrome EDIT the model supports
124
+ // (the section marker's page-number toggle): an override replaces the
125
+ // section's inherited story (Word's "unlink from previous"), rides the
126
+ // doc so it undoes cleanly, and exports as a real header/footer part.
127
+ sectionChromeOverrides: { default: null }
117
128
  }
118
129
  },
119
130
  paragraph: {
@@ -156,6 +167,11 @@ var schema = new Schema({
156
167
  field: { default: null },
157
168
  // w:pageBreakBefore — start this paragraph on a new page.
158
169
  pageBreakBefore: { default: false },
170
+ // w:contextualSpacing — "ignore spacing above and below when using
171
+ // identical styles". Present ⇒ the flag is on; the two booleans say
172
+ // which side actually borders a paragraph of the SAME style, which is
173
+ // resolved at import (only there is both sides of a boundary visible).
174
+ contextualSpacing: { default: null },
159
175
  // w:keepNext — stay on the same page as the next block's first line.
160
176
  keepNext: { default: false },
161
177
  // w:keepLines — never split this paragraph across pages.
@@ -166,6 +182,10 @@ var schema = new Schema({
166
182
  // w:pBdr — { top?, bottom?, left?, right? } of BorderSide, or null.
167
183
  // Importer-set; painted as a box around the paragraph's lines.
168
184
  borders: { default: null },
185
+ // w:shd at the paragraph layer, resolved to a fill "#RRGGBB" (or
186
+ // null). Painted behind the paragraph's lines, in the same box the
187
+ // borders use.
188
+ shading: { default: null },
169
189
  // Carry-through fidelity (docx round-trip): OOXML paragraph
170
190
  // properties the model does NOT represent, preserved verbatim so a
171
191
  // customer's save never drops them. { pPr?: string, markRPr?: string }
@@ -191,6 +211,8 @@ var schema = new Schema({
191
211
  if (attrs.styleId) dom["data-style"] = attrs.styleId;
192
212
  if (node.attrs["borders"])
193
213
  dom["data-borders"] = JSON.stringify(node.attrs["borders"]);
214
+ if (node.attrs["shading"])
215
+ dom["data-shading"] = String(node.attrs["shading"]);
194
216
  if (node.attrs["carry"])
195
217
  dom["data-carry"] = JSON.stringify(node.attrs["carry"]);
196
218
  return [tag, dom, 0];
@@ -232,7 +254,13 @@ var schema = new Schema({
232
254
  textbox: { default: null },
233
255
  // Clockwise rotation in degrees around the box center (a:xfrm@rot).
234
256
  // Paint-only: the layout box stays axis-aligned.
235
- rotation: { default: 0 }
257
+ rotation: { default: 0 },
258
+ // a:srcRect — { l, t, r, b } ratios of the BITMAP, inward from each
259
+ // edge, or null for the whole image. Negative values outset. The box
260
+ // keeps its size; the selected region scales to fill it.
261
+ crop: { default: null },
262
+ // a:ln on pic:spPr — Word's picture border, as a BorderSide, or null.
263
+ outline: { default: null }
236
264
  },
237
265
  parseDOM: [{ tag: "img[src]", getAttrs: pastedImageAttrs }],
238
266
  toDOM(node) {
@@ -243,6 +271,8 @@ var schema = new Schema({
243
271
  };
244
272
  if (a["width"] != null) attrs["width"] = String(a["width"]);
245
273
  if (a["height"] != null) attrs["height"] = String(a["height"]);
274
+ if (a["crop"]) attrs["data-crop"] = JSON.stringify(a["crop"]);
275
+ if (a["outline"]) attrs["data-outline"] = JSON.stringify(a["outline"]);
246
276
  return ["img", attrs];
247
277
  }
248
278
  },
@@ -356,6 +386,8 @@ var schema = new Schema({
356
386
  // w:vAlign — 'center' | 'bottom' (top default)
357
387
  borders: { default: null },
358
388
  // w:tcBorders per-side visibility override
389
+ // w:tcBorders/w:tl2br + w:br2tl — rules across the cell's corners
390
+ diagonals: { default: null },
359
391
  padding: { default: null },
360
392
  // w:tcMar per-side margin override (px)
361
393
  // Carry-through fidelity: unmodelled w:tcPr children ({ tcPr: string
@@ -380,6 +412,8 @@ var schema = new Schema({
380
412
  attrs["data-valign"] = String(node.attrs["vAlign"]);
381
413
  if (node.attrs["borders"])
382
414
  attrs["data-borders"] = JSON.stringify(node.attrs["borders"]);
415
+ if (node.attrs["diagonals"])
416
+ attrs["data-diagonals"] = JSON.stringify(node.attrs["diagonals"]);
383
417
  if (node.attrs["padding"])
384
418
  attrs["data-padding"] = JSON.stringify(node.attrs["padding"]);
385
419
  if (node.attrs["carry"])
@@ -498,6 +532,29 @@ var schema = new Schema({
498
532
  0
499
533
  ]
500
534
  },
535
+ // w:kern — the smallest font size (HALF-POINTS) that gets pair kerning.
536
+ // A threshold, not a switch: whether it bites depends on the run's own
537
+ // size, so the declared number is what the model keeps and the layout
538
+ // compares. No DOM representation — CSS font-kerning cannot express a
539
+ // size threshold, so an external paste simply has no opinion.
540
+ kern: {
541
+ attrs: { halfPoints: {} },
542
+ parseDOM: [
543
+ {
544
+ tag: "span[data-kern]",
545
+ getAttrs: (el) => {
546
+ const raw = el.getAttribute("data-kern");
547
+ const n = Number(raw);
548
+ return Number.isFinite(n) ? { halfPoints: n } : false;
549
+ }
550
+ }
551
+ ],
552
+ toDOM: (mark) => [
553
+ "span",
554
+ { "data-kern": String(mark.attrs["halfPoints"]) },
555
+ 0
556
+ ]
557
+ },
501
558
  // w:w — horizontal glyph scale as a PERCENT (100 = normal). Squeezes the
502
559
  // glyphs and their advances; independent of letterSpacing, which rides on
503
560
  // top at its absolute value.
@@ -578,7 +635,11 @@ var schema = new Schema({
578
635
  },
579
636
  // w:hyperlink — external URL or "#anchor"
580
637
  link: {
581
- attrs: { href: {} },
638
+ // w:hyperlink @w:tgtFrame the frame the link was meant to open in
639
+ // ("_blank", "_top", or a frame name), from the HTML-frames era. There
640
+ // is no frame here to obey it and nothing acts on it; it is modelled so
641
+ // that saving the file gives the attribute back instead of dropping it.
642
+ attrs: { href: {}, targetFrame: { default: null } },
582
643
  inclusive: false,
583
644
  parseDOM: [{ tag: "a[href]", getAttrs: pastedLinkAttrs }],
584
645
  toDOM(mark) {
@@ -587,7 +648,8 @@ var schema = new Schema({
587
648
  {
588
649
  href: mark.attrs["href"],
589
650
  rel: "noopener",
590
- target: "_blank"
651
+ target: "_blank",
652
+ ...mark.attrs["targetFrame"] ? { "data-target-frame": String(mark.attrs["targetFrame"]) } : {}
591
653
  },
592
654
  0
593
655
  ];
@@ -8,7 +8,7 @@ import { Schema } from 'prosemirror-model';
8
8
  * extend THIS schema so the importer, layout engine, and (canvas) painter all
9
9
  * agree on one document model.
10
10
  */
11
- export declare const schema: Schema<"paragraph" | "doc" | "text" | "hard_break" | "image" | "page_field" | "table" | "table_row" | "table_cell", "strong" | "em" | "underline" | "strike" | "dstrike" | "smallCaps" | "textColor" | "fontSize" | "vertAlign" | "letterSpacing" | "charScale" | "position" | "highlight" | "fontFamily" | "link" | "footnote" | "carryRPr">;
11
+ export declare const schema: Schema<"paragraph" | "doc" | "text" | "hard_break" | "image" | "page_field" | "table" | "table_row" | "table_cell", "strong" | "em" | "underline" | "strike" | "dstrike" | "smallCaps" | "textColor" | "fontSize" | "vertAlign" | "letterSpacing" | "kern" | "charScale" | "position" | "highlight" | "fontFamily" | "link" | "footnote" | "carryRPr">;
12
12
  /** Concrete schema type, handy for typing Node/Mark across packages. */
13
13
  export type BapbongSchema = typeof schema;
14
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/lib/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAkF3C;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,+UAmjBjB,CAAC;AAEH,wEAAwE;AACxE,MAAM,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,aAAa,yDA0CxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC;AAEjD,qDAAqD;AACrD,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D;+EAC+E;AAC/E,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;CACvC;AA0BD;;;4EAG4E;AAC5E,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/lib/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAwF3C;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,wVA+mBjB,CAAC;AAEH,wEAAwE;AACxE,MAAM,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,aAAa,yDA0CxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC;AAEjD,qDAAqD;AACrD,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D;+EAC+E;AAC/E,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;CACvC;AA0BD;;;4EAG4E;AAC5E,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shadow-garden/bapbong-model",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "description": "bapbong — ProseMirror document model / schema",
5
5
  "license": "MIT",
6
6
  "repository": {