@maketribe/ms-app 3.1.1 → 3.1.3
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/cjs/assets/iconfonts/iconfont.js +38 -0
- package/dist/cjs/assets/iconfonts/iconfont.js.map +1 -0
- package/dist/cjs/components/basic/icon-select/icon-select.js +1 -1
- package/dist/cjs/components/basic/icon-select/icon-select.js.map +1 -1
- package/dist/cjs/components/basic/svg-icon/svg-icon.js.map +1 -1
- package/dist/cjs/components/business/verify-dialog/verify-dialog.js.map +1 -1
- package/dist/cjs/components/data-model/data-table/components/column-action/column-action-options.d.ts +3 -2
- package/dist/cjs/components/data-model/data-table/components/column-action/column-action-options.js +2 -1
- package/dist/cjs/components/data-model/data-table/components/column-action/column-action-options.js.map +1 -1
- package/dist/cjs/components/data-model/data-table/components/column-action/column-action.d.ts +7 -3
- package/dist/cjs/components/data-model/data-table/components/column-action/column-action.js +5 -1
- package/dist/cjs/components/data-model/data-table/components/column-action/column-action.js.map +1 -1
- package/dist/cjs/components/data-model/data-table/components/column-action/index.d.ts +7 -3
- package/dist/cjs/core/MSAppClient.js +2 -2
- package/dist/cjs/core/MSAppClient.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/modules/cms/dataviews/cms-articles/CmsArticlesForm.js +3 -3
- package/dist/cjs/modules/cms/dataviews/cms-articles/CmsArticlesForm.js.map +1 -1
- package/dist/cjs/modules/cms/dataviews/cms-parts/CmsPartForm.js +32 -6
- package/dist/cjs/modules/cms/dataviews/cms-parts/CmsPartForm.js.map +1 -1
- package/dist/cjs/modules/cms/dataviews/cms-parts/CmsPartTree.js.map +1 -1
- package/dist/cjs/modules/cms/index.js +5 -0
- package/dist/cjs/modules/cms/index.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-resource/components/resource-item/index.vue.d.ts +12 -0
- package/dist/cjs/modules/cms/pages/cms-resource/components/resource-item/index.vue.js +9 -0
- package/dist/cjs/modules/cms/pages/cms-resource/components/resource-item/index.vue.js.map +1 -0
- package/dist/cjs/modules/cms/pages/cms-resource/components/resource-item/index.vue2.js +91 -0
- package/dist/cjs/modules/cms/pages/cms-resource/components/resource-item/index.vue2.js.map +1 -0
- package/dist/cjs/modules/cms/pages/cms-resource/core/ResourceManager.d.ts +23 -0
- package/dist/cjs/modules/cms/pages/cms-resource/core/ResourceManager.js +133 -0
- package/dist/cjs/modules/cms/pages/cms-resource/core/ResourceManager.js.map +1 -0
- package/dist/cjs/modules/cms/pages/cms-resource/index.vue.d.ts +2 -0
- package/dist/cjs/modules/cms/pages/cms-resource/index.vue.js +9 -0
- package/dist/cjs/modules/cms/pages/cms-resource/index.vue.js.map +1 -0
- package/dist/cjs/modules/cms/pages/cms-resource/index.vue2.js +217 -0
- package/dist/cjs/modules/cms/pages/cms-resource/index.vue2.js.map +1 -0
- package/dist/cjs/modules/ms/pages/local-log/index.vue2.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/@codemirror_autocomplete@6.15.0_@codemirror_language@6.10.1_@codemirror_state@6.4.1_@codemirr_djjyqdn7bhwopzrz2h2s2bwhzm/node_modules/@codemirror/autocomplete/dist/index.js +276 -0
- package/dist/cjs/node_modules/.pnpm/@codemirror_autocomplete@6.15.0_@codemirror_language@6.10.1_@codemirror_state@6.4.1_@codemirr_djjyqdn7bhwopzrz2h2s2bwhzm/node_modules/@codemirror/autocomplete/dist/index.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/@codemirror_lang-css@6.2.1_@codemirror_view@6.26.1/node_modules/@codemirror/lang-css/dist/index.js +263 -0
- package/dist/cjs/node_modules/.pnpm/@codemirror_lang-css@6.2.1_@codemirror_view@6.26.1/node_modules/@codemirror/lang-css/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/.pnpm/@codemirror_lang-html@6.4.9/node_modules/@codemirror/lang-html/dist/index.js +667 -0
- package/dist/cjs/node_modules/.pnpm/@codemirror_lang-html@6.4.9/node_modules/@codemirror/lang-html/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/.pnpm/@codemirror_lang-javascript@6.2.2/node_modules/@codemirror/lang-javascript/dist/index.js +342 -0
- package/dist/cjs/node_modules/.pnpm/@codemirror_lang-javascript@6.2.2/node_modules/@codemirror/lang-javascript/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/.pnpm/@codemirror_language@6.10.1/node_modules/@codemirror/language/dist/index.js +21 -0
- package/dist/cjs/node_modules/.pnpm/@codemirror_language@6.10.1/node_modules/@codemirror/language/dist/index.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/@lezer_common@1.2.1/node_modules/@lezer/common/dist/index.js +510 -1
- package/dist/cjs/node_modules/.pnpm/@lezer_common@1.2.1/node_modules/@lezer/common/dist/index.js.map +1 -1
- package/dist/cjs/node_modules/.pnpm/@lezer_css@1.1.8/node_modules/@lezer/css/dist/index.js +127 -0
- package/dist/cjs/node_modules/.pnpm/@lezer_css@1.1.8/node_modules/@lezer/css/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/.pnpm/@lezer_html@1.3.10/node_modules/@lezer/html/dist/index.js +360 -0
- package/dist/cjs/node_modules/.pnpm/@lezer_html@1.3.10/node_modules/@lezer/html/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/.pnpm/@lezer_javascript@1.4.17/node_modules/@lezer/javascript/dist/index.js +189 -0
- package/dist/cjs/node_modules/.pnpm/@lezer_javascript@1.4.17/node_modules/@lezer/javascript/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/.pnpm/@lezer_lr@1.4.0/node_modules/@lezer/lr/dist/index.js +1879 -0
- package/dist/cjs/node_modules/.pnpm/@lezer_lr@1.4.0/node_modules/@lezer/lr/dist/index.js.map +1 -0
- package/dist/cjs/page/signup/index.vue2.js +1 -1
- package/dist/cjs/page/signup/index.vue2.js.map +1 -1
- package/dist/cjs/router-middleware/auth.js +1 -1
- package/dist/cjs/router-middleware/auth.js.map +1 -1
- package/dist/esm/assets/iconfonts/iconfont.js +36 -0
- package/dist/esm/assets/iconfonts/iconfont.js.map +1 -0
- package/dist/esm/components/basic/icon-select/icon-select.js +1 -1
- package/dist/esm/components/basic/icon-select/icon-select.js.map +1 -1
- package/dist/esm/components/basic/svg-icon/svg-icon.js.map +1 -1
- package/dist/esm/components/business/verify-dialog/verify-dialog.js.map +1 -1
- package/dist/esm/components/data-model/data-table/components/column-action/column-action-options.d.ts +3 -2
- package/dist/esm/components/data-model/data-table/components/column-action/column-action-options.js +3 -2
- package/dist/esm/components/data-model/data-table/components/column-action/column-action-options.js.map +1 -1
- package/dist/esm/components/data-model/data-table/components/column-action/column-action.d.ts +7 -3
- package/dist/esm/components/data-model/data-table/components/column-action/column-action.js +5 -1
- package/dist/esm/components/data-model/data-table/components/column-action/column-action.js.map +1 -1
- package/dist/esm/components/data-model/data-table/components/column-action/index.d.ts +7 -3
- package/dist/esm/core/MSAppClient.js +2 -2
- package/dist/esm/core/MSAppClient.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/modules/cms/dataviews/cms-articles/CmsArticlesForm.js +3 -3
- package/dist/esm/modules/cms/dataviews/cms-articles/CmsArticlesForm.js.map +1 -1
- package/dist/esm/modules/cms/dataviews/cms-parts/CmsPartForm.js +32 -6
- package/dist/esm/modules/cms/dataviews/cms-parts/CmsPartForm.js.map +1 -1
- package/dist/esm/modules/cms/dataviews/cms-parts/CmsPartTree.js.map +1 -1
- package/dist/esm/modules/cms/index.js +5 -0
- package/dist/esm/modules/cms/index.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-resource/components/resource-item/index.vue.d.ts +12 -0
- package/dist/esm/modules/cms/pages/cms-resource/components/resource-item/index.vue.js +7 -0
- package/dist/esm/modules/cms/pages/cms-resource/components/resource-item/index.vue.js.map +1 -0
- package/dist/esm/modules/cms/pages/cms-resource/components/resource-item/index.vue2.js +89 -0
- package/dist/esm/modules/cms/pages/cms-resource/components/resource-item/index.vue2.js.map +1 -0
- package/dist/esm/modules/cms/pages/cms-resource/core/ResourceManager.d.ts +23 -0
- package/dist/esm/modules/cms/pages/cms-resource/core/ResourceManager.js +131 -0
- package/dist/esm/modules/cms/pages/cms-resource/core/ResourceManager.js.map +1 -0
- package/dist/esm/modules/cms/pages/cms-resource/index.vue.d.ts +2 -0
- package/dist/esm/modules/cms/pages/cms-resource/index.vue.js +7 -0
- package/dist/esm/modules/cms/pages/cms-resource/index.vue.js.map +1 -0
- package/dist/esm/modules/cms/pages/cms-resource/index.vue2.js +215 -0
- package/dist/esm/modules/cms/pages/cms-resource/index.vue2.js.map +1 -0
- package/dist/esm/modules/ms/pages/local-log/index.vue2.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/@codemirror_autocomplete@6.15.0_@codemirror_language@6.10.1_@codemirror_state@6.4.1_@codemirr_djjyqdn7bhwopzrz2h2s2bwhzm/node_modules/@codemirror/autocomplete/dist/index.js +273 -4
- package/dist/esm/node_modules/.pnpm/@codemirror_autocomplete@6.15.0_@codemirror_language@6.10.1_@codemirror_state@6.4.1_@codemirr_djjyqdn7bhwopzrz2h2s2bwhzm/node_modules/@codemirror/autocomplete/dist/index.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/@codemirror_lang-css@6.2.1_@codemirror_view@6.26.1/node_modules/@codemirror/lang-css/dist/index.js +258 -0
- package/dist/esm/node_modules/.pnpm/@codemirror_lang-css@6.2.1_@codemirror_view@6.26.1/node_modules/@codemirror/lang-css/dist/index.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/@codemirror_lang-html@6.4.9/node_modules/@codemirror/lang-html/dist/index.js +661 -0
- package/dist/esm/node_modules/.pnpm/@codemirror_lang-html@6.4.9/node_modules/@codemirror/lang-html/dist/index.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/@codemirror_lang-javascript@6.2.2/node_modules/@codemirror/lang-javascript/dist/index.js +332 -0
- package/dist/esm/node_modules/.pnpm/@codemirror_lang-javascript@6.2.2/node_modules/@codemirror/lang-javascript/dist/index.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/@codemirror_language@6.10.1/node_modules/@codemirror/language/dist/index.js +20 -1
- package/dist/esm/node_modules/.pnpm/@codemirror_language@6.10.1/node_modules/@codemirror/language/dist/index.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/@lezer_common@1.2.1/node_modules/@lezer/common/dist/index.js +508 -2
- package/dist/esm/node_modules/.pnpm/@lezer_common@1.2.1/node_modules/@lezer/common/dist/index.js.map +1 -1
- package/dist/esm/node_modules/.pnpm/@lezer_css@1.1.8/node_modules/@lezer/css/dist/index.js +125 -0
- package/dist/esm/node_modules/.pnpm/@lezer_css@1.1.8/node_modules/@lezer/css/dist/index.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/@lezer_html@1.3.10/node_modules/@lezer/html/dist/index.js +357 -0
- package/dist/esm/node_modules/.pnpm/@lezer_html@1.3.10/node_modules/@lezer/html/dist/index.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/@lezer_javascript@1.4.17/node_modules/@lezer/javascript/dist/index.js +187 -0
- package/dist/esm/node_modules/.pnpm/@lezer_javascript@1.4.17/node_modules/@lezer/javascript/dist/index.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/@lezer_lr@1.4.0/node_modules/@lezer/lr/dist/index.js +1872 -0
- package/dist/esm/node_modules/.pnpm/@lezer_lr@1.4.0/node_modules/@lezer/lr/dist/index.js.map +1 -0
- package/dist/esm/page/signup/index.vue2.js +1 -1
- package/dist/esm/page/signup/index.vue2.js.map +1 -1
- package/dist/esm/router-middleware/auth.js +1 -1
- package/dist/esm/router-middleware/auth.js.map +1 -1
- package/dist/style/index.css +1 -1
- package/dist/style/modules/cms/index.css +1 -0
- package/dist/style/modules/cms/resource-manager.css +1 -0
- package/dist/style/src/index.scss +16 -15
- package/dist/style/src/modules/cms/index.scss +1 -0
- package/dist/style/src/modules/cms/resource-manager.scss +71 -0
- package/package.json +4 -6
|
@@ -104,6 +104,21 @@ function completeFromList(list) {
|
|
|
104
104
|
return token || context.explicit ? { from: token ? token.from : context.pos, options, validFor } : null;
|
|
105
105
|
};
|
|
106
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
Wrap the given completion source so that it will not fire when the
|
|
109
|
+
cursor is in a syntax node with one of the given names.
|
|
110
|
+
*/
|
|
111
|
+
function ifNotIn(nodes, source) {
|
|
112
|
+
return (context) => {
|
|
113
|
+
for (let pos = index$2.syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {
|
|
114
|
+
if (nodes.indexOf(pos.name) > -1)
|
|
115
|
+
return null;
|
|
116
|
+
if (pos.type.isTop)
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
return source(context);
|
|
120
|
+
};
|
|
121
|
+
}
|
|
107
122
|
class Option {
|
|
108
123
|
constructor(completion, source, match, score) {
|
|
109
124
|
this.completion = completion;
|
|
@@ -1318,6 +1333,260 @@ const baseTheme = /*@__PURE__*/index.EditorView.baseTheme({
|
|
|
1318
1333
|
}
|
|
1319
1334
|
});
|
|
1320
1335
|
|
|
1336
|
+
class FieldPos {
|
|
1337
|
+
constructor(field, line, from, to) {
|
|
1338
|
+
this.field = field;
|
|
1339
|
+
this.line = line;
|
|
1340
|
+
this.from = from;
|
|
1341
|
+
this.to = to;
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1344
|
+
class FieldRange {
|
|
1345
|
+
constructor(field, from, to) {
|
|
1346
|
+
this.field = field;
|
|
1347
|
+
this.from = from;
|
|
1348
|
+
this.to = to;
|
|
1349
|
+
}
|
|
1350
|
+
map(changes) {
|
|
1351
|
+
let from = changes.mapPos(this.from, -1, index$1.MapMode.TrackDel);
|
|
1352
|
+
let to = changes.mapPos(this.to, 1, index$1.MapMode.TrackDel);
|
|
1353
|
+
return from == null || to == null ? null : new FieldRange(this.field, from, to);
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1356
|
+
class Snippet {
|
|
1357
|
+
constructor(lines, fieldPositions) {
|
|
1358
|
+
this.lines = lines;
|
|
1359
|
+
this.fieldPositions = fieldPositions;
|
|
1360
|
+
}
|
|
1361
|
+
instantiate(state, pos) {
|
|
1362
|
+
let text = [], lineStart = [pos];
|
|
1363
|
+
let lineObj = state.doc.lineAt(pos), baseIndent = /^\s*/.exec(lineObj.text)[0];
|
|
1364
|
+
for (let line of this.lines) {
|
|
1365
|
+
if (text.length) {
|
|
1366
|
+
let indent = baseIndent, tabs = /^\t*/.exec(line)[0].length;
|
|
1367
|
+
for (let i = 0; i < tabs; i++)
|
|
1368
|
+
indent += state.facet(index$2.indentUnit);
|
|
1369
|
+
lineStart.push(pos + indent.length - tabs);
|
|
1370
|
+
line = indent + line.slice(tabs);
|
|
1371
|
+
}
|
|
1372
|
+
text.push(line);
|
|
1373
|
+
pos += line.length + 1;
|
|
1374
|
+
}
|
|
1375
|
+
let ranges = this.fieldPositions.map(pos => new FieldRange(pos.field, lineStart[pos.line] + pos.from, lineStart[pos.line] + pos.to));
|
|
1376
|
+
return { text, ranges };
|
|
1377
|
+
}
|
|
1378
|
+
static parse(template) {
|
|
1379
|
+
let fields = [];
|
|
1380
|
+
let lines = [], positions = [], m;
|
|
1381
|
+
for (let line of template.split(/\r\n?|\n/)) {
|
|
1382
|
+
while (m = /[#$]\{(?:(\d+)(?::([^}]*))?|([^}]*))\}/.exec(line)) {
|
|
1383
|
+
let seq = m[1] ? +m[1] : null, name = m[2] || m[3] || "", found = -1;
|
|
1384
|
+
for (let i = 0; i < fields.length; i++) {
|
|
1385
|
+
if (seq != null ? fields[i].seq == seq : name ? fields[i].name == name : false)
|
|
1386
|
+
found = i;
|
|
1387
|
+
}
|
|
1388
|
+
if (found < 0) {
|
|
1389
|
+
let i = 0;
|
|
1390
|
+
while (i < fields.length && (seq == null || (fields[i].seq != null && fields[i].seq < seq)))
|
|
1391
|
+
i++;
|
|
1392
|
+
fields.splice(i, 0, { seq, name });
|
|
1393
|
+
found = i;
|
|
1394
|
+
for (let pos of positions)
|
|
1395
|
+
if (pos.field >= found)
|
|
1396
|
+
pos.field++;
|
|
1397
|
+
}
|
|
1398
|
+
positions.push(new FieldPos(found, lines.length, m.index, m.index + name.length));
|
|
1399
|
+
line = line.slice(0, m.index) + name + line.slice(m.index + m[0].length);
|
|
1400
|
+
}
|
|
1401
|
+
for (let esc; esc = /\\([{}])/.exec(line);) {
|
|
1402
|
+
line = line.slice(0, esc.index) + esc[1] + line.slice(esc.index + esc[0].length);
|
|
1403
|
+
for (let pos of positions)
|
|
1404
|
+
if (pos.line == lines.length && pos.from > esc.index) {
|
|
1405
|
+
pos.from--;
|
|
1406
|
+
pos.to--;
|
|
1407
|
+
}
|
|
1408
|
+
}
|
|
1409
|
+
lines.push(line);
|
|
1410
|
+
}
|
|
1411
|
+
return new Snippet(lines, positions);
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
let fieldMarker = /*@__PURE__*/index.Decoration.widget({ widget: /*@__PURE__*/new class extends index.WidgetType {
|
|
1415
|
+
toDOM() {
|
|
1416
|
+
let span = document.createElement("span");
|
|
1417
|
+
span.className = "cm-snippetFieldPosition";
|
|
1418
|
+
return span;
|
|
1419
|
+
}
|
|
1420
|
+
ignoreEvent() { return false; }
|
|
1421
|
+
} });
|
|
1422
|
+
let fieldRange = /*@__PURE__*/index.Decoration.mark({ class: "cm-snippetField" });
|
|
1423
|
+
class ActiveSnippet {
|
|
1424
|
+
constructor(ranges, active) {
|
|
1425
|
+
this.ranges = ranges;
|
|
1426
|
+
this.active = active;
|
|
1427
|
+
this.deco = index.Decoration.set(ranges.map(r => (r.from == r.to ? fieldMarker : fieldRange).range(r.from, r.to)));
|
|
1428
|
+
}
|
|
1429
|
+
map(changes) {
|
|
1430
|
+
let ranges = [];
|
|
1431
|
+
for (let r of this.ranges) {
|
|
1432
|
+
let mapped = r.map(changes);
|
|
1433
|
+
if (!mapped)
|
|
1434
|
+
return null;
|
|
1435
|
+
ranges.push(mapped);
|
|
1436
|
+
}
|
|
1437
|
+
return new ActiveSnippet(ranges, this.active);
|
|
1438
|
+
}
|
|
1439
|
+
selectionInsideField(sel) {
|
|
1440
|
+
return sel.ranges.every(range => this.ranges.some(r => r.field == this.active && r.from <= range.from && r.to >= range.to));
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
const setActive = /*@__PURE__*/index$1.StateEffect.define({
|
|
1444
|
+
map(value, changes) { return value && value.map(changes); }
|
|
1445
|
+
});
|
|
1446
|
+
const moveToField = /*@__PURE__*/index$1.StateEffect.define();
|
|
1447
|
+
const snippetState = /*@__PURE__*/index$1.StateField.define({
|
|
1448
|
+
create() { return null; },
|
|
1449
|
+
update(value, tr) {
|
|
1450
|
+
for (let effect of tr.effects) {
|
|
1451
|
+
if (effect.is(setActive))
|
|
1452
|
+
return effect.value;
|
|
1453
|
+
if (effect.is(moveToField) && value)
|
|
1454
|
+
return new ActiveSnippet(value.ranges, effect.value);
|
|
1455
|
+
}
|
|
1456
|
+
if (value && tr.docChanged)
|
|
1457
|
+
value = value.map(tr.changes);
|
|
1458
|
+
if (value && tr.selection && !value.selectionInsideField(tr.selection))
|
|
1459
|
+
value = null;
|
|
1460
|
+
return value;
|
|
1461
|
+
},
|
|
1462
|
+
provide: f => index.EditorView.decorations.from(f, val => val ? val.deco : index.Decoration.none)
|
|
1463
|
+
});
|
|
1464
|
+
function fieldSelection(ranges, field) {
|
|
1465
|
+
return index$1.EditorSelection.create(ranges.filter(r => r.field == field).map(r => index$1.EditorSelection.range(r.from, r.to)));
|
|
1466
|
+
}
|
|
1467
|
+
/**
|
|
1468
|
+
Convert a snippet template to a function that can
|
|
1469
|
+
[apply](https://codemirror.net/6/docs/ref/#autocomplete.Completion.apply) it. Snippets are written
|
|
1470
|
+
using syntax like this:
|
|
1471
|
+
|
|
1472
|
+
"for (let ${index} = 0; ${index} < ${end}; ${index}++) {\n\t${}\n}"
|
|
1473
|
+
|
|
1474
|
+
Each `${}` placeholder (you may also use `#{}`) indicates a field
|
|
1475
|
+
that the user can fill in. Its name, if any, will be the default
|
|
1476
|
+
content for the field.
|
|
1477
|
+
|
|
1478
|
+
When the snippet is activated by calling the returned function,
|
|
1479
|
+
the code is inserted at the given position. Newlines in the
|
|
1480
|
+
template are indented by the indentation of the start line, plus
|
|
1481
|
+
one [indent unit](https://codemirror.net/6/docs/ref/#language.indentUnit) per tab character after
|
|
1482
|
+
the newline.
|
|
1483
|
+
|
|
1484
|
+
On activation, (all instances of) the first field are selected.
|
|
1485
|
+
The user can move between fields with Tab and Shift-Tab as long as
|
|
1486
|
+
the fields are active. Moving to the last field or moving the
|
|
1487
|
+
cursor out of the current field deactivates the fields.
|
|
1488
|
+
|
|
1489
|
+
The order of fields defaults to textual order, but you can add
|
|
1490
|
+
numbers to placeholders (`${1}` or `${1:defaultText}`) to provide
|
|
1491
|
+
a custom order.
|
|
1492
|
+
|
|
1493
|
+
To include a literal `{` or `}` in your template, put a backslash
|
|
1494
|
+
in front of it. This will be removed and the brace will not be
|
|
1495
|
+
interpreted as indicating a placeholder.
|
|
1496
|
+
*/
|
|
1497
|
+
function snippet(template) {
|
|
1498
|
+
let snippet = Snippet.parse(template);
|
|
1499
|
+
return (editor, completion, from, to) => {
|
|
1500
|
+
let { text, ranges } = snippet.instantiate(editor.state, from);
|
|
1501
|
+
let spec = {
|
|
1502
|
+
changes: { from, to, insert: index$1.Text.of(text) },
|
|
1503
|
+
scrollIntoView: true,
|
|
1504
|
+
annotations: completion ? [pickedCompletion.of(completion), index$1.Transaction.userEvent.of("input.complete")] : undefined
|
|
1505
|
+
};
|
|
1506
|
+
if (ranges.length)
|
|
1507
|
+
spec.selection = fieldSelection(ranges, 0);
|
|
1508
|
+
if (ranges.some(r => r.field > 0)) {
|
|
1509
|
+
let active = new ActiveSnippet(ranges, 0);
|
|
1510
|
+
let effects = spec.effects = [setActive.of(active)];
|
|
1511
|
+
if (editor.state.field(snippetState, false) === undefined)
|
|
1512
|
+
effects.push(index$1.StateEffect.appendConfig.of([snippetState, addSnippetKeymap, snippetPointerHandler, baseTheme]));
|
|
1513
|
+
}
|
|
1514
|
+
editor.dispatch(editor.state.update(spec));
|
|
1515
|
+
};
|
|
1516
|
+
}
|
|
1517
|
+
function moveField(dir) {
|
|
1518
|
+
return ({ state, dispatch }) => {
|
|
1519
|
+
let active = state.field(snippetState, false);
|
|
1520
|
+
if (!active || dir < 0 && active.active == 0)
|
|
1521
|
+
return false;
|
|
1522
|
+
let next = active.active + dir, last = dir > 0 && !active.ranges.some(r => r.field == next + dir);
|
|
1523
|
+
dispatch(state.update({
|
|
1524
|
+
selection: fieldSelection(active.ranges, next),
|
|
1525
|
+
effects: setActive.of(last ? null : new ActiveSnippet(active.ranges, next)),
|
|
1526
|
+
scrollIntoView: true
|
|
1527
|
+
}));
|
|
1528
|
+
return true;
|
|
1529
|
+
};
|
|
1530
|
+
}
|
|
1531
|
+
/**
|
|
1532
|
+
A command that clears the active snippet, if any.
|
|
1533
|
+
*/
|
|
1534
|
+
const clearSnippet = ({ state, dispatch }) => {
|
|
1535
|
+
let active = state.field(snippetState, false);
|
|
1536
|
+
if (!active)
|
|
1537
|
+
return false;
|
|
1538
|
+
dispatch(state.update({ effects: setActive.of(null) }));
|
|
1539
|
+
return true;
|
|
1540
|
+
};
|
|
1541
|
+
/**
|
|
1542
|
+
Move to the next snippet field, if available.
|
|
1543
|
+
*/
|
|
1544
|
+
const nextSnippetField = /*@__PURE__*/moveField(1);
|
|
1545
|
+
/**
|
|
1546
|
+
Move to the previous snippet field, if available.
|
|
1547
|
+
*/
|
|
1548
|
+
const prevSnippetField = /*@__PURE__*/moveField(-1);
|
|
1549
|
+
const defaultSnippetKeymap = [
|
|
1550
|
+
{ key: "Tab", run: nextSnippetField, shift: prevSnippetField },
|
|
1551
|
+
{ key: "Escape", run: clearSnippet }
|
|
1552
|
+
];
|
|
1553
|
+
/**
|
|
1554
|
+
A facet that can be used to configure the key bindings used by
|
|
1555
|
+
snippets. The default binds Tab to
|
|
1556
|
+
[`nextSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.nextSnippetField), Shift-Tab to
|
|
1557
|
+
[`prevSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.prevSnippetField), and Escape
|
|
1558
|
+
to [`clearSnippet`](https://codemirror.net/6/docs/ref/#autocomplete.clearSnippet).
|
|
1559
|
+
*/
|
|
1560
|
+
const snippetKeymap = /*@__PURE__*/index$1.Facet.define({
|
|
1561
|
+
combine(maps) { return maps.length ? maps[0] : defaultSnippetKeymap; }
|
|
1562
|
+
});
|
|
1563
|
+
const addSnippetKeymap = /*@__PURE__*/index$1.Prec.highest(/*@__PURE__*/index.keymap.compute([snippetKeymap], state => state.facet(snippetKeymap)));
|
|
1564
|
+
/**
|
|
1565
|
+
Create a completion from a snippet. Returns an object with the
|
|
1566
|
+
properties from `completion`, plus an `apply` function that
|
|
1567
|
+
applies the snippet.
|
|
1568
|
+
*/
|
|
1569
|
+
function snippetCompletion(template, completion) {
|
|
1570
|
+
return Object.assign(Object.assign({}, completion), { apply: snippet(template) });
|
|
1571
|
+
}
|
|
1572
|
+
const snippetPointerHandler = /*@__PURE__*/index.EditorView.domEventHandlers({
|
|
1573
|
+
mousedown(event, view) {
|
|
1574
|
+
let active = view.state.field(snippetState, false), pos;
|
|
1575
|
+
if (!active || (pos = view.posAtCoords({ x: event.clientX, y: event.clientY })) == null)
|
|
1576
|
+
return false;
|
|
1577
|
+
let match = active.ranges.find(r => r.from <= pos && r.to >= pos);
|
|
1578
|
+
if (!match || match.field == active.active)
|
|
1579
|
+
return false;
|
|
1580
|
+
view.dispatch({
|
|
1581
|
+
selection: fieldSelection(active.ranges, match.field),
|
|
1582
|
+
effects: setActive.of(active.ranges.some(r => r.field > match.field)
|
|
1583
|
+
? new ActiveSnippet(active.ranges, match.field) : null),
|
|
1584
|
+
scrollIntoView: true
|
|
1585
|
+
});
|
|
1586
|
+
return true;
|
|
1587
|
+
}
|
|
1588
|
+
});
|
|
1589
|
+
|
|
1321
1590
|
const defaults = {
|
|
1322
1591
|
brackets: ["(", "[", "{", "'", '"'],
|
|
1323
1592
|
before: ")]}:;>",
|
|
@@ -1601,15 +1870,22 @@ const completionKeymapExt = /*@__PURE__*/index$1.Prec.highest(/*@__PURE__*/index
|
|
|
1601
1870
|
exports.CompletionContext = CompletionContext;
|
|
1602
1871
|
exports.acceptCompletion = acceptCompletion;
|
|
1603
1872
|
exports.autocompletion = autocompletion;
|
|
1873
|
+
exports.clearSnippet = clearSnippet;
|
|
1604
1874
|
exports.closeBrackets = closeBrackets;
|
|
1605
1875
|
exports.closeBracketsKeymap = closeBracketsKeymap;
|
|
1606
1876
|
exports.closeCompletion = closeCompletion;
|
|
1607
1877
|
exports.completeFromList = completeFromList;
|
|
1608
1878
|
exports.completionKeymap = completionKeymap;
|
|
1609
1879
|
exports.deleteBracketPair = deleteBracketPair;
|
|
1880
|
+
exports.ifNotIn = ifNotIn;
|
|
1610
1881
|
exports.insertBracket = insertBracket;
|
|
1611
1882
|
exports.insertCompletionText = insertCompletionText;
|
|
1612
1883
|
exports.moveCompletionSelection = moveCompletionSelection;
|
|
1884
|
+
exports.nextSnippetField = nextSnippetField;
|
|
1613
1885
|
exports.pickedCompletion = pickedCompletion;
|
|
1886
|
+
exports.prevSnippetField = prevSnippetField;
|
|
1887
|
+
exports.snippet = snippet;
|
|
1888
|
+
exports.snippetCompletion = snippetCompletion;
|
|
1889
|
+
exports.snippetKeymap = snippetKeymap;
|
|
1614
1890
|
exports.startCompletion = startCompletion;
|
|
1615
1891
|
//# sourceMappingURL=index.js.map
|