@morlay/dsh-client-ui-primitives 0.0.12 → 0.0.14-alpha.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.
@@ -4,7 +4,7 @@ window.__ModuleLoader__.load({
4
4
  var module = { exports: {} };
5
5
  var exports = module.exports;
6
6
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
7
- //#region \0rolldown/runtime.js
7
+ // \0rolldown/runtime.js
8
8
  var __defProp = Object.defineProperty;
9
9
  var __exportAll = (all, no_symbols) => {
10
10
  let target = {};
@@ -15,7 +15,6 @@ window.__ModuleLoader__.load({
15
15
  if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
16
16
  return target;
17
17
  };
18
- //#endregion
19
18
  let _deepseek_ai_dsh_client_store = require("@deepseek-ai/dsh-client-store");
20
19
  let _deepseek_ai_cordis = require("@deepseek-ai/cordis");
21
20
  let react = require("react");
@@ -514,8 +513,7 @@ window.__ModuleLoader__.load({
514
513
  }
515
514
  return node.variants[0];
516
515
  }
517
- //#endregion
518
- //#region src/client/schema-form/draft.ts
516
+ // src/client/schema-form/draft.ts
519
517
  function failureOf(error) {
520
518
  const raw = error instanceof Error ? error.message : String(error);
521
519
  const path = (error.options?.path ?? []).filter((segment) => typeof segment === "string" || typeof segment === "number").map(String);
@@ -802,8 +800,7 @@ window.__ModuleLoader__.load({
802
800
  }
803
801
  return next;
804
802
  }
805
- //#endregion
806
- //#region src/client/schema-form/controller.ts
803
+ // src/client/schema-form/controller.ts
807
804
  function declaredSource(node) {
808
805
  const extra = node?.meta.extra;
809
806
  if (typeof extra !== "object" || extra === null) return void 0;
@@ -1006,79 +1003,78 @@ window.__ModuleLoader__.load({
1006
1003
  };
1007
1004
  }
1008
1005
  };
1009
- //#endregion
1010
- //#region src/client/schema-form/hints.ts
1006
+ // src/client/schema-form/hints.ts
1011
1007
  var SchemaFormHints = class extends _deepseek_ai_cordis.Service {
1012
- #readers = /* @__PURE__ */ new Map();
1013
- #texts = /* @__PURE__ */ new Map();
1014
- #selects = /* @__PURE__ */ new Map();
1015
- #sources = /* @__PURE__ */ new Map();
1016
- #listeners = /* @__PURE__ */ new Set();
1008
+ readers = /* @__PURE__ */ new Map();
1009
+ texts = /* @__PURE__ */ new Map();
1010
+ selects = /* @__PURE__ */ new Map();
1011
+ sources = /* @__PURE__ */ new Map();
1012
+ listeners = /* @__PURE__ */ new Set();
1017
1013
  constructor(ctx) {
1018
1014
  super(ctx, "schemaFormHints");
1019
1015
  }
1020
1016
  keysFor(ns, path) {
1021
- return lookup(this.#readers, ns, path)?.() ?? [];
1017
+ return lookup(this.readers, ns, path)?.() ?? [];
1022
1018
  }
1023
1019
  textFor(ns, path) {
1024
- return lookup(this.#texts, ns, path)?.() ?? {};
1020
+ return lookup(this.texts, ns, path)?.() ?? {};
1025
1021
  }
1026
1022
  select(ns, path, spec) {
1027
1023
  const key = locationKey(ns, path);
1028
- this.#selects.set(key, spec);
1029
- this.#publish();
1024
+ this.selects.set(key, spec);
1025
+ this.publish();
1030
1026
  return () => {
1031
- if (this.#selects.get(key) !== spec) return;
1032
- this.#selects.delete(key);
1033
- this.#publish();
1027
+ if (this.selects.get(key) !== spec) return;
1028
+ this.selects.delete(key);
1029
+ this.publish();
1034
1030
  };
1035
1031
  }
1036
1032
  selectFor(ns, path) {
1037
- return lookup(this.#selects, ns, path);
1033
+ return lookup(this.selects, ns, path);
1038
1034
  }
1039
1035
  source(name, spec) {
1040
- this.#sources.set(name, spec);
1041
- this.#publish();
1036
+ this.sources.set(name, spec);
1037
+ this.publish();
1042
1038
  return () => {
1043
- if (this.#sources.get(name) !== spec) return;
1044
- this.#sources.delete(name);
1045
- this.#publish();
1039
+ if (this.sources.get(name) !== spec) return;
1040
+ this.sources.delete(name);
1041
+ this.publish();
1046
1042
  };
1047
1043
  }
1048
1044
  sourceFor(name) {
1049
- return this.#sources.get(name);
1045
+ return this.sources.get(name);
1050
1046
  }
1051
1047
  describe(ns, path, read) {
1052
1048
  const key = locationKey(ns, path);
1053
- this.#texts.set(key, read);
1054
- this.#publish();
1049
+ this.texts.set(key, read);
1050
+ this.publish();
1055
1051
  return () => {
1056
- if (this.#texts.get(key) !== read) return;
1057
- this.#texts.delete(key);
1058
- this.#publish();
1052
+ if (this.texts.get(key) !== read) return;
1053
+ this.texts.delete(key);
1054
+ this.publish();
1059
1055
  };
1060
1056
  }
1061
1057
  suggestKeys(ns, path, read) {
1062
1058
  const key = locationKey(ns, path);
1063
- this.#readers.set(key, read);
1064
- this.#publish();
1059
+ this.readers.set(key, read);
1060
+ this.publish();
1065
1061
  return () => {
1066
- if (this.#readers.get(key) !== read) return;
1067
- this.#readers.delete(key);
1068
- this.#publish();
1062
+ if (this.readers.get(key) !== read) return;
1063
+ this.readers.delete(key);
1064
+ this.publish();
1069
1065
  };
1070
1066
  }
1071
1067
  subscribe(listener) {
1072
- this.#listeners.add(listener);
1068
+ this.listeners.add(listener);
1073
1069
  return () => {
1074
- this.#listeners.delete(listener);
1070
+ this.listeners.delete(listener);
1075
1071
  };
1076
1072
  }
1077
1073
  refresh() {
1078
- this.#publish();
1074
+ this.publish();
1079
1075
  }
1080
- #publish() {
1081
- for (const listener of this.#listeners) listener();
1076
+ publish() {
1077
+ for (const listener of this.listeners) listener();
1082
1078
  }
1083
1079
  };
1084
1080
  function locationKey(ns, path) {
@@ -1096,8 +1092,7 @@ window.__ModuleLoader__.load({
1096
1092
  const wildcardable = Math.max(0, path.length - 1);
1097
1093
  for (let bits = (1 << wildcardable) - 1; bits > 0; bits--) yield path.map((segment, index) => index > 0 && (bits & 1 << index - 1) !== 0 ? "*" : segment);
1098
1094
  }
1099
- //#endregion
1100
- //#region src/client/schema-form/locales.ts
1095
+ // src/client/schema-form/locales.ts
1101
1096
  const zh = {
1102
1097
  unavailable: "该插件当前未加载,暂时无法配置。",
1103
1098
  readOnly: "本部署的设置为只读。",
@@ -1206,8 +1201,7 @@ window.__ModuleLoader__.load({
1206
1201
  duplicateItem: "Duplicate {key}: {value}",
1207
1202
  missingItem: "Every item needs a {key}"
1208
1203
  };
1209
- //#endregion
1210
- //#region src/client/schema-form/rows.ts
1204
+ // src/client/schema-form/rows.ts
1211
1205
  function rowRegistrations(namespaces, bundles) {
1212
1206
  const owners = /* @__PURE__ */ new Map();
1213
1207
  for (const bundle of bundles) for (const row of bundle.rows) owners.set(row.rowId, bundle.name);
@@ -1279,16 +1273,14 @@ window.__ModuleLoader__.load({
1279
1273
  }
1280
1274
  }
1281
1275
  };
1282
- //#endregion
1283
- //#region src/client/schema-form/labels.ts
1276
+ // src/client/schema-form/labels.ts
1284
1277
  function fieldHint(node, resolveText) {
1285
1278
  const parts = [];
1286
1279
  if (node.meta.description !== void 0) parts.push(resolveText(node.meta.description));
1287
1280
  if (node.meta.comment !== void 0) parts.push(node.meta.comment);
1288
1281
  return parts.length === 0 ? void 0 : parts.join(" ");
1289
1282
  }
1290
- //#endregion
1291
- //#region src/client/schema-form/lines.ts
1283
+ // src/client/schema-form/lines.ts
1292
1284
  function containerShape(node, value) {
1293
1285
  switch (variantOf(node, value).type) {
1294
1286
  case "object":
@@ -1457,9 +1449,8 @@ window.__ModuleLoader__.load({
1457
1449
  if (prefix.length > path.length) return false;
1458
1450
  return prefix.every((segment, index) => path[index] === segment);
1459
1451
  }
1460
- //#endregion
1461
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/schema-form/schema-form.module.css.mjs
1462
- const css$14 = ".N3kx7G_editorRoot{width:100%;color:var(--dsw-alias-label-primary);flex-direction:column;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:14px;line-height:22px;display:flex}.N3kx7G_lineRow{white-space:nowrap;align-items:flex-start;gap:6px;min-height:22px;padding-right:8px;display:flex}.N3kx7G_lineRow:hover{background:var(--dsw-alias-bg-layer-2)}.N3kx7G_lineRow[data-selected=true]{background:var(--dsw-alias-bg-layer-3)}.N3kx7G_lineRow[data-dirty=true]{box-shadow:inset 2px 0 0 var(--dsw-alias-brand-primary)}.N3kx7G_lineRow[data-overridden=true]{box-shadow:inset 2px 0 0 var(--dsw-elevation-stroke-color)}.N3kx7G_lineRow[data-dirty=true] [data-role=key],.N3kx7G_lineRow[data-overridden=true] [data-role=key]{color:var(--dsw-alias-brand-primary)}.N3kx7G_lineRow[data-invalid=true]{background:color-mix(in srgb, var(--dsw-alias-state-error-secondary) 12%, transparent);box-shadow:inset 2px 0 0 var(--dsw-alias-state-error-primary)}.N3kx7G_lineRow[data-invalid=true] [data-role=key]{color:var(--dsw-alias-state-error-primary)}.N3kx7G_lineRow:hover [data-role=actions]{opacity:1}.N3kx7G_lineBody{flex:1;align-items:center;gap:6px;min-width:0;min-height:22px;display:flex}.N3kx7G_lineNumber{text-align:right;width:32px;color:var(--dsw-alias-label-caption);user-select:none;cursor:pointer;flex:none;line-height:22px}.N3kx7G_lineFold{width:14px;height:22px;color:var(--dsw-alias-label-caption);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.N3kx7G_lineFold:hover{color:var(--dsw-alias-label-secondary)}.N3kx7G_lineFoldSpacer{flex:none;width:14px}.N3kx7G_lineKey{color:var(--dsw-alias-label-primary);flex:none}.N3kx7G_lineKey[data-index=true]{color:var(--dsw-alias-label-caption)}.N3kx7G_lineToken{color:var(--dsw-alias-label-caption);flex:none}.N3kx7G_lineValue{text-overflow:ellipsis;cursor:text;min-width:0;color:var(--dsw-alias-state-business-primary);display:block;overflow:hidden}.N3kx7G_lineValue[data-tone=number]{color:var(--dsw-alias-state-warn-primary)}.N3kx7G_lineValue[data-tone=boolean]{color:var(--dsw-alias-state-success-primary)}.N3kx7G_lineValue[data-tone=empty]{color:var(--dsw-alias-label-caption)}.N3kx7G_valueSlot{flex:0 auto;min-width:0;display:block;overflow:hidden}.N3kx7G_valueTrigger{min-width:0;font:inherit;text-align:left;cursor:pointer;color:var(--dsw-alias-label-caption);background:0 0;border:0;align-items:center;gap:2px;padding:0;display:inline-flex}.N3kx7G_valueTrigger:disabled{cursor:default}.N3kx7G_valueTrigger:focus-visible{outline:none}.N3kx7G_compactInput{flex:auto;min-width:0;display:inline-flex}.N3kx7G_compactInput>span{border-radius:4px;width:100%;height:22px;padding:0 6px}.N3kx7G_compactInput input{font-size:14px;line-height:22px}.N3kx7G_compactTextField{background:var(--dsw-alias-bg-layer-1);min-width:0;box-shadow:0 0 0 .5px var(--dsw-elevation-stroke-color);border:0;border-radius:4px;flex:auto;padding:0 6px;display:inline-flex}.N3kx7G_compactTextField:focus-within{--dsw-elevation-stroke-color:var(--dsw-alias-brand-primary)}.N3kx7G_compactTextField>textarea{resize:none;field-sizing:content;width:100%;min-height:20px;max-height:240px;color:var(--dsw-alias-label-primary);background:0 0;border:0;outline:none;flex:1;padding:0;font-family:inherit;font-size:14px;line-height:22px}.N3kx7G_lineComment{text-overflow:ellipsis;min-width:0;color:var(--dsw-alias-label-tertiary);flex:auto;font-family:inherit;font-size:12px;overflow:hidden}.N3kx7G_lineInvalid{text-overflow:ellipsis;min-width:0;color:var(--dsw-alias-state-error-primary);flex:0 auto;font-family:inherit;font-size:12px;overflow:hidden}.N3kx7G_lineActions{opacity:0;flex:none;align-items:center;gap:4px;display:inline-flex}.N3kx7G_lineActions>button{width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;display:inline-flex}.N3kx7G_lineActions>button:hover{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary)}.N3kx7G_lineActions>button:disabled{cursor:not-allowed;color:var(--dsw-alias-label-dimmed)}.N3kx7G_hoverActions[data-editing=true]{opacity:1;gap:6px}.N3kx7G_hoverActions[data-editing=true]>button{box-shadow:0 0 0 .5px var(--dsw-elevation-stroke-color);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary)}.N3kx7G_hoverActions[data-editing=true]>button:first-of-type{color:var(--dsw-alias-state-success-primary)}.N3kx7G_addWrap{flex:auto;align-items:center;gap:6px;min-width:0;margin-left:6px;display:inline-flex;position:relative}.N3kx7G_addWrap[data-invalid=true] input{border-color:var(--dsw-alias-state-error-primary)}.N3kx7G_hint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:1.5}";
1452
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/schema-form/schema-form.module.css.mjs
1453
+ const css$14 = ".oZhWGq_editorRoot{width:100%;color:var(--dsw-alias-label-primary);flex-direction:column;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:14px;line-height:22px;display:flex}.oZhWGq_lineRow{white-space:nowrap;align-items:flex-start;gap:6px;min-height:22px;padding-right:8px;display:flex}.oZhWGq_lineRow:hover{background:var(--dsw-alias-bg-layer-2)}.oZhWGq_lineRow[data-selected=true]{background:var(--dsw-alias-bg-layer-3)}.oZhWGq_lineRow[data-dirty=true]{box-shadow:inset 2px 0 0 var(--dsw-alias-brand-primary)}.oZhWGq_lineRow[data-overridden=true]{box-shadow:inset 2px 0 0 var(--dsw-elevation-stroke-color)}.oZhWGq_lineRow[data-dirty=true] [data-role=key],.oZhWGq_lineRow[data-overridden=true] [data-role=key]{color:var(--dsw-alias-brand-primary)}.oZhWGq_lineRow[data-invalid=true]{background:color-mix(in srgb, var(--dsw-alias-state-error-secondary) 12%, transparent);box-shadow:inset 2px 0 0 var(--dsw-alias-state-error-primary)}.oZhWGq_lineRow[data-invalid=true] [data-role=key]{color:var(--dsw-alias-state-error-primary)}.oZhWGq_lineRow:hover [data-role=actions]{opacity:1}.oZhWGq_lineBody{flex:1;align-items:center;gap:6px;min-width:0;min-height:22px;display:flex}.oZhWGq_lineNumber{text-align:right;width:32px;color:var(--dsw-alias-label-caption);user-select:none;cursor:pointer;flex:none;line-height:22px}.oZhWGq_lineFold{width:14px;height:22px;color:var(--dsw-alias-label-caption);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.oZhWGq_lineFold:hover{color:var(--dsw-alias-label-secondary)}.oZhWGq_lineFoldSpacer{flex:none;width:14px}.oZhWGq_lineKey{color:var(--dsw-alias-label-primary);flex:none}.oZhWGq_lineKey[data-index=true]{color:var(--dsw-alias-label-caption)}.oZhWGq_lineToken{color:var(--dsw-alias-label-caption);flex:none}.oZhWGq_lineValue{text-overflow:ellipsis;cursor:text;min-width:0;color:var(--dsw-alias-state-business-primary);display:block;overflow:hidden}.oZhWGq_lineValue[data-tone=number]{color:var(--dsw-alias-state-warn-primary)}.oZhWGq_lineValue[data-tone=boolean]{color:var(--dsw-alias-state-success-primary)}.oZhWGq_lineValue[data-tone=empty]{color:var(--dsw-alias-label-caption)}.oZhWGq_valueSlot{flex:0 auto;min-width:0;display:block;overflow:hidden}.oZhWGq_valueTrigger{min-width:0;font:inherit;text-align:left;cursor:pointer;color:var(--dsw-alias-label-caption);background:0 0;border:0;align-items:center;gap:2px;padding:0;display:inline-flex}.oZhWGq_valueTrigger:disabled{cursor:default}.oZhWGq_valueTrigger:focus-visible{outline:none}.oZhWGq_compactInput{flex:auto;min-width:0;display:inline-flex}.oZhWGq_compactInput>span{border-radius:4px;width:100%;height:22px;padding:0 6px}.oZhWGq_compactInput input{font-size:14px;line-height:22px}.oZhWGq_compactTextField{background:var(--dsw-alias-bg-layer-1);min-width:0;box-shadow:0 0 0 .5px var(--dsw-elevation-stroke-color);border:0;border-radius:4px;flex:auto;padding:0 6px;display:inline-flex}.oZhWGq_compactTextField:focus-within{--dsw-elevation-stroke-color:var(--dsw-alias-brand-primary)}.oZhWGq_compactTextField>textarea{resize:none;field-sizing:content;width:100%;min-height:20px;max-height:240px;color:var(--dsw-alias-label-primary);background:0 0;border:0;outline:none;flex:1;padding:0;font-family:inherit;font-size:14px;line-height:22px}.oZhWGq_lineComment{text-overflow:ellipsis;min-width:0;color:var(--dsw-alias-label-tertiary);flex:auto;font-family:inherit;font-size:12px;overflow:hidden}.oZhWGq_lineInvalid{text-overflow:ellipsis;min-width:0;color:var(--dsw-alias-state-error-primary);flex:0 auto;font-family:inherit;font-size:12px;overflow:hidden}.oZhWGq_lineActions{opacity:0;flex:none;align-items:center;gap:4px;display:inline-flex}.oZhWGq_lineActions>button{width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;display:inline-flex}.oZhWGq_lineActions>button:hover{background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary)}.oZhWGq_lineActions>button:disabled{cursor:not-allowed;color:var(--dsw-alias-label-dimmed)}.oZhWGq_hoverActions[data-editing=true]{opacity:1;gap:6px}.oZhWGq_hoverActions[data-editing=true]>button{box-shadow:0 0 0 .5px var(--dsw-elevation-stroke-color);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary)}.oZhWGq_hoverActions[data-editing=true]>button:first-of-type{color:var(--dsw-alias-state-success-primary)}.oZhWGq_addWrap{flex:auto;align-items:center;gap:6px;min-width:0;margin-left:6px;display:inline-flex;position:relative}.oZhWGq_addWrap[data-invalid=true] input{border-color:var(--dsw-alias-state-error-primary)}.oZhWGq_hint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:1.5}";
1463
1454
  const tagId$14 = "@morlay/dsh-client-ui-primitives/schema-form.module.css";
1464
1455
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/schema-form.module.css\"]") === null) {
1465
1456
  const tag = document.createElement("style");
@@ -1469,28 +1460,27 @@ window.__ModuleLoader__.load({
1469
1460
  document.head.appendChild(tag);
1470
1461
  }
1471
1462
  var schema_form_module_css_default = {
1472
- "valueSlot": "N3kx7G_valueSlot",
1473
- "lineInvalid": "N3kx7G_lineInvalid",
1474
- "compactTextField": "N3kx7G_compactTextField",
1475
- "valueTrigger": "N3kx7G_valueTrigger",
1476
- "lineKey": "N3kx7G_lineKey",
1477
- "hoverActions": "N3kx7G_hoverActions",
1478
- "lineComment": "N3kx7G_lineComment",
1479
- "lineToken": "N3kx7G_lineToken",
1480
- "compactInput": "N3kx7G_compactInput",
1481
- "lineFold": "N3kx7G_lineFold",
1482
- "lineNumber": "N3kx7G_lineNumber",
1483
- "lineRow": "N3kx7G_lineRow",
1484
- "lineFoldSpacer": "N3kx7G_lineFoldSpacer",
1485
- "lineActions": "N3kx7G_lineActions",
1486
- "lineValue": "N3kx7G_lineValue",
1487
- "addWrap": "N3kx7G_addWrap",
1488
- "hint": "N3kx7G_hint",
1489
- "lineBody": "N3kx7G_lineBody",
1490
- "editorRoot": "N3kx7G_editorRoot"
1463
+ "lineToken": "oZhWGq_lineToken",
1464
+ "compactInput": "oZhWGq_compactInput",
1465
+ "lineKey": "oZhWGq_lineKey",
1466
+ "lineFold": "oZhWGq_lineFold",
1467
+ "lineFoldSpacer": "oZhWGq_lineFoldSpacer",
1468
+ "lineInvalid": "oZhWGq_lineInvalid",
1469
+ "addWrap": "oZhWGq_addWrap",
1470
+ "lineValue": "oZhWGq_lineValue",
1471
+ "hint": "oZhWGq_hint",
1472
+ "lineBody": "oZhWGq_lineBody",
1473
+ "lineNumber": "oZhWGq_lineNumber",
1474
+ "compactTextField": "oZhWGq_compactTextField",
1475
+ "valueTrigger": "oZhWGq_valueTrigger",
1476
+ "valueSlot": "oZhWGq_valueSlot",
1477
+ "hoverActions": "oZhWGq_hoverActions",
1478
+ "lineComment": "oZhWGq_lineComment",
1479
+ "editorRoot": "oZhWGq_editorRoot",
1480
+ "lineActions": "oZhWGq_lineActions",
1481
+ "lineRow": "oZhWGq_lineRow"
1491
1482
  };
1492
- //#endregion
1493
- //#region src/client/schema-form/TruncatedTooltip.tsx
1483
+ // src/client/schema-form/TruncatedTooltip.tsx
1494
1484
  function TruncatedTooltip({ label, children }) {
1495
1485
  const node = (0, react.useRef)(null);
1496
1486
  const watch = (0, react.useRef)(null);
@@ -1518,8 +1508,7 @@ window.__ModuleLoader__.load({
1518
1508
  children: (0, react.cloneElement)(children, { ref: anchor })
1519
1509
  });
1520
1510
  }
1521
- //#endregion
1522
- //#region src/client/schema-form/value.tsx
1511
+ // src/client/schema-form/value.tsx
1523
1512
  function valueText(value) {
1524
1513
  if (value === void 0 || value === null) return "";
1525
1514
  if (typeof value === "string") return value;
@@ -1610,8 +1599,7 @@ window.__ModuleLoader__.load({
1610
1599
  function SchemaFieldDefault({ owner }) {
1611
1600
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InlineValue, { owner });
1612
1601
  }
1613
- //#endregion
1614
- //#region src/client/schema-form/fields.tsx
1602
+ // src/client/schema-form/fields.tsx
1615
1603
  function parseFor(node, t) {
1616
1604
  switch (node.type) {
1617
1605
  case "number": return (text) => {
@@ -1723,13 +1711,11 @@ window.__ModuleLoader__.load({
1723
1711
  });
1724
1712
  }
1725
1713
  }
1726
- //#endregion
1727
- //#region src/client/controls/classes.ts
1714
+ // src/client/controls/classes.ts
1728
1715
  function classes(...names) {
1729
1716
  return names.filter((name) => typeof name === "string" && name !== "").join(" ");
1730
1717
  }
1731
- //#endregion
1732
- //#region src/client/schema-form/Editor.tsx
1718
+ // src/client/schema-form/Editor.tsx
1733
1719
  function Editor(props) {
1734
1720
  const { ns, state, face, t, resolveText, renderField } = props;
1735
1721
  const [toggled, setToggled] = (0, react.useState)(() => /* @__PURE__ */ new Set());
@@ -2268,8 +2254,7 @@ window.__ModuleLoader__.load({
2268
2254
  ]
2269
2255
  });
2270
2256
  }
2271
- //#endregion
2272
- //#region src/client/schema-form/SchemaForm.tsx
2257
+ // src/client/schema-form/SchemaForm.tsx
2273
2258
  function SchemaForm(props) {
2274
2259
  const { ns, face, t, resolveText, renderSlotChain } = props;
2275
2260
  const store = face.hooks.schemaForm;
@@ -2318,8 +2303,7 @@ window.__ModuleLoader__.load({
2318
2303
  owner.onEditText(text, parse ?? parseFor(owner.node, t));
2319
2304
  };
2320
2305
  }
2321
- //#endregion
2322
- //#region src/client/schema-form/index.ts
2306
+ // src/client/schema-form/index.ts
2323
2307
  var schema_form_exports = /* @__PURE__ */ __exportAll({
2324
2308
  InlineValue: () => InlineValue,
2325
2309
  NS: () => NS,
@@ -2363,11 +2347,11 @@ window.__ModuleLoader__.load({
2363
2347
  });
2364
2348
  }
2365
2349
  function install(ctx) {
2350
+ const hints = new SchemaFormHints(ctx.root);
2366
2351
  ctx.effect(() => ctx.locale.register(NS, {
2367
2352
  zh,
2368
2353
  en
2369
2354
  }), "ui-schema-form: dictionaries");
2370
- const hints = new SchemaFormHints(ctx);
2371
2355
  ctx.effect(() => ctx.slots.registerFactory({
2372
2356
  name: "settings.schema-form.form",
2373
2357
  scope: "root",
@@ -2457,8 +2441,7 @@ window.__ModuleLoader__.load({
2457
2441
  };
2458
2442
  }, "ui-schema-form: row registrations");
2459
2443
  }
2460
- //#endregion
2461
- //#region src/client/markdown-labels.ts
2444
+ // src/client/markdown-labels.ts
2462
2445
  function markdownLabels(t) {
2463
2446
  return {
2464
2447
  code: {
@@ -2468,9 +2451,8 @@ window.__ModuleLoader__.load({
2468
2451
  footnotes: t("markdown.footnotes")
2469
2452
  };
2470
2453
  }
2471
- //#endregion
2472
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/layout/layout.module.css.mjs
2473
- const css$13 = "._7Ar2dq_stack{flex-direction:column;min-width:0;display:flex}._7Ar2dq_row{flex-direction:row;align-items:center;min-width:0;display:flex}._7Ar2dq_gap0{gap:0}._7Ar2dq_gap2{gap:2px}._7Ar2dq_gap4{gap:4px}._7Ar2dq_gap6{gap:6px}._7Ar2dq_gap8{gap:8px}._7Ar2dq_gap10{gap:10px}._7Ar2dq_gap12{gap:12px}._7Ar2dq_gap14{gap:14px}._7Ar2dq_gap16{gap:16px}._7Ar2dq_alignStart{align-items:flex-start}._7Ar2dq_alignCenter{align-items:center}._7Ar2dq_alignEnd{align-items:flex-end}._7Ar2dq_justifyBetween{justify-content:space-between}._7Ar2dq_justifyEnd{justify-content:flex-end}._7Ar2dq_justifyCenter{justify-content:center}._7Ar2dq_wrap{flex-wrap:wrap}._7Ar2dq_grow{flex:auto;min-width:0}._7Ar2dq_push{margin-left:auto}._7Ar2dq_fill{box-sizing:border-box;width:100%;height:100%;overflow:hidden}._7Ar2dq_scroll{flex:auto;min-height:0;overflow-y:auto}._7Ar2dq_plain{margin:0;padding:0;list-style:none}._7Ar2dq_padNone{padding:0}._7Ar2dq_padCard{padding:8px 12px}._7Ar2dq_padBody{padding:8px 0}._7Ar2dq_padPage{padding:24px 28px}._7Ar2dq_padRow{padding:10px 12px}._7Ar2dq_padBlocking{padding:32px 40px}._7Ar2dq_text{margin:0}._7Ar2dq_sizeXs{font-size:11px;line-height:1.5}._7Ar2dq_sizeSm{font-size:12px;line-height:18px}._7Ar2dq_sizeMd{font-size:13px;line-height:20px}._7Ar2dq_sizeBase{font-size:14px;line-height:24px}._7Ar2dq_sizeLg{font-size:16px;line-height:24px}._7Ar2dq_tonePrimary{color:var(--dsw-alias-label-primary)}._7Ar2dq_toneSecondary{color:var(--dsw-alias-label-secondary)}._7Ar2dq_toneTertiary{color:var(--dsw-alias-label-tertiary)}._7Ar2dq_toneDanger{color:var(--dsw-alias-label-error,var(--dsw-alias-label-primary))}._7Ar2dq_weightMedium{font-weight:500}._7Ar2dq_strong{font-weight:600}._7Ar2dq_mono{word-break:break-all;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace}._7Ar2dq_truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._7Ar2dq_tabular{font-variant-numeric:tabular-nums}._7Ar2dq_boxed{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);border-radius:10px}._7Ar2dq_fixed{flex:none}._7Ar2dq_gapWide{gap:6px 20px}._7Ar2dq_narrow{min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%)}._7Ar2dq_wSearch{flex:none;width:360px;max-width:100%}";
2454
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/layout/layout.module.css.mjs
2455
+ const css$13 = ".uxI0LG_stack{flex-direction:column;min-width:0;display:flex}.uxI0LG_row{flex-direction:row;align-items:center;min-width:0;display:flex}.uxI0LG_gap0{gap:0}.uxI0LG_gap2{gap:2px}.uxI0LG_gap4{gap:4px}.uxI0LG_gap6{gap:6px}.uxI0LG_gap8{gap:8px}.uxI0LG_gap10{gap:10px}.uxI0LG_gap12{gap:12px}.uxI0LG_gap14{gap:14px}.uxI0LG_gap16{gap:16px}.uxI0LG_alignStart{align-items:flex-start}.uxI0LG_alignCenter{align-items:center}.uxI0LG_alignEnd{align-items:flex-end}.uxI0LG_justifyBetween{justify-content:space-between}.uxI0LG_justifyEnd{justify-content:flex-end}.uxI0LG_justifyCenter{justify-content:center}.uxI0LG_wrap{flex-wrap:wrap}.uxI0LG_grow{flex:auto;min-width:0}.uxI0LG_push{margin-left:auto}.uxI0LG_fill{box-sizing:border-box;width:100%;height:100%;overflow:hidden}.uxI0LG_scroll{flex:auto;min-height:0;overflow-y:auto}.uxI0LG_plain{margin:0;padding:0;list-style:none}.uxI0LG_padNone{padding:0}.uxI0LG_padCard{padding:8px 12px}.uxI0LG_padBody{padding:8px 0}.uxI0LG_padPage{padding:24px 28px}.uxI0LG_padRow{padding:10px 12px}.uxI0LG_padBlocking{padding:32px 40px}.uxI0LG_text{margin:0}.uxI0LG_sizeXs{font-size:11px;line-height:1.5}.uxI0LG_sizeSm{font-size:12px;line-height:18px}.uxI0LG_sizeMd{font-size:13px;line-height:20px}.uxI0LG_sizeBase{font-size:14px;line-height:24px}.uxI0LG_sizeLg{font-size:16px;line-height:24px}.uxI0LG_tonePrimary{color:var(--dsw-alias-label-primary)}.uxI0LG_toneSecondary{color:var(--dsw-alias-label-secondary)}.uxI0LG_toneTertiary{color:var(--dsw-alias-label-tertiary)}.uxI0LG_toneDanger{color:var(--dsw-alias-label-error,var(--dsw-alias-label-primary))}.uxI0LG_weightMedium{font-weight:500}.uxI0LG_strong{font-weight:600}.uxI0LG_mono{word-break:break-all;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace}.uxI0LG_truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.uxI0LG_tabular{font-variant-numeric:tabular-nums}.uxI0LG_boxed{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);border-radius:10px}.uxI0LG_fixed{flex:none}.uxI0LG_gapWide{gap:6px 20px}.uxI0LG_narrow{min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%)}.uxI0LG_wSearch{flex:none;width:360px;max-width:100%}";
2474
2456
  const tagId$13 = "@morlay/dsh-client-ui-primitives/layout.module.css";
2475
2457
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/layout.module.css\"]") === null) {
2476
2458
  const tag = document.createElement("style");
@@ -2480,58 +2462,57 @@ window.__ModuleLoader__.load({
2480
2462
  document.head.appendChild(tag);
2481
2463
  }
2482
2464
  var layout_module_css_default = {
2483
- "padRow": "_7Ar2dq_padRow",
2484
- "padCard": "_7Ar2dq_padCard",
2485
- "gap0": "_7Ar2dq_gap0",
2486
- "sizeBase": "_7Ar2dq_sizeBase",
2487
- "row": "_7Ar2dq_row",
2488
- "boxed": "_7Ar2dq_boxed",
2489
- "text": "_7Ar2dq_text",
2490
- "fill": "_7Ar2dq_fill",
2491
- "sizeMd": "_7Ar2dq_sizeMd",
2492
- "narrow": "_7Ar2dq_narrow",
2493
- "push": "_7Ar2dq_push",
2494
- "toneSecondary": "_7Ar2dq_toneSecondary",
2495
- "weightMedium": "_7Ar2dq_weightMedium",
2496
- "wrap": "_7Ar2dq_wrap",
2497
- "fixed": "_7Ar2dq_fixed",
2498
- "sizeXs": "_7Ar2dq_sizeXs",
2499
- "gap6": "_7Ar2dq_gap6",
2500
- "scroll": "_7Ar2dq_scroll",
2501
- "gap2": "_7Ar2dq_gap2",
2502
- "stack": "_7Ar2dq_stack",
2503
- "gap16": "_7Ar2dq_gap16",
2504
- "gap4": "_7Ar2dq_gap4",
2505
- "justifyEnd": "_7Ar2dq_justifyEnd",
2506
- "padPage": "_7Ar2dq_padPage",
2507
- "gap10": "_7Ar2dq_gap10",
2508
- "gap8": "_7Ar2dq_gap8",
2509
- "gap14": "_7Ar2dq_gap14",
2510
- "toneDanger": "_7Ar2dq_toneDanger",
2511
- "tabular": "_7Ar2dq_tabular",
2512
- "gapWide": "_7Ar2dq_gapWide",
2513
- "grow": "_7Ar2dq_grow",
2514
- "sizeSm": "_7Ar2dq_sizeSm",
2515
- "alignEnd": "_7Ar2dq_alignEnd",
2516
- "padBody": "_7Ar2dq_padBody",
2517
- "wSearch": "_7Ar2dq_wSearch",
2518
- "sizeLg": "_7Ar2dq_sizeLg",
2519
- "tonePrimary": "_7Ar2dq_tonePrimary",
2520
- "toneTertiary": "_7Ar2dq_toneTertiary",
2521
- "alignCenter": "_7Ar2dq_alignCenter",
2522
- "plain": "_7Ar2dq_plain",
2523
- "justifyCenter": "_7Ar2dq_justifyCenter",
2524
- "strong": "_7Ar2dq_strong",
2525
- "mono": "_7Ar2dq_mono",
2526
- "padNone": "_7Ar2dq_padNone",
2527
- "padBlocking": "_7Ar2dq_padBlocking",
2528
- "truncate": "_7Ar2dq_truncate",
2529
- "alignStart": "_7Ar2dq_alignStart",
2530
- "justifyBetween": "_7Ar2dq_justifyBetween",
2531
- "gap12": "_7Ar2dq_gap12"
2465
+ "padRow": "uxI0LG_padRow",
2466
+ "justifyCenter": "uxI0LG_justifyCenter",
2467
+ "weightMedium": "uxI0LG_weightMedium",
2468
+ "boxed": "uxI0LG_boxed",
2469
+ "padPage": "uxI0LG_padPage",
2470
+ "gap14": "uxI0LG_gap14",
2471
+ "fixed": "uxI0LG_fixed",
2472
+ "gap16": "uxI0LG_gap16",
2473
+ "gap2": "uxI0LG_gap2",
2474
+ "gap8": "uxI0LG_gap8",
2475
+ "toneTertiary": "uxI0LG_toneTertiary",
2476
+ "gap6": "uxI0LG_gap6",
2477
+ "padBody": "uxI0LG_padBody",
2478
+ "gap0": "uxI0LG_gap0",
2479
+ "justifyEnd": "uxI0LG_justifyEnd",
2480
+ "plain": "uxI0LG_plain",
2481
+ "padCard": "uxI0LG_padCard",
2482
+ "sizeXs": "uxI0LG_sizeXs",
2483
+ "row": "uxI0LG_row",
2484
+ "toneSecondary": "uxI0LG_toneSecondary",
2485
+ "wSearch": "uxI0LG_wSearch",
2486
+ "tonePrimary": "uxI0LG_tonePrimary",
2487
+ "scroll": "uxI0LG_scroll",
2488
+ "stack": "uxI0LG_stack",
2489
+ "text": "uxI0LG_text",
2490
+ "gap12": "uxI0LG_gap12",
2491
+ "padNone": "uxI0LG_padNone",
2492
+ "fill": "uxI0LG_fill",
2493
+ "sizeSm": "uxI0LG_sizeSm",
2494
+ "strong": "uxI0LG_strong",
2495
+ "mono": "uxI0LG_mono",
2496
+ "tabular": "uxI0LG_tabular",
2497
+ "gap10": "uxI0LG_gap10",
2498
+ "sizeLg": "uxI0LG_sizeLg",
2499
+ "alignCenter": "uxI0LG_alignCenter",
2500
+ "alignStart": "uxI0LG_alignStart",
2501
+ "wrap": "uxI0LG_wrap",
2502
+ "grow": "uxI0LG_grow",
2503
+ "push": "uxI0LG_push",
2504
+ "padBlocking": "uxI0LG_padBlocking",
2505
+ "sizeBase": "uxI0LG_sizeBase",
2506
+ "justifyBetween": "uxI0LG_justifyBetween",
2507
+ "toneDanger": "uxI0LG_toneDanger",
2508
+ "gapWide": "uxI0LG_gapWide",
2509
+ "narrow": "uxI0LG_narrow",
2510
+ "gap4": "uxI0LG_gap4",
2511
+ "alignEnd": "uxI0LG_alignEnd",
2512
+ "sizeMd": "uxI0LG_sizeMd",
2513
+ "truncate": "uxI0LG_truncate"
2532
2514
  };
2533
- //#endregion
2534
- //#region src/client/layout/scales.ts
2515
+ // src/client/layout/scales.ts
2535
2516
  function gapClass(css, gap) {
2536
2517
  if (gap === void 0) return void 0;
2537
2518
  return gap === "wide" ? css.gapWide : css[`gap${gap}`];
@@ -2571,8 +2552,7 @@ window.__ModuleLoader__.load({
2571
2552
  if (weight === void 0) return void 0;
2572
2553
  return weight === "medium" ? css.weightMedium : css.strong;
2573
2554
  }
2574
- //#endregion
2575
- //#region src/client/layout/Row.tsx
2555
+ // src/client/layout/Row.tsx
2576
2556
  const Row = (0, react.forwardRef)(function Row({ as: Element = "div", gap, align, justify, wrap = false, grow = false, boxed = false, fixed = false, narrow = false, push = false, plain = false, pad, className, children, ...rest }, ref) {
2577
2557
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Element, {
2578
2558
  ref,
@@ -2581,8 +2561,7 @@ window.__ModuleLoader__.load({
2581
2561
  children
2582
2562
  });
2583
2563
  });
2584
- //#endregion
2585
- //#region src/client/layout/Stack.tsx
2564
+ // src/client/layout/Stack.tsx
2586
2565
  const Stack = (0, react.forwardRef)(function Stack({ as: Element = "div", gap, align, pad, grow = false, boxed = false, fixed = false, narrow = false, fill = false, scroll = false, plain = false, className, children, ...rest }, ref) {
2587
2566
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Element, {
2588
2567
  ref,
@@ -2591,17 +2570,15 @@ window.__ModuleLoader__.load({
2591
2570
  children
2592
2571
  });
2593
2572
  });
2594
- //#endregion
2595
- //#region src/client/layout/Text.tsx
2573
+ // src/client/layout/Text.tsx
2596
2574
  function Text({ as: Element = "span", size, tone, weight, mono = false, truncate = false, tabular = false, className, children }) {
2597
2575
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Element, {
2598
2576
  className: classes(layout_module_css_default.text, sizeClass(layout_module_css_default, size), toneClass(layout_module_css_default, tone), weightClass(layout_module_css_default, weight), mono ? layout_module_css_default.mono : void 0, truncate ? layout_module_css_default.truncate : void 0, tabular ? layout_module_css_default.tabular : void 0, className),
2599
2577
  children
2600
2578
  });
2601
2579
  }
2602
- //#endregion
2603
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/settings-form/SettingsFieldRow.module.css.mjs
2604
- const css$12 = ".Il1Dtq_row{flex-direction:column;display:flex}.Il1Dtq_row[data-divider=true]{border-top:.5px solid var(--dsw-alias-border-l2)}.Il1Dtq_body{flex-direction:column;gap:6px;padding:12px 0;display:flex}.Il1Dtq_inline{flex-direction:row;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;display:flex}.Il1Dtq_text{flex-direction:column;gap:2px;min-width:0;display:flex}.Il1Dtq_label{color:var(--dsw-alias-label-primary);align-items:center;gap:8px;font-size:13px;font-weight:500;line-height:1.5;display:flex}.Il1Dtq_badge{corner-shape:round;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-module-platform);border-radius:999px;align-items:center;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px;display:inline-flex}.Il1Dtq_reset{font:inherit;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;line-height:1.5}.Il1Dtq_reset:hover:not(:disabled){color:var(--dsw-alias-label-primary)}.Il1Dtq_reset:disabled{cursor:default}.Il1Dtq_hint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:1.5}.Il1Dtq_invalid{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:1.5}";
2580
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/settings-form/SettingsFieldRow.module.css.mjs
2581
+ const css$12 = "._0Kpzea_row{flex-direction:column;display:flex}._0Kpzea_row[data-divider=true]{border-top:.5px solid var(--dsw-alias-border-l2)}._0Kpzea_body{flex-direction:column;gap:6px;padding:12px 0;display:flex}._0Kpzea_inline{flex-direction:row;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;display:flex}._0Kpzea_text{flex-direction:column;gap:2px;min-width:0;display:flex}._0Kpzea_label{color:var(--dsw-alias-label-primary);align-items:center;gap:8px;font-size:13px;font-weight:500;line-height:1.5;display:flex}._0Kpzea_badge{corner-shape:round;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-module-platform);border-radius:999px;align-items:center;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px;display:inline-flex}._0Kpzea_reset{font:inherit;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;line-height:1.5}._0Kpzea_reset:hover:not(:disabled){color:var(--dsw-alias-label-primary)}._0Kpzea_reset:disabled{cursor:default}._0Kpzea_hint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:1.5}._0Kpzea_invalid{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:1.5}";
2605
2582
  const tagId$12 = "@morlay/dsh-client-ui-primitives/SettingsFieldRow.module.css";
2606
2583
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/SettingsFieldRow.module.css\"]") === null) {
2607
2584
  const tag = document.createElement("style");
@@ -2611,18 +2588,17 @@ window.__ModuleLoader__.load({
2611
2588
  document.head.appendChild(tag);
2612
2589
  }
2613
2590
  var SettingsFieldRow_module_css_default = {
2614
- "row": "Il1Dtq_row",
2615
- "reset": "Il1Dtq_reset",
2616
- "text": "Il1Dtq_text",
2617
- "inline": "Il1Dtq_inline",
2618
- "hint": "Il1Dtq_hint",
2619
- "badge": "Il1Dtq_badge",
2620
- "body": "Il1Dtq_body",
2621
- "invalid": "Il1Dtq_invalid",
2622
- "label": "Il1Dtq_label"
2591
+ "body": "_0Kpzea_body",
2592
+ "reset": "_0Kpzea_reset",
2593
+ "invalid": "_0Kpzea_invalid",
2594
+ "text": "_0Kpzea_text",
2595
+ "label": "_0Kpzea_label",
2596
+ "badge": "_0Kpzea_badge",
2597
+ "hint": "_0Kpzea_hint",
2598
+ "row": "_0Kpzea_row",
2599
+ "inline": "_0Kpzea_inline"
2623
2600
  };
2624
- //#endregion
2625
- //#region src/client/settings-form/SettingsFieldRow.tsx
2601
+ // src/client/settings-form/SettingsFieldRow.tsx
2626
2602
  function SettingsFieldRow({ label, hint, layout = "stack", divider = false, overriddenLabel, resetLabel, onReset, invalid, children, className, ...rest }) {
2627
2603
  const labelNode = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
2628
2604
  className: SettingsFieldRow_module_css_default.label,
@@ -2677,9 +2653,8 @@ window.__ModuleLoader__.load({
2677
2653
  }), invalidNode]
2678
2654
  });
2679
2655
  }
2680
- //#endregion
2681
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/Bubble.module.css.mjs
2682
- const css$11 = ".Iy2DYG_bubble{background:var(--dsw-specific-bubble);border-radius:var(--dsw-radius-xl);max-width:100%;font-size:var(--dsh-content-font-size,14px);line-height:calc(22px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;padding:10px 16px}";
2656
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/Bubble.module.css.mjs
2657
+ const css$11 = ".LQ5bkq_bubble{background:var(--dsw-specific-bubble);border-radius:var(--dsw-radius-xl);max-width:100%;font-size:var(--dsh-content-font-size,14px);line-height:calc(22px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;padding:10px 16px}";
2683
2658
  const tagId$11 = "@morlay/dsh-client-ui-primitives/Bubble.module.css";
2684
2659
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/Bubble.module.css\"]") === null) {
2685
2660
  const tag = document.createElement("style");
@@ -2688,9 +2663,8 @@ window.__ModuleLoader__.load({
2688
2663
  tag.textContent = css$11;
2689
2664
  document.head.appendChild(tag);
2690
2665
  }
2691
- var Bubble_module_css_default = { "bubble": "Iy2DYG_bubble" };
2692
- //#endregion
2693
- //#region src/client/controls/Bubble.tsx
2666
+ var Bubble_module_css_default = { "bubble": "LQ5bkq_bubble" };
2667
+ // src/client/controls/Bubble.tsx
2694
2668
  function Bubble({ className, children, ...rest }) {
2695
2669
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2696
2670
  className: classes(Bubble_module_css_default.bubble, className),
@@ -2698,9 +2672,8 @@ window.__ModuleLoader__.load({
2698
2672
  children
2699
2673
  });
2700
2674
  }
2701
- //#endregion
2702
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/Button.module.css.mjs
2703
- const css$10 = ".LWgVXW_label{white-space:nowrap}.LWgVXW_danger{--dsw-alias-button-primary-fill:var(--dsw-alias-state-error-primary)}";
2675
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/Button.module.css.mjs
2676
+ const css$10 = ".SBA8ka_label{white-space:nowrap}.SBA8ka_danger{--dsw-alias-button-primary-fill:var(--dsw-alias-state-error-primary)}";
2704
2677
  const tagId$10 = "@morlay/dsh-client-ui-primitives/Button.module.css";
2705
2678
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/Button.module.css\"]") === null) {
2706
2679
  const tag = document.createElement("style");
@@ -2710,11 +2683,10 @@ window.__ModuleLoader__.load({
2710
2683
  document.head.appendChild(tag);
2711
2684
  }
2712
2685
  var Button_module_css_default = {
2713
- "label": "LWgVXW_label",
2714
- "danger": "LWgVXW_danger"
2686
+ "label": "SBA8ka_label",
2687
+ "danger": "SBA8ka_danger"
2715
2688
  };
2716
- //#endregion
2717
- //#region src/client/controls/Button.tsx
2689
+ // src/client/controls/Button.tsx
2718
2690
  const Button = (0, react.forwardRef)(function Button({ className, tone, ...rest }, ref) {
2719
2691
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
2720
2692
  ref,
@@ -2723,9 +2695,8 @@ window.__ModuleLoader__.load({
2723
2695
  ...rest
2724
2696
  });
2725
2697
  });
2726
- //#endregion
2727
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/DisclosureRow.module.css.mjs
2728
- const css$9 = "._2HN-kW_content{flex:auto;min-width:0}._2HN-kW_contentLayout{align-items:center;gap:8px;width:100%;min-width:0;display:flex}";
2698
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/DisclosureRow.module.css.mjs
2699
+ const css$9 = ".BDL1HG_content{flex:auto;min-width:0}.BDL1HG_contentLayout{align-items:center;gap:8px;width:100%;min-width:0;display:flex}";
2729
2700
  const tagId$9 = "@morlay/dsh-client-ui-primitives/DisclosureRow.module.css";
2730
2701
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/DisclosureRow.module.css\"]") === null) {
2731
2702
  const tag = document.createElement("style");
@@ -2735,11 +2706,10 @@ window.__ModuleLoader__.load({
2735
2706
  document.head.appendChild(tag);
2736
2707
  }
2737
2708
  var DisclosureRow_module_css_default = {
2738
- "contentLayout": "_2HN-kW_contentLayout",
2739
- "content": "_2HN-kW_content"
2709
+ "contentLayout": "BDL1HG_contentLayout",
2710
+ "content": "BDL1HG_content"
2740
2711
  };
2741
- //#endregion
2742
- //#region src/client/controls/DisclosureRow.tsx
2712
+ // src/client/controls/DisclosureRow.tsx
2743
2713
  function DisclosureRow(props) {
2744
2714
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
2745
2715
  contentClassName: DisclosureRow_module_css_default.content,
@@ -2747,9 +2717,8 @@ window.__ModuleLoader__.load({
2747
2717
  ...props
2748
2718
  });
2749
2719
  }
2750
- //#endregion
2751
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/SeatButton.module.css.mjs
2752
- const css$8 = ".JqQ4qG_seat{border-radius:var(--dsw-radius-sm);min-width:0;max-width:min(100%,240px);min-height:28px;color:var(--dsw-alias-label-primary);white-space:nowrap;cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:0 8px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex}.JqQ4qG_seat:not(:disabled):hover,.JqQ4qG_seat[aria-expanded=true],.JqQ4qG_expanded{background:var(--dsw-alias-interactive-bg-hover)}.JqQ4qG_seat:disabled{cursor:default;color:var(--dsw-alias-label-quaternary)}.JqQ4qG_icon{color:var(--dsw-alias-label-primary);flex:none;align-items:center;display:inline-flex}.JqQ4qG_label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.JqQ4qG_chevron{color:var(--dsw-alias-label-caption);flex:none;display:inline-flex}";
2720
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/SeatButton.module.css.mjs
2721
+ const css$8 = ".io5HbW_seat{border-radius:var(--dsw-radius-sm);min-width:0;max-width:min(100%,240px);min-height:28px;color:var(--dsw-alias-label-primary);white-space:nowrap;cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:0 8px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex}.io5HbW_seat:not(:disabled):hover,.io5HbW_seat[aria-expanded=true],.io5HbW_expanded{background:var(--dsw-alias-interactive-bg-hover)}.io5HbW_seat:disabled{cursor:default;color:var(--dsw-alias-label-quaternary)}.io5HbW_icon{color:var(--dsw-alias-label-primary);flex:none;align-items:center;display:inline-flex}.io5HbW_label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.io5HbW_chevron{color:var(--dsw-alias-label-caption);flex:none;display:inline-flex}";
2753
2722
  const tagId$8 = "@morlay/dsh-client-ui-primitives/SeatButton.module.css";
2754
2723
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/SeatButton.module.css\"]") === null) {
2755
2724
  const tag = document.createElement("style");
@@ -2759,14 +2728,13 @@ window.__ModuleLoader__.load({
2759
2728
  document.head.appendChild(tag);
2760
2729
  }
2761
2730
  var SeatButton_module_css_default = {
2762
- "label": "JqQ4qG_label",
2763
- "chevron": "JqQ4qG_chevron",
2764
- "icon": "JqQ4qG_icon",
2765
- "expanded": "JqQ4qG_expanded",
2766
- "seat": "JqQ4qG_seat"
2731
+ "seat": "io5HbW_seat",
2732
+ "icon": "io5HbW_icon",
2733
+ "label": "io5HbW_label",
2734
+ "expanded": "io5HbW_expanded",
2735
+ "chevron": "io5HbW_chevron"
2767
2736
  };
2768
- //#endregion
2769
- //#region src/client/controls/SeatButton.tsx
2737
+ // src/client/controls/SeatButton.tsx
2770
2738
  function SeatButton({ icon, label, expanded = false, chevron, type = "button", className, ...rest }) {
2771
2739
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
2772
2740
  type,
@@ -2788,9 +2756,8 @@ window.__ModuleLoader__.load({
2788
2756
  ]
2789
2757
  });
2790
2758
  }
2791
- //#endregion
2792
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/Spinner.module.css.mjs
2793
- const css$7 = "._1uNobG_spinner{border:2px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-label-primary);border-radius:50%;width:28px;height:28px;animation:.9s linear infinite _1uNobG_spin}@keyframes _1uNobG_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}";
2759
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/Spinner.module.css.mjs
2760
+ const css$7 = ".If7fBq_spinner{border:2px solid var(--dsw-alias-border-l2);border-top-color:var(--dsw-alias-label-primary);border-radius:50%;width:28px;height:28px;animation:.9s linear infinite If7fBq_spin}@keyframes If7fBq_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}";
2794
2761
  const tagId$7 = "@morlay/dsh-client-ui-primitives/Spinner.module.css";
2795
2762
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/Spinner.module.css\"]") === null) {
2796
2763
  const tag = document.createElement("style");
@@ -2800,11 +2767,10 @@ window.__ModuleLoader__.load({
2800
2767
  document.head.appendChild(tag);
2801
2768
  }
2802
2769
  var Spinner_module_css_default = {
2803
- "spinner": "_1uNobG_spinner",
2804
- "spin": "_1uNobG_spin"
2770
+ "spinner": "If7fBq_spinner",
2771
+ "spin": "If7fBq_spin"
2805
2772
  };
2806
- //#endregion
2807
- //#region src/client/controls/Spinner.tsx
2773
+ // src/client/controls/Spinner.tsx
2808
2774
  function Spinner({ label }) {
2809
2775
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2810
2776
  className: Spinner_module_css_default.spinner,
@@ -2812,9 +2778,8 @@ window.__ModuleLoader__.load({
2812
2778
  "aria-label": label
2813
2779
  });
2814
2780
  }
2815
- //#endregion
2816
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/TimeLabel.module.css.mjs
2817
- const css$6 = ".P8Yiia_label{color:var(--dsw-alias-label-tertiary);white-space:nowrap;opacity:0;padding:0;font-size:14px;line-height:24px;transition:opacity 80ms}[data-time-hover-root]:hover .P8Yiia_label,[data-time-hover-root]:focus-within .P8Yiia_label{opacity:1}";
2781
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/TimeLabel.module.css.mjs
2782
+ const css$6 = ".rbYIyq_label{color:var(--dsw-alias-label-tertiary);white-space:nowrap;opacity:0;padding:0;font-size:14px;line-height:24px;transition:opacity 80ms}[data-time-hover-root]:hover .rbYIyq_label,[data-time-hover-root]:focus-within .rbYIyq_label{opacity:1}";
2818
2783
  const tagId$6 = "@morlay/dsh-client-ui-primitives/TimeLabel.module.css";
2819
2784
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/TimeLabel.module.css\"]") === null) {
2820
2785
  const tag = document.createElement("style");
@@ -2823,9 +2788,8 @@ window.__ModuleLoader__.load({
2823
2788
  tag.textContent = css$6;
2824
2789
  document.head.appendChild(tag);
2825
2790
  }
2826
- var TimeLabel_module_css_default = { "label": "P8Yiia_label" };
2827
- //#endregion
2828
- //#region src/client/controls/TimeLabel.tsx
2791
+ var TimeLabel_module_css_default = { "label": "rbYIyq_label" };
2792
+ // src/client/controls/TimeLabel.tsx
2829
2793
  function TimeLabel({ className, children, ...rest }) {
2830
2794
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2831
2795
  className: classes(TimeLabel_module_css_default.label, className),
@@ -2833,9 +2797,8 @@ window.__ModuleLoader__.load({
2833
2797
  children
2834
2798
  });
2835
2799
  }
2836
- //#endregion
2837
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/VisuallyHidden.module.css.mjs
2838
- const css$5 = ".d5ueOG_hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}";
2800
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/VisuallyHidden.module.css.mjs
2801
+ const css$5 = ".UjjB8a_hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}";
2839
2802
  const tagId$5 = "@morlay/dsh-client-ui-primitives/VisuallyHidden.module.css";
2840
2803
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/VisuallyHidden.module.css\"]") === null) {
2841
2804
  const tag = document.createElement("style");
@@ -2844,9 +2807,8 @@ window.__ModuleLoader__.load({
2844
2807
  tag.textContent = css$5;
2845
2808
  document.head.appendChild(tag);
2846
2809
  }
2847
- var VisuallyHidden_module_css_default = { "hidden": "d5ueOG_hidden" };
2848
- //#endregion
2849
- //#region src/client/controls/VisuallyHidden.tsx
2810
+ var VisuallyHidden_module_css_default = { "hidden": "UjjB8a_hidden" };
2811
+ // src/client/controls/VisuallyHidden.tsx
2850
2812
  function VisuallyHidden({ children, ...rest }) {
2851
2813
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2852
2814
  className: VisuallyHidden_module_css_default.hidden,
@@ -2854,9 +2816,8 @@ window.__ModuleLoader__.load({
2854
2816
  children
2855
2817
  });
2856
2818
  }
2857
- //#endregion
2858
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/IconButton.module.css.mjs
2859
- const css$4 = ".AibFna_iconButton{box-sizing:border-box;width:28px;height:28px;color:var(--dsw-alias-label-secondary);border-radius:var(--dsw-radius-sm);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.AibFna_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.AibFna_iconButton:disabled{cursor:not-allowed;opacity:.4}.AibFna_iconButton:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.AibFna_sm{width:20px;height:20px;padding:0}.AibFna_circle{color:var(--dsw-alias-label-tertiary);border-radius:28px;padding:6px}.AibFna_circle:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}";
2819
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/IconButton.module.css.mjs
2820
+ const css$4 = ".G842ma_iconButton{box-sizing:border-box;width:28px;height:28px;color:var(--dsw-alias-label-secondary);border-radius:var(--dsw-radius-sm);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.G842ma_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.G842ma_iconButton:disabled{cursor:not-allowed;opacity:.4}.G842ma_iconButton:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.G842ma_sm{width:20px;height:20px;padding:0}.G842ma_circle{color:var(--dsw-alias-label-tertiary);border-radius:28px;padding:6px}.G842ma_circle:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}";
2860
2821
  const tagId$4 = "@morlay/dsh-client-ui-primitives/IconButton.module.css";
2861
2822
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/IconButton.module.css\"]") === null) {
2862
2823
  const tag = document.createElement("style");
@@ -2866,12 +2827,11 @@ window.__ModuleLoader__.load({
2866
2827
  document.head.appendChild(tag);
2867
2828
  }
2868
2829
  var IconButton_module_css_default = {
2869
- "sm": "AibFna_sm",
2870
- "circle": "AibFna_circle",
2871
- "iconButton": "AibFna_iconButton"
2830
+ "circle": "G842ma_circle",
2831
+ "iconButton": "G842ma_iconButton",
2832
+ "sm": "G842ma_sm"
2872
2833
  };
2873
- //#endregion
2874
- //#region src/client/controls/IconButton.tsx
2834
+ // src/client/controls/IconButton.tsx
2875
2835
  function IconButton({ label, children, type = "button", shape = "square", size = "md", className, ...rest }) {
2876
2836
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2877
2837
  type,
@@ -2882,9 +2842,8 @@ window.__ModuleLoader__.load({
2882
2842
  children
2883
2843
  });
2884
2844
  }
2885
- //#endregion
2886
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/ModelRouteList.module.css.mjs
2887
- const css$3 = "._1vK46q_list{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-lg);gap:6px;min-width:0;max-height:280px;margin:0;padding:10px;display:grid;overflow:auto}._1vK46q_group{gap:6px;display:grid}._1vK46q_group+._1vK46q_group{border-top:.5px solid var(--dsw-alias-border-l3);margin-top:4px;padding-top:10px}._1vK46q_provider{color:var(--dsw-alias-label-tertiary);padding:0 6px;font-size:11px;font-weight:500}._1vK46q_item{border-radius:var(--dsw-radius-md);cursor:pointer;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;min-width:0;padding:6px;display:grid}._1vK46q_item:hover{background:var(--dsw-alias-bg-layer-4)}._1vK46q_item:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}._1vK46q_item[aria-disabled=true]{cursor:not-allowed;opacity:.4}._1vK46q_picked{background:var(--dsw-alias-interactive-bg-hover)}._1vK46q_text{min-width:0}._1vK46q_name{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary);font-size:13px;display:block;overflow:hidden}._1vK46q_id{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-tertiary);margin-top:2px;font-size:11px;display:block;overflow:hidden}._1vK46q_notice{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:1.5}._1vK46q_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:1.5}";
2845
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/ModelRouteList.module.css.mjs
2846
+ const css$3 = ".aGmQkW_list{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-lg);gap:6px;min-width:0;max-height:280px;margin:0;padding:10px;display:grid;overflow:auto}.aGmQkW_group{gap:6px;display:grid}.aGmQkW_group+.aGmQkW_group{border-top:.5px solid var(--dsw-alias-border-l3);margin-top:4px;padding-top:10px}.aGmQkW_provider{color:var(--dsw-alias-label-tertiary);padding:0 6px;font-size:11px;font-weight:500}.aGmQkW_item{border-radius:var(--dsw-radius-md);cursor:pointer;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;min-width:0;padding:6px;display:grid}.aGmQkW_item:hover{background:var(--dsw-alias-bg-layer-4)}.aGmQkW_item:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.aGmQkW_item[aria-disabled=true]{cursor:not-allowed;opacity:.4}.aGmQkW_picked{background:var(--dsw-alias-interactive-bg-hover)}.aGmQkW_text{min-width:0}.aGmQkW_name{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary);font-size:13px;display:block;overflow:hidden}.aGmQkW_id{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-tertiary);margin-top:2px;font-size:11px;display:block;overflow:hidden}.aGmQkW_notice{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:1.5}.aGmQkW_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:1.5}";
2888
2847
  const tagId$3 = "@morlay/dsh-client-ui-primitives/ModelRouteList.module.css";
2889
2848
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/ModelRouteList.module.css\"]") === null) {
2890
2849
  const tag = document.createElement("style");
@@ -2894,19 +2853,18 @@ window.__ModuleLoader__.load({
2894
2853
  document.head.appendChild(tag);
2895
2854
  }
2896
2855
  var ModelRouteList_module_css_default = {
2897
- "picked": "_1vK46q_picked",
2898
- "id": "_1vK46q_id",
2899
- "notice": "_1vK46q_notice",
2900
- "text": "_1vK46q_text",
2901
- "item": "_1vK46q_item",
2902
- "error": "_1vK46q_error",
2903
- "name": "_1vK46q_name",
2904
- "group": "_1vK46q_group",
2905
- "list": "_1vK46q_list",
2906
- "provider": "_1vK46q_provider"
2856
+ "error": "aGmQkW_error",
2857
+ "id": "aGmQkW_id",
2858
+ "picked": "aGmQkW_picked",
2859
+ "name": "aGmQkW_name",
2860
+ "text": "aGmQkW_text",
2861
+ "notice": "aGmQkW_notice",
2862
+ "provider": "aGmQkW_provider",
2863
+ "list": "aGmQkW_list",
2864
+ "group": "aGmQkW_group",
2865
+ "item": "aGmQkW_item"
2907
2866
  };
2908
- //#endregion
2909
- //#region src/client/controls/ModelRouteList.tsx
2867
+ // src/client/controls/ModelRouteList.tsx
2910
2868
  function ModelRouteList({ label, candidates, selectedKey, disabled = false, status, loadingLabel, errorLabel, emptyLabel, onSelect }) {
2911
2869
  if (status === "loading") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2912
2870
  className: ModelRouteList_module_css_default.notice,
@@ -2976,9 +2934,8 @@ window.__ModuleLoader__.load({
2976
2934
  }, provider))
2977
2935
  });
2978
2936
  }
2979
- //#endregion
2980
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/MultilineField.module.css.mjs
2981
- const css$2 = ".V0rRdq_multiline{box-sizing:border-box;width:100%;min-height:64px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);resize:vertical;padding:6px 12px;font-family:inherit;font-size:13px;line-height:1.5}.V0rRdq_multiline:disabled{cursor:not-allowed;opacity:.4}.V0rRdq_multiline:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}";
2937
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/MultilineField.module.css.mjs
2938
+ const css$2 = ".tafk7W_multiline{box-sizing:border-box;width:100%;min-height:64px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);resize:vertical;padding:6px 12px;font-family:inherit;font-size:13px;line-height:1.5}.tafk7W_multiline:disabled{cursor:not-allowed;opacity:.4}.tafk7W_multiline:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}";
2982
2939
  const tagId$2 = "@morlay/dsh-client-ui-primitives/MultilineField.module.css";
2983
2940
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/MultilineField.module.css\"]") === null) {
2984
2941
  const tag = document.createElement("style");
@@ -2987,9 +2944,8 @@ window.__ModuleLoader__.load({
2987
2944
  tag.textContent = css$2;
2988
2945
  document.head.appendChild(tag);
2989
2946
  }
2990
- var MultilineField_module_css_default = { "multiline": "V0rRdq_multiline" };
2991
- //#endregion
2992
- //#region src/client/controls/MultilineField.tsx
2947
+ var MultilineField_module_css_default = { "multiline": "tafk7W_multiline" };
2948
+ // src/client/controls/MultilineField.tsx
2993
2949
  function MultilineField({ rows = 3, className, ...rest }) {
2994
2950
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
2995
2951
  rows,
@@ -2998,9 +2954,8 @@ window.__ModuleLoader__.load({
2998
2954
  ...rest
2999
2955
  });
3000
2956
  }
3001
- //#endregion
3002
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/SearchSelect.module.css.mjs
3003
- const css$1 = ".kEYv4q_trigger{white-space:nowrap;height:32px}.kEYv4q_searchRow{border-bottom:.5px solid var(--dsw-alias-border-l2);align-items:center;padding:4px 8px 8px;display:flex}.kEYv4q_searchInput{width:100%;color:var(--dsw-alias-label-primary);background:0 0;border:none;outline:none;padding:2px 0;font-family:inherit;font-size:13px;line-height:1.5}.kEYv4q_empty{color:var(--dsw-alias-label-tertiary);margin:0;padding:8px;font-size:12px;line-height:1.5}";
2957
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/SearchSelect.module.css.mjs
2958
+ const css$1 = ".pNIIcq_trigger{white-space:nowrap;height:32px}.pNIIcq_searchRow{border-bottom:.5px solid var(--dsw-alias-border-l2);align-items:center;padding:4px 8px 8px;display:flex}.pNIIcq_searchInput{width:100%;color:var(--dsw-alias-label-primary);background:0 0;border:none;outline:none;padding:2px 0;font-family:inherit;font-size:13px;line-height:1.5}.pNIIcq_empty{color:var(--dsw-alias-label-tertiary);margin:0;padding:8px;font-size:12px;line-height:1.5}";
3004
2959
  const tagId$1 = "@morlay/dsh-client-ui-primitives/SearchSelect.module.css";
3005
2960
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/SearchSelect.module.css\"]") === null) {
3006
2961
  const tag = document.createElement("style");
@@ -3010,13 +2965,12 @@ window.__ModuleLoader__.load({
3010
2965
  document.head.appendChild(tag);
3011
2966
  }
3012
2967
  var SearchSelect_module_css_default = {
3013
- "searchInput": "kEYv4q_searchInput",
3014
- "searchRow": "kEYv4q_searchRow",
3015
- "trigger": "kEYv4q_trigger",
3016
- "empty": "kEYv4q_empty"
2968
+ "trigger": "pNIIcq_trigger",
2969
+ "searchRow": "pNIIcq_searchRow",
2970
+ "searchInput": "pNIIcq_searchInput",
2971
+ "empty": "pNIIcq_empty"
3017
2972
  };
3018
- //#endregion
3019
- //#region src/client/controls/SearchSelect.tsx
2973
+ // src/client/controls/SearchSelect.tsx
3020
2974
  function SearchSelect({ label, value, emptyLabel, options, disabled = false, searchLabel, noMatchLabel, onSelect }) {
3021
2975
  const [open, setOpen] = (0, react.useState)(false);
3022
2976
  const [query, setQuery] = (0, react.useState)("");
@@ -3093,8 +3047,7 @@ window.__ModuleLoader__.load({
3093
3047
  ]
3094
3048
  });
3095
3049
  }
3096
- //#endregion
3097
- //#region src/client/controls/tags.ts
3050
+ // src/client/controls/tags.ts
3098
3051
  function parseTagList(text) {
3099
3052
  const seen = /* @__PURE__ */ new Set();
3100
3053
  const names = [];
@@ -3114,9 +3067,8 @@ window.__ModuleLoader__.load({
3114
3067
  }
3115
3068
  return merged;
3116
3069
  }
3117
- //#endregion
3118
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/client/dsh-client-ui-primitives/src/client/controls/TagInput.module.css.mjs
3119
- const css = ".Qg7I9G_row{align-items:flex-start;gap:8px;width:100%;display:flex}.Qg7I9G_anchor{flex:auto;width:100%;min-width:0;display:flex}.Qg7I9G_box{box-sizing:border-box;background:var(--dsw-alias-bg-layer-3);border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);flex-flow:wrap;align-items:center;gap:4px 6px;width:100%;min-height:32px;padding:4px 8px;display:flex}.Qg7I9G_input{min-width:120px;color:var(--dsw-alias-label-primary);background:0 0;border:none;outline:none;flex:120px;padding:2px 0;font-family:inherit;font-size:13px;line-height:1.5}.Qg7I9G_chip{corner-shape:round;white-space:nowrap;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-module-platform);border-radius:999px;align-items:center;gap:2px;padding:1px 4px 1px 8px;font-size:11px;font-weight:500;line-height:17px;display:inline-flex}.Qg7I9G_chipRemove{box-sizing:border-box;width:14px;height:14px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.Qg7I9G_chipRemove:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Qg7I9G_chipRemove:disabled{cursor:not-allowed;opacity:.4}.Qg7I9G_chipRemove:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:0}.Qg7I9G_empty{color:var(--dsw-alias-label-tertiary);margin:0;padding:8px;font-size:12px;line-height:1.5}";
3070
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/client/dsh-client-ui-primitives/src/client/controls/TagInput.module.css.mjs
3071
+ const css = "._0uSpIq_row{align-items:flex-start;gap:8px;width:100%;display:flex}._0uSpIq_anchor{flex:auto;width:100%;min-width:0;display:flex}._0uSpIq_box{box-sizing:border-box;background:var(--dsw-alias-bg-layer-3);border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md);flex-flow:wrap;align-items:center;gap:4px 6px;width:100%;min-height:32px;padding:4px 8px;display:flex}._0uSpIq_input{min-width:120px;color:var(--dsw-alias-label-primary);background:0 0;border:none;outline:none;flex:120px;padding:2px 0;font-family:inherit;font-size:13px;line-height:1.5}._0uSpIq_chip{corner-shape:round;white-space:nowrap;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-module-platform);border-radius:999px;align-items:center;gap:2px;padding:1px 4px 1px 8px;font-size:11px;font-weight:500;line-height:17px;display:inline-flex}._0uSpIq_chipRemove{box-sizing:border-box;width:14px;height:14px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}._0uSpIq_chipRemove:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._0uSpIq_chipRemove:disabled{cursor:not-allowed;opacity:.4}._0uSpIq_chipRemove:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:0}._0uSpIq_empty{color:var(--dsw-alias-label-tertiary);margin:0;padding:8px;font-size:12px;line-height:1.5}";
3120
3072
  const tagId = "@morlay/dsh-client-ui-primitives/TagInput.module.css";
3121
3073
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/dsh-client-ui-primitives/TagInput.module.css\"]") === null) {
3122
3074
  const tag = document.createElement("style");
@@ -3126,16 +3078,15 @@ window.__ModuleLoader__.load({
3126
3078
  document.head.appendChild(tag);
3127
3079
  }
3128
3080
  var TagInput_module_css_default = {
3129
- "row": "Qg7I9G_row",
3130
- "anchor": "Qg7I9G_anchor",
3131
- "chipRemove": "Qg7I9G_chipRemove",
3132
- "box": "Qg7I9G_box",
3133
- "input": "Qg7I9G_input",
3134
- "chip": "Qg7I9G_chip",
3135
- "empty": "Qg7I9G_empty"
3081
+ "anchor": "_0uSpIq_anchor",
3082
+ "box": "_0uSpIq_box",
3083
+ "chip": "_0uSpIq_chip",
3084
+ "input": "_0uSpIq_input",
3085
+ "row": "_0uSpIq_row",
3086
+ "chipRemove": "_0uSpIq_chipRemove",
3087
+ "empty": "_0uSpIq_empty"
3136
3088
  };
3137
- //#endregion
3138
- //#region src/client/controls/TagInput.tsx
3089
+ // src/client/controls/TagInput.tsx
3139
3090
  function TagInput({ value, onChange, options, placeholder, label, disabled = false, noMatchLabel = "", removeLabel }) {
3140
3091
  const [draft, setDraft] = (0, react.useState)("");
3141
3092
  const [open, setOpen] = (0, react.useState)(false);
@@ -3223,8 +3174,7 @@ window.__ModuleLoader__.load({
3223
3174
  })
3224
3175
  });
3225
3176
  }
3226
- //#endregion
3227
- //#region ../../../node_modules/.pnpm/mdast-util-to-string@4.0.0/node_modules/mdast-util-to-string/lib/index.js
3177
+ // ../../../node_modules/.pnpm/mdast-util-to-string@4.0.0/node_modules/mdast-util-to-string/lib/index.js
3228
3178
  /**
3229
3179
  * @typedef {import('mdast').Nodes} Nodes
3230
3180
  *
@@ -3305,8 +3255,7 @@ window.__ModuleLoader__.load({
3305
3255
  function node(value) {
3306
3256
  return Boolean(value && typeof value === "object");
3307
3257
  }
3308
- //#endregion
3309
- //#region ../../../node_modules/.pnpm/decode-named-character-reference@1.3.0/node_modules/decode-named-character-reference/index.dom.js
3258
+ // ../../../node_modules/.pnpm/decode-named-character-reference@1.3.0/node_modules/decode-named-character-reference/index.dom.js
3310
3259
  const element = document.createElement("i");
3311
3260
  /**
3312
3261
  * @param {string} value
@@ -3319,8 +3268,7 @@ window.__ModuleLoader__.load({
3319
3268
  if (character.charCodeAt(character.length - 1) === 59 && value !== "semi") return false;
3320
3269
  return character === characterReference ? false : character;
3321
3270
  }
3322
- //#endregion
3323
- //#region ../../../node_modules/.pnpm/micromark-util-chunked@2.0.1/node_modules/micromark-util-chunked/index.js
3271
+ // ../../../node_modules/.pnpm/micromark-util-chunked@2.0.1/node_modules/micromark-util-chunked/index.js
3324
3272
  /**
3325
3273
  * Like `Array#splice`, but smarter for giant arrays.
3326
3274
  *
@@ -3389,8 +3337,7 @@ window.__ModuleLoader__.load({
3389
3337
  }
3390
3338
  return items;
3391
3339
  }
3392
- //#endregion
3393
- //#region ../../../node_modules/.pnpm/micromark-util-combine-extensions@2.0.1/node_modules/micromark-util-combine-extensions/index.js
3340
+ // ../../../node_modules/.pnpm/micromark-util-combine-extensions@2.0.1/node_modules/micromark-util-combine-extensions/index.js
3394
3341
  /**
3395
3342
  * @import {
3396
3343
  * Extension,
@@ -3460,8 +3407,7 @@ window.__ModuleLoader__.load({
3460
3407
  while (++index < list.length) (list[index].add === "after" ? existing : before).push(list[index]);
3461
3408
  splice(existing, 0, 0, before);
3462
3409
  }
3463
- //#endregion
3464
- //#region ../../../node_modules/.pnpm/micromark-util-decode-numeric-character-reference@2.0.2/node_modules/micromark-util-decode-numeric-character-reference/index.js
3410
+ // ../../../node_modules/.pnpm/micromark-util-decode-numeric-character-reference@2.0.2/node_modules/micromark-util-decode-numeric-character-reference/index.js
3465
3411
  /**
3466
3412
  * Turn the number (in string form as either hexa- or plain decimal) coming from
3467
3413
  * a numeric character reference into a character.
@@ -3481,8 +3427,7 @@ window.__ModuleLoader__.load({
3481
3427
  if (code < 9 || code === 11 || code > 13 && code < 32 || code > 126 && code < 160 || code > 55295 && code < 57344 || code > 64975 && code < 65008 || (code & 65535) === 65535 || (code & 65535) === 65534 || code > 1114111) return "�";
3482
3428
  return String.fromCodePoint(code);
3483
3429
  }
3484
- //#endregion
3485
- //#region ../../../node_modules/.pnpm/micromark-util-normalize-identifier@2.0.1/node_modules/micromark-util-normalize-identifier/index.js
3430
+ // ../../../node_modules/.pnpm/micromark-util-normalize-identifier@2.0.1/node_modules/micromark-util-normalize-identifier/index.js
3486
3431
  /**
3487
3432
  * Normalize an identifier (as found in references, definitions).
3488
3433
  *
@@ -3505,8 +3450,7 @@ window.__ModuleLoader__.load({
3505
3450
  function normalizeIdentifier(value) {
3506
3451
  return value.replace(/[\t\n\r ]+/g, " ").replace(/^ | $/g, "").toLowerCase().toUpperCase();
3507
3452
  }
3508
- //#endregion
3509
- //#region ../../../node_modules/.pnpm/micromark-util-character@2.1.1/node_modules/micromark-util-character/index.js
3453
+ // ../../../node_modules/.pnpm/micromark-util-character@2.1.1/node_modules/micromark-util-character/index.js
3510
3454
  /**
3511
3455
  * @import {Code} from 'micromark-util-types'
3512
3456
  */
@@ -3734,8 +3678,7 @@ window.__ModuleLoader__.load({
3734
3678
  }
3735
3679
  }
3736
3680
  ({}).hasOwnProperty;
3737
- //#endregion
3738
- //#region ../../../node_modules/.pnpm/micromark-factory-space@2.1.0/node_modules/micromark-factory-space/index.js
3681
+ // ../../../node_modules/.pnpm/micromark-factory-space@2.1.0/node_modules/micromark-factory-space/index.js
3739
3682
  /**
3740
3683
  * @import {Effects, State, TokenType} from 'micromark-util-types'
3741
3684
  */
@@ -3841,8 +3784,7 @@ window.__ModuleLoader__.load({
3841
3784
  return size >= min ? ok(code) : nok(code);
3842
3785
  }
3843
3786
  }
3844
- //#endregion
3845
- //#region ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/initialize/content.js
3787
+ // ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/initialize/content.js
3846
3788
  /**
3847
3789
  * @import {
3848
3790
  * InitialConstruct,
@@ -3908,8 +3850,7 @@ window.__ModuleLoader__.load({
3908
3850
  return data;
3909
3851
  }
3910
3852
  }
3911
- //#endregion
3912
- //#region ../../../node_modules/.pnpm/micromark-util-edit-map@1.0.0/node_modules/micromark-util-edit-map/index.js
3853
+ // ../../../node_modules/.pnpm/micromark-util-edit-map@1.0.0/node_modules/micromark-util-edit-map/index.js
3913
3854
  /**
3914
3855
  * @import {Event} from 'micromark-util-types'
3915
3856
  */
@@ -4054,8 +3995,7 @@ window.__ModuleLoader__.load({
4054
3995
  editMap.map.push(change);
4055
3996
  editMap.index.set(at, change);
4056
3997
  }
4057
- //#endregion
4058
- //#region ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/initialize/document.js
3998
+ // ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/initialize/document.js
4059
3999
  /**
4060
4000
  * @import {
4061
4001
  * Construct,
@@ -4274,8 +4214,7 @@ window.__ModuleLoader__.load({
4274
4214
  function tokenizeContainer(effects, ok, nok) {
4275
4215
  return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), "linePrefix", this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4);
4276
4216
  }
4277
- //#endregion
4278
- //#region ../../../node_modules/.pnpm/micromark-util-classify-character@2.0.1/node_modules/micromark-util-classify-character/index.js
4217
+ // ../../../node_modules/.pnpm/micromark-util-classify-character@2.0.1/node_modules/micromark-util-classify-character/index.js
4279
4218
  /**
4280
4219
  * @import {Code} from 'micromark-util-types'
4281
4220
  */
@@ -4297,8 +4236,7 @@ window.__ModuleLoader__.load({
4297
4236
  if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) return 1;
4298
4237
  if (unicodePunctuation(code)) return 2;
4299
4238
  }
4300
- //#endregion
4301
- //#region ../../../node_modules/.pnpm/micromark-util-resolve-all@2.0.1/node_modules/micromark-util-resolve-all/index.js
4239
+ // ../../../node_modules/.pnpm/micromark-util-resolve-all@2.0.1/node_modules/micromark-util-resolve-all/index.js
4302
4240
  /**
4303
4241
  * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'
4304
4242
  */
@@ -4327,8 +4265,7 @@ window.__ModuleLoader__.load({
4327
4265
  }
4328
4266
  return events;
4329
4267
  }
4330
- //#endregion
4331
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/attention.js
4268
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/attention.js
4332
4269
  /**
4333
4270
  * @import {
4334
4271
  * Code,
@@ -4535,8 +4472,7 @@ window.__ModuleLoader__.load({
4535
4472
  point.offset += offset;
4536
4473
  point._bufferIndex += offset;
4537
4474
  }
4538
- //#endregion
4539
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/autolink.js
4475
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/autolink.js
4540
4476
  /**
4541
4477
  * @import {
4542
4478
  * Construct,
@@ -4746,8 +4682,7 @@ window.__ModuleLoader__.load({
4746
4682
  return nok(code);
4747
4683
  }
4748
4684
  }
4749
- //#endregion
4750
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/blank-line.js
4685
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/blank-line.js
4751
4686
  /**
4752
4687
  * @import {
4753
4688
  * Construct,
@@ -4803,8 +4738,7 @@ window.__ModuleLoader__.load({
4803
4738
  return code === null || markdownLineEnding(code) ? ok(code) : nok(code);
4804
4739
  }
4805
4740
  }
4806
- //#endregion
4807
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/block-quote.js
4741
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/block-quote.js
4808
4742
  /**
4809
4743
  * @import {
4810
4744
  * Construct,
@@ -4930,8 +4864,7 @@ window.__ModuleLoader__.load({
4930
4864
  function exit$1(effects) {
4931
4865
  effects.exit("blockQuote");
4932
4866
  }
4933
- //#endregion
4934
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/character-escape.js
4867
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/character-escape.js
4935
4868
  /**
4936
4869
  * @import {
4937
4870
  * Construct,
@@ -4990,8 +4923,7 @@ window.__ModuleLoader__.load({
4990
4923
  return nok(code);
4991
4924
  }
4992
4925
  }
4993
- //#endregion
4994
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/character-reference.js
4926
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/character-reference.js
4995
4927
  /**
4996
4928
  * @import {
4997
4929
  * Code,
@@ -5128,8 +5060,7 @@ window.__ModuleLoader__.load({
5128
5060
  return nok(code);
5129
5061
  }
5130
5062
  }
5131
- //#endregion
5132
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.js
5063
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.js
5133
5064
  /** @type {Construct} */
5134
5065
  const nonLazyContinuation = {
5135
5066
  partial: true,
@@ -5176,8 +5107,7 @@ window.__ModuleLoader__.load({
5176
5107
  return self.parser.lazy[self.now().line] ? nok(code) : ok(code);
5177
5108
  }
5178
5109
  }
5179
- //#endregion
5180
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/code-fenced.js
5110
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/code-fenced.js
5181
5111
  /**
5182
5112
  * @import {
5183
5113
  * Code,
@@ -5557,8 +5487,7 @@ window.__ModuleLoader__.load({
5557
5487
  }
5558
5488
  }
5559
5489
  }
5560
- //#endregion
5561
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/code-indented.js
5490
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/code-indented.js
5562
5491
  /**
5563
5492
  * @import {
5564
5493
  * Construct,
@@ -5689,8 +5618,7 @@ window.__ModuleLoader__.load({
5689
5618
  return markdownLineEnding(code) ? furtherStart(code) : nok(code);
5690
5619
  }
5691
5620
  }
5692
- //#endregion
5693
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/code-text.js
5621
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/code-text.js
5694
5622
  /**
5695
5623
  * @import {
5696
5624
  * Construct,
@@ -5874,8 +5802,7 @@ window.__ModuleLoader__.load({
5874
5802
  return data(code);
5875
5803
  }
5876
5804
  }
5877
- //#endregion
5878
- //#region ../../../node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/lib/splice-buffer.js
5805
+ // ../../../node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/lib/splice-buffer.js
5879
5806
  /**
5880
5807
  * Some of the internal operations of micromark do lots of editing
5881
5808
  * operations on very large arrays. This runs into problems with two
@@ -6104,8 +6031,7 @@ window.__ModuleLoader__.load({
6104
6031
  chunkStart += 1e4;
6105
6032
  }
6106
6033
  }
6107
- //#endregion
6108
- //#region ../../../node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/index.js
6034
+ // ../../../node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/index.js
6109
6035
  /**
6110
6036
  * @import {Chunk, Event, Token} from 'micromark-util-types'
6111
6037
  */
@@ -6259,8 +6185,7 @@ window.__ModuleLoader__.load({
6259
6185
  }
6260
6186
  return gaps;
6261
6187
  }
6262
- //#endregion
6263
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/content.js
6188
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/content.js
6264
6189
  /**
6265
6190
  * @import {
6266
6191
  * Construct,
@@ -6392,8 +6317,7 @@ window.__ModuleLoader__.load({
6392
6317
  return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);
6393
6318
  }
6394
6319
  }
6395
- //#endregion
6396
- //#region ../../../node_modules/.pnpm/micromark-factory-destination@2.0.1/node_modules/micromark-factory-destination/index.js
6320
+ // ../../../node_modules/.pnpm/micromark-factory-destination@2.0.1/node_modules/micromark-factory-destination/index.js
6397
6321
  /**
6398
6322
  * @import {Effects, State, TokenType} from 'micromark-util-types'
6399
6323
  */
@@ -6576,8 +6500,7 @@ window.__ModuleLoader__.load({
6576
6500
  return raw(code);
6577
6501
  }
6578
6502
  }
6579
- //#endregion
6580
- //#region ../../../node_modules/.pnpm/micromark-factory-label@2.0.1/node_modules/micromark-factory-label/index.js
6503
+ // ../../../node_modules/.pnpm/micromark-factory-label@2.0.1/node_modules/micromark-factory-label/index.js
6581
6504
  /**
6582
6505
  * @import {
6583
6506
  * Effects,
@@ -6710,8 +6633,7 @@ window.__ModuleLoader__.load({
6710
6633
  return labelInside(code);
6711
6634
  }
6712
6635
  }
6713
- //#endregion
6714
- //#region ../../../node_modules/.pnpm/micromark-factory-title@2.0.1/node_modules/micromark-factory-title/index.js
6636
+ // ../../../node_modules/.pnpm/micromark-factory-title@2.0.1/node_modules/micromark-factory-title/index.js
6715
6637
  /**
6716
6638
  * @import {
6717
6639
  * Code,
@@ -6855,8 +6777,7 @@ window.__ModuleLoader__.load({
6855
6777
  return inside(code);
6856
6778
  }
6857
6779
  }
6858
- //#endregion
6859
- //#region ../../../node_modules/.pnpm/micromark-factory-whitespace@2.0.1/node_modules/micromark-factory-whitespace/index.js
6780
+ // ../../../node_modules/.pnpm/micromark-factory-whitespace@2.0.1/node_modules/micromark-factory-whitespace/index.js
6860
6781
  /**
6861
6782
  * @import {Effects, State} from 'micromark-util-types'
6862
6783
  */
@@ -6895,8 +6816,7 @@ window.__ModuleLoader__.load({
6895
6816
  return ok(code);
6896
6817
  }
6897
6818
  }
6898
- //#endregion
6899
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/definition.js
6819
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/definition.js
6900
6820
  /**
6901
6821
  * @import {
6902
6822
  * Construct,
@@ -7110,8 +7030,7 @@ window.__ModuleLoader__.load({
7110
7030
  return code === null || markdownLineEnding(code) ? ok(code) : nok(code);
7111
7031
  }
7112
7032
  }
7113
- //#endregion
7114
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/hard-break-escape.js
7033
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/hard-break-escape.js
7115
7034
  /**
7116
7035
  * @import {
7117
7036
  * Construct,
@@ -7167,8 +7086,7 @@ window.__ModuleLoader__.load({
7167
7086
  return nok(code);
7168
7087
  }
7169
7088
  }
7170
- //#endregion
7171
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/heading-atx.js
7089
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/heading-atx.js
7172
7090
  /**
7173
7091
  * @import {
7174
7092
  * Construct,
@@ -7348,8 +7266,7 @@ window.__ModuleLoader__.load({
7348
7266
  return data;
7349
7267
  }
7350
7268
  }
7351
- //#endregion
7352
- //#region ../../../node_modules/.pnpm/micromark-util-html-tag-name@2.0.1/node_modules/micromark-util-html-tag-name/index.js
7269
+ // ../../../node_modules/.pnpm/micromark-util-html-tag-name@2.0.1/node_modules/micromark-util-html-tag-name/index.js
7353
7270
  /**
7354
7271
  * List of lowercase HTML “block” tag names.
7355
7272
  *
@@ -7447,8 +7364,7 @@ window.__ModuleLoader__.load({
7447
7364
  "style",
7448
7365
  "textarea"
7449
7366
  ];
7450
- //#endregion
7451
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/html-flow.js
7367
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/html-flow.js
7452
7368
  /**
7453
7369
  * @import {
7454
7370
  * Code,
@@ -8173,8 +8089,7 @@ window.__ModuleLoader__.load({
8173
8089
  return effects.attempt(blankLine, ok, nok);
8174
8090
  }
8175
8091
  }
8176
- //#endregion
8177
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/html-text.js
8092
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/html-text.js
8178
8093
  /**
8179
8094
  * @import {
8180
8095
  * Code,
@@ -8787,8 +8702,7 @@ window.__ModuleLoader__.load({
8787
8702
  return returnState(code);
8788
8703
  }
8789
8704
  }
8790
- //#endregion
8791
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/label-end.js
8705
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/label-end.js
8792
8706
  /**
8793
8707
  * @import {
8794
8708
  * Construct,
@@ -9256,8 +9170,7 @@ window.__ModuleLoader__.load({
9256
9170
  return nok(code);
9257
9171
  }
9258
9172
  }
9259
- //#endregion
9260
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/label-start-image.js
9173
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/label-start-image.js
9261
9174
  /**
9262
9175
  * @import {
9263
9176
  * Construct,
@@ -9355,8 +9268,7 @@ window.__ModuleLoader__.load({
9355
9268
  return ok(code);
9356
9269
  }
9357
9270
  }
9358
- //#endregion
9359
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/label-start-link.js
9271
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/label-start-link.js
9360
9272
  /**
9361
9273
  * @import {
9362
9274
  * Construct,
@@ -9409,8 +9321,7 @@ window.__ModuleLoader__.load({
9409
9321
  return ok(code);
9410
9322
  }
9411
9323
  }
9412
- //#endregion
9413
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/line-ending.js
9324
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/line-ending.js
9414
9325
  /**
9415
9326
  * @import {
9416
9327
  * Construct,
@@ -9439,8 +9350,7 @@ window.__ModuleLoader__.load({
9439
9350
  return factorySpace(effects, ok, "linePrefix");
9440
9351
  }
9441
9352
  }
9442
- //#endregion
9443
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/thematic-break.js
9353
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/thematic-break.js
9444
9354
  /**
9445
9355
  * @import {
9446
9356
  * Code,
@@ -9534,8 +9444,7 @@ window.__ModuleLoader__.load({
9534
9444
  return markdownSpace(code) ? factorySpace(effects, atBreak, "whitespace")(code) : atBreak(code);
9535
9445
  }
9536
9446
  }
9537
- //#endregion
9538
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/list.js
9447
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/list.js
9539
9448
  /**
9540
9449
  * @import {
9541
9450
  * Code,
@@ -9706,8 +9615,7 @@ window.__ModuleLoader__.load({
9706
9615
  return !markdownSpace(code) && tail && tail[1].type === "listItemPrefixWhitespace" ? ok(code) : nok(code);
9707
9616
  }
9708
9617
  }
9709
- //#endregion
9710
- //#region ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/setext-underline.js
9618
+ // ../../../node_modules/.pnpm/micromark-core-commonmark@2.0.4/node_modules/micromark-core-commonmark/lib/setext-underline.js
9711
9619
  /**
9712
9620
  * @import {
9713
9621
  * Code,
@@ -9860,8 +9768,7 @@ window.__ModuleLoader__.load({
9860
9768
  return nok(code);
9861
9769
  }
9862
9770
  }
9863
- //#endregion
9864
- //#region ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/initialize/flow.js
9771
+ // ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/initialize/flow.js
9865
9772
  /**
9866
9773
  * @import {
9867
9774
  * InitialConstruct,
@@ -9907,8 +9814,7 @@ window.__ModuleLoader__.load({
9907
9814
  return initial;
9908
9815
  }
9909
9816
  }
9910
- //#endregion
9911
- //#region ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/initialize/text.js
9817
+ // ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/initialize/text.js
9912
9818
  /**
9913
9819
  * @import {
9914
9820
  * Code,
@@ -10083,8 +9989,7 @@ window.__ModuleLoader__.load({
10083
9989
  editMap.consume(events);
10084
9990
  return events;
10085
9991
  }
10086
- //#endregion
10087
- //#region ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/constructs.js
9992
+ // ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/constructs.js
10088
9993
  /**
10089
9994
  * @import {Extension} from 'micromark-util-types'
10090
9995
  */
@@ -10161,8 +10066,7 @@ window.__ModuleLoader__.load({
10161
10066
  const attentionMarkers = { null: [42, 95] };
10162
10067
  /** @satisfies {Extension['disable']} */
10163
10068
  const disable = { null: [] };
10164
- //#endregion
10165
- //#region ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/create-tokenizer.js
10069
+ // ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/create-tokenizer.js
10166
10070
  /**
10167
10071
  * @import {
10168
10072
  * Chunk,
@@ -10628,8 +10532,7 @@ window.__ModuleLoader__.load({
10628
10532
  }
10629
10533
  return result.join("");
10630
10534
  }
10631
- //#endregion
10632
- //#region ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/parse.js
10535
+ // ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/parse.js
10633
10536
  /**
10634
10537
  * @import {
10635
10538
  * Create,
@@ -10672,8 +10575,7 @@ window.__ModuleLoader__.load({
10672
10575
  }
10673
10576
  }
10674
10577
  }
10675
- //#endregion
10676
- //#region ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/postprocess.js
10578
+ // ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/postprocess.js
10677
10579
  /**
10678
10580
  * @import {Event} from 'micromark-util-types'
10679
10581
  */
@@ -10687,8 +10589,7 @@ window.__ModuleLoader__.load({
10687
10589
  while (!subtokenize(events));
10688
10590
  return events;
10689
10591
  }
10690
- //#endregion
10691
- //#region ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/preprocess.js
10592
+ // ../../../node_modules/.pnpm/micromark@4.0.3_supports-color@9.4.0/node_modules/micromark/lib/preprocess.js
10692
10593
  /**
10693
10594
  * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'
10694
10595
  */
@@ -10779,8 +10680,7 @@ window.__ModuleLoader__.load({
10779
10680
  return chunks;
10780
10681
  }
10781
10682
  }
10782
- //#endregion
10783
- //#region ../../../node_modules/.pnpm/micromark-util-decode-string@2.0.1/node_modules/micromark-util-decode-string/index.js
10683
+ // ../../../node_modules/.pnpm/micromark-util-decode-string@2.0.1/node_modules/micromark-util-decode-string/index.js
10784
10684
  const characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
10785
10685
  /**
10786
10686
  * Decode markdown strings (which occur in places such as fenced code info
@@ -10816,8 +10716,7 @@ window.__ModuleLoader__.load({
10816
10716
  }
10817
10717
  return decodeNamedCharacterReference($2) || $0;
10818
10718
  }
10819
- //#endregion
10820
- //#region ../../../node_modules/.pnpm/unist-util-stringify-position@4.0.0/node_modules/unist-util-stringify-position/lib/index.js
10719
+ // ../../../node_modules/.pnpm/unist-util-stringify-position@4.0.0/node_modules/unist-util-stringify-position/lib/index.js
10821
10720
  /**
10822
10721
  * @typedef {import('unist').Node} Node
10823
10722
  * @typedef {import('unist').Point} Point
@@ -10880,8 +10779,7 @@ window.__ModuleLoader__.load({
10880
10779
  function index(value) {
10881
10780
  return value && typeof value === "number" ? value : 1;
10882
10781
  }
10883
- //#endregion
10884
- //#region ../../../node_modules/.pnpm/mdast-util-from-markdown@2.1.0_supports-color@9.4.0/node_modules/mdast-util-from-markdown/lib/index.js
10782
+ // ../../../node_modules/.pnpm/mdast-util-from-markdown@2.1.0_supports-color@9.4.0/node_modules/mdast-util-from-markdown/lib/index.js
10885
10783
  /**
10886
10784
  * @import {
10887
10785
  * Break,
@@ -11927,8 +11825,7 @@ window.__ModuleLoader__.load({
11927
11825
  end: right.end
11928
11826
  }) + ") is still open");
11929
11827
  }
11930
- //#endregion
11931
- //#region ../../../node_modules/.pnpm/ccount@2.0.1/node_modules/ccount/index.js
11828
+ // ../../../node_modules/.pnpm/ccount@2.0.1/node_modules/ccount/index.js
11932
11829
  /**
11933
11830
  * Count how often a character (or substring) is used in a string.
11934
11831
  *
@@ -11950,14 +11847,12 @@ window.__ModuleLoader__.load({
11950
11847
  }
11951
11848
  return count;
11952
11849
  }
11953
- //#endregion
11954
- //#region ../../../node_modules/.pnpm/escape-string-regexp@5.0.0/node_modules/escape-string-regexp/index.js
11850
+ // ../../../node_modules/.pnpm/escape-string-regexp@5.0.0/node_modules/escape-string-regexp/index.js
11955
11851
  function escapeStringRegexp(string) {
11956
11852
  if (typeof string !== "string") throw new TypeError("Expected a string");
11957
11853
  return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
11958
11854
  }
11959
- //#endregion
11960
- //#region ../../../node_modules/.pnpm/unist-util-is@6.0.1/node_modules/unist-util-is/lib/index.js
11855
+ // ../../../node_modules/.pnpm/unist-util-is@6.0.1/node_modules/unist-util-is/lib/index.js
11961
11856
  /**
11962
11857
  * Generate an assertion from a test.
11963
11858
  *
@@ -12070,17 +11965,19 @@ window.__ModuleLoader__.load({
12070
11965
  function looksLikeANode(value) {
12071
11966
  return value !== null && typeof value === "object" && "type" in value;
12072
11967
  }
12073
- //#endregion
12074
- //#region ../../../node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/color.js
11968
+ // ../../../node_modules/.pnpm/unist-util-visit-parents@6.1.0/node_modules/unist-util-visit-parents/lib/color.js
12075
11969
  /**
11970
+ * Color a string.
11971
+ *
12076
11972
  * @param {string} d
11973
+ * Value.
12077
11974
  * @returns {string}
11975
+ * Colored value.
12078
11976
  */
12079
11977
  function color(d) {
12080
11978
  return d;
12081
11979
  }
12082
- //#endregion
12083
- //#region ../../../node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/index.js
11980
+ // ../../../node_modules/.pnpm/unist-util-visit-parents@6.1.0/node_modules/unist-util-visit-parents/lib/index.js
12084
11981
  /**
12085
11982
  * @import {Node as UnistNode, Parent as UnistParent} from 'unist'
12086
11983
  */
@@ -12238,45 +12135,95 @@ window.__ModuleLoader__.load({
12238
12135
  * List with one or two values, the first an action, the second an index.
12239
12136
  *
12240
12137
  * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult
12241
- * Any value that can be returned from a visitor.
12138
+ * Any value that can be returned from an enter visitor.
12139
+ *
12140
+ * Like `VisitorResultExit`,
12141
+ * but `SKIP` can also be returned,
12142
+ * to not walk the children of the node,
12143
+ * and `ActionTuple` can be used to combine an action with an index.
12144
+ *
12145
+ * @typedef {Index | boolean | null | undefined | void} VisitorResultExit
12146
+ * Any value that can be returned from an exit visitor.
12242
12147
  */
12243
12148
  /**
12244
12149
  * @callback Visitor
12245
- * Handle a node (matching `test`, if given).
12150
+ * Handle a node (matching `test`, if given) before its children.
12246
12151
  *
12247
- * Visitors are free to transform `node`.
12248
- * They can also transform the parent of node (the last of `ancestors`).
12249
- *
12250
- * Replacing `node` itself, if `SKIP` is not returned, still causes its
12251
- * descendants to be walked (which is a bug).
12252
- *
12253
- * When adding or removing previous siblings of `node` (or next siblings, in
12254
- * case of reverse), the `Visitor` should return a new `Index` to specify the
12255
- * sibling to traverse after `node` is traversed.
12256
- * Adding or removing next siblings of `node` (or previous siblings, in case
12257
- * of reverse) is handled as expected without needing to return a new `Index`.
12258
- *
12259
- * Removing the children property of an ancestor still results in them being
12260
- * traversed.
12152
+ * Changes inside `node` are walked next.
12153
+ * Replacing or removing it is easier in `exit`.
12154
+ * When replacing or removing it here,
12155
+ * return `SKIP` (as otherwise its old children are walked),
12156
+ * or `[SKIP, index]` to continue with the node now at `index`.
12157
+ * Changing next siblings (in walk order) is fine;
12158
+ * changing previous siblings needs a new `Index`.
12159
+ * Removing an ancestor or changing its previous siblings is not supported.
12261
12160
  * @param {Visited} node
12262
12161
  * Found node.
12263
12162
  * @param {Array<VisitedParents>} ancestors
12264
12163
  * Ancestors of `node`.
12164
+ * @param {number | undefined} index
12165
+ * Index of `node` in its parent (the last of `ancestors`),
12166
+ * or `undefined` for the tree itself.
12265
12167
  * @returns {VisitorResult}
12266
12168
  * What to do next.
12267
12169
  *
12268
- * An `Index` is treated as a tuple of `[CONTINUE, Index]`.
12269
- * An `Action` is treated as a tuple of `[Action]`.
12170
+ * Like `VisitorExit`,
12171
+ * but `SKIP` can also be returned,
12172
+ * to not walk the children of `node`.
12173
+ * Passing a tuple back (`ActionTuple`) only makes sense as `[SKIP, Index]`.
12174
+ * @template {UnistNode} [Visited=UnistNode]
12175
+ * Visited node type.
12176
+ * @template {UnistParent} [VisitedParents=UnistParent]
12177
+ * Ancestor type.
12178
+ */
12179
+ /**
12180
+ * @callback VisitorExit
12181
+ * Handle a node (matching `test`, if given) after its children.
12270
12182
  *
12271
- * Passing a tuple back only makes sense if the `Action` is `SKIP`.
12272
- * When the `Action` is `EXIT`, that action can be returned.
12273
- * When the `Action` is `CONTINUE`, `Index` can be returned.
12183
+ * Changes inside `node` are not walked,
12184
+ * which makes this a good place to change `node` based on its children,
12185
+ * or to replace or remove it.
12186
+ * When removing `node` or changing previous siblings (in walk order),
12187
+ * return a new `Index`.
12188
+ * Removing an ancestor or changing its previous siblings is not supported.
12189
+ * @param {Visited} node
12190
+ * Found node.
12191
+ * @param {Array<VisitedParents>} ancestors
12192
+ * Ancestors of `node`.
12193
+ * @param {number | undefined} index
12194
+ * Index of `node` in its parent (the last of `ancestors`),
12195
+ * or `undefined` for the tree itself.
12196
+ * @returns {VisitorResultExit}
12197
+ * What to do next.
12198
+ *
12199
+ * `CONTINUE` (`true`, nothing) continues as normal,
12200
+ * `EXIT` (`false`) stops traversing,
12201
+ * and `Index` continues at that sibling.
12274
12202
  * @template {UnistNode} [Visited=UnistNode]
12275
12203
  * Visited node type.
12276
12204
  * @template {UnistParent} [VisitedParents=UnistParent]
12277
12205
  * Ancestor type.
12278
12206
  */
12279
12207
  /**
12208
+ * @template {UnistNode} [Visited=UnistNode]
12209
+ * Visited node type.
12210
+ * @template {UnistParent} [VisitedParents=UnistParent]
12211
+ * Ancestor type.
12212
+ * @typedef Visitors
12213
+ * Handle nodes when entering and exiting them.
12214
+ * The `enter` visitor is optional while `exit` is required.
12215
+ *
12216
+ * Pass an `enter` visitor directly to only handle nodes when entering them.
12217
+ *
12218
+ * `enter` is called before children (if any) are walked and `exit` after that.
12219
+ * `exit` is still called when `enter` returns `SKIP`.
12220
+ * Both `enter` and `exit` are only called for nodes that match an optional `test`.
12221
+ * @property {Visitor<Visited, VisitedParents> | null | undefined} [enter]
12222
+ * Handle a node before its children (optional).
12223
+ * @property {VisitorExit<Visited, VisitedParents>} exit
12224
+ * Handle a node after its children.
12225
+ */
12226
+ /**
12280
12227
  * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor
12281
12228
  * Build a typed `Visitor` function from a tree and a test.
12282
12229
  *
@@ -12286,16 +12233,34 @@ window.__ModuleLoader__.load({
12286
12233
  * @template {Test} [Check=Test]
12287
12234
  * Test type.
12288
12235
  */
12236
+ /**
12237
+ * @typedef {Visitors<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitors
12238
+ * Build typed `Visitors` from a tree and a test.
12239
+ *
12240
+ * It will infer which values are passed as `node` and which as `parents`.
12241
+ * @template {UnistNode} [Tree=UnistNode]
12242
+ * Tree type.
12243
+ * @template {Test} [Check=Test]
12244
+ * Test type.
12245
+ */
12289
12246
  /** @type {Readonly<ActionTuple>} */
12290
12247
  const empty = [];
12291
12248
  /**
12249
+ * Do not traverse this node’s children.
12250
+ * Only works when entering a node.
12251
+ */
12252
+ const SKIP = "skip";
12253
+ /**
12292
12254
  * Visit nodes, with ancestral information.
12293
12255
  *
12294
12256
  * This algorithm performs *depth-first* *tree traversal* in *preorder*
12295
- * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).
12257
+ * (**NLR**) or if `reverse` is given,
12258
+ * in *reverse preorder* (**NRL**).
12259
+ * An `exit` visitor is called in *postorder* (**LRN**)
12260
+ * or if `reverse` is given, in *reverse postorder* (**RLN**).
12296
12261
  *
12297
- * You can choose for which nodes `visitor` is called by passing a `test`.
12298
- * For complex tests, you should test yourself in `visitor`, as it will be
12262
+ * You can choose which nodes are visited by passing a `test`.
12263
+ * For complex tests, you should test yourself in a visitor, as it will be
12299
12264
  * faster and will have improved type information.
12300
12265
  *
12301
12266
  * Walking the tree is an intensive task.
@@ -12304,29 +12269,72 @@ window.__ModuleLoader__.load({
12304
12269
  * to check if a node matches, and then perform different operations.
12305
12270
  *
12306
12271
  * You can change the tree.
12307
- * See `Visitor` for more info.
12272
+ * Changes inside a node made when entering it are walked,
12273
+ * changes made when exiting it are not.
12274
+ * See `Visitor` and `VisitorExit` for more info.
12275
+ *
12276
+ * @overload
12277
+ * @param {Tree} tree
12278
+ * Tree to traverse.
12279
+ * @param {Check} check
12280
+ * `unist-util-is`-compatible test.
12281
+ * @param {BuildVisitor<Tree, Check>} enter
12282
+ * Handle each node when entering it.
12283
+ * @param {boolean | null | undefined} [reverse]
12284
+ * Walk children from last to first;
12285
+ * for `enter`, reverse preorder (NRL) instead of preorder (NLR);
12286
+ * for `exit`, reverse postorder (RLN) instead of postorder (LRN).
12287
+ * @returns {undefined}
12288
+ * Nothing.
12308
12289
  *
12309
12290
  * @overload
12310
12291
  * @param {Tree} tree
12292
+ * Tree to traverse.
12311
12293
  * @param {Check} check
12312
- * @param {BuildVisitor<Tree, Check>} visitor
12294
+ * `unist-util-is`-compatible test.
12295
+ * @param {BuildVisitors<Tree, Check>} visitors
12296
+ * Handle each node when exiting it, and optionally when entering it.
12297
+ * @param {boolean | null | undefined} [reverse]
12298
+ * Walk children from last to first;
12299
+ * for `enter`, reverse preorder (NRL) instead of preorder (NLR);
12300
+ * for `exit`, reverse postorder (RLN) instead of postorder (LRN).
12301
+ * @returns {undefined}
12302
+ * Nothing.
12303
+ *
12304
+ * @overload
12305
+ * @param {Tree} tree
12306
+ * Tree to traverse.
12307
+ * @param {BuildVisitor<Tree>} enter
12308
+ * Handle each node when entering it.
12313
12309
  * @param {boolean | null | undefined} [reverse]
12310
+ * Walk children from last to first;
12311
+ * for `enter`, reverse preorder (NRL) instead of preorder (NLR);
12312
+ * for `exit`, reverse postorder (RLN) instead of postorder (LRN).
12314
12313
  * @returns {undefined}
12314
+ * Nothing.
12315
12315
  *
12316
12316
  * @overload
12317
12317
  * @param {Tree} tree
12318
- * @param {BuildVisitor<Tree>} visitor
12318
+ * Tree to traverse.
12319
+ * @param {BuildVisitors<Tree>} visitors
12320
+ * Handle each node when exiting it, and optionally when entering it.
12319
12321
  * @param {boolean | null | undefined} [reverse]
12322
+ * Walk children from last to first;
12323
+ * for `enter`, reverse preorder (NRL) instead of preorder (NLR);
12324
+ * for `exit`, reverse postorder (RLN) instead of postorder (LRN).
12320
12325
  * @returns {undefined}
12326
+ * Nothing.
12321
12327
  *
12322
12328
  * @param {UnistNode} tree
12323
12329
  * Tree to traverse.
12324
- * @param {Visitor | Test} test
12325
- * `unist-util-is`-compatible test
12326
- * @param {Visitor | boolean | null | undefined} [visitor]
12327
- * Handle each node.
12330
+ * @param {Visitor | Visitors | Test} testOrEnterOrVisitors
12331
+ * `unist-util-is`-compatible test, `enter`, or `visitors`.
12332
+ * @param {Visitor | Visitors | boolean | null | undefined} [enterOrVisitorsOrReverse]
12333
+ * `enter`, `visitors`, or `reverse` after a test.
12328
12334
  * @param {boolean | null | undefined} [reverse]
12329
- * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).
12335
+ * Walk children from last to first;
12336
+ * for `enter`, reverse preorder (NRL) instead of preorder (NLR);
12337
+ * for `exit`, reverse postorder (RLN) instead of postorder (LRN).
12330
12338
  * @returns {undefined}
12331
12339
  * Nothing.
12332
12340
  *
@@ -12335,20 +12343,46 @@ window.__ModuleLoader__.load({
12335
12343
  * @template {Test} Check
12336
12344
  * `unist-util-is`-compatible test.
12337
12345
  */
12338
- function visitParents(tree, test, visitor, reverse) {
12346
+ function visitParents(tree, testOrEnterOrVisitors, enterOrVisitorsOrReverse, reverse) {
12347
+ if (!tree || typeof tree !== "object") throw new Error("Unexpected value `" + tree + "` for `tree`, expected node");
12348
+ let preorder = true;
12339
12349
  /** @type {Test} */
12340
12350
  let check;
12341
- if (typeof test === "function" && typeof visitor !== "function") {
12342
- reverse = visitor;
12343
- visitor = test;
12344
- } else check = test;
12351
+ /** @type {Visitors | Visitor} */
12352
+ let visitors;
12353
+ /** @type {Visitor | null | undefined} */
12354
+ let enter;
12355
+ /** @type {VisitorExit | null | undefined} */
12356
+ let exit;
12357
+ if (typeof enterOrVisitorsOrReverse === "function" || enterOrVisitorsOrReverse && typeof enterOrVisitorsOrReverse === "object") {
12358
+ check = testOrEnterOrVisitors;
12359
+ visitors = enterOrVisitorsOrReverse;
12360
+ if (reverse) preorder = false;
12361
+ } else {
12362
+ visitors = testOrEnterOrVisitors;
12363
+ if (enterOrVisitorsOrReverse) preorder = false;
12364
+ }
12365
+ if (typeof visitors === "function") enter = visitors;
12366
+ else if (visitors && typeof visitors === "object") {
12367
+ if (visitors.enter === null || visitors.enter === void 0) {} else if (typeof visitors.enter === "function") enter = visitors.enter;
12368
+ else throw new Error("Unexpected value `" + visitors.enter + "` for `visitors.enter`, expected optional visitor");
12369
+ if (typeof visitors.exit === "function") exit = visitors.exit;
12370
+ else throw new Error("Unexpected value `" + visitors.exit + "` for `visitors.exit`, expected visitor (pass a visitor directly if you only want an enter visitor)");
12371
+ } else throw new Error("Unexpected value `" + visitors + "` for `enter` or `visitors`, expected visitor or object with visitors");
12345
12372
  const is = convert(check);
12346
- const step = reverse ? -1 : 1;
12373
+ const step = preorder ? 1 : -1;
12347
12374
  factory(tree, void 0, [])();
12348
12375
  /**
12376
+ * Create a function to visit a node.
12377
+ *
12349
12378
  * @param {UnistNode} node
12379
+ * Node to visit.
12350
12380
  * @param {number | undefined} index
12381
+ * Index of `node` in its parent.
12351
12382
  * @param {Array<UnistParent>} parents
12383
+ * Ancestors of `node`.
12384
+ * @returns {() => Readonly<ActionTuple>}
12385
+ * Visit `node`.
12352
12386
  */
12353
12387
  function factory(node, index, parents) {
12354
12388
  const value = node && typeof node === "object" ? node : {};
@@ -12358,31 +12392,31 @@ window.__ModuleLoader__.load({
12358
12392
  }
12359
12393
  return visit;
12360
12394
  function visit() {
12395
+ const matches = !check || is(node, index, parents[parents.length - 1] || void 0);
12361
12396
  /** @type {Readonly<ActionTuple>} */
12362
12397
  let result = empty;
12363
- /** @type {Readonly<ActionTuple>} */
12364
- let subresult;
12365
- /** @type {number} */
12366
- let offset;
12367
- /** @type {Array<UnistParent>} */
12368
- let grandparents;
12369
- if (!test || is(node, index, parents[parents.length - 1] || void 0)) {
12370
- result = toResult(visitor(node, parents));
12398
+ if (enter && matches) {
12399
+ result = toResult(enter(node, parents, index));
12371
12400
  if (result[0] === false) return result;
12372
12401
  }
12373
12402
  if ("children" in node && node.children) {
12374
12403
  const nodeAsParent = node;
12375
12404
  if (nodeAsParent.children && result[0] !== "skip") {
12376
- offset = (reverse ? nodeAsParent.children.length : -1) + step;
12377
- grandparents = parents.concat(nodeAsParent);
12405
+ let offset = (preorder ? -1 : nodeAsParent.children.length) + step;
12406
+ const grandparents = [...parents, nodeAsParent];
12378
12407
  while (offset > -1 && offset < nodeAsParent.children.length) {
12379
12408
  const child = nodeAsParent.children[offset];
12380
- subresult = factory(child, offset, grandparents)();
12409
+ const subresult = factory(child, offset, grandparents)();
12381
12410
  if (subresult[0] === false) return subresult;
12382
12411
  offset = typeof subresult[1] === "number" ? subresult[1] : offset + step;
12383
12412
  }
12384
12413
  }
12385
12414
  }
12415
+ if (exit && matches) {
12416
+ const exitResult = toResult(exit(node, parents, index));
12417
+ if (exitResult[0] === "skip") throw new Error("Unexpected value `" + exitResult[0] + "` from `exit`, expected `CONTINUE`, `EXIT`, index, or nothing");
12418
+ if (exitResult[0] === false || typeof exitResult[1] === "number") return exitResult;
12419
+ }
12386
12420
  return result;
12387
12421
  }
12388
12422
  }
@@ -12400,8 +12434,7 @@ window.__ModuleLoader__.load({
12400
12434
  if (typeof value === "number") return [true, value];
12401
12435
  return value === null || value === void 0 ? empty : [value];
12402
12436
  }
12403
- //#endregion
12404
- //#region ../../../node_modules/.pnpm/mdast-util-find-and-replace@3.0.3/node_modules/mdast-util-find-and-replace/lib/index.js
12437
+ // ../../../node_modules/.pnpm/mdast-util-find-and-replace@3.0.4/node_modules/mdast-util-find-and-replace/lib/index.js
12405
12438
  /**
12406
12439
  * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'
12407
12440
  * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'
@@ -12469,7 +12502,7 @@ window.__ModuleLoader__.load({
12469
12502
  * @param {FindAndReplaceList | FindAndReplaceTuple} list
12470
12503
  * Patterns to find.
12471
12504
  * @param {Options | null | undefined} [options]
12472
- * Configuration (when `find` is not `Find`).
12505
+ * Configuration (optional).
12473
12506
  * @returns {undefined}
12474
12507
  * Nothing.
12475
12508
  */
@@ -12477,24 +12510,15 @@ window.__ModuleLoader__.load({
12477
12510
  const ignored = convert((options || {}).ignore || []);
12478
12511
  const pairs = toPairs(list);
12479
12512
  let pairIndex = -1;
12480
- while (++pairIndex < pairs.length) visitParents(tree, "text", visitor);
12513
+ while (++pairIndex < pairs.length) visitParents(tree, visitor);
12481
12514
  /**
12482
- * Visit a text node, and handle it if it is not in an ignored parent.
12515
+ * Handle text nodes and skip ignored nodes.
12483
12516
  *
12484
- * @type {BuildVisitor<Root, 'text'>}
12517
+ * @type {BuildVisitor<Root>}
12485
12518
  */
12486
- function visitor(node, parents) {
12487
- let index = -1;
12488
- /** @type {Parents | undefined} */
12489
- let grandparent;
12490
- while (++index < parents.length) {
12491
- const parent = parents[index];
12492
- /** @type {Array<Nodes> | undefined} */
12493
- const siblings = grandparent ? grandparent.children : void 0;
12494
- if (ignored(parent, siblings ? siblings.indexOf(parent) : void 0, grandparent)) return;
12495
- grandparent = parent;
12496
- }
12497
- if (grandparent) return handler(node, parents);
12519
+ function visitor(node, parents, index) {
12520
+ if (node.type === "text" && typeof index === "number") return handler(node, parents, index);
12521
+ if (ignored(node, index, parents[parents.length - 1])) return SKIP;
12498
12522
  }
12499
12523
  /**
12500
12524
  * Handle a text node which is not in an ignored parent.
@@ -12503,15 +12527,16 @@ window.__ModuleLoader__.load({
12503
12527
  * Text node to search in.
12504
12528
  * @param {Array<Parents>} parents
12505
12529
  * Ancestors of `node`.
12530
+ * @param {number} index
12531
+ * Index of `node` in its parent.
12506
12532
  * @returns {VisitorResult}
12507
12533
  * Where to continue visiting.
12508
12534
  */
12509
- function handler(node, parents) {
12535
+ function handler(node, parents, index) {
12510
12536
  const parent = parents[parents.length - 1];
12511
12537
  const find = pairs[pairIndex][0];
12512
12538
  const replace = pairs[pairIndex][1];
12513
12539
  let start = 0;
12514
- const index = parent.children.indexOf(node);
12515
12540
  let change = false;
12516
12541
  /** @type {Array<PhrasingContent>} */
12517
12542
  let nodes = [];
@@ -12579,7 +12604,6 @@ window.__ModuleLoader__.load({
12579
12604
  if (!Array.isArray(tupleOrList)) throw new TypeError("Expected find and replace tuple or list of tuples");
12580
12605
  /** @type {Pairs} */
12581
12606
  const result = [];
12582
- /** @type {FindAndReplaceList} */
12583
12607
  const list = !tupleOrList[0] || Array.isArray(tupleOrList[0]) ? tupleOrList : [tupleOrList];
12584
12608
  let index = -1;
12585
12609
  while (++index < list.length) {
@@ -12612,8 +12636,7 @@ window.__ModuleLoader__.load({
12612
12636
  return replace;
12613
12637
  };
12614
12638
  }
12615
- //#endregion
12616
- //#region ../../../node_modules/.pnpm/mdast-util-gfm-autolink-literal@2.0.1/node_modules/mdast-util-gfm-autolink-literal/lib/index.js
12639
+ // ../../../node_modules/.pnpm/mdast-util-gfm-autolink-literal@2.0.1_patch_hash=7fa6fc7927128a45c3f148d31faf388806895e2de39c14a144200edbc1e7aaa0/node_modules/mdast-util-gfm-autolink-literal/lib/index.js
12617
12640
  /**
12618
12641
  * @import {RegExpMatchObject, ReplaceFunction} from 'mdast-util-find-and-replace'
12619
12642
  * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, Transform as FromMarkdownTransform} from 'mdast-util-from-markdown'
@@ -12696,7 +12719,7 @@ window.__ModuleLoader__.load({
12696
12719
  }
12697
12720
  /** @type {FromMarkdownTransform} */
12698
12721
  function transformGfmAutolinkLiterals(tree) {
12699
- findAndReplace(tree, [[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi, findUrl], [/(?<=^|\s|\p{P}|\p{S})([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/gu, findEmail]], { ignore: ["link", "linkReference"] });
12722
+ findAndReplace(tree, [[/(https?:\/\/|www(?=\.))([-.\w]+)((?:[!-~]|(?![\p{P}\p{S}\s])[^ \t\r\n])*)/giu, findUrl], [/(?<=^|\s|\p{P}|\p{S})([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/gu, findEmail]], { ignore: ["link", "linkReference"] });
12700
12723
  }
12701
12724
  /**
12702
12725
  * @type {ReplaceFunction}
@@ -12792,8 +12815,7 @@ window.__ModuleLoader__.load({
12792
12815
  const code = match.input.charCodeAt(match.index - 1);
12793
12816
  return (match.index === 0 || unicodeWhitespace(code) || unicodePunctuation(code)) && (!email || code !== 47);
12794
12817
  }
12795
- //#endregion
12796
- //#region ../../../node_modules/.pnpm/mdast-util-gfm-footnote@2.1.0_supports-color@9.4.0/node_modules/mdast-util-gfm-footnote/lib/index.js
12818
+ // ../../../node_modules/.pnpm/mdast-util-gfm-footnote@2.1.0_supports-color@9.4.0/node_modules/mdast-util-gfm-footnote/lib/index.js
12797
12819
  /**
12798
12820
  * @import {
12799
12821
  * CompileContext,
@@ -12927,8 +12949,7 @@ window.__ModuleLoader__.load({
12927
12949
  }
12928
12950
  };
12929
12951
  }
12930
- //#endregion
12931
- //#region ../../../node_modules/.pnpm/mdast-util-gfm-strikethrough@2.0.1_supports-color@9.4.0/node_modules/mdast-util-gfm-strikethrough/lib/index.js
12952
+ // ../../../node_modules/.pnpm/mdast-util-gfm-strikethrough@2.0.1_supports-color@9.4.0/node_modules/mdast-util-gfm-strikethrough/lib/index.js
12932
12953
  handleDelete.attention = attentionDelete;
12933
12954
  handleDelete.peek = peekDelete;
12934
12955
  /**
@@ -13028,8 +13049,7 @@ window.__ModuleLoader__.load({
13028
13049
  ]);
13029
13050
  ({}).hasOwnProperty;
13030
13051
  ({}).hasOwnProperty;
13031
- //#endregion
13032
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/util/check-quote.js
13052
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/util/check-quote.js
13033
13053
  /**
13034
13054
  * @import {Options, State} from 'mdast-util-to-markdown'
13035
13055
  */
@@ -13046,8 +13066,7 @@ window.__ModuleLoader__.load({
13046
13066
  if (marker !== "\"" && marker !== "'") throw new Error("Cannot serialize title with `" + marker + "` for `options.quote`, expected `\"`, or `'`");
13047
13067
  return marker;
13048
13068
  }
13049
- //#endregion
13050
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js
13069
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js
13051
13070
  /**
13052
13071
  * @import {Options, State} from 'mdast-util-to-markdown'
13053
13072
  */
@@ -13064,8 +13083,674 @@ window.__ModuleLoader__.load({
13064
13083
  if (marker !== "*" && marker !== "_") throw new Error("Cannot serialize emphasis with `" + marker + "` for `options.emphasis`, expected `*`, or `_`");
13065
13084
  return marker;
13066
13085
  }
13067
- //#endregion
13068
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/handle/emphasis.js
13086
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/util/character.js
13087
+ /**
13088
+ * Get the first character of a value.
13089
+ *
13090
+ * Is aware of astral characters (such as emoji).
13091
+ *
13092
+ * @param {string} value
13093
+ * Value.
13094
+ * @returns {string}
13095
+ * First character; empty if `value` is empty.
13096
+ */
13097
+ function firstCharacter(value) {
13098
+ const code = value.codePointAt(0);
13099
+ return code === void 0 ? "" : String.fromCodePoint(code);
13100
+ }
13101
+ /**
13102
+ * Get the last character of a value.
13103
+ *
13104
+ * Is aware of astral characters (such as emoji).
13105
+ *
13106
+ * @param {string} value
13107
+ * Value.
13108
+ * @returns {string}
13109
+ * Last character; empty if `value` is empty.
13110
+ */
13111
+ function lastCharacter(value) {
13112
+ const code = value.codePointAt(value.length - 2);
13113
+ return code !== void 0 && code > 65535 ? value.slice(-2) : value.slice(-1);
13114
+ }
13115
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js
13116
+ /**
13117
+ * Encode a code point as a character reference.
13118
+ *
13119
+ * @param {number} code
13120
+ * Code point to encode.
13121
+ * @returns {string}
13122
+ * Encoded character reference.
13123
+ */
13124
+ function encodeCharacterReference(code) {
13125
+ return "&#x" + code.toString(16).toUpperCase() + ";";
13126
+ }
13127
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/util/encode-info.js
13128
+ /**
13129
+ * @import {EncodeSides} from '../types.js'
13130
+ */
13131
+ /**
13132
+ * Check whether to encode (as a character reference) the characters
13133
+ * surrounding an attention run.
13134
+ *
13135
+ * Which characters are around an attention run influence whether it works or
13136
+ * not.
13137
+ *
13138
+ * See <https://github.com/orgs/syntax-tree/discussions/60> for more info.
13139
+ * See this markdown in a particular renderer to see what works:
13140
+ *
13141
+ * ```markdown
13142
+ * | | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) |
13143
+ * | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ |
13144
+ * | 1 (letter outside) | x*y*z | x*.*z | x* *z | x**z |
13145
+ * | 2 (punctuation outside) | .*y*. | .*.*. | .* *. | .**. |
13146
+ * | 3 (whitespace outside) | x *y* z | x *.* z | x * * z | x ** z |
13147
+ * | 4 (nothing outside) | *x* | *.* | * * | ** |
13148
+ * ```
13149
+ *
13150
+ * @param {number} outside
13151
+ * Code point on the outer side of the run.
13152
+ * @param {number} inside
13153
+ * Code point on the inner side of the run.
13154
+ * @param {string} marker
13155
+ * Marker of the run.
13156
+ * Underscores are handled more strictly (they form less often) than
13157
+ * asterisks.
13158
+ * @returns {EncodeSides}
13159
+ * Whether to encode characters.
13160
+ */
13161
+ function encodeInfo(outside, inside, marker) {
13162
+ const outsideKind = classifyCharacter(outside);
13163
+ const insideKind = classifyCharacter(inside);
13164
+ if (outsideKind === void 0) return insideKind === void 0 ? marker === "_" ? {
13165
+ inside: true,
13166
+ outside: true
13167
+ } : {
13168
+ inside: false,
13169
+ outside: false
13170
+ } : insideKind === 1 ? {
13171
+ inside: true,
13172
+ outside: true
13173
+ } : {
13174
+ inside: false,
13175
+ outside: true
13176
+ };
13177
+ if (outsideKind === 1) return insideKind === void 0 ? {
13178
+ inside: false,
13179
+ outside: false
13180
+ } : insideKind === 1 ? {
13181
+ inside: true,
13182
+ outside: true
13183
+ } : {
13184
+ inside: false,
13185
+ outside: false
13186
+ };
13187
+ return insideKind === void 0 ? {
13188
+ inside: false,
13189
+ outside: false
13190
+ } : insideKind === 1 ? {
13191
+ inside: true,
13192
+ outside: false
13193
+ } : {
13194
+ inside: false,
13195
+ outside: false
13196
+ };
13197
+ }
13198
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/util/html-kind.js
13199
+ /**
13200
+ * @typedef {1 | 2 | 3 | 4 | 5 | 6 | 7} Kind
13201
+ * Kind of HTML (flow) element.
13202
+ */
13203
+ /**
13204
+ * Infer the kind of HTML that `value` is.
13205
+ *
13206
+ * This works on valid trees as produced by `micromark`.
13207
+ * Kinds:
13208
+ *
13209
+ * 1. raw
13210
+ * 2. comment
13211
+ * 3. instruction
13212
+ * 4. declaration
13213
+ * 5. cdata
13214
+ * 6. block
13215
+ * 7. other
13216
+ *
13217
+ * See: <https://spec.commonmark.org/0.31.2/#html-blocks>.
13218
+ *
13219
+ * @param {string} value
13220
+ * HTML.
13221
+ * @returns {Kind | undefined}
13222
+ * Kind; `undefined` if unknown.
13223
+ */
13224
+ function htmlKind(value) {
13225
+ if (value.charCodeAt(0) !== 60) return;
13226
+ const next = value.charCodeAt(1);
13227
+ if (next === 33) {
13228
+ const code = value.charCodeAt(2);
13229
+ if (code === 45) return 2;
13230
+ if (code === 91) return 5;
13231
+ if (asciiAlpha(code)) return 4;
13232
+ return;
13233
+ }
13234
+ if (next === 63) return 3;
13235
+ const closing = next === 47;
13236
+ const start = closing ? 2 : 1;
13237
+ let end = start;
13238
+ let code = value.charCodeAt(end);
13239
+ if (!asciiAlpha(code)) return;
13240
+ while (code === 45 || asciiAlphanumeric(code)) code = value.charCodeAt(++end);
13241
+ const name = value.slice(start, end).toLowerCase();
13242
+ if (!closing && code !== 47 && htmlRawNames.includes(name)) return 1;
13243
+ return htmlBlockNames.includes(name) ? 6 : 7;
13244
+ }
13245
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js
13246
+ /**
13247
+ * @import {Attention, Handle, Info, State, Tracker} from 'mdast-util-to-markdown'
13248
+ * @import {PhrasingParents} from '../types.js'
13249
+ */
13250
+ /**
13251
+ * Markers for builtin attention (emphasis, strong) to whether they are stricter:
13252
+ * whether they cannot open and close inside words.
13253
+ *
13254
+ * Builtin runs pair following CommonMark rules for emphasis and strong:
13255
+ * they are split,
13256
+ * using one or two markers at a time,
13257
+ * with the rule of 3.
13258
+ * Other markers pair like GFM strikethrough:
13259
+ * whole runs pair with a run of the same size.
13260
+ *
13261
+ * @type {Map<string, boolean>}
13262
+ */
13263
+ const builtins = /* @__PURE__ */ new Map([["*", false], ["_", true]]);
13264
+ /**
13265
+ * @typedef AttentionResult
13266
+ * Attention, of which the sequence is chosen later.
13267
+ * @property {Array<Item>} children
13268
+ * Serialized children.
13269
+ * @property {Array<string>} sequences
13270
+ * Sequences that can be used, in order of preference.
13271
+ */
13272
+ /**
13273
+ * @typedef Improvement
13274
+ * Improvement of attention sequences.
13275
+ * @property {Map<AttentionResult, string>} chosen
13276
+ * Chosen sequences for each attention.
13277
+ * @property {Array<Token>} tokens
13278
+ * Tokens involved in the improvement.
13279
+ * @property {Mistake | undefined} mistake
13280
+ * Mistake that led to this improvement, if any.
13281
+ */
13282
+ /**
13283
+ * @typedef {AttentionResult | string} Item
13284
+ * Serialized phrasing.
13285
+ */
13286
+ /**
13287
+ * @typedef Mistake
13288
+ * Sequence that does not form its attention.
13289
+ * @property {Array<AttentionResult>} attention
13290
+ * Attention to try other sequences for.
13291
+ * @property {number} index
13292
+ * Index of the token.
13293
+ */
13294
+ /**
13295
+ * @typedef Run
13296
+ * Sequences next to each other with the same marker.
13297
+ * @property {boolean} close
13298
+ * Whether it can close.
13299
+ * @property {number} end
13300
+ * Index after the last marker not used (to open).
13301
+ * @property {Array<Token>} markers
13302
+ * Sequence of each marker.
13303
+ * @property {boolean} open
13304
+ * Whether it can open.
13305
+ * @property {boolean} split
13306
+ * Whether it can be split (built-in attention).
13307
+ * @property {number} start
13308
+ * Index of the first marker not used (to close).
13309
+ * @property {Array<Token>} tokens
13310
+ * Sequences.
13311
+ */
13312
+ /**
13313
+ * @typedef Token
13314
+ * Rendered phrasing.
13315
+ * @property {AttentionResult | undefined} attention
13316
+ * Attention, if this is one of its sequences.
13317
+ * @property {string} value
13318
+ * Value.
13319
+ */
13320
+ /**
13321
+ * Get candidates for a mistake:
13322
+ * attention to try other sequences for,
13323
+ * later first.
13324
+ *
13325
+ * @param {Array<Token>} tokens
13326
+ * Tokens.
13327
+ * @param {Array<Token>} involved
13328
+ * Sequences involved in the mistake.
13329
+ * @param {Map<Token, Run>} runOf
13330
+ * Run of each sequence.
13331
+ * @returns {Array<AttentionResult>}
13332
+ * Candidates.
13333
+ */
13334
+ function candidates(tokens, involved, runOf) {
13335
+ /** @type {Set<AttentionResult | undefined>} */
13336
+ const related = /* @__PURE__ */ new Set();
13337
+ for (const token of tokens) {
13338
+ const siblings = runOf.get(token);
13339
+ if (siblings && token.attention && involved.some((d) => d.attention === token.attention)) for (const sibling of siblings.tokens) related.add(sibling.attention);
13340
+ }
13341
+ /** @type {Array<AttentionResult>} */
13342
+ const ordered = [];
13343
+ for (const token of tokens) if (token.attention && related.delete(token.attention)) ordered.push(token.attention);
13344
+ ordered.reverse();
13345
+ return ordered;
13346
+ }
13347
+ /**
13348
+ * Check whether sequences form their attention, like `micromark`.
13349
+ *
13350
+ * Sequences of `*` and `_` pair like emphasis and strong in CommonMark,
13351
+ * others like strikethrough in GFM.
13352
+ *
13353
+ * @param {Array<Token>} tokens
13354
+ * Tokens.
13355
+ * @param {string} before
13356
+ * Characters before.
13357
+ * @param {string} after
13358
+ * Characters after.
13359
+ * @returns {Mistake | undefined}
13360
+ * First mistake, if any.
13361
+ */
13362
+ function check(tokens, before, after) {
13363
+ /** @type {Array<Run>} */
13364
+ const runs = [];
13365
+ /** @type {Map<Token, Array<Token>>} */
13366
+ const wrong = /* @__PURE__ */ new Map();
13367
+ /** @type {Map<Token, Run>} */
13368
+ const runOf = /* @__PURE__ */ new Map();
13369
+ let index = 0;
13370
+ while (index < tokens.length) {
13371
+ if (!tokens[index].attention) {
13372
+ index++;
13373
+ continue;
13374
+ }
13375
+ const marker = tokens[index].value.charAt(0);
13376
+ const strict = builtins.get(marker);
13377
+ let end = index + 1;
13378
+ while (end < tokens.length && tokens[end].attention && tokens[end].value.charAt(0) === marker) end++;
13379
+ const head = index ? tokens[index - 1].value : before;
13380
+ const previous = classifyCharacter(head.charCodeAt(head.length - 1));
13381
+ const next = classifyCharacter((end < tokens.length ? tokens[end].value : after).charCodeAt(0));
13382
+ const open = !next || next === 2 && Boolean(previous);
13383
+ const close = !previous || previous === 2 && Boolean(next);
13384
+ /** @type {Run} */
13385
+ const run = {
13386
+ tokens: tokens.slice(index, end),
13387
+ markers: [],
13388
+ start: 0,
13389
+ end: 0,
13390
+ open: strict ? open && (Boolean(previous) || !close) : open,
13391
+ close: strict ? close && (Boolean(next) || !open) : close,
13392
+ split: strict !== void 0
13393
+ };
13394
+ for (const token of run.tokens) {
13395
+ wrong.set(token, [...run.tokens]);
13396
+ runOf.set(token, run);
13397
+ let size = token.value.length;
13398
+ while (size--) run.markers.push(token);
13399
+ }
13400
+ run.end = run.markers.length;
13401
+ runs.push(run);
13402
+ index = end;
13403
+ }
13404
+ pair(runs, wrong);
13405
+ index = -1;
13406
+ while (++index < tokens.length) {
13407
+ const involved = wrong.get(tokens[index]);
13408
+ if (involved) return {
13409
+ attention: candidates(tokens, involved, runOf),
13410
+ index
13411
+ };
13412
+ }
13413
+ }
13414
+ /**
13415
+ * Encode the first or last character of tokens as a character reference,
13416
+ * if it is text.
13417
+ *
13418
+ * @param {Array<Token>} tokens
13419
+ * Tokens.
13420
+ * @param {boolean} start
13421
+ * Whether to encode the first or last character.
13422
+ * @returns {undefined}
13423
+ * Nothing.
13424
+ */
13425
+ function encode(tokens, start) {
13426
+ const token = tokens[start ? 0 : tokens.length - 1];
13427
+ if (!token || token.attention) return;
13428
+ const character = start ? firstCharacter(token.value) : lastCharacter(token.value);
13429
+ const reference = encodeCharacterReference(character.codePointAt(0));
13430
+ if (start) token.value = reference + token.value.slice(character.length);
13431
+ else {
13432
+ let value = token.value.slice(0, token.value.length - character.length);
13433
+ let escapes = 0;
13434
+ while (value.charCodeAt(value.length - 1 - escapes) === 92) escapes++;
13435
+ if (escapes % 2) value += "\\";
13436
+ token.value = value + reference;
13437
+ }
13438
+ }
13439
+ /**
13440
+ * Try other sequences for the candidates of a mistake and use the first that
13441
+ * moves the mistake further.
13442
+ *
13443
+ * @param {Array<Item>} items
13444
+ * Items.
13445
+ * @param {Map<AttentionResult, string>} chosen
13446
+ * Sequences to use instead of preferred sequences.
13447
+ * @param {Mistake} mistake
13448
+ * Mistake.
13449
+ * @param {string} before
13450
+ * Characters before.
13451
+ * @param {string} after
13452
+ * Characters after.
13453
+ * @returns {Improvement | undefined}
13454
+ * Result if better.
13455
+ */
13456
+ function improve(items, chosen, mistake, before, after) {
13457
+ for (const attention of mistake.attention) {
13458
+ const current = chosen.get(attention) || attention.sequences[0];
13459
+ for (const sequence of attention.sequences) {
13460
+ if (sequence === current) continue;
13461
+ const trial = new Map(chosen);
13462
+ trial.set(attention, sequence);
13463
+ const tokens = render(items, trial, before, after);
13464
+ const next = check(tokens, before, after);
13465
+ if (!next || next.index > mistake.index) return {
13466
+ chosen: trial,
13467
+ mistake: next,
13468
+ tokens
13469
+ };
13470
+ }
13471
+ }
13472
+ }
13473
+ /**
13474
+ * Pair runs like `micromark` and mark sequences that do form their attention
13475
+ * as fine.
13476
+ *
13477
+ * Each pair uses markers from the end of an opener and the start of a closer.
13478
+ * It forms the intended attention if those markers are exactly the whole
13479
+ * opening and closing sequence of one attention.
13480
+ * Otherwise attention is mixed up:
13481
+ * either sequences of different attention pair,
13482
+ * part of a sequence is used (such as `**` of strong as `*`),
13483
+ * or several sequences are used together (such as `*` and `*` as `**`).
13484
+ * Then the sequences involved are recorded with each other.
13485
+ *
13486
+ * @param {Array<Run>} runs
13487
+ * Runs.
13488
+ * @param {Map<Token, Array<Token>>} wrong
13489
+ * Sequences that are wrong, with the sequences involved.
13490
+ * @returns {undefined}
13491
+ * Nothing, `wrong` is changed.
13492
+ */
13493
+ function pair(runs, wrong) {
13494
+ /** @type {Map<string, Array<Run>>} */
13495
+ const openersByMarker = /* @__PURE__ */ new Map();
13496
+ for (const closer of runs) {
13497
+ const marker = closer.tokens[0].value.charAt(0);
13498
+ let openers = openersByMarker.get(marker);
13499
+ if (!openers) {
13500
+ openers = [];
13501
+ openersByMarker.set(marker, openers);
13502
+ }
13503
+ let open = closer.close ? openers.length : 0;
13504
+ while (open-- && closer.start < closer.end) {
13505
+ const opener = openers[open];
13506
+ const openerSize = opener.end - opener.start;
13507
+ const closerSize = closer.end - closer.start;
13508
+ if (closer.split ? (opener.close || closer.open) && closerSize % 3 && !((openerSize + closerSize) % 3) : openerSize !== opener.markers.length || openerSize !== closerSize) continue;
13509
+ const size = closer.split ? openerSize > 1 && closerSize > 1 ? 2 : 1 : closerSize;
13510
+ const opening = opener.markers.slice(opener.end - size, opener.end);
13511
+ const closing = closer.markers.slice(closer.start, closer.start + size);
13512
+ const openToken = opening[0];
13513
+ const closeToken = closing[0];
13514
+ if (openToken === opening[size - 1] && openToken.value.length === size && closeToken === closing[size - 1] && closeToken.value.length === size && openToken.attention === closeToken.attention) {
13515
+ wrong.delete(openToken);
13516
+ wrong.delete(closeToken);
13517
+ } else {
13518
+ const involved = [.../* @__PURE__ */ new Set([...opening, ...closing])];
13519
+ for (const token of involved) {
13520
+ const list = wrong.get(token);
13521
+ if (list) list.push(...involved);
13522
+ }
13523
+ }
13524
+ opener.end -= size;
13525
+ closer.start += size;
13526
+ if (opener.start === opener.end) openers.splice(open, 1);
13527
+ open = openers.length;
13528
+ }
13529
+ if (closer.open && closer.start < closer.end) openers.push(closer);
13530
+ }
13531
+ }
13532
+ /**
13533
+ * Get the sequences that can be used for attention, in order of preference.
13534
+ *
13535
+ * @param {string} type
13536
+ * Node type.
13537
+ * @param {Array<string>} markers
13538
+ * Markers.
13539
+ * @param {Array<number>} sizes
13540
+ * Sizes.
13541
+ * @returns {Array<string>}
13542
+ * Sequences.
13543
+ */
13544
+ function attentionSequences(type, markers, sizes) {
13545
+ if (markers.length === 0) throw new Error("Cannot serialize `" + type + "` as attention without markers, expected one or more markers");
13546
+ if (sizes.length === 0) throw new Error("Cannot serialize `" + type + "` as attention without sizes, expected one or more sizes");
13547
+ for (const size of sizes) if (!Number.isSafeInteger(size) || size < 1) throw new Error("Cannot serialize `" + type + "` as attention with `" + size + "` as size, expected positive integer");
13548
+ /** @type {Array<string>} */
13549
+ const sequences = [];
13550
+ for (const marker of markers) {
13551
+ if (marker.length !== 1) throw new Error("Cannot serialize `" + type + "` as attention with `" + marker + "` as marker, expected a single ascii character");
13552
+ if (!asciiPunctuation(marker.charCodeAt(0))) throw new Error("Cannot serialize `" + type + "` as attention with `" + marker + "` as marker, expected ascii punctuation");
13553
+ for (const size of sizes) sequences.push(marker.repeat(size));
13554
+ }
13555
+ return sequences;
13556
+ }
13557
+ /**
13558
+ * Serialize the children of a parent that contains phrasing children,
13559
+ * keeping attention separate,
13560
+ * so that its markers can be chosen later.
13561
+ *
13562
+ * @param {PhrasingParents} parent
13563
+ * Parent of phrasing nodes.
13564
+ * @param {State} state
13565
+ * Info passed around about the current state.
13566
+ * @param {Info} info
13567
+ * Info on where we are in the document we are generating.
13568
+ * @returns {Array<Item>}
13569
+ * Items.
13570
+ */
13571
+ function phrasing(parent, state, info) {
13572
+ const indexStack = state.indexStack;
13573
+ const children = parent.children || [];
13574
+ /** @type {Array<Item>} */
13575
+ const results = [];
13576
+ let index = -1;
13577
+ let before = info.before;
13578
+ indexStack.push(-1);
13579
+ let tracker = state.createTracker(info);
13580
+ while (++index < children.length) {
13581
+ const child = children[index];
13582
+ /** @type {string} */
13583
+ let after;
13584
+ indexStack[indexStack.length - 1] = index;
13585
+ if (index + 1 < children.length) {
13586
+ /** @type {Handle} */
13587
+ let handle = state.handle.handlers[children[index + 1].type];
13588
+ if (handle && handle.peek) handle = handle.peek;
13589
+ after = handle ? firstCharacter(handle(children[index + 1], parent, state, {
13590
+ before: "",
13591
+ after: "",
13592
+ ...tracker.current()
13593
+ })) : "";
13594
+ } else after = info.after;
13595
+ const previous = results[results.length - 1];
13596
+ if (typeof previous === "string" && (before === "\r" || before === "\n") && child.type === "html" && htmlKind(child.value) !== 7) {
13597
+ results[results.length - 1] = previous.replace(/(\r?\n|\r)$/, " ");
13598
+ before = " ";
13599
+ tracker = state.createTracker(info);
13600
+ tracker.move(serialize(results, info.before, info.after));
13601
+ }
13602
+ /** @type {(Handle & {attention?: Attention | undefined}) | undefined} */
13603
+ const handle = state.handle.handlers[child.type];
13604
+ if (handle && handle.attention) {
13605
+ const item = attentionItem(child, handle.attention, state, tracker);
13606
+ results.push(item);
13607
+ before = lastCharacter(item.sequences[0]);
13608
+ } else {
13609
+ const value = state.handle(child, parent, state, {
13610
+ ...tracker.current(),
13611
+ after,
13612
+ before
13613
+ });
13614
+ if (!value) continue;
13615
+ tracker.move(value);
13616
+ results.push(value);
13617
+ before = lastCharacter(value);
13618
+ }
13619
+ }
13620
+ indexStack.pop();
13621
+ return results;
13622
+ }
13623
+ /**
13624
+ * Serialize a node as attention,
13625
+ * with its sequence chosen later.
13626
+ *
13627
+ * @param {PhrasingParents} node
13628
+ * Node.
13629
+ * @param {Attention} attention
13630
+ * Attention of the node.
13631
+ * @param {State} state
13632
+ * Info passed around about the current state.
13633
+ * @param {Tracker} tracker
13634
+ * Tracker.
13635
+ * @returns {AttentionResult}
13636
+ * Attention.
13637
+ */
13638
+ function attentionItem(node, attention, state, tracker) {
13639
+ const { construct, markers, sizes } = attention(node, state);
13640
+ const sequences = attentionSequences(node.type, markers, sizes);
13641
+ const sequence = sequences[0];
13642
+ const exit = state.enter(construct);
13643
+ tracker.move(sequence);
13644
+ const children = phrasing(node, state, {
13645
+ ...tracker.current(),
13646
+ before: sequence,
13647
+ after: sequence
13648
+ });
13649
+ tracker.move(serialize(children, sequence, sequence));
13650
+ tracker.move(sequence);
13651
+ exit();
13652
+ return {
13653
+ children,
13654
+ sequences
13655
+ };
13656
+ }
13657
+ /**
13658
+ * Render items with sequences;
13659
+ * encoding characters around attention where needed.
13660
+ *
13661
+ * @param {Array<Item>} items
13662
+ * Serialized phrasing.
13663
+ * @param {Map<AttentionResult, string>} chosen
13664
+ * Sequences to use instead of preferred sequences.
13665
+ * @param {string} before
13666
+ * Characters before.
13667
+ * @param {string} after
13668
+ * Characters after.
13669
+ * @returns {Array<Token>}
13670
+ * Tokens.
13671
+ */
13672
+ function render(items, chosen, before, after) {
13673
+ /** @type {Array<Token>} */
13674
+ const tokens = [];
13675
+ /** @type {string | undefined} */
13676
+ let encodeAfter;
13677
+ let previous = lastCharacter(before);
13678
+ let index = -1;
13679
+ while (++index < items.length) {
13680
+ const item = items[index];
13681
+ if (typeof item === "string") {
13682
+ /** @type {Token} */
13683
+ const token = {
13684
+ value: item,
13685
+ attention: void 0
13686
+ };
13687
+ if (encodeAfter && encodeAfter === firstCharacter(item)) encode([token], true);
13688
+ encodeAfter = void 0;
13689
+ tokens.push(token);
13690
+ if (token.value) previous = lastCharacter(token.value);
13691
+ continue;
13692
+ }
13693
+ const sequence = chosen.get(item) || item.sequences[0];
13694
+ const marker = sequence.charAt(0);
13695
+ const next = items[index + 1];
13696
+ const outsideBefore = previous;
13697
+ const outsideAfter = firstCharacter(next === void 0 ? after : typeof next === "string" ? next : chosen.get(next) || next.sequences[0]);
13698
+ const inside = render(item.children, chosen, sequence, sequence);
13699
+ const head = inside.length > 0 ? inside[0].value : "";
13700
+ const open = encodeInfo(outsideBefore.charCodeAt(outsideBefore.length - 1), head.charCodeAt(0), marker);
13701
+ if (open.inside) encode(inside, true);
13702
+ const tail = inside.length > 0 ? lastCharacter(inside[inside.length - 1].value) : "";
13703
+ const close = encodeInfo(outsideAfter.charCodeAt(0), tail.charCodeAt(tail.length - 1), marker);
13704
+ if (close.inside) encode(inside, false);
13705
+ if (open.outside && outsideBefore !== "\n" && outsideBefore !== "\r") encode(tokens, false);
13706
+ if (close.outside) encodeAfter = outsideAfter;
13707
+ tokens.push({
13708
+ value: sequence,
13709
+ attention: item
13710
+ }, ...inside, {
13711
+ value: sequence,
13712
+ attention: item
13713
+ });
13714
+ previous = sequence.charAt(sequence.length - 1);
13715
+ }
13716
+ return tokens;
13717
+ }
13718
+ /**
13719
+ * Serialize phrasing with attention.
13720
+ *
13721
+ * Whether attention forms depends on everything around it.
13722
+ * This checks that it does and tries other sequences if not.
13723
+ *
13724
+ * @param {Array<Item>} items
13725
+ * Phrasing items.
13726
+ * @param {string} before
13727
+ * Characters before.
13728
+ * @param {string} after
13729
+ * Characters after.
13730
+ * @returns {string}
13731
+ * Serialized markdown.
13732
+ */
13733
+ function serialize(items, before, after) {
13734
+ /** @type {Map<AttentionResult, string>} */
13735
+ let chosen = /* @__PURE__ */ new Map();
13736
+ const initial = render(items, chosen, before, after);
13737
+ let tokens = initial;
13738
+ let mistake = check(tokens, before, after);
13739
+ while (mistake) {
13740
+ const next = improve(items, chosen, mistake, before, after);
13741
+ if (!next) {
13742
+ tokens = initial;
13743
+ break;
13744
+ }
13745
+ chosen = next.chosen;
13746
+ tokens = next.tokens;
13747
+ mistake = next.mistake;
13748
+ }
13749
+ let result = "";
13750
+ for (const token of tokens) result += token.value;
13751
+ return result;
13752
+ }
13753
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/handle/emphasis.js
13069
13754
  /**
13070
13755
  * @import {AttentionInfo, Info, State} from 'mdast-util-to-markdown'
13071
13756
  * @import {Emphasis, Parents} from 'mdast'
@@ -13090,10 +13775,7 @@ window.__ModuleLoader__.load({
13090
13775
  */
13091
13776
  function emphasis(node, _, state, info) {
13092
13777
  const exit = state.enter("phrasing");
13093
- const value = state.containerPhrasing({
13094
- type: "root",
13095
- children: [node]
13096
- }, info);
13778
+ const value = serialize([attentionItem(node, attention$1, state, state.createTracker(info))], info.before, info.after);
13097
13779
  exit();
13098
13780
  return value;
13099
13781
  }
@@ -13129,8 +13811,7 @@ window.__ModuleLoader__.load({
13129
13811
  function peek$1(_, _1, state) {
13130
13812
  return state.options.emphasis || "*";
13131
13813
  }
13132
- //#endregion
13133
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/handle/html.js
13814
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/handle/html.js
13134
13815
  /**
13135
13816
  * @import {Html} from 'mdast'
13136
13817
  */
@@ -13155,8 +13836,7 @@ window.__ModuleLoader__.load({
13155
13836
  function htmlPeek() {
13156
13837
  return "<";
13157
13838
  }
13158
- //#endregion
13159
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/handle/image.js
13839
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/handle/image.js
13160
13840
  /**
13161
13841
  * @import {Info, State} from 'mdast-util-to-markdown'
13162
13842
  * @import {Image, Parents} from 'mdast'
@@ -13232,8 +13912,7 @@ window.__ModuleLoader__.load({
13232
13912
  function imagePeek() {
13233
13913
  return "!";
13234
13914
  }
13235
- //#endregion
13236
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/handle/image-reference.js
13915
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/handle/image-reference.js
13237
13916
  /**
13238
13917
  * @import {Info, State} from 'mdast-util-to-markdown'
13239
13918
  * @import {ImageReference, Parents} from 'mdast'
@@ -13293,8 +13972,7 @@ window.__ModuleLoader__.load({
13293
13972
  function imageReferencePeek() {
13294
13973
  return "!";
13295
13974
  }
13296
- //#endregion
13297
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/handle/inline-code.js
13975
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/handle/inline-code.js
13298
13976
  /**
13299
13977
  * @import {State} from 'mdast-util-to-markdown'
13300
13978
  * @import {InlineCode, Parents} from 'mdast'
@@ -13341,8 +14019,7 @@ window.__ModuleLoader__.load({
13341
14019
  function inlineCodePeek() {
13342
14020
  return "`";
13343
14021
  }
13344
- //#endregion
13345
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js
14022
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js
13346
14023
  /**
13347
14024
  * @import {State} from 'mdast-util-to-markdown'
13348
14025
  * @import {Link} from 'mdast'
@@ -13361,8 +14038,7 @@ window.__ModuleLoader__.load({
13361
14038
  const raw = toString(node);
13362
14039
  return Boolean(!state.options.resourceLink && node.url && !node.title && node.children && node.children.length === 1 && node.children[0].type === "text" && (raw === node.url || "mailto:" + raw === node.url) && /^[a-z][+\-.a-z]+:/i.test(node.url) && !/[\0- <>\u007F]/.test(node.url));
13363
14040
  }
13364
- //#endregion
13365
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/handle/link.js
14041
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/handle/link.js
13366
14042
  /**
13367
14043
  * @import {Info, State} from 'mdast-util-to-markdown'
13368
14044
  * @import {Link, Parents} from 'mdast'
@@ -13407,14 +14083,23 @@ window.__ModuleLoader__.load({
13407
14083
  const exit = state.enter("link");
13408
14084
  let subexit = state.enter("label");
13409
14085
  let value = tracker.move("[");
13410
- value += tracker.move(state.containerPhrasing(node, {
14086
+ const text = state.containerPhrasing(node, {
13411
14087
  before: value,
13412
14088
  after: "](",
13413
14089
  ...tracker.current()
13414
- }));
13415
- value += tracker.move("](");
14090
+ });
14091
+ value += tracker.move(text);
13416
14092
  subexit();
13417
- if (!node.url && node.title || /[\0- \u007F]/.test(node.url)) {
14093
+ value += tracker.move("](");
14094
+ const enclose = /[\0- \u007F]/.test(node.url);
14095
+ const last = info.before.charAt(info.before.length - 1);
14096
+ let title = node.title || void 0;
14097
+ if (!title && !enclose && (last === "\n" || last === "\r")) {
14098
+ let index = 0;
14099
+ while (index < text.length && text.charCodeAt(index) !== 93) index += text.charCodeAt(index) === 92 ? 2 : 1;
14100
+ if (text.charCodeAt(index + 1) === 58) title = "";
14101
+ }
14102
+ if (!node.url && typeof title === "string" || enclose) {
13418
14103
  subexit = state.enter("destinationLiteral");
13419
14104
  value += tracker.move("<");
13420
14105
  value += tracker.move(state.safe(node.url, {
@@ -13427,15 +14112,15 @@ window.__ModuleLoader__.load({
13427
14112
  subexit = state.enter("destinationRaw");
13428
14113
  value += tracker.move(state.safe(node.url, {
13429
14114
  before: value,
13430
- after: node.title ? " " : ")",
14115
+ after: typeof title === "string" ? " " : ")",
13431
14116
  ...tracker.current()
13432
14117
  }));
13433
14118
  }
13434
14119
  subexit();
13435
- if (node.title) {
14120
+ if (typeof title === "string") {
13436
14121
  subexit = state.enter(`title${suffix}`);
13437
14122
  value += tracker.move(" " + quote);
13438
- value += tracker.move(state.safe(node.title, {
14123
+ value += tracker.move(state.safe(title, {
13439
14124
  before: value,
13440
14125
  after: quote,
13441
14126
  ...tracker.current()
@@ -13462,8 +14147,7 @@ window.__ModuleLoader__.load({
13462
14147
  function linkPeek(node, _, state) {
13463
14148
  return formatLinkAsAutolink(node, state) ? "<" : "[";
13464
14149
  }
13465
- //#endregion
13466
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/handle/link-reference.js
14150
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/handle/link-reference.js
13467
14151
  /**
13468
14152
  * @import {Info, State} from 'mdast-util-to-markdown'
13469
14153
  * @import {LinkReference, Parents} from 'mdast'
@@ -13523,8 +14207,7 @@ window.__ModuleLoader__.load({
13523
14207
  function linkReferencePeek() {
13524
14208
  return "[";
13525
14209
  }
13526
- //#endregion
13527
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/util/check-strong.js
14210
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/util/check-strong.js
13528
14211
  /**
13529
14212
  * @import {Options, State} from 'mdast-util-to-markdown'
13530
14213
  */
@@ -13541,8 +14224,7 @@ window.__ModuleLoader__.load({
13541
14224
  if (marker !== "*" && marker !== "_") throw new Error("Cannot serialize strong with `" + marker + "` for `options.strong`, expected `*`, or `_`");
13542
14225
  return marker;
13543
14226
  }
13544
- //#endregion
13545
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/handle/strong.js
14227
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/handle/strong.js
13546
14228
  /**
13547
14229
  * @import {AttentionInfo, Info, State} from 'mdast-util-to-markdown'
13548
14230
  * @import {Parents, Strong} from 'mdast'
@@ -13567,10 +14249,7 @@ window.__ModuleLoader__.load({
13567
14249
  */
13568
14250
  function strong(node, _, state, info) {
13569
14251
  const exit = state.enter("phrasing");
13570
- const value = state.containerPhrasing({
13571
- type: "root",
13572
- children: [node]
13573
- }, info);
14252
+ const value = serialize([attentionItem(node, attention, state, state.createTracker(info))], info.before, info.after);
13574
14253
  exit();
13575
14254
  return value;
13576
14255
  }
@@ -13606,8 +14285,7 @@ window.__ModuleLoader__.load({
13606
14285
  function peek(_, _1, state) {
13607
14286
  return state.options.strong || "*";
13608
14287
  }
13609
- //#endregion
13610
- //#region ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.0/node_modules/mdast-util-to-markdown/lib/unsafe.js
14288
+ // ../../../node_modules/.pnpm/mdast-util-to-markdown@2.2.1/node_modules/mdast-util-to-markdown/lib/unsafe.js
13611
14289
  /**
13612
14290
  * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'
13613
14291
  */
@@ -13721,7 +14399,17 @@ window.__ModuleLoader__.load({
13721
14399
  {
13722
14400
  character: "&",
13723
14401
  after: "[#A-Za-z]",
13724
- inConstruct: "phrasing"
14402
+ inConstruct: [
14403
+ "codeFencedLangGraveAccent",
14404
+ "codeFencedLangTilde",
14405
+ "codeFencedMetaGraveAccent",
14406
+ "codeFencedMetaTilde",
14407
+ "destinationLiteral",
14408
+ "destinationRaw",
14409
+ "phrasing",
14410
+ "titleApostrophe",
14411
+ "titleQuote"
14412
+ ]
13725
14413
  },
13726
14414
  {
13727
14415
  character: "'",
@@ -13866,8 +14554,7 @@ window.__ModuleLoader__.load({
13866
14554
  inConstruct: "autolink"
13867
14555
  });
13868
14556
  ({}).hasOwnProperty;
13869
- //#endregion
13870
- //#region ../../../node_modules/.pnpm/mdast-util-gfm-table@2.0.0_supports-color@9.4.0/node_modules/mdast-util-gfm-table/lib/index.js
14557
+ // ../../../node_modules/.pnpm/mdast-util-gfm-table@2.0.0_supports-color@9.4.0/node_modules/mdast-util-gfm-table/lib/index.js
13871
14558
  /**
13872
14559
  * @typedef {import('mdast').InlineCode} InlineCode
13873
14560
  * @typedef {import('mdast').Table} Table
@@ -13991,8 +14678,7 @@ window.__ModuleLoader__.load({
13991
14678
  function replace($0, $1) {
13992
14679
  return $1 === "|" ? $1 : $0;
13993
14680
  }
13994
- //#endregion
13995
- //#region ../../../node_modules/.pnpm/mdast-util-gfm-task-list-item@2.0.0_supports-color@9.4.0/node_modules/mdast-util-gfm-task-list-item/lib/index.js
14681
+ // ../../../node_modules/.pnpm/mdast-util-gfm-task-list-item@2.0.0_supports-color@9.4.0/node_modules/mdast-util-gfm-task-list-item/lib/index.js
13996
14682
  /**
13997
14683
  * @typedef {import('mdast').ListItem} ListItem
13998
14684
  * @typedef {import('mdast').Paragraph} Paragraph
@@ -14060,8 +14746,7 @@ window.__ModuleLoader__.load({
14060
14746
  }
14061
14747
  this.exit(token);
14062
14748
  }
14063
- //#endregion
14064
- //#region ../../../node_modules/.pnpm/mdast-util-gfm@3.1.0_supports-color@9.4.0/node_modules/mdast-util-gfm/lib/index.js
14749
+ // ../../../node_modules/.pnpm/mdast-util-gfm@3.1.0_supports-color@9.4.0/node_modules/mdast-util-gfm/lib/index.js
14065
14750
  /**
14066
14751
  * @import {Extension as FromMarkdownExtension} from 'mdast-util-from-markdown'
14067
14752
  * @import {Options} from 'mdast-util-gfm'
@@ -14084,8 +14769,7 @@ window.__ModuleLoader__.load({
14084
14769
  gfmTaskListItemFromMarkdown()
14085
14770
  ];
14086
14771
  }
14087
- //#endregion
14088
- //#region ../../../node_modules/.pnpm/micromark-extension-gfm-autolink-literal@2.1.0/node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js
14772
+ // ../../../node_modules/.pnpm/micromark-extension-gfm-autolink-literal@2.1.0_patch_hash=906ae7c0cd1f69e7ee308a41bc054_3cbe234c53027bed16ba7d28e78f0ec4/node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js
14089
14773
  /**
14090
14774
  * @import {Code, ConstructRecord, Event, Extension, Previous, State, TokenizeContext, Tokenizer} from 'micromark-util-types'
14091
14775
  */
@@ -14105,6 +14789,10 @@ window.__ModuleLoader__.load({
14105
14789
  tokenize: tokenizeTrail,
14106
14790
  partial: true
14107
14791
  };
14792
+ const astralPunctuation = {
14793
+ tokenize: tokenizeAstralPunctuation,
14794
+ partial: true
14795
+ };
14108
14796
  const emailDomainDotTrail = {
14109
14797
  tokenize: tokenizeEmailDomainDotTrail,
14110
14798
  partial: true
@@ -14572,7 +15260,8 @@ window.__ModuleLoader__.load({
14572
15260
  }
14573
15261
  if (code === 41 && sizeClose < sizeOpen) return pathAtPunctuation(code);
14574
15262
  if (code === 33 || code === 34 || code === 38 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 60 || code === 63 || code === 93 || code === 95 || code === 126) return effects.check(trail, ok, pathAtPunctuation)(code);
14575
- if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) return ok(code);
15263
+ if (highSurrogate(code)) return effects.check(astralPunctuation, ok, pathAtPunctuation)(code);
15264
+ if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || nonAsciiPunctuation(code)) return ok(code);
14576
15265
  effects.consume(code);
14577
15266
  return pathInside;
14578
15267
  }
@@ -14632,7 +15321,8 @@ window.__ModuleLoader__.load({
14632
15321
  effects.consume(code);
14633
15322
  return trailBracketAfter;
14634
15323
  }
14635
- if (code === 60 || code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) return ok(code);
15324
+ if (code === 60 || code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || nonAsciiPunctuation(code)) return ok(code);
15325
+ if (highSurrogate(code)) return effects.check(astralPunctuation, ok, nok)(code);
14636
15326
  return nok(code);
14637
15327
  }
14638
15328
  /**
@@ -14758,6 +15448,47 @@ window.__ModuleLoader__.load({
14758
15448
  return !(code === 47 || gfmAtext(code));
14759
15449
  }
14760
15450
  /**
15451
+ * Non-ASCII punctuation or symbol, such as `。` or `,`, which ends a literal
15452
+ * in CJK prose.
15453
+ *
15454
+ * @param {Code} code
15455
+ * @returns {boolean}
15456
+ */
15457
+ function nonAsciiPunctuation(code) {
15458
+ return code !== null && code > 127 && unicodePunctuation(code);
15459
+ }
15460
+ /**
15461
+ * Whether `code` is a UTF-16 high surrogate, which starts a character outside
15462
+ * the BMP such as `😀`.
15463
+ *
15464
+ * @param {Code} code
15465
+ * @returns {boolean}
15466
+ */
15467
+ function highSurrogate(code) {
15468
+ return code !== null && code >= 55296 && code <= 56319;
15469
+ }
15470
+ /**
15471
+ * Check whether a surrogate pair is punctuation or a symbol.
15472
+ *
15473
+ * @this {TokenizeContext}
15474
+ * @type {Tokenizer}
15475
+ */
15476
+ function tokenizeAstralPunctuation(effects, ok, nok) {
15477
+ /** @type {number} */
15478
+ let high;
15479
+ return start;
15480
+ /** @type {State} */
15481
+ function start(code) {
15482
+ high = code;
15483
+ effects.consume(code);
15484
+ return low;
15485
+ }
15486
+ /** @type {State} */
15487
+ function low(code) {
15488
+ return code !== null && code >= 56320 && code <= 57343 && /[\p{P}\p{S}]/u.test(String.fromCharCode(high, code)) ? ok(code) : nok(code);
15489
+ }
15490
+ }
15491
+ /**
14761
15492
  * @param {Code} code
14762
15493
  * @returns {boolean}
14763
15494
  */
@@ -14785,8 +15516,7 @@ window.__ModuleLoader__.load({
14785
15516
  if (events.length > 0 && !result) events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;
14786
15517
  return result;
14787
15518
  }
14788
- //#endregion
14789
- //#region ../../../node_modules/.pnpm/micromark-extension-gfm-footnote@2.1.0/node_modules/micromark-extension-gfm-footnote/lib/syntax.js
15519
+ // ../../../node_modules/.pnpm/micromark-extension-gfm-footnote@2.1.0/node_modules/micromark-extension-gfm-footnote/lib/syntax.js
14790
15520
  /**
14791
15521
  * @import {Event, Exiter, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'
14792
15522
  */
@@ -15205,8 +15935,7 @@ window.__ModuleLoader__.load({
15205
15935
  }
15206
15936
  }
15207
15937
  ({}).hasOwnProperty;
15208
- //#endregion
15209
- //#region ../../../node_modules/.pnpm/micromark-extension-gfm-strikethrough@2.1.0/node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js
15938
+ // ../../../node_modules/.pnpm/micromark-extension-gfm-strikethrough@2.1.0/node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js
15210
15939
  /**
15211
15940
  * @import {Options} from 'micromark-extension-gfm-strikethrough'
15212
15941
  * @import {Event, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'
@@ -15346,8 +16075,7 @@ window.__ModuleLoader__.load({
15346
16075
  }
15347
16076
  }
15348
16077
  }
15349
- //#endregion
15350
- //#region ../../../node_modules/.pnpm/micromark-extension-gfm-table@2.1.2/node_modules/micromark-extension-gfm-table/lib/edit-map.js
16078
+ // ../../../node_modules/.pnpm/micromark-extension-gfm-table@2.1.2/node_modules/micromark-extension-gfm-table/lib/edit-map.js
15351
16079
  /**
15352
16080
  * @import {Event} from 'micromark-util-types'
15353
16081
  */
@@ -15457,8 +16185,7 @@ window.__ModuleLoader__.load({
15457
16185
  editMap.map.push(change);
15458
16186
  editMap.index.set(at, change);
15459
16187
  }
15460
- //#endregion
15461
- //#region ../../../node_modules/.pnpm/micromark-extension-gfm-table@2.1.2/node_modules/micromark-extension-gfm-table/lib/infer.js
16188
+ // ../../../node_modules/.pnpm/micromark-extension-gfm-table@2.1.2/node_modules/micromark-extension-gfm-table/lib/infer.js
15462
16189
  /**
15463
16190
  * @import {Event} from 'micromark-util-types'
15464
16191
  */
@@ -15495,8 +16222,7 @@ window.__ModuleLoader__.load({
15495
16222
  }
15496
16223
  return align;
15497
16224
  }
15498
- //#endregion
15499
- //#region ../../../node_modules/.pnpm/micromark-extension-gfm-table@2.1.2/node_modules/micromark-extension-gfm-table/lib/syntax.js
16225
+ // ../../../node_modules/.pnpm/micromark-extension-gfm-table@2.1.2/node_modules/micromark-extension-gfm-table/lib/syntax.js
15500
16226
  /**
15501
16227
  * @import {Event, Extension, Point, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'
15502
16228
  */
@@ -16213,8 +16939,7 @@ window.__ModuleLoader__.load({
16213
16939
  return event[1][side];
16214
16940
  }
16215
16941
  new RegExp("^" + /<(\/?)(iframe|noembed|noframes|plaintext|script|style|title|textarea|xmp)(?=[\t\n\f\r />])/gi.source, "i");
16216
- //#endregion
16217
- //#region ../../../node_modules/.pnpm/micromark-extension-gfm-task-list-item@2.1.0/node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js
16942
+ // ../../../node_modules/.pnpm/micromark-extension-gfm-task-list-item@2.1.0/node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js
16218
16943
  /**
16219
16944
  * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'
16220
16945
  */
@@ -16332,8 +17057,7 @@ window.__ModuleLoader__.load({
16332
17057
  return code === null ? nok(code) : ok(code);
16333
17058
  }
16334
17059
  }
16335
- //#endregion
16336
- //#region ../../../node_modules/.pnpm/micromark-extension-gfm@3.0.0/node_modules/micromark-extension-gfm/index.js
17060
+ // ../../../node_modules/.pnpm/micromark-extension-gfm@3.0.0/node_modules/micromark-extension-gfm/index.js
16337
17061
  /**
16338
17062
  * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions
16339
17063
  * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options
@@ -16360,8 +17084,7 @@ window.__ModuleLoader__.load({
16360
17084
  gfmTaskListItem()
16361
17085
  ]);
16362
17086
  }
16363
- //#endregion
16364
- //#region ../../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/codes.js
17087
+ // ../../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/codes.js
16365
17088
  /**
16366
17089
  * Character codes.
16367
17090
  *
@@ -16518,8 +17241,7 @@ window.__ModuleLoader__.load({
16518
17241
  byteOrderMarker: 65279,
16519
17242
  replacementCharacter: 65533
16520
17243
  };
16521
- //#endregion
16522
- //#region ../../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/types.js
17244
+ // ../../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/types.js
16523
17245
  /**
16524
17246
  * This module is compiled away!
16525
17247
  *
@@ -16635,8 +17357,7 @@ window.__ModuleLoader__.load({
16635
17357
  chunkText: "chunkText",
16636
17358
  chunkString: "chunkString"
16637
17359
  };
16638
- //#endregion
16639
- //#region src/reference.ts
17360
+ // src/reference.ts
16640
17361
  const DEFAULT_PROTOCOL = "file";
16641
17362
  const EXTERNAL_PROTOCOLS = [
16642
17363
  "http",
@@ -17076,8 +17797,7 @@ window.__ModuleLoader__.load({
17076
17797
  return;
17077
17798
  }
17078
17799
  }
17079
- //#endregion
17080
- //#region src/reference-markdown.tsx
17800
+ // src/reference-markdown.tsx
17081
17801
  function referenceMentions(actions, tokens) {
17082
17802
  return { resolve: (value) => {
17083
17803
  const reference = tokens?.get(value) ?? parseReferenceToken(value);
@@ -17135,13 +17855,11 @@ window.__ModuleLoader__.load({
17135
17855
  }
17136
17856
  if (reference.protocol === "file") actions.openFile(path);
17137
17857
  }
17138
- //#endregion
17139
- //#region src/client/index.ts
17858
+ // src/client/index.ts
17140
17859
  const inject = [...inject$1];
17141
17860
  function apply(ctx) {
17142
17861
  apply$1(ctx);
17143
17862
  }
17144
- //#endregion
17145
17863
  exports.Bubble = Bubble;
17146
17864
  exports.Button = Button;
17147
17865
  exports.DisclosureRow = DisclosureRow;