@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 +69 -7
- package/dist/index.js +69 -7
- package/dist/lib/model.d.ts +1 -1
- package/dist/lib/model.d.ts.map +1 -1
- package/package.json +1 -1
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
|
|
110
|
-
|
|
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
|
-
|
|
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
|
|
78
|
-
|
|
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
|
-
|
|
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
|
];
|
package/dist/lib/model.d.ts
CHANGED
|
@@ -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
|
/**
|
package/dist/lib/model.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|