retold-content-system 1.0.13 → 1.0.14
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/html/codemirror-bundle.js +73 -41
- package/package.json +12 -11
- package/source/Pict-Application-ContentEditor.js +34 -0
- package/source/cli/ContentSystem-Server-Setup.js +70 -0
- package/web-application/codemirror-bundle.js +73 -41
- package/web-application/js/pict.min.js +1 -1
- package/web-application/js/pict.min.js.map +1 -1
- package/web-application/retold-content-system.compatible.js +541 -326
- package/web-application/retold-content-system.compatible.js.map +1 -1
- package/web-application/retold-content-system.compatible.min.js +42 -5
- package/web-application/retold-content-system.compatible.min.js.map +1 -1
- package/web-application/retold-content-system.js +403 -189
- package/web-application/retold-content-system.js.map +1 -1
- package/web-application/retold-content-system.min.js +42 -5
- package/web-application/retold-content-system.min.js.map +1 -1
|
@@ -4214,11 +4214,11 @@ var CodeMirrorModules = (() => {
|
|
|
4214
4214
|
}
|
|
4215
4215
|
let moveX = 0, moveY = 0;
|
|
4216
4216
|
if (y == "nearest") {
|
|
4217
|
-
if (rect.top < bounding.top) {
|
|
4217
|
+
if (rect.top < bounding.top + yMargin) {
|
|
4218
4218
|
moveY = rect.top - (bounding.top + yMargin);
|
|
4219
4219
|
if (side > 0 && rect.bottom > bounding.bottom + moveY)
|
|
4220
4220
|
moveY = rect.bottom - bounding.bottom + yMargin;
|
|
4221
|
-
} else if (rect.bottom > bounding.bottom) {
|
|
4221
|
+
} else if (rect.bottom > bounding.bottom - yMargin) {
|
|
4222
4222
|
moveY = rect.bottom - bounding.bottom + yMargin;
|
|
4223
4223
|
if (side < 0 && rect.top - moveY < bounding.top)
|
|
4224
4224
|
moveY = rect.top - (bounding.top + yMargin);
|
|
@@ -4229,11 +4229,11 @@ var CodeMirrorModules = (() => {
|
|
|
4229
4229
|
moveY = targetTop - bounding.top;
|
|
4230
4230
|
}
|
|
4231
4231
|
if (x == "nearest") {
|
|
4232
|
-
if (rect.left < bounding.left) {
|
|
4232
|
+
if (rect.left < bounding.left + xMargin) {
|
|
4233
4233
|
moveX = rect.left - (bounding.left + xMargin);
|
|
4234
4234
|
if (side > 0 && rect.right > bounding.right + moveX)
|
|
4235
4235
|
moveX = rect.right - bounding.right + xMargin;
|
|
4236
|
-
} else if (rect.right > bounding.right) {
|
|
4236
|
+
} else if (rect.right > bounding.right - xMargin) {
|
|
4237
4237
|
moveX = rect.right - bounding.right + xMargin;
|
|
4238
4238
|
if (side < 0 && rect.left < bounding.left + moveX)
|
|
4239
4239
|
moveX = rect.left - (bounding.left + xMargin);
|
|
@@ -4841,7 +4841,7 @@ var CodeMirrorModules = (() => {
|
|
|
4841
4841
|
});
|
|
4842
4842
|
var scrollHandler = /* @__PURE__ */ Facet.define();
|
|
4843
4843
|
var ScrollTarget = class _ScrollTarget {
|
|
4844
|
-
constructor(range, y
|
|
4844
|
+
constructor(range, y, x, yMargin, xMargin, isSnapshot = false) {
|
|
4845
4845
|
this.range = range;
|
|
4846
4846
|
this.y = y;
|
|
4847
4847
|
this.x = x;
|
|
@@ -7339,6 +7339,16 @@ var CodeMirrorModules = (() => {
|
|
|
7339
7339
|
this.y = (side.top + side.bottom) / 2;
|
|
7340
7340
|
return this.scan(positions, getRects);
|
|
7341
7341
|
}
|
|
7342
|
+
if (closestDx) {
|
|
7343
|
+
if (above && above.bottom > closestRect.top) {
|
|
7344
|
+
this.y = above.bottom - 1;
|
|
7345
|
+
return this.scan(positions, getRects);
|
|
7346
|
+
}
|
|
7347
|
+
if (below && below.top < closestRect.bottom) {
|
|
7348
|
+
this.y = below.top + 1;
|
|
7349
|
+
return this.scan(positions, getRects);
|
|
7350
|
+
}
|
|
7351
|
+
}
|
|
7342
7352
|
let ltr = (bidi ? this.dirAt(positions[closestI], 1) : this.baseDir) == Direction.LTR;
|
|
7343
7353
|
return {
|
|
7344
7354
|
i: closestI,
|
|
@@ -11012,7 +11022,8 @@ var CodeMirrorModules = (() => {
|
|
|
11012
11022
|
scrollTarget = scrollTarget.map(tr.changes);
|
|
11013
11023
|
if (tr.scrollIntoView) {
|
|
11014
11024
|
let { main } = tr.state.selection;
|
|
11015
|
-
|
|
11025
|
+
let { x, y } = this.state.facet(_EditorView.cursorScrollMargin);
|
|
11026
|
+
scrollTarget = new ScrollTarget(main.empty ? main : EditorSelection.cursor(main.head, main.head > main.anchor ? -1 : 1), "nearest", "nearest", y, x);
|
|
11016
11027
|
}
|
|
11017
11028
|
for (let e of tr.effects)
|
|
11018
11029
|
if (e.is(scrollIntoView))
|
|
@@ -11656,7 +11667,8 @@ var CodeMirrorModules = (() => {
|
|
|
11656
11667
|
cause it to scroll the given position or range into view.
|
|
11657
11668
|
*/
|
|
11658
11669
|
static scrollIntoView(pos, options = {}) {
|
|
11659
|
-
|
|
11670
|
+
var _a2, _b, _c, _d;
|
|
11671
|
+
return scrollIntoView.of(new ScrollTarget(typeof pos == "number" ? EditorSelection.cursor(pos) : pos, (_a2 = options.y) !== null && _a2 !== void 0 ? _a2 : "nearest", (_b = options.x) !== null && _b !== void 0 ? _b : "nearest", (_c = options.yMargin) !== null && _c !== void 0 ? _c : 5, (_d = options.xMargin) !== null && _d !== void 0 ? _d : 5));
|
|
11660
11672
|
}
|
|
11661
11673
|
/**
|
|
11662
11674
|
Return an effect that resets the editor to its current (at the
|
|
@@ -11784,6 +11796,18 @@ var CodeMirrorModules = (() => {
|
|
|
11784
11796
|
EditorView.outerDecorations = outerDecorations;
|
|
11785
11797
|
EditorView.atomicRanges = atomicRanges;
|
|
11786
11798
|
EditorView.bidiIsolatedRanges = bidiIsolatedRanges;
|
|
11799
|
+
EditorView.cursorScrollMargin = /* @__PURE__ */ Facet.define({
|
|
11800
|
+
combine: (inputs) => {
|
|
11801
|
+
let x = 5, y = 5;
|
|
11802
|
+
for (let i of inputs) {
|
|
11803
|
+
if (typeof i == "number")
|
|
11804
|
+
x = y = i;
|
|
11805
|
+
else
|
|
11806
|
+
({ x, y } = i);
|
|
11807
|
+
}
|
|
11808
|
+
return { x, y };
|
|
11809
|
+
}
|
|
11810
|
+
});
|
|
11787
11811
|
EditorView.scrollMargins = scrollMargins;
|
|
11788
11812
|
EditorView.darkTheme = darkTheme;
|
|
11789
11813
|
EditorView.cspNonce = /* @__PURE__ */ Facet.define({ combine: (values2) => values2.length ? values2[0] : "" });
|
|
@@ -12229,7 +12253,7 @@ var CodeMirrorModules = (() => {
|
|
|
12229
12253
|
old = next;
|
|
12230
12254
|
}
|
|
12231
12255
|
this.drawn = markers;
|
|
12232
|
-
if (browser.
|
|
12256
|
+
if (browser.webkit)
|
|
12233
12257
|
this.dom.style.display = this.dom.firstChild ? "" : "none";
|
|
12234
12258
|
}
|
|
12235
12259
|
}
|
|
@@ -16104,8 +16128,12 @@ var CodeMirrorModules = (() => {
|
|
|
16104
16128
|
let { cursor } = this, p = pos - this.offset;
|
|
16105
16129
|
while (!this.done && cursor.from < p) {
|
|
16106
16130
|
if (cursor.to >= pos && cursor.enter(p, 1, IterMode.IgnoreOverlays | IterMode.ExcludeBuffers)) ;
|
|
16107
|
-
else if (
|
|
16108
|
-
|
|
16131
|
+
else if (cursor.to <= pos) {
|
|
16132
|
+
if (!cursor.next(false))
|
|
16133
|
+
this.done = true;
|
|
16134
|
+
} else {
|
|
16135
|
+
break;
|
|
16136
|
+
}
|
|
16109
16137
|
}
|
|
16110
16138
|
}
|
|
16111
16139
|
hasNode(cursor) {
|
|
@@ -18521,6 +18549,8 @@ var CodeMirrorModules = (() => {
|
|
|
18521
18549
|
return { start: firstToken, matched: false };
|
|
18522
18550
|
}
|
|
18523
18551
|
function matchPlainBrackets(state, pos, dir, tree, tokenType, maxScanDistance, brackets) {
|
|
18552
|
+
if (dir < 0 ? !pos : pos == state.doc.length)
|
|
18553
|
+
return null;
|
|
18524
18554
|
let startCh = dir < 0 ? state.sliceDoc(pos - 1, pos) : state.sliceDoc(pos, pos + 1);
|
|
18525
18555
|
let bracket2 = brackets.indexOf(startCh);
|
|
18526
18556
|
if (bracket2 < 0 || bracket2 % 2 == 0 != dir > 0)
|
|
@@ -27388,12 +27418,12 @@ var CodeMirrorModules = (() => {
|
|
|
27388
27418
|
}
|
|
27389
27419
|
|
|
27390
27420
|
// node_modules/@lezer/css/dist/index.js
|
|
27391
|
-
var descendantOp =
|
|
27421
|
+
var descendantOp = 135;
|
|
27392
27422
|
var Unit = 1;
|
|
27393
|
-
var identifier =
|
|
27394
|
-
var callee =
|
|
27423
|
+
var identifier = 136;
|
|
27424
|
+
var callee = 137;
|
|
27395
27425
|
var VariableName = 2;
|
|
27396
|
-
var queryIdentifier =
|
|
27426
|
+
var queryIdentifier = 138;
|
|
27397
27427
|
var queryVariableName = 3;
|
|
27398
27428
|
var QueryCallee = 4;
|
|
27399
27429
|
var space2 = [
|
|
@@ -27471,10 +27501,12 @@ var CodeMirrorModules = (() => {
|
|
|
27471
27501
|
}
|
|
27472
27502
|
};
|
|
27473
27503
|
var identifiers = new ExternalTokenizer(
|
|
27474
|
-
identifierTokens(identifier, VariableName, callee)
|
|
27504
|
+
identifierTokens(identifier, VariableName, callee),
|
|
27505
|
+
{ contextual: true }
|
|
27475
27506
|
);
|
|
27476
27507
|
var queryIdentifiers = new ExternalTokenizer(
|
|
27477
|
-
identifierTokens(queryIdentifier, queryVariableName, QueryCallee)
|
|
27508
|
+
identifierTokens(queryIdentifier, queryVariableName, QueryCallee),
|
|
27509
|
+
{ contextual: true }
|
|
27478
27510
|
);
|
|
27479
27511
|
var descendant = new ExternalTokenizer((input) => {
|
|
27480
27512
|
if (space2.includes(input.peek(-1))) {
|
|
@@ -27499,8 +27531,8 @@ var CodeMirrorModules = (() => {
|
|
|
27499
27531
|
}
|
|
27500
27532
|
});
|
|
27501
27533
|
var cssHighlighting = styleTags({
|
|
27502
|
-
"AtKeyword import charset namespace keyframes media supports": tags.definitionKeyword,
|
|
27503
|
-
"from to selector": tags.keyword,
|
|
27534
|
+
"AtKeyword import charset namespace keyframes media supports font-feature-values": tags.definitionKeyword,
|
|
27535
|
+
"from to selector scope MatchFlag": tags.keyword,
|
|
27504
27536
|
NamespaceName: tags.namespace,
|
|
27505
27537
|
KeyframeName: tags.labelName,
|
|
27506
27538
|
KeyframeRangeName: tags.operatorKeyword,
|
|
@@ -27513,7 +27545,7 @@ var CodeMirrorModules = (() => {
|
|
|
27513
27545
|
NumberLiteral: tags.number,
|
|
27514
27546
|
KeywordQuery: tags.keyword,
|
|
27515
27547
|
UnaryQueryOp: tags.operatorKeyword,
|
|
27516
|
-
"CallTag ValueName": tags.atom,
|
|
27548
|
+
"CallTag ValueName FontName": tags.atom,
|
|
27517
27549
|
VariableName: tags.variableName,
|
|
27518
27550
|
Callee: tags.operatorKeyword,
|
|
27519
27551
|
Unit: tags.unit,
|
|
@@ -27527,37 +27559,37 @@ var CodeMirrorModules = (() => {
|
|
|
27527
27559
|
"ParenthesizedContent StringLiteral": tags.string,
|
|
27528
27560
|
":": tags.punctuation,
|
|
27529
27561
|
"PseudoOp #": tags.derefOperator,
|
|
27530
|
-
"; ,": tags.separator,
|
|
27562
|
+
"; , |": tags.separator,
|
|
27531
27563
|
"( )": tags.paren,
|
|
27532
27564
|
"[ ]": tags.squareBracket,
|
|
27533
27565
|
"{ }": tags.brace
|
|
27534
27566
|
});
|
|
27535
|
-
var spec_callee = { __proto__: null, lang:
|
|
27536
|
-
var spec_queryIdentifier = { __proto__: null, or:
|
|
27537
|
-
var spec_QueryCallee = { __proto__: null, selector:
|
|
27538
|
-
var spec_AtKeyword = { __proto__: null, "@import":
|
|
27539
|
-
var spec_identifier = { __proto__: null, to:
|
|
27567
|
+
var spec_callee = { __proto__: null, lang: 44, "nth-child": 44, "nth-last-child": 44, "nth-of-type": 44, "nth-last-of-type": 44, dir: 44, "host-context": 44, if: 90, url: 132, "url-prefix": 132, domain: 132, regexp: 132 };
|
|
27568
|
+
var spec_queryIdentifier = { __proto__: null, or: 104, and: 104, not: 112, only: 112, layer: 186 };
|
|
27569
|
+
var spec_QueryCallee = { __proto__: null, selector: 118, layer: 182 };
|
|
27570
|
+
var spec_AtKeyword = { __proto__: null, "@import": 178, "@media": 190, "@charset": 194, "@namespace": 198, "@keyframes": 204, "@supports": 216, "@scope": 220, "@font-feature-values": 226 };
|
|
27571
|
+
var spec_identifier = { __proto__: null, to: 223 };
|
|
27540
27572
|
var parser3 = LRParser.deserialize({
|
|
27541
27573
|
version: 14,
|
|
27542
|
-
states: "
|
|
27543
|
-
stateData: "
|
|
27544
|
-
goto: "
|
|
27545
|
-
nodeNames: "\u26A0 Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector CallQuery ArgList , CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to AtRule Styles",
|
|
27546
|
-
maxTerm:
|
|
27574
|
+
states: "IpQYQdOOO#}QdOOP$UO`OOO%OQaO'#CfOOQP'#Ce'#CeO%VQdO'#CgO%[Q`O'#CgO%aQaO'#FdO&XQdO'#CkO&xQaO'#CcO'SQdO'#CnO'_QdO'#DtO'dQdO'#DvO'oQdO'#D}O'oQdO'#EQOOQP'#Fd'#FdO)OQhO'#EsOOQS'#Fc'#FcOOQS'#Ev'#EvQYQdOOO)VQdO'#EWO*cQhO'#E^O)VQdO'#E`O*jQdO'#EbO*uQdO'#EeO)zQhO'#EkO*}QdO'#EmO+YQdO'#EpO+_QaO'#CfO+fQ`O'#ETO+kQ`O'#FnO+vQdO'#FnQOQ`OOP,QO&jO'#CaPOOO)CAR)CAROOQP'#Ci'#CiOOQP,59R,59RO%VQdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&XQdO,59VO,]QdO,59YO'_QdO,5:`O'dQdO,5:bO'oQdO,5:iO'oQdO,5:kO'oQdO,5:lO'oQdO'#E}O,hQ`O,58}O,pQdO'#ESOOQS,58},58}OOQP'#Cq'#CqOOQO'#Dr'#DrOOQP,59Y,59YO,wQ`O,59YO,|Q`O,59YOOQP'#Du'#DuOOQP,5:`,5:`O-RQpO'#DwO-^QdO'#DxO-cQ`O'#DxO-hQpO,5:bO.RQaO,5:iO.iQaO,5:lOOQW'#D^'#D^O/eQhO'#DgO/xQhO,5;_O)zQhO'#DeO0VQ`O'#DkO0[QhO'#DnOOQW'#Fj'#FjOOQS,5;_,5;_O0aQ`O'#DhOOQS-E8t-E8tOOQ['#Cv'#CvO0fQdO'#CwO0|QdO'#C}O1dQdO'#DQO1zQ!pO'#DSO4TQ!jO,5:rOOQO'#DX'#DXO,|Q`O'#DWO4eQ!nO'#FgO6hQ`O'#DYO6mQ`O'#DoOOQ['#Fg'#FgO6rQhO'#FqO7QQ`O,5:xO7VQ!bO,5:zOOQS'#Ed'#EdO7_Q`O,5:|O7dQdO,5:|OOQO'#Eg'#EgO7lQ`O,5;PO7qQhO,5;VO'oQdO'#DjOOQS,5;X,5;XO0aQ`O,5;XO7yQdO,5;XOOQS'#FU'#FUO8RQdO'#ErO7QQ`O,5;[O8ZQdO,5:oO8kQdO'#FPO8xQ`O,5<YO8xQ`O,5<YPOOO'#Eu'#EuP9TO&jO,58{POOO,58{,58{OOQP1G.m1G.mOOQP1G.q1G.qOOQP1G.t1G.tO,wQ`O1G.tO,|Q`O1G.tOOQP1G/z1G/zO9`QpO1G/|O9hQaO1G0TO:OQaO1G0VO:fQaO1G0WO:|QaO,5;iOOQO-E8{-E8{OOQS1G.i1G.iO;WQ`O,5:nO;]QdO'#DsO;dQdO'#CuOOQO'#Dz'#DzOOQO,5:d,5:dO-^QdO,5:dOOQP1G/|1G/|O)VQdO1G/|O;kQ!jO'#D^O;yQ!bO,59yO<RQhO,5:ROOQO'#Fk'#FkO;|Q!bO,59}O<ZQhO'#FVO)zQhO,59{O)zQhO'#FVO=OQhO1G0yOOQS1G0y1G0yO=YQhO,5:PO>QQhO'#DlOOQW,5:V,5:VOOQW,5:Y,5:YOOQW,5:S,5:SO>[Q!fO'#FhOOQS'#Fh'#FhOOQS'#Ex'#ExO?lQdO,59cOOQ[,59c,59cO@SQdO,59iOOQ[,59i,59iO@jQdO,59lOOQ[,59l,59lOOQ[,59n,59nO)VQdO,59pOAQQhO'#EYOOQW'#EY'#EYOAlQ`O1G0^O4^QhO1G0^OOQ[,59r,59rO)zQhO'#D[OOQ[,59t,59tOAqQ#tO,5:ZOA|QhO'#FROBZQ`O,5<]OOQS1G0d1G0dOOQS1G0f1G0fOOQS1G0h1G0hOBfQ`O1G0hOBkQdO'#EhOOQS1G0k1G0kOOQS1G0q1G0qOBvQaO,5:UO7QQ`O1G0sOOQS1G0s1G0sO0aQ`O1G0sOOQS-E9S-E9SOOQS1G0v1G0vOB}Q!fO1G0ZOCeQ`O'#EVOOQO1G0Z1G0ZOOQO,5;k,5;kOCjQdO,5;kOOQO-E8}-E8}OCwQ`O1G1tPOOO-E8s-E8sPOOO1G.g1G.gOOQP7+$`7+$`OOQP7+%h7+%hO)VQdO7+%hOOQS1G0Y1G0YODSQaO'#FmOD^Q`O,5:_ODcQ!fO'#EwOEaQdO'#FfOEkQ`O,59aOOQO1G0O1G0OOEpQ!bO7+%hO)VQdO1G/eOE{QhO1G/iOOQW1G/m1G/mOOQW1G/g1G/gOF^QhO,5;qOOQW-E9T-E9TOOQS7+&e7+&eOGRQhO'#D^OGaQhO'#FlOGlQ`O'#FlOGqQ`O,5:WOOQS-E8v-E8vOOQ[1G.}1G.}OOQ[1G/T1G/TOOQ[1G/W1G/WOOQ[1G/[1G/[OGvQdO,5:tOOQS7+%x7+%xOG{Q`O7+%xOHQQhO'#D]OHYQ`O,59vO)zQhO,59vOOQ[1G/u1G/uOHbQ`O1G/uOHgQhO,5;mOOQO-E9P-E9POOQS7+&S7+&SOHuQbO'#DSOOQO'#Ej'#EjOITQ`O'#EiOOQO'#Ei'#EiOI`Q`O'#FSOIhQdO,5;SOOQS,5;S,5;SOOQ[1G/p1G/pOOQS7+&_7+&_O7QQ`O7+&_OIsQ!fO'#FOO)VQdO'#FOOJzQdO7+%uOOQO7+%u7+%uOOQO,5:q,5:qOOQO1G1V1G1VOK_Q!bO<<ISOKjQdO'#E|OKtQ`O,5<XOOQP1G/y1G/yOOQS-E8u-E8uOK|QdO'#E{OLWQ`O,5<QOOQ]1G.{1G.{OOQP<<IS<<ISOL`Q`O<<ISOLeQdO7+%POOQO'#D`'#D`OLlQ!bO7+%TOLtQhO'#EzOMRQ`O,5<WO)VQdO,5<WOOQW1G/r1G/rOOQO'#E['#E[OMZQ`O1G0`OOQS<<Id<<IdO)VQdO,59wOMzQhO1G/bOOQ[1G/b1G/bONRQ`O1G/bOOQW-E8w-E8wOOQ[7+%a7+%aOOQO,5;T,5;TOBnQdO'#FTOI`Q`O,5;nOOQS,5;n,5;nOOQS-E9Q-E9QOOQS1G0n1G0nOOQS<<Iy<<IyONZQ!fO,5;jOOQS-E8|-E8|OOQO<<Ia<<IaOOQPAN>nAN>nO! bQ`OAN>nO! gQaO,5;hOOQO-E8z-E8zO! qQdO,5;gOOQO-E8y-E8yOOQW<<Hk<<HkOOQW<<Ho<<HoO! {QhO<<HoO!!^QhO,5;fO!!iQ`O,5;fOOQO-E8x-E8xO!!nQdO1G1rOGvQdO'#FQO!!xQ`O7+%zOOQW7+%z7+%zO!#QQ!bO1G/cOOQ[7+$|7+$|O!#]QhO7+$|P!#dQ`O'#EyOOQO,5;o,5;oOOQO-E9R-E9ROOQS1G1Y1G1YOOQPG24YG24YO!#iQ`OAN>ZO)VQdO1G1QO!#nQ`O7+'^OOQO,5;l,5;lOOQO-E9O-E9OOOQW<<If<<IfOOQ[<<Hh<<HhPOQW,5;e,5;eOOQWG23uG23uO!#vQdO7+&l",
|
|
27575
|
+
stateData: "!$Z~O$QOS$RQQ~OWVO^_O`WOcYOdYOl`OmZOp[O!r]O!u^O!{dO#ReO#TfO#VgO#YhO#`iO#bjO#ekO#|RO$XTO~OQmOWVO^_O`WOcYOdYOl`OmZOp[O!r]O!u^O!{dO#ReO#TfO#VgO#YhO#`iO#bjO#ekO#|lO$XTO~O#z$bP~P!jO$RqO~O`YXcYXdYXmYXpYXsYX!aYX!rYX!uYX#{YX$X[X~OgYX~P$ZO#|sO~O$XuO~O$XuO`$WXc$WXd$WXm$WXp$WXs$WX!a$WX!r$WX!u$WX#{$WXg$WX~O#|vO~O`xOcyOdyOmzOp{O!r|O!u!OO#{}O~Os!RO!a!PO~P&^Of!XO#|!TO#}!UO~O#|!YO~OW!^O#|![O$X!]O~OWVO^_O`WOcYOdYOmZOp[O!r]O!u^O#|RO$XTO~OS!fOc!gOd!gOh!cOs!RO!Y!eO!]!jO$O!bO~On!iO~P(dOQ!tOh!mOp!nOs!oOu!wOw!wO}!uO!d!vO#|!lO#}!rO$]!pO~OS!fOc!gOd!gOh!cO!Y!eO!]!jO$O!bO~Os$eP~P)zOw!|O!d!vO#|!{O~Ow#OO#|#OO~Oh#ROs!RO#c#TO~O#|#VO~Oc!xX~P$ZOc#YO~On#ZO#z$bXr$bX~O#z$bXr$bX~P!jO$S#^O$T#^O$U#`O~Of#eO#|!TO#}!UO~Os!RO!a!PO~Or$bP~P!jOh#oO~Oh#pO~Oo!kX!o!kX$X!mX~O#|#qO~O$X#sO~Oo#tO!o#uO~O`xOcyOdyOmzOp{O~Os!qa!a!qa!r!qa!u!qa#{!qag!qa~P-pOs!ta!a!ta!r!ta!u!ta#{!tag!ta~P-pOS!fOc!gOd!gOh!cO!Y!eO!]!jO~OR#yOu#yOw#yO$O#vO$]!pO~P/POn$PO!U#|O!a#}O~P(dOh$RO~O$O$TO~Oh#RO~O`$WOc$WOg$ZOl$WOm$WOn$WO~P)VO`$WOc$WOl$WOm$WOn$WOo$]O~P)VO`$WOc$WOl$WOm$WOn$WOr$_O~P)VOP$`OSvXcvXdvXhvXnvXyvX!YvX!]vX!}vX#PvX$OvX!WvXQvX`vXgvXlvXmvXpvXsvXuvXwvX}vX!dvX#|vX#}vX$]vXovXrvX!avX#zvX$dvX!pvX~Oy$aO!}$bO#P$cOn$eP~P)zOh#pOS$ZXc$ZXd$ZXn$ZXy$ZX!Y$ZX!]$ZX!}$ZX#P$ZX$O$ZXQ$ZX`$ZXg$ZXl$ZXm$ZXp$ZXs$ZXu$ZXw$ZX}$ZX!d$ZX#|$ZX#}$ZX$]$ZXo$ZXr$ZX!a$ZX#z$ZX$d$ZX!p$ZX~Oh$gO~Oh$iO~O!U#|O!a$jOs$eXn$eX~Os!RO~On$mOy$aO~On$nO~Ow$oO!d!vO~Os$pO~Os!RO!U#|O~Os!RO#c$vO~O#|#VOs#fX~O$d$zOn!wa#z!war!wa~P)VOn#sX#z#sXr#sX~P!jOn#ZO#z$bar$ba~O$S#^O$T#^O$U%RO~Oo%TO!o%UO~Os!qi!a!qi!r!qi!u!qi#{!qig!qi~P-pOs!si!a!si!r!si!u!si#{!sig!si~P-pOs!ti!a!ti!r!ti!u!ti#{!tig!ti~P-pOs#qa!a#qa~P&^Or%VO~Og$aP~P'oOg$YP~P)VOc!SXg!QX!U!QX!W!SX~Oc%_O!W%`O~Og%aO!U#|O~O!U#|OS#yXc#yXd#yXh#yXn#yXs#yX!Y#yX!]#yX!a#yX$O#yX~On%eO!a#}O~P(dO!U#|OS!Xac!Xad!Xah!Xan!Xas!Xa!Y!Xa!]!Xa!a!Xa$O!Xag!Xa~O$O%fOg$`P~P/POy$aOQ$[X`$[Xc$[Xg$[Xh$[Xl$[Xm$[Xn$[Xp$[Xs$[Xu$[Xw$[X}$[X!d$[X#|$[X#}$[X$]$[Xo$[Xr$[X~O`$WOc$WOg%kOl$WOm$WOn$WO~P)VO`$WOc$WOl$WOm$WOn$WOo%lO~P)VO`$WOc$WOl$WOm$WOn$WOr%mO~P)VOh%oOS!|Xc!|Xd!|Xn!|X!Y!|X!]!|X$O!|X~On%pO~Og%uOw%vO!e%vO~Os#uX!a#uXn#uX~P)zO!a$jOs$ean$ea~On%yO~Or&QO#|%{O$]%zO~Og&RO~P&^Oy$aO!a&VO$d$zOn!wi#z!wir!wi~P)VO$c&YO~On#sa#z#sar#sa~P!jOn#ZO#z$bir$bi~O!a&]Og$aX~P&^Og&_O~Oy$aOQ#kXg#kXh#kXp#kXs#kXu#kXw#kX}#kX!a#kX!d#kX#|#kX#}#kX$]#kX~O!a&aOg$YX~P)VOg&cO~Oo&dOy$aO!p&eO~OR#yOu#yOw#yO$O&gO$]!pO~O!U#|OS#yac#yad#yah#yan#yas#ya!Y#ya!]#ya!a#ya$O#ya~Oc!SXg!QX!U!QX!a!QX~O!U#|O!a&iOg$`X~Oc&kO~Og&lO~O#|&mO~On&oO~Oc&pO!U#|O~Og&rOn&qO~Og&uO~O!U#|Os#ua!a#uan#ua~OP$`OsvX!avXgvX~O$]%zOs#]X!a#]X~Os!RO!a&wO~Or&{O#|%{O$]%zO~Oy$aOQ#rXh#rXn#rXp#rXs#rXu#rXw#rX}#rX!a#rX!d#rX#z#rX#|#rX#}#rX$]#rX$d#rXr#rX~O!a&VO$d$zOn!wq#z!wqr!wq~P)VOo'QOy$aO!p'RO~Og#pX!a#pX~P'oO!a&]Og$aa~Og#oX!a#oX~P)VO!a&aOg$Ya~Oo'QO~Og'WO~P)VOg'XO!W'YO~O$O%fOg#nX!a#nX~P/PO!a&iOg$`a~O`'_Og'aO~OS#mac#mad#mah#ma!Y#ma!]#ma$O#ma~Og'cO~PMcOg'cOn'dO~Oy$aOQ#rah#ran#rap#ras#rau#raw#ra}#ra!a#ra!d#ra#z#ra#|#ra#}#ra$]#ra$d#rar#ra~Oo'iO~Og#pa!a#pa~P&^Og#oa!a#oa~P)VOR#yOu#yOw#yO$O&gO$]%zO~O!U#|Og#na!a#na~Oc'kO~O!a&iOg$`i~P)VO`'_Og'oO~Oy$aOg!Pin!Pi~Og'pO~PMcOn'qO~Og'rO~O!a&iOg$`q~Og#nq!a#nq~P)VO$Q!e$R$]`$]y!u~",
|
|
27576
|
+
goto: "4h$fPPPPP$gP$jP$s%V$s%i%{P$sP&R$sPP&XPPP&_&i&iPPPPP&iPP&iP'VP&iP&i(Q&iP(n(q(w(w)Z(wP(wP(wP(w(wP)j(w)vP(w)yPP*m*s$s*y$s+P+P+V+ZPP$sP$s$sP+a,],j,q$jP,zP,}P$jP$jP$jP-T$jP-W-Z-^-e$jP$jPP$jP-j$jP-m-s.S.j.x/O/Y/`/f/l/r/|0S0Y0`0f0lPPPPPPPPPPP0r0{P1q1t2vP3O3x4R4U4XPP4_RrQ_aOPco!R#Z$}q_OP]^co|}!O!P!R#R#Z#o$}&]qSOP]^co|}!O!P!R#R#Z#o$}&]qUOP]^co|}!O!P!R#R#Z#o$}&]QtTR#auQwWR#bxQ!VYR#cyQ#c!XS$f!s!tR%S#e!V!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k's!U!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sU#y!c%`'YU%}$p&P&wR&v%|!V!sdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sR$h!uQ%s$gR&s%tq!h`ei!c!d!e!q#|#}$O$R$e$g$j%t&iQ#w!cQ%h$RQ&h%`Q'[&iR'j'YQ#UjQ$U!jQ$t#TR&T$vR$S!f!U!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sQ!|gR$o!}Q!WYR#dyQ#c!WR%S#dQ!ZZR#fzQ!_[R#g{T!^[{Q#r!]R%]#sQ!SXQ!i`Q#SjQ#m!QQ$P!dQ$l!yQ$r#QQ$u#UQ$x#XQ%e$OQ&S$tQ&y&OQ&|&TR'h&xSnP!RQ#]oQ$|#ZR&Z$}ZmPo!R#Z$}Q${#YQ&X$yR'P&WR$e!qQ&n%oR'm'_R!}gR#PhR$q#PS&O$p&PR'f&wV%|$p&P&wR#XkQ#_qR%Q#_QcOSoP!RU!kco$}R$}#ZQ%Z#pY&`%Z&f'U'^'sQ&f%_Q'U&aQ'^&kR's'kQ$Y!mQ$[!nQ$^!oV%j$Y$[$^Q%t$gR&t%tQ&j%gS']&j'lR'l'^Q&b%ZR'V&bQ&^%WR'T&^Q!QXR#l!QQ&W$yR'O&WQ#[nS%O#[%PR%P#]Q'`&nR'n'`Q$k!xR%x$kQ&P$pR&z&PQ&x&OR'g&xQ#WkR$w#WQ$O!dR%d$O_bOPco!R#Z$}^XOPco!R#Z$}Q!`]Q!a^Q#h|Q#i}Q#j!OQ#k!PQ$s#RQ%W#oR'S&]R%[#pQ!qdQ!zf[$V!m!n!o$Y$[$^Q$y#Yd%Y#p%Z%_&a&f&k'U'^'k'sQ%^#uQ%n$aS&U$y&WQ&[%UQ&}&VR'b&p]$X!m!n!o$Y$[$^Q!d`U!xe!q$eQ#QiQ#x!cS#{!d$OQ$Q!eQ%b#|Q%c#}Q%g$RS%r$g%tQ%w$jR'Z&iQ#z!cQ&h%`R'j'YR%i$RR%X#oQpPR#n!RQ!yeQ$d!qR%q$e",
|
|
27577
|
+
nodeNames: "\u26A0 Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NamespacedTagSelector NamespaceName TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector CallQuery ArgList , PseudoQuery CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName NamespacedAttribute NamespaceName AttributeName MatchOp MatchFlag ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to FontFeatureStatement font-feature-values FontName AtRule Styles",
|
|
27578
|
+
maxTerm: 159,
|
|
27547
27579
|
nodeProps: [
|
|
27548
|
-
["isolate", -2, 5,
|
|
27549
|
-
["openedBy",
|
|
27550
|
-
["closedBy",
|
|
27580
|
+
["isolate", -2, 5, 39, ""],
|
|
27581
|
+
["openedBy", 23, "(", 31, "[", 34, "{"],
|
|
27582
|
+
["closedBy", 24, ")", 32, "]", 35, "}"]
|
|
27551
27583
|
],
|
|
27552
27584
|
propSources: [cssHighlighting],
|
|
27553
|
-
skippedNodes: [0, 5,
|
|
27554
|
-
repeatNodeCount:
|
|
27555
|
-
tokenData: "
|
|
27556
|
-
tokenizers: [descendant, unitToken, identifiers, queryIdentifiers, 1, 2, 3, 4, new LocalTokenGroup("m~RRYZ[z{a~~g~aO
|
|
27557
|
-
topRules: { "StyleSheet": [0, 6], "Styles": [1,
|
|
27558
|
-
dynamicPrecedences: { "
|
|
27559
|
-
specialized: [{ term:
|
|
27560
|
-
tokenPrec:
|
|
27585
|
+
skippedNodes: [0, 5, 117],
|
|
27586
|
+
repeatNodeCount: 17,
|
|
27587
|
+
tokenData: "K`~R!bOX%ZX^&R^p%Zpq&Rqr)ers)vst+jtu2Xuv%Zvw3Rwx3dxy5Ryz5dz{5i{|6S|}:u}!O;W!O!P;u!P!Q<^!Q![=V![!]>Q!]!^>|!^!_?_!_!`@Z!`!a@n!a!b%Z!b!cAo!c!k%Z!k!lC|!l!u%Z!u!vC|!v!}%Z!}#OD_#O#P%Z#P#QDp#Q#R2X#R#]%Z#]#^ER#^#g%Z#g#hC|#h#o%Z#o#pIf#p#qIw#q#rJ`#r#sJq#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`KY<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!e`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$Q~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$Q~!e`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$dYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOw~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+oYmYOy%jz!Q%j!Q![,_![!c%j!c!i,_!i#T%j#T#Z,_#Z;'S%j;'S;=`%{<%lO%jj,dY!e`Oy%jz!Q%j!Q![-S![!c%j!c!i-S!i#T%j#T#Z-S#Z;'S%j;'S;=`%{<%lO%jj-XY!e`Oy%jz!Q%j!Q![-w![!c%j!c!i-w!i#T%j#T#Z-w#Z;'S%j;'S;=`%{<%lO%jj.OYuY!e`Oy%jz!Q%j!Q![.n![!c%j!c!i.n!i#T%j#T#Z.n#Z;'S%j;'S;=`%{<%lO%jj.uYuY!e`Oy%jz!Q%j!Q![/e![!c%j!c!i/e!i#T%j#T#Z/e#Z;'S%j;'S;=`%{<%lO%jj/jY!e`Oy%jz!Q%j!Q![0Y![!c%j!c!i0Y!i#T%j#T#Z0Y#Z;'S%j;'S;=`%{<%lO%jj0aYuY!e`Oy%jz!Q%j!Q![1P![!c%j!c!i1P!i#T%j#T#Z1P#Z;'S%j;'S;=`%{<%lO%jj1UY!e`Oy%jz!Q%j!Q![1t![!c%j!c!i1t!i#T%j#T#Z1t#Z;'S%j;'S;=`%{<%lO%jj1{SuY!e`Oy%jz;'S%j;'S;=`%{<%lO%jd2[UOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jd2uS!oS!e`Oy%jz;'S%j;'S;=`%{<%lO%jb3WS^QOy%jz;'S%j;'S;=`%{<%lO%j~3gWOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{<%lO3d~4SRO;'S3d;'S;=`4];=`O3d~4`XOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{;=`<%l3d<%lO3d~5OP;=`<%l3dj5WShYOy%jz;'S%j;'S;=`%{<%lO%j~5iOg~n5pUWQyWOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jj6ZWyW!uQOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj6xU!e`Oy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%jj7cY!e`$]YOy%jz!Q%j!Q![7[![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj8WY!e`Oy%jz{%j{|8v|}%j}!O8v!O!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj8{U!e`Oy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj9fU!e`$]YOy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj:P[!e`$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj:zS!aYOy%jz;'S%j;'S;=`%{<%lO%jj;]WyWOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj;zU`YOy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%j~<cTyWOy%jz{<r{;'S%j;'S;=`%{<%lO%j~<yS!e`$R~Oy%jz;'S%j;'S;=`%{<%lO%jj=[[$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj>VUcYOy%jz![%j![!]>i!];'S%j;'S;=`%{<%lO%jj>pSdY!e`Oy%jz;'S%j;'S;=`%{<%lO%jj?RSnYOy%jz;'S%j;'S;=`%{<%lO%jh?dU!WWOy%jz!_%j!_!`?v!`;'S%j;'S;=`%{<%lO%jh?}S!WW!e`Oy%jz;'S%j;'S;=`%{<%lO%jl@bS!WW!oSOy%jz;'S%j;'S;=`%{<%lO%jj@uV!rQ!WWOy%jz!_%j!_!`?v!`!aA[!a;'S%j;'S;=`%{<%lO%jbAcS!rQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjArYOy%jz}%j}!OBb!O!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjBgW!e`Oy%jz!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjCW[lY!e`Oy%jz}%j}!OCP!O!Q%j!Q![CP![!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jhDRS!pWOy%jz;'S%j;'S;=`%{<%lO%jjDdSpYOy%jz;'S%j;'S;=`%{<%lO%jnDuSo^Oy%jz;'S%j;'S;=`%{<%lO%jjEWU!pWOy%jz#a%j#a#bEj#b;'S%j;'S;=`%{<%lO%jbEoU!e`Oy%jz#d%j#d#eFR#e;'S%j;'S;=`%{<%lO%jbFWU!e`Oy%jz#c%j#c#dFj#d;'S%j;'S;=`%{<%lO%jbFoU!e`Oy%jz#f%j#f#gGR#g;'S%j;'S;=`%{<%lO%jbGWU!e`Oy%jz#h%j#h#iGj#i;'S%j;'S;=`%{<%lO%jbGoU!e`Oy%jz#T%j#T#UHR#U;'S%j;'S;=`%{<%lO%jbHWU!e`Oy%jz#b%j#b#cHj#c;'S%j;'S;=`%{<%lO%jbHoU!e`Oy%jz#h%j#h#iIR#i;'S%j;'S;=`%{<%lO%jbIYS$cQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjIkSsYOy%jz;'S%j;'S;=`%{<%lO%jfI|U$XUOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jjJeSrYOy%jz;'S%j;'S;=`%{<%lO%jfJvU!uQOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%j`K]P;=`<%l%Z",
|
|
27588
|
+
tokenizers: [descendant, unitToken, identifiers, queryIdentifiers, 1, 2, 3, 4, new LocalTokenGroup("m~RRYZ[z{a~~g~aO$T~~dP!P!Qg~lO$U~~", 28, 142)],
|
|
27589
|
+
topRules: { "StyleSheet": [0, 6], "Styles": [1, 116] },
|
|
27590
|
+
dynamicPrecedences: { "84": 1 },
|
|
27591
|
+
specialized: [{ term: 137, get: (value) => spec_callee[value] || -1 }, { term: 138, get: (value) => spec_queryIdentifier[value] || -1 }, { term: 4, get: (value) => spec_QueryCallee[value] || -1 }, { term: 28, get: (value) => spec_AtKeyword[value] || -1 }, { term: 136, get: (value) => spec_identifier[value] || -1 }],
|
|
27592
|
+
tokenPrec: 2256
|
|
27561
27593
|
});
|
|
27562
27594
|
|
|
27563
27595
|
// node_modules/@codemirror/lang-css/dist/index.js
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "retold-content-system",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"description": "Retold Content System - Markdown content viewer and editor",
|
|
5
5
|
"main": "source/Pict-ContentSystem-Bundle.js",
|
|
6
6
|
"bin": {
|
|
@@ -28,31 +28,32 @@
|
|
|
28
28
|
"author": "steven velozo <steven@velozo.com>",
|
|
29
29
|
"license": "MIT",
|
|
30
30
|
"optionalDependencies": {
|
|
31
|
-
"ultravisor-beacon": "^0.0.
|
|
31
|
+
"ultravisor-beacon": "^0.0.11"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"fable": "^3.1.
|
|
34
|
+
"fable": "^3.1.68",
|
|
35
35
|
"orator": "^6.0.4",
|
|
36
|
-
"orator-serviceserver-restify": "^2.0.
|
|
37
|
-
"pict": "^1.0.
|
|
36
|
+
"orator-serviceserver-restify": "^2.0.10",
|
|
37
|
+
"pict": "^1.0.363",
|
|
38
38
|
"pict-application": "^1.0.33",
|
|
39
|
-
"pict-docuserve": "^0.1.1",
|
|
40
39
|
"pict-provider": "^1.0.12",
|
|
41
40
|
"pict-section-code": "^1.0.4",
|
|
42
|
-
"pict-
|
|
41
|
+
"pict-provider-vocabulary": "file:../../pict/pict-provider-vocabulary",
|
|
42
|
+
"pict-section-content": "^0.1.4",
|
|
43
43
|
"pict-section-filebrowser": "^0.0.2",
|
|
44
|
-
"pict-section-markdowneditor": "^1.0.
|
|
44
|
+
"pict-section-markdowneditor": "^1.0.9",
|
|
45
45
|
"pict-service-commandlineutility": "^1.0.19",
|
|
46
|
-
"pict-view": "^1.0.
|
|
46
|
+
"pict-view": "^1.0.68"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@codemirror/lang-markdown": "^6.5.0",
|
|
50
50
|
"@codemirror/state": "^6.6.0",
|
|
51
|
-
"@codemirror/view": "^6.
|
|
51
|
+
"@codemirror/view": "^6.41.0",
|
|
52
52
|
"codejar": "^4.3.0",
|
|
53
53
|
"codemirror": "^6.0.2",
|
|
54
|
-
"esbuild": "^0.
|
|
54
|
+
"esbuild": "^0.28.0",
|
|
55
55
|
"highlight.js": "^11.11.1",
|
|
56
|
+
"pict-docuserve": "^0.1.5",
|
|
56
57
|
"quackage": "^1.1.0"
|
|
57
58
|
},
|
|
58
59
|
"copyFilesSettings": {
|
|
@@ -3,6 +3,9 @@ const libPictApplication = require('pict-application');
|
|
|
3
3
|
// File browser
|
|
4
4
|
const libPictSectionFileBrowser = require('pict-section-filebrowser');
|
|
5
5
|
|
|
6
|
+
// Vocabulary auto-linking + popover system (shared with retold-labs)
|
|
7
|
+
const libPictProviderVocabulary = require('pict-provider-vocabulary');
|
|
8
|
+
|
|
6
9
|
// Provider
|
|
7
10
|
const libContentEditorProvider = require('./providers/Pict-Provider-ContentEditor.js');
|
|
8
11
|
|
|
@@ -31,6 +34,26 @@ class ContentEditorApplication extends libPictApplication
|
|
|
31
34
|
// Register the content editor provider
|
|
32
35
|
this.pict.addProvider('ContentEditor-Provider', libContentEditorProvider.default_configuration, libContentEditorProvider);
|
|
33
36
|
|
|
37
|
+
// Register the vocabulary provider. The content system can
|
|
38
|
+
// load terms from a vocabulary/ folder in the content tree
|
|
39
|
+
// via the same API shape retold-labs uses, or from any URL.
|
|
40
|
+
// Terms auto-link in rendered markdown previews via
|
|
41
|
+
// pict-section-content's parseMarkdown vocabulary resolver.
|
|
42
|
+
this.pict.addProvider('Vocabulary',
|
|
43
|
+
libPictProviderVocabulary.default_configuration,
|
|
44
|
+
libPictProviderVocabulary);
|
|
45
|
+
|
|
46
|
+
// Register the vocabulary management view from the provider.
|
|
47
|
+
// Mount it at the vocabulary panel container (added to the
|
|
48
|
+
// layout by the host app — see the layout view below).
|
|
49
|
+
this.pict.addView('ContentEditor-Vocabulary',
|
|
50
|
+
Object.assign({}, libPictProviderVocabulary.VocabularyManagerView.default_configuration,
|
|
51
|
+
{
|
|
52
|
+
DefaultDestinationAddress: '#ContentEditor-Vocabulary-Container',
|
|
53
|
+
VocabularyRoute: '#/vocabulary'
|
|
54
|
+
}),
|
|
55
|
+
libPictProviderVocabulary.VocabularyManagerView);
|
|
56
|
+
|
|
34
57
|
// Register views
|
|
35
58
|
this.pict.addView('ContentEditor-Layout', libViewLayout.default_configuration, libViewLayout);
|
|
36
59
|
this.pict.addView('ContentEditor-TopBar', libViewTopBar.default_configuration, libViewTopBar);
|
|
@@ -191,6 +214,17 @@ class ContentEditorApplication extends libPictApplication
|
|
|
191
214
|
}
|
|
192
215
|
}
|
|
193
216
|
|
|
217
|
+
// Load vocabulary index for auto-linking. If the content tree
|
|
218
|
+
// has a vocabulary/ folder, terms auto-link in markdown
|
|
219
|
+
// previews with hover popovers. No-op if the folder doesn't
|
|
220
|
+
// exist or the endpoint isn't available — the provider
|
|
221
|
+
// handles both gracefully.
|
|
222
|
+
let tmpVocabProvider = this.pict.providers && this.pict.providers.Vocabulary;
|
|
223
|
+
if (tmpVocabProvider)
|
|
224
|
+
{
|
|
225
|
+
tmpVocabProvider.loadFromURL('/api/vocabulary/index');
|
|
226
|
+
}
|
|
227
|
+
|
|
194
228
|
return super.onAfterInitializeAsync(fCallback);
|
|
195
229
|
}
|
|
196
230
|
|
|
@@ -396,6 +396,76 @@ function setupContentSystemServer(pOptions, fCallback)
|
|
|
396
396
|
return fNext();
|
|
397
397
|
});
|
|
398
398
|
|
|
399
|
+
// --- GET /api/vocabulary/index ---
|
|
400
|
+
// Build a vocabulary index from markdown files in a vocabulary/
|
|
401
|
+
// subfolder of the content tree. Each .md file becomes a term:
|
|
402
|
+
// the filename (minus .md) is the slug, the H1 is the title,
|
|
403
|
+
// and the first paragraph is the short definition for popovers.
|
|
404
|
+
// This endpoint powers pict-provider-vocabulary's auto-linking.
|
|
405
|
+
tmpServiceServer.get('/api/vocabulary/index',
|
|
406
|
+
(pRequest, pResponse, fNext) =>
|
|
407
|
+
{
|
|
408
|
+
try
|
|
409
|
+
{
|
|
410
|
+
let tmpVocabDir = libPath.join(tmpContentPath, 'vocabulary');
|
|
411
|
+
let tmpIndex = {};
|
|
412
|
+
|
|
413
|
+
if (libFs.existsSync(tmpVocabDir))
|
|
414
|
+
{
|
|
415
|
+
let tmpFiles = libFs.readdirSync(tmpVocabDir);
|
|
416
|
+
for (let i = 0; i < tmpFiles.length; i++)
|
|
417
|
+
{
|
|
418
|
+
let tmpFile = tmpFiles[i];
|
|
419
|
+
if (!tmpFile.endsWith('.md')) continue;
|
|
420
|
+
|
|
421
|
+
let tmpSlug = tmpFile.replace(/\.md$/i, '');
|
|
422
|
+
let tmpBody = '';
|
|
423
|
+
try
|
|
424
|
+
{
|
|
425
|
+
tmpBody = libFs.readFileSync(libPath.join(tmpVocabDir, tmpFile), 'utf8');
|
|
426
|
+
}
|
|
427
|
+
catch (e) { continue; }
|
|
428
|
+
|
|
429
|
+
let tmpTitle = tmpSlug;
|
|
430
|
+
let tmpTitleMatch = tmpBody.match(/^#\s+(.+)/m);
|
|
431
|
+
if (tmpTitleMatch) tmpTitle = tmpTitleMatch[1].trim();
|
|
432
|
+
|
|
433
|
+
let tmpShort = '';
|
|
434
|
+
let tmpLines = tmpBody.split('\n');
|
|
435
|
+
let tmpPastTitle = false;
|
|
436
|
+
let tmpParaLines = [];
|
|
437
|
+
for (let j = 0; j < tmpLines.length; j++)
|
|
438
|
+
{
|
|
439
|
+
let tmpLine = tmpLines[j];
|
|
440
|
+
if (!tmpPastTitle)
|
|
441
|
+
{
|
|
442
|
+
if (tmpLine.match(/^#\s+/)) tmpPastTitle = true;
|
|
443
|
+
continue;
|
|
444
|
+
}
|
|
445
|
+
if (tmpLine.trim() === '')
|
|
446
|
+
{
|
|
447
|
+
if (tmpParaLines.length > 0) break;
|
|
448
|
+
continue;
|
|
449
|
+
}
|
|
450
|
+
if (tmpLine.match(/^#/)) break;
|
|
451
|
+
tmpParaLines.push(tmpLine.trim());
|
|
452
|
+
}
|
|
453
|
+
tmpShort = tmpParaLines.join(' ');
|
|
454
|
+
if (tmpShort.length > 200) tmpShort = tmpShort.substring(0, 197) + '...';
|
|
455
|
+
|
|
456
|
+
tmpIndex[tmpSlug] = { title: tmpTitle, short: tmpShort };
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
pResponse.send({ Index: tmpIndex });
|
|
461
|
+
}
|
|
462
|
+
catch (pError)
|
|
463
|
+
{
|
|
464
|
+
pResponse.send(500, { Error: pError.message });
|
|
465
|
+
}
|
|
466
|
+
return fNext();
|
|
467
|
+
});
|
|
468
|
+
|
|
399
469
|
// Serve content files (markdown, images, etc.) at /content/
|
|
400
470
|
tmpOrator.addStaticRoute(`${tmpContentPath}/`, 'index.html', '/content/*', '/content/');
|
|
401
471
|
|