markdown-flow-ui 0.2.7-dev.3 → 0.2.8

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.
Files changed (45) hide show
  1. package/dist/_virtual/index.cjs3.js +1 -1
  2. package/dist/_virtual/index.cjs4.js +1 -1
  3. package/dist/_virtual/index.cjs8.js +1 -1
  4. package/dist/_virtual/index.cjs9.js +1 -1
  5. package/dist/_virtual/index.es3.js +5 -4
  6. package/dist/_virtual/index.es3.js.map +1 -1
  7. package/dist/_virtual/index.es4.js +4 -5
  8. package/dist/_virtual/index.es4.js.map +1 -1
  9. package/dist/_virtual/index.es8.js +2 -2
  10. package/dist/_virtual/index.es9.js +2 -2
  11. package/dist/_virtual/interaction-plugin-core.cjs.js +2 -0
  12. package/dist/_virtual/interaction-plugin-core.cjs.js.map +1 -0
  13. package/dist/_virtual/interaction-plugin-core.es.js +5 -0
  14. package/dist/_virtual/interaction-plugin-core.es.js.map +1 -0
  15. package/dist/components/ui/inputGroup/textarea.cjs.js +1 -1
  16. package/dist/components/ui/inputGroup/textarea.es.js +1 -1
  17. package/dist/node_modules/@braintree/sanitize-url/dist/index.cjs.js +1 -1
  18. package/dist/node_modules/@braintree/sanitize-url/dist/index.es.js +1 -1
  19. package/dist/node_modules/classnames/index.cjs.js +1 -1
  20. package/dist/node_modules/classnames/index.es.js +1 -1
  21. package/dist/node_modules/rc-input/es/BaseInput.cjs.js +1 -1
  22. package/dist/node_modules/rc-input/es/BaseInput.es.js +1 -1
  23. package/dist/node_modules/rc-textarea/es/ResizableTextArea.cjs.js +1 -1
  24. package/dist/node_modules/rc-textarea/es/ResizableTextArea.es.js +1 -1
  25. package/dist/node_modules/rc-textarea/es/TextArea.cjs.js +1 -1
  26. package/dist/node_modules/rc-textarea/es/TextArea.es.js +1 -1
  27. package/dist/node_modules/rc-textarea/es/index.cjs.js +1 -1
  28. package/dist/node_modules/rc-textarea/es/index.es.js +1 -1
  29. package/dist/node_modules/remark-flow/dist/interaction-parser.cjs.js +1 -1
  30. package/dist/node_modules/remark-flow/dist/interaction-parser.cjs.js.map +1 -1
  31. package/dist/node_modules/remark-flow/dist/interaction-parser.es.js +119 -110
  32. package/dist/node_modules/remark-flow/dist/interaction-parser.es.js.map +1 -1
  33. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.cjs.js +2 -0
  34. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.cjs.js.map +1 -0
  35. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.es.js +53 -0
  36. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.es.js.map +1 -0
  37. package/dist/node_modules/remark-flow/dist/remark-custom-variable.cjs.js +1 -1
  38. package/dist/node_modules/remark-flow/dist/remark-custom-variable.cjs.js.map +1 -1
  39. package/dist/node_modules/remark-flow/dist/remark-custom-variable.es.js +12 -49
  40. package/dist/node_modules/remark-flow/dist/remark-custom-variable.es.js.map +1 -1
  41. package/dist/node_modules/remark-flow/dist/remark-interaction.cjs.js +1 -1
  42. package/dist/node_modules/remark-flow/dist/remark-interaction.cjs.js.map +1 -1
  43. package/dist/node_modules/remark-flow/dist/remark-interaction.es.js +12 -46
  44. package/dist/node_modules/remark-flow/dist/remark-interaction.es.js.map +1 -1
  45. package/package.json +2 -2
@@ -1,24 +1,25 @@
1
- import { __exports as T } from "../../../_virtual/interaction-parser.es.js";
2
- var f;
3
- function N() {
4
- return f ? T : (f = 1, (function(u) {
5
- Object.defineProperty(u, "__esModule", { value: !0 }), u.InteractionParser = u.COMPILED_REGEXES = u.InteractionType = void 0, u.parseInteractionFormat = E, u.createInteractionParser = S;
6
- var n;
1
+ import { __exports as _ } from "../../../_virtual/interaction-parser.es.js";
2
+ var c;
3
+ function I() {
4
+ return c ? _ : (c = 1, (function(u) {
5
+ Object.defineProperty(u, "__esModule", { value: !0 }), u.InteractionParser = u.COMPILED_REGEXES = u.InteractionType = void 0, u.parseInteractionFormat = T, u.createInteractionParser = S;
6
+ var a;
7
7
  (function(l) {
8
8
  l.TEXT_ONLY = "text_only", l.BUTTONS_ONLY = "buttons_only", l.BUTTONS_WITH_TEXT = "buttons_with_text", l.BUTTONS_MULTI_SELECT = "buttons_multi_select", l.BUTTONS_MULTI_WITH_TEXT = "buttons_multi_with_text", l.NON_ASSIGNMENT_BUTTON = "non_assignment_button";
9
- })(n || (u.InteractionType = n = {})), u.COMPILED_REGEXES = {
9
+ })(a || (u.InteractionType = a = {})), u.COMPILED_REGEXES = {
10
10
  // Layer 1: Basic format validation - matches ?[content] but excludes ?[text](url) format
11
11
  LAYER1_INTERACTION: /\?\[([^\]]*)\](?!\()/,
12
- // Layer 2: Variable detection - matches %{{variable}}content format (supports letters, numbers, underscores, Unicode letters, NO spaces allowed)
13
- LAYER2_VARIABLE: /^%\{\{([a-zA-Z0-9_\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff]+)\}\}(.*)$/,
12
+ // Layer 2: Variable detection - matches %{{variable}}content format
13
+ // (supports letters, numbers, underscores, Chinese characters, Japanese
14
+ // kana, with optional spaces inside the braces). Superset of both the
15
+ // repo history and the published 0.1.6 behavior.
16
+ LAYER2_VARIABLE: /^%\{\{\s*([a-zA-Z0-9_\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff]+)\s*\}\}(.*)$/,
14
17
  // Layer 3: Split content before and after ...
15
18
  LAYER3_ELLIPSIS: /^(.*?)\.\.\.(.*)/,
16
- // Layer 3: Split Button//value format
17
- LAYER3_BUTTON_VALUE: /^(.+?)\/\/(.+)$/,
18
19
  // Layer 3: Split on single | but not ||
19
20
  LAYER3_SINGLE_PIPE_SPLIT: new RegExp("(?<!\\|)\\|(?!\\|)")
20
21
  };
21
- class _ {
22
+ class o {
22
23
  constructor() {
23
24
  }
24
25
  /**
@@ -32,8 +33,8 @@ function N() {
32
33
  const e = this._layer1ValidateFormat(t);
33
34
  if (e === null)
34
35
  return this._createErrorResult(`Invalid interaction format: ${t}`);
35
- const [i, r, s] = this._layer2DetectVariable(e);
36
- return i && r ? this._layer3ParseVariableInteraction(r, s) : this._layer3ParseDisplayButtons(e);
36
+ const [r, i, s] = this._layer2DetectVariable(e);
37
+ return r && i ? this._layer3ParseVariableInteraction(i, s) : this._layer3ParseDisplayButtons(e);
37
38
  } catch (e) {
38
39
  return this._createErrorResult(`Parsing error: ${e instanceof Error ? e.message : "Unknown error"}`);
39
40
  }
@@ -48,15 +49,15 @@ function N() {
48
49
  const e = this.parse(t);
49
50
  if (e.error)
50
51
  return { placeholder: t.trim() };
51
- const i = {};
52
- if (e.type === n.NON_ASSIGNMENT_BUTTON) {
53
- const r = e;
54
- i.buttonTexts = r.buttons.map((s) => s.display), i.buttonValues = r.buttons.map((s) => s.value);
52
+ const r = {};
53
+ if (e.type === a.NON_ASSIGNMENT_BUTTON) {
54
+ const i = e;
55
+ i.buttons.length > 0 && (r.buttonTexts = i.buttons.map((s) => s.display), r.buttonValues = i.buttons.map((s) => s.value)), i.question !== void 0 && (r.placeholder = i.question), i.isMultiSelect !== void 0 && (r.isMultiSelect = i.isMultiSelect);
55
56
  } else if (e.type !== null) {
56
- const r = e;
57
- i.variableName = r.variable, r.buttons && (i.buttonTexts = r.buttons.map((s) => s.display), i.buttonValues = r.buttons.map((s) => s.value)), r.question !== void 0 && (i.placeholder = r.question), r.isMultiSelect !== void 0 && (i.isMultiSelect = r.isMultiSelect);
57
+ const i = e;
58
+ r.variableName = i.variable, i.buttons && (r.buttonTexts = i.buttons.map((s) => s.display), r.buttonValues = i.buttons.map((s) => s.value)), i.question !== void 0 && (r.placeholder = i.question), i.isMultiSelect !== void 0 && (r.isMultiSelect = i.isMultiSelect);
58
59
  }
59
- return i;
60
+ return r;
60
61
  }
61
62
  /**
62
63
  * Layer 1: Validate ?[] format and extract content
@@ -79,8 +80,47 @@ function N() {
79
80
  const e = u.COMPILED_REGEXES.LAYER2_VARIABLE.exec(t);
80
81
  if (!e)
81
82
  return [!1, null, t];
82
- const i = e[1], r = e[2].trim();
83
- return [!0, i, r];
83
+ const r = e[1].trim(), i = e[2].trim();
84
+ return [!0, r, i];
85
+ }
86
+ /**
87
+ * Parse the structural shape of interaction content: buttons, optional
88
+ * `...question` text input, multi-select flag. Shared by the variable and
89
+ * non-assignment branches, which only differ in how they map the shape
90
+ * into their result types.
91
+ *
92
+ * @param content - Content after the (optional) variable
93
+ * @returns The parsed content shape
94
+ */
95
+ _parseContentShape(t) {
96
+ const e = u.COMPILED_REGEXES.LAYER3_ELLIPSIS.exec(t);
97
+ if (e) {
98
+ const r = e[1].trim(), i = e[2].trim();
99
+ if (r) {
100
+ const [s, n] = this._parseButtons(r);
101
+ return { buttons: s, question: i, isMultiSelect: n, hasTextInput: !0 };
102
+ }
103
+ return {
104
+ buttons: [],
105
+ question: i,
106
+ isMultiSelect: !1,
107
+ hasTextInput: !0
108
+ };
109
+ }
110
+ if (/\|/.test(t)) {
111
+ const [r, i] = this._parseButtons(t);
112
+ return { buttons: r, isMultiSelect: i, hasTextInput: !1 };
113
+ }
114
+ return t ? {
115
+ buttons: [this._parseSingleButton(t)],
116
+ isMultiSelect: !1,
117
+ hasTextInput: !1
118
+ } : {
119
+ buttons: [],
120
+ question: "",
121
+ isMultiSelect: !1,
122
+ hasTextInput: !0
123
+ };
84
124
  }
85
125
  /**
86
126
  * Layer 3: Parse variable interaction (variable assignment type)
@@ -90,51 +130,28 @@ function N() {
90
130
  * @returns Parse result
91
131
  */
92
132
  _layer3ParseVariableInteraction(t, e) {
93
- const i = u.COMPILED_REGEXES.LAYER3_ELLIPSIS.exec(e);
94
- if (i) {
95
- const r = i[1].trim(), s = i[2].trim();
96
- if (r) {
97
- const [a, o] = this._parseButtons(r);
98
- return {
99
- type: o ? n.BUTTONS_MULTI_WITH_TEXT : n.BUTTONS_WITH_TEXT,
100
- variable: t,
101
- buttons: a,
102
- question: s,
103
- isMultiSelect: o
104
- };
105
- } else
106
- return {
107
- type: n.TEXT_ONLY,
108
- variable: t,
109
- question: s,
110
- isMultiSelect: !1
111
- };
112
- } else if ((/\|/.test(e) || /\|\|/.test(e)) && e) {
113
- const [r, s] = this._parseButtons(e);
114
- return {
115
- type: s ? n.BUTTONS_MULTI_SELECT : n.BUTTONS_ONLY,
116
- variable: t,
117
- buttons: r,
118
- isMultiSelect: s
119
- };
120
- } else if (e) {
121
- const r = this._parseSingleButton(e);
122
- return {
123
- type: n.BUTTONS_ONLY,
124
- variable: t,
125
- buttons: [r],
126
- isMultiSelect: !1
127
- };
128
- } else
129
- return {
130
- type: n.TEXT_ONLY,
131
- variable: t,
132
- question: "",
133
- isMultiSelect: !1
134
- };
133
+ const r = this._parseContentShape(e);
134
+ return r.hasTextInput ? r.buttons.length > 0 ? {
135
+ type: r.isMultiSelect ? a.BUTTONS_MULTI_WITH_TEXT : a.BUTTONS_WITH_TEXT,
136
+ variable: t,
137
+ buttons: r.buttons,
138
+ question: r.question,
139
+ isMultiSelect: r.isMultiSelect
140
+ } : {
141
+ type: a.TEXT_ONLY,
142
+ variable: t,
143
+ question: r.question ?? "",
144
+ isMultiSelect: !1
145
+ } : {
146
+ type: r.isMultiSelect ? a.BUTTONS_MULTI_SELECT : a.BUTTONS_ONLY,
147
+ variable: t,
148
+ buttons: r.buttons,
149
+ isMultiSelect: r.isMultiSelect
150
+ };
135
151
  }
136
152
  /**
137
- * Layer 3: Parse display buttons (non-variable assignment type)
153
+ * Layer 3: Parse non-assignment interactions (no variable). Same shapes as
154
+ * the variable branch; the answer is not assigned to a variable.
138
155
  *
139
156
  * @param content - Content
140
157
  * @returns Parse result
@@ -142,22 +159,15 @@ function N() {
142
159
  _layer3ParseDisplayButtons(t) {
143
160
  if (!t)
144
161
  return {
145
- type: n.NON_ASSIGNMENT_BUTTON,
162
+ type: a.NON_ASSIGNMENT_BUTTON,
146
163
  buttons: [{ display: "", value: "" }]
147
164
  };
148
- if (/\|/.test(t)) {
149
- const [e] = this._parseButtons(t);
150
- return {
151
- type: n.NON_ASSIGNMENT_BUTTON,
152
- buttons: e
153
- };
154
- } else {
155
- const e = this._parseSingleButton(t);
156
- return {
157
- type: n.NON_ASSIGNMENT_BUTTON,
158
- buttons: [e]
159
- };
160
- }
165
+ const e = this._parseContentShape(t), r = {
166
+ type: a.NON_ASSIGNMENT_BUTTON,
167
+ buttons: e.buttons,
168
+ isMultiSelect: e.isMultiSelect
169
+ };
170
+ return e.hasTextInput && (r.question = e.question), r;
161
171
  }
162
172
  /**
163
173
  * Parse button group with fault tolerance
@@ -168,21 +178,21 @@ function N() {
168
178
  _parseButtons(t) {
169
179
  if (!t || typeof t != "string")
170
180
  return [[], !1];
171
- const [e, i] = this._detectSeparatorType(t), r = [];
181
+ const [e, r] = this._detectSeparatorType(t), i = [];
172
182
  try {
173
183
  let s;
174
- i ? s = t.split("||") : s = t.split(u.COMPILED_REGEXES.LAYER3_SINGLE_PIPE_SPLIT);
175
- for (const a of s) {
176
- const o = a.trim();
177
- if (o) {
178
- const c = this._parseSingleButton(o);
179
- r.push(c);
184
+ r ? s = t.split("||") : s = t.split(u.COMPILED_REGEXES.LAYER3_SINGLE_PIPE_SPLIT);
185
+ for (const n of s) {
186
+ const f = n.trim();
187
+ if (f) {
188
+ const p = this._parseSingleButton(f);
189
+ i.push(p);
180
190
  }
181
191
  }
182
192
  } catch {
183
193
  return [[{ display: t.trim(), value: t.trim() }], !1];
184
194
  }
185
- return !r.length && (t.trim() === "||" || t.trim() === "|") ? [[], i] : (!r.length && t.trim() && r.push({ display: t.trim(), value: t.trim() }), [r, i]);
195
+ return !i.length && (t.trim() === "||" || t.trim() === "|") ? [[], r] : (!i.length && t.trim() && i.push({ display: t.trim(), value: t.trim() }), [i, r]);
186
196
  }
187
197
  /**
188
198
  * Parse single button, supports Button//value format
@@ -192,12 +202,11 @@ function N() {
192
202
  */
193
203
  _parseSingleButton(t) {
194
204
  t = t.trim();
195
- const e = u.COMPILED_REGEXES.LAYER3_BUTTON_VALUE.exec(t);
196
- if (e) {
197
- const i = e[1].trim(), r = e[2].trim();
198
- return { display: i, value: r };
199
- } else
200
- return { display: t, value: t };
205
+ const e = t.indexOf("//");
206
+ return e > 0 && e + 2 < t.length ? {
207
+ display: t.slice(0, e).trim(),
208
+ value: t.slice(e + 2).trim()
209
+ } : { display: t, value: t };
201
210
  }
202
211
  /**
203
212
  * Detect separator type and whether it's multi-select
@@ -212,8 +221,8 @@ function N() {
212
221
  _detectSeparatorType(t) {
213
222
  if (!t || typeof t != "string")
214
223
  return ["|", !1];
215
- const e = t.indexOf("|"), i = t.indexOf("||");
216
- return e === -1 ? ["|", !1] : i === -1 ? ["|", !1] : i <= e ? ["||", !0] : ["|", !1];
224
+ const e = t.indexOf("|"), r = t.indexOf("||");
225
+ return e === -1 ? ["|", !1] : r === -1 ? ["|", !1] : r <= e ? ["||", !0] : ["|", !1];
217
226
  }
218
227
  /**
219
228
  * Create error result
@@ -228,27 +237,27 @@ function N() {
228
237
  };
229
238
  }
230
239
  }
231
- u.InteractionParser = _;
232
- function E(l) {
233
- const e = new _().parse(l);
240
+ u.InteractionParser = o;
241
+ function T(l) {
242
+ const e = new o().parse(l);
234
243
  if (e.error)
235
- return [n.TEXT_ONLY, { question: l.trim() }];
236
- const i = e.type, r = {};
237
- if (e.type !== n.NON_ASSIGNMENT_BUTTON) {
238
- const a = e;
239
- a.variable !== void 0 && (r.variable = a.variable), a.buttons !== void 0 && (r.buttons = a.buttons), a.question !== void 0 && (r.question = a.question), a.isMultiSelect !== void 0 && (r.isMultiSelect = a.isMultiSelect);
244
+ return [a.TEXT_ONLY, { question: l.trim() }];
245
+ const r = e.type, i = {};
246
+ if (e.type !== a.NON_ASSIGNMENT_BUTTON) {
247
+ const n = e;
248
+ n.variable !== void 0 && (i.variable = n.variable), n.buttons !== void 0 && (i.buttons = n.buttons), n.question !== void 0 && (i.question = n.question), n.isMultiSelect !== void 0 && (i.isMultiSelect = n.isMultiSelect);
240
249
  } else {
241
- const a = e;
242
- a.buttons !== void 0 && (r.buttons = a.buttons);
250
+ const n = e;
251
+ n.buttons !== void 0 && (i.buttons = n.buttons);
243
252
  }
244
- return [i || n.TEXT_ONLY, r];
253
+ return [r || a.TEXT_ONLY, i];
245
254
  }
246
255
  function S() {
247
- return new _();
256
+ return new o();
248
257
  }
249
- })(T), T);
258
+ })(_), _);
250
259
  }
251
260
  export {
252
- N as __require
261
+ I as __require
253
262
  };
254
263
  //# sourceMappingURL=interaction-parser.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-parser.es.js","sources":["../../../../node_modules/remark-flow/dist/interaction-parser.js"],"sourcesContent":["\"use strict\";\n/**\n * MarkdownFlow Interactive Block Layered Parser - TypeScript Version\n *\n * Uses a three-layer analysis architecture:\n * Layer 1: ?[] format validation\n * Layer 2: Variable detection and pattern classification\n * Layer 3: Specific content parsing\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InteractionParser = exports.COMPILED_REGEXES = exports.InteractionType = void 0;\nexports.parseInteractionFormat = parseInteractionFormat;\nexports.createInteractionParser = createInteractionParser;\n// Interaction input type enumeration\nvar InteractionType;\n(function (InteractionType) {\n InteractionType[\"TEXT_ONLY\"] = \"text_only\";\n InteractionType[\"BUTTONS_ONLY\"] = \"buttons_only\";\n InteractionType[\"BUTTONS_WITH_TEXT\"] = \"buttons_with_text\";\n InteractionType[\"BUTTONS_MULTI_SELECT\"] = \"buttons_multi_select\";\n InteractionType[\"BUTTONS_MULTI_WITH_TEXT\"] = \"buttons_multi_with_text\";\n InteractionType[\"NON_ASSIGNMENT_BUTTON\"] = \"non_assignment_button\";\n})(InteractionType || (exports.InteractionType = InteractionType = {}));\n// Pre-compiled regex constants\nexports.COMPILED_REGEXES = {\n // Layer 1: Basic format validation - matches ?[content] but excludes ?[text](url) format\n LAYER1_INTERACTION: /\\?\\[([^\\]]*)\\](?!\\()/,\n // Layer 2: Variable detection - matches %{{variable}}content format (supports letters, numbers, underscores, Unicode letters, NO spaces allowed)\n LAYER2_VARIABLE: /^%\\{\\{([a-zA-Z0-9_\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff]+)\\}\\}(.*)$/,\n // Layer 3: Split content before and after ...\n LAYER3_ELLIPSIS: /^(.*?)\\.\\.\\.(.*)/,\n // Layer 3: Split Button//value format\n LAYER3_BUTTON_VALUE: /^(.+?)\\/\\/(.+)$/,\n // Layer 3: Split on single | but not ||\n LAYER3_SINGLE_PIPE_SPLIT: /(?<!\\|)\\|(?!\\|)/,\n};\n/**\n * Layered interaction parser class\n */\nclass InteractionParser {\n constructor() {\n // Constructor is intentionally empty - no initialization needed\n }\n /**\n * Main parsing method\n *\n * @param content - Raw content of interaction block\n * @returns Standardized parse result\n */\n parse(content) {\n try {\n // Layer 1: Validate basic format\n const innerContent = this._layer1ValidateFormat(content);\n if (innerContent === null) {\n return this._createErrorResult(`Invalid interaction format: ${content}`);\n }\n // Layer 2: Variable detection and pattern classification\n const [hasVariable, variableName, remainingContent] = this._layer2DetectVariable(innerContent);\n // Layer 3: Specific content parsing\n if (hasVariable && variableName) {\n return this._layer3ParseVariableInteraction(variableName, remainingContent);\n }\n else {\n return this._layer3ParseDisplayButtons(innerContent);\n }\n }\n catch (error) {\n return this._createErrorResult(`Parsing error: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n /**\n * Parse and convert to remark-compatible format\n *\n * @param content - Raw content of interaction block\n * @returns remark-compatible result object\n */\n parseToRemarkFormat(content) {\n const result = this.parse(content);\n if (result.error) {\n // Compatibility handling when parsing fails\n return { placeholder: content.trim() };\n }\n // Convert to remark-compatible format\n const remarkResult = {};\n if (result.type === InteractionType.NON_ASSIGNMENT_BUTTON) {\n // Non-assignment button\n const nonAssignmentResult = result;\n remarkResult.buttonTexts = nonAssignmentResult.buttons.map(b => b.display);\n remarkResult.buttonValues = nonAssignmentResult.buttons.map(b => b.value);\n }\n else if (result.type !== null) {\n // Variable interaction\n const variableResult = result;\n remarkResult.variableName = variableResult.variable;\n if (variableResult.buttons) {\n remarkResult.buttonTexts = variableResult.buttons.map(b => b.display);\n remarkResult.buttonValues = variableResult.buttons.map(b => b.value);\n }\n if (variableResult.question !== undefined) {\n remarkResult.placeholder = variableResult.question;\n }\n if (variableResult.isMultiSelect !== undefined) {\n remarkResult.isMultiSelect = variableResult.isMultiSelect;\n }\n }\n return remarkResult;\n }\n /**\n * Layer 1: Validate ?[] format and extract content\n *\n * @param content - Raw content\n * @returns Extracted bracket content, returns null if validation fails\n */\n _layer1ValidateFormat(content) {\n content = content.trim();\n const match = exports.COMPILED_REGEXES.LAYER1_INTERACTION.exec(content);\n if (!match) {\n return null;\n }\n // Ensure the match is the complete content (no other text)\n const matchedText = match[0];\n if (matchedText.trim() !== content) {\n return null;\n }\n return match[1];\n }\n /**\n * Layer 2: Detect variables and perform pattern classification\n *\n * @param innerContent - Content extracted from layer 1\n * @returns [hasVariable, variableName, remainingContent]\n */\n _layer2DetectVariable(innerContent) {\n const match = exports.COMPILED_REGEXES.LAYER2_VARIABLE.exec(innerContent);\n if (!match) {\n // No variable, entire content used for display button parsing\n return [false, null, innerContent];\n }\n const variableName = match[1]; // No trim needed - spaces not allowed in variable names\n const remainingContent = match[2].trim();\n return [true, variableName, remainingContent];\n }\n /**\n * Layer 3: Parse variable interaction (variable assignment type)\n *\n * @param variableName - Variable name\n * @param content - Content after variable\n * @returns Parse result\n */\n _layer3ParseVariableInteraction(variableName, content) {\n // Detect if there's ... separator\n const ellipsisMatch = exports.COMPILED_REGEXES.LAYER3_ELLIPSIS.exec(content);\n if (ellipsisMatch) {\n // Has ... separator\n const beforeEllipsis = ellipsisMatch[1].trim();\n const question = ellipsisMatch[2].trim();\n if (beforeEllipsis) {\n // Button group + text input: ?[%{{var}} Button1 | Button2 | ...question]\n const [buttons, isMultiSelect] = this._parseButtons(beforeEllipsis);\n const interactionType = isMultiSelect\n ? InteractionType.BUTTONS_MULTI_WITH_TEXT\n : InteractionType.BUTTONS_WITH_TEXT;\n return {\n type: interactionType,\n variable: variableName,\n buttons: buttons,\n question: question,\n isMultiSelect: isMultiSelect,\n };\n }\n else {\n // Pure text input\n return {\n type: InteractionType.TEXT_ONLY,\n variable: variableName,\n question: question,\n isMultiSelect: false,\n };\n }\n }\n else {\n // No ... separator\n if ((/\\|/.test(content) || /\\|\\|/.test(content)) && content) {\n // Pure button group: ?[%{{var}} Button1 | Button2] or ?[%{{var}} Button1 || Button2]\n const [buttons, isMultiSelect] = this._parseButtons(content);\n const interactionType = isMultiSelect\n ? InteractionType.BUTTONS_MULTI_SELECT\n : InteractionType.BUTTONS_ONLY;\n return {\n type: interactionType,\n variable: variableName,\n buttons: buttons,\n isMultiSelect: isMultiSelect,\n };\n }\n else if (content) {\n // Single button: ?[%{{var}} Button1] or ?[%{{var}} Button1//id1]\n const button = this._parseSingleButton(content);\n return {\n type: InteractionType.BUTTONS_ONLY,\n variable: variableName,\n buttons: [button],\n isMultiSelect: false,\n };\n }\n else {\n // Pure text input (no prompt): ?[%{{var}}]\n return {\n type: InteractionType.TEXT_ONLY,\n variable: variableName,\n question: '',\n isMultiSelect: false,\n };\n }\n }\n }\n /**\n * Layer 3: Parse display buttons (non-variable assignment type)\n *\n * @param content - Content\n * @returns Parse result\n */\n _layer3ParseDisplayButtons(content) {\n if (!content) {\n // Empty content: ?[]\n return {\n type: InteractionType.NON_ASSIGNMENT_BUTTON,\n buttons: [{ display: '', value: '' }],\n };\n }\n if (/\\|/.test(content)) {\n // Multiple buttons: ?[Continue | Cancel]\n const [buttons] = this._parseButtons(content); // Only use buttons, ignore isMultiSelect for display buttons\n return {\n type: InteractionType.NON_ASSIGNMENT_BUTTON,\n buttons: buttons,\n };\n }\n else {\n // Single button: ?[Continue]\n const button = this._parseSingleButton(content);\n return {\n type: InteractionType.NON_ASSIGNMENT_BUTTON,\n buttons: [button],\n };\n }\n }\n /**\n * Parse button group with fault tolerance\n *\n * @param content - Button content, separated by | or ||\n * @returns [button list, isMultiSelect]\n */\n _parseButtons(content) {\n if (!content || typeof content !== 'string') {\n return [[], false];\n }\n const [_separator, isMultiSelect] = this._detectSeparatorType(content);\n const buttons = [];\n try {\n // Use different splitting logic based on separator type\n let buttonTexts;\n if (isMultiSelect) {\n // Multi-select mode: split on ||, preserve single |\n buttonTexts = content.split('||');\n }\n else {\n // Single-select mode: split on single |, but preserve ||\n // Use pre-compiled regex from constants\n buttonTexts = content.split(exports.COMPILED_REGEXES.LAYER3_SINGLE_PIPE_SPLIT);\n }\n for (const buttonText of buttonTexts) {\n const trimmed = buttonText.trim();\n if (trimmed) {\n const button = this._parseSingleButton(trimmed);\n buttons.push(button);\n }\n }\n }\n catch {\n // Fallback to treating entire content as single button\n return [[{ display: content.trim(), value: content.trim() }], false];\n }\n // For empty content (like just separators), return empty list\n if (!buttons.length &&\n (content.trim() === '||' || content.trim() === '|')) {\n return [[], isMultiSelect];\n }\n // Ensure at least one button exists (but only if there's actual content)\n if (!buttons.length && content.trim()) {\n buttons.push({ display: content.trim(), value: content.trim() });\n }\n return [buttons, isMultiSelect];\n }\n /**\n * Parse single button, supports Button//value format\n *\n * @param buttonText - Button text\n * @returns {display: display text, value: actual value}\n */\n _parseSingleButton(buttonText) {\n buttonText = buttonText.trim();\n // Detect Button//value format\n const match = exports.COMPILED_REGEXES.LAYER3_BUTTON_VALUE.exec(buttonText);\n if (match) {\n const display = match[1].trim();\n const value = match[2].trim();\n return { display: display, value: value };\n }\n else {\n return { display: buttonText, value: buttonText };\n }\n }\n /**\n * Detect separator type and whether it's multi-select\n *\n * Logic: The first separator type encountered determines the parsing mode:\n * - If first separator is |, then || is treated as part of the value\n * - If first separator is ||, then single | is treated as part of the value\n *\n * @param content - Button content to analyze\n * @returns [separator, isMultiSelect] where separator is '|' or '||'\n */\n _detectSeparatorType(content) {\n if (!content || typeof content !== 'string') {\n return ['|', false];\n }\n // Find the position of first single pipe and first double pipe\n const singlePipePos = content.indexOf('|');\n const doublePipePos = content.indexOf('||');\n // If no pipes found\n if (singlePipePos === -1) {\n return ['|', false];\n }\n // If no double pipe found, definitely single-select\n if (doublePipePos === -1) {\n return ['|', false];\n }\n // Both found - check which comes first\n // If double pipe comes first or at the same position (which means\n // the single pipe is part of the double pipe), it's multi-select mode\n if (doublePipePos <= singlePipePos) {\n return ['||', true];\n }\n // If single pipe comes first, it's single-select mode\n return ['|', false];\n }\n /**\n * Create error result\n *\n * @param errorMessage - Error message\n * @returns Error result\n */\n _createErrorResult(errorMessage) {\n return {\n type: null,\n error: errorMessage,\n };\n }\n}\nexports.InteractionParser = InteractionParser;\n/**\n * Convenience function for parsing interaction format\n *\n * Supported formats:\n * 1. ?[%{{var}}...question] - Pure text input\n * 2. ?[%{{var}} option1|option2] - Pure button group (supports display//value format)\n * 3. ?[%{{var}} option1|option2|...question] - Button group + text input\n * 4. ?[%{{var}} option1||option2] - Multi-select button group\n * 5. ?[%{{var}} option1||option2||...question] - Multi-select button group + text input\n * 6. ?[%{{var}} single option] - Single button selection\n * 7. ?[Continue] or ?[Continue|Cancel] - Non-assignment button\n *\n * @param content - Raw content of interaction block\n * @returns [interaction type, parsed data]\n */\nfunction parseInteractionFormat(content) {\n // Use new layered parser\n const parser = new InteractionParser();\n const result = parser.parse(content);\n // Handle parse errors\n if (result.error) {\n // Compatibility handling when parsing fails\n return [InteractionType.TEXT_ONLY, { question: content.trim() }];\n }\n // Extract parse result and convert to original return format\n const interactionType = result.type;\n // Build return data dictionary for backward compatibility\n const returnData = {};\n if (result.type !== InteractionType.NON_ASSIGNMENT_BUTTON) {\n const variableResult = result;\n if (variableResult.variable !== undefined) {\n returnData.variable = variableResult.variable;\n }\n if (variableResult.buttons !== undefined) {\n returnData.buttons = variableResult.buttons;\n }\n if (variableResult.question !== undefined) {\n returnData.question = variableResult.question;\n }\n if (variableResult.isMultiSelect !== undefined) {\n returnData.isMultiSelect = variableResult.isMultiSelect;\n }\n }\n else {\n const buttonResult = result;\n if (buttonResult.buttons !== undefined) {\n returnData.buttons = buttonResult.buttons;\n }\n }\n // Ensure we have a valid interaction type, fallback to TEXT_ONLY if null\n const finalType = interactionType || InteractionType.TEXT_ONLY;\n return [finalType, returnData];\n}\n/**\n * Factory function to create parser instance\n */\nfunction createInteractionParser() {\n return new InteractionParser();\n}\n//# sourceMappingURL=interaction-parser.js.map"],"names":["exports","parseInteractionFormat","createInteractionParser","InteractionType","InteractionParser","content","innerContent","hasVariable","variableName","remainingContent","error","result","remarkResult","nonAssignmentResult","b","variableResult","match","ellipsisMatch","beforeEllipsis","question","buttons","isMultiSelect","button","_separator","buttonTexts","buttonText","trimmed","display","value","singlePipePos","doublePipePos","errorMessage","interactionType","returnData","buttonResult"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"interaction-parser.es.js","sources":["../../../../node_modules/remark-flow/dist/interaction-parser.js"],"sourcesContent":["\"use strict\";\n/**\n * MarkdownFlow Interactive Block Layered Parser - TypeScript Version\n *\n * Uses a three-layer analysis architecture:\n * Layer 1: ?[] format validation\n * Layer 2: Variable detection and pattern classification\n * Layer 3: Specific content parsing\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InteractionParser = exports.COMPILED_REGEXES = exports.InteractionType = void 0;\nexports.parseInteractionFormat = parseInteractionFormat;\nexports.createInteractionParser = createInteractionParser;\n// Interaction input type enumeration\nvar InteractionType;\n(function (InteractionType) {\n InteractionType[\"TEXT_ONLY\"] = \"text_only\";\n InteractionType[\"BUTTONS_ONLY\"] = \"buttons_only\";\n InteractionType[\"BUTTONS_WITH_TEXT\"] = \"buttons_with_text\";\n InteractionType[\"BUTTONS_MULTI_SELECT\"] = \"buttons_multi_select\";\n InteractionType[\"BUTTONS_MULTI_WITH_TEXT\"] = \"buttons_multi_with_text\";\n InteractionType[\"NON_ASSIGNMENT_BUTTON\"] = \"non_assignment_button\";\n})(InteractionType || (exports.InteractionType = InteractionType = {}));\n// Pre-compiled regex constants\nexports.COMPILED_REGEXES = {\n // Layer 1: Basic format validation - matches ?[content] but excludes ?[text](url) format\n LAYER1_INTERACTION: /\\?\\[([^\\]]*)\\](?!\\()/,\n // Layer 2: Variable detection - matches %{{variable}}content format\n // (supports letters, numbers, underscores, Chinese characters, Japanese\n // kana, with optional spaces inside the braces). Superset of both the\n // repo history and the published 0.1.6 behavior.\n LAYER2_VARIABLE: /^%\\{\\{\\s*([a-zA-Z0-9_\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff]+)\\s*\\}\\}(.*)$/,\n // Layer 3: Split content before and after ...\n LAYER3_ELLIPSIS: /^(.*?)\\.\\.\\.(.*)/,\n // Layer 3: Split on single | but not ||\n LAYER3_SINGLE_PIPE_SPLIT: /(?<!\\|)\\|(?!\\|)/,\n};\n/**\n * Layered interaction parser class\n */\nclass InteractionParser {\n constructor() {\n // Constructor is intentionally empty - no initialization needed\n }\n /**\n * Main parsing method\n *\n * @param content - Raw content of interaction block\n * @returns Standardized parse result\n */\n parse(content) {\n try {\n // Layer 1: Validate basic format\n const innerContent = this._layer1ValidateFormat(content);\n if (innerContent === null) {\n return this._createErrorResult(`Invalid interaction format: ${content}`);\n }\n // Layer 2: Variable detection and pattern classification\n const [hasVariable, variableName, remainingContent] = this._layer2DetectVariable(innerContent);\n // Layer 3: Specific content parsing\n if (hasVariable && variableName) {\n return this._layer3ParseVariableInteraction(variableName, remainingContent);\n }\n else {\n return this._layer3ParseDisplayButtons(innerContent);\n }\n }\n catch (error) {\n return this._createErrorResult(`Parsing error: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n /**\n * Parse and convert to remark-compatible format\n *\n * @param content - Raw content of interaction block\n * @returns remark-compatible result object\n */\n parseToRemarkFormat(content) {\n const result = this.parse(content);\n if (result.error) {\n // Compatibility handling when parsing fails\n return { placeholder: content.trim() };\n }\n // Convert to remark-compatible format\n const remarkResult = {};\n if (result.type === InteractionType.NON_ASSIGNMENT_BUTTON) {\n // Non-assignment interaction (no variableName in the output)\n const nonAssignmentResult = result;\n if (nonAssignmentResult.buttons.length > 0) {\n remarkResult.buttonTexts = nonAssignmentResult.buttons.map(b => b.display);\n remarkResult.buttonValues = nonAssignmentResult.buttons.map(b => b.value);\n }\n if (nonAssignmentResult.question !== undefined) {\n remarkResult.placeholder = nonAssignmentResult.question;\n }\n if (nonAssignmentResult.isMultiSelect !== undefined) {\n remarkResult.isMultiSelect = nonAssignmentResult.isMultiSelect;\n }\n }\n else if (result.type !== null) {\n // Variable interaction\n const variableResult = result;\n remarkResult.variableName = variableResult.variable;\n if (variableResult.buttons) {\n remarkResult.buttonTexts = variableResult.buttons.map(b => b.display);\n remarkResult.buttonValues = variableResult.buttons.map(b => b.value);\n }\n if (variableResult.question !== undefined) {\n remarkResult.placeholder = variableResult.question;\n }\n if (variableResult.isMultiSelect !== undefined) {\n remarkResult.isMultiSelect = variableResult.isMultiSelect;\n }\n }\n return remarkResult;\n }\n /**\n * Layer 1: Validate ?[] format and extract content\n *\n * @param content - Raw content\n * @returns Extracted bracket content, returns null if validation fails\n */\n _layer1ValidateFormat(content) {\n content = content.trim();\n const match = exports.COMPILED_REGEXES.LAYER1_INTERACTION.exec(content);\n if (!match) {\n return null;\n }\n // Ensure the match is the complete content (no other text)\n const matchedText = match[0];\n if (matchedText.trim() !== content) {\n return null;\n }\n return match[1];\n }\n /**\n * Layer 2: Detect variables and perform pattern classification\n *\n * @param innerContent - Content extracted from layer 1\n * @returns [hasVariable, variableName, remainingContent]\n */\n _layer2DetectVariable(innerContent) {\n const match = exports.COMPILED_REGEXES.LAYER2_VARIABLE.exec(innerContent);\n if (!match) {\n // No variable, entire content used for display button parsing\n return [false, null, innerContent];\n }\n const variableName = match[1].trim();\n const remainingContent = match[2].trim();\n return [true, variableName, remainingContent];\n }\n /**\n * Parse the structural shape of interaction content: buttons, optional\n * `...question` text input, multi-select flag. Shared by the variable and\n * non-assignment branches, which only differ in how they map the shape\n * into their result types.\n *\n * @param content - Content after the (optional) variable\n * @returns The parsed content shape\n */\n _parseContentShape(content) {\n const ellipsisMatch = exports.COMPILED_REGEXES.LAYER3_ELLIPSIS.exec(content);\n if (ellipsisMatch) {\n const beforeEllipsis = ellipsisMatch[1].trim();\n const question = ellipsisMatch[2].trim();\n if (beforeEllipsis) {\n // Button group + text input: ?[Button1 | Button2 | ...question]\n const [buttons, isMultiSelect] = this._parseButtons(beforeEllipsis);\n return { buttons, question, isMultiSelect, hasTextInput: true };\n }\n // Pure text input: ?[...question]\n return {\n buttons: [],\n question,\n isMultiSelect: false,\n hasTextInput: true,\n };\n }\n if (/\\|/.test(content)) {\n // Button group: ?[Button1 | Button2] or ?[Button1 || Button2]\n const [buttons, isMultiSelect] = this._parseButtons(content);\n return { buttons, isMultiSelect, hasTextInput: false };\n }\n if (content) {\n // Single button: ?[Button1] or ?[Button1//id1]\n return {\n buttons: [this._parseSingleButton(content)],\n isMultiSelect: false,\n hasTextInput: false,\n };\n }\n // Empty content: pure text input with no prompt\n return {\n buttons: [],\n question: '',\n isMultiSelect: false,\n hasTextInput: true,\n };\n }\n /**\n * Layer 3: Parse variable interaction (variable assignment type)\n *\n * @param variableName - Variable name\n * @param content - Content after variable\n * @returns Parse result\n */\n _layer3ParseVariableInteraction(variableName, content) {\n const shape = this._parseContentShape(content);\n if (shape.hasTextInput) {\n if (shape.buttons.length > 0) {\n // Button group + text input: ?[%{{var}} Button1 | Button2 | ...question]\n return {\n type: shape.isMultiSelect\n ? InteractionType.BUTTONS_MULTI_WITH_TEXT\n : InteractionType.BUTTONS_WITH_TEXT,\n variable: variableName,\n buttons: shape.buttons,\n question: shape.question,\n isMultiSelect: shape.isMultiSelect,\n };\n }\n // Pure text input: ?[%{{var}}...question] or ?[%{{var}}]\n return {\n type: InteractionType.TEXT_ONLY,\n variable: variableName,\n question: shape.question ?? '',\n isMultiSelect: false,\n };\n }\n // Button group or single button: ?[%{{var}} Button1 | Button2]\n return {\n type: shape.isMultiSelect\n ? InteractionType.BUTTONS_MULTI_SELECT\n : InteractionType.BUTTONS_ONLY,\n variable: variableName,\n buttons: shape.buttons,\n isMultiSelect: shape.isMultiSelect,\n };\n }\n /**\n * Layer 3: Parse non-assignment interactions (no variable). Same shapes as\n * the variable branch; the answer is not assigned to a variable.\n *\n * @param content - Content\n * @returns Parse result\n */\n _layer3ParseDisplayButtons(content) {\n if (!content) {\n // Empty content: ?[]\n return {\n type: InteractionType.NON_ASSIGNMENT_BUTTON,\n buttons: [{ display: '', value: '' }],\n };\n }\n const shape = this._parseContentShape(content);\n const result = {\n type: InteractionType.NON_ASSIGNMENT_BUTTON,\n buttons: shape.buttons,\n isMultiSelect: shape.isMultiSelect,\n };\n if (shape.hasTextInput) {\n result.question = shape.question;\n }\n return result;\n }\n /**\n * Parse button group with fault tolerance\n *\n * @param content - Button content, separated by | or ||\n * @returns [button list, isMultiSelect]\n */\n _parseButtons(content) {\n if (!content || typeof content !== 'string') {\n return [[], false];\n }\n const [_separator, isMultiSelect] = this._detectSeparatorType(content);\n const buttons = [];\n try {\n // Use different splitting logic based on separator type\n let buttonTexts;\n if (isMultiSelect) {\n // Multi-select mode: split on ||, preserve single |\n buttonTexts = content.split('||');\n }\n else {\n // Single-select mode: split on single |, but preserve ||\n // Use pre-compiled regex from constants\n buttonTexts = content.split(exports.COMPILED_REGEXES.LAYER3_SINGLE_PIPE_SPLIT);\n }\n for (const buttonText of buttonTexts) {\n const trimmed = buttonText.trim();\n if (trimmed) {\n const button = this._parseSingleButton(trimmed);\n buttons.push(button);\n }\n }\n }\n catch {\n // Fallback to treating entire content as single button\n return [[{ display: content.trim(), value: content.trim() }], false];\n }\n // For empty content (like just separators), return empty list\n if (!buttons.length &&\n (content.trim() === '||' || content.trim() === '|')) {\n return [[], isMultiSelect];\n }\n // Ensure at least one button exists (but only if there's actual content)\n if (!buttons.length && content.trim()) {\n buttons.push({ display: content.trim(), value: content.trim() });\n }\n return [buttons, isMultiSelect];\n }\n /**\n * Parse single button, supports Button//value format\n *\n * @param buttonText - Button text\n * @returns {display: display text, value: actual value}\n */\n _parseSingleButton(buttonText) {\n buttonText = buttonText.trim();\n // Detect Button//value format: split at the first \"//\" with a non-empty\n // display before it and a non-empty value after it. (indexOf instead of\n // a lazy/greedy regex, whose backtracking is super-linear.)\n const separatorIndex = buttonText.indexOf('//');\n if (separatorIndex > 0 && separatorIndex + 2 < buttonText.length) {\n return {\n display: buttonText.slice(0, separatorIndex).trim(),\n value: buttonText.slice(separatorIndex + 2).trim(),\n };\n }\n return { display: buttonText, value: buttonText };\n }\n /**\n * Detect separator type and whether it's multi-select\n *\n * Logic: The first separator type encountered determines the parsing mode:\n * - If first separator is |, then || is treated as part of the value\n * - If first separator is ||, then single | is treated as part of the value\n *\n * @param content - Button content to analyze\n * @returns [separator, isMultiSelect] where separator is '|' or '||'\n */\n _detectSeparatorType(content) {\n if (!content || typeof content !== 'string') {\n return ['|', false];\n }\n // Find the position of first single pipe and first double pipe\n const singlePipePos = content.indexOf('|');\n const doublePipePos = content.indexOf('||');\n // If no pipes found\n if (singlePipePos === -1) {\n return ['|', false];\n }\n // If no double pipe found, definitely single-select\n if (doublePipePos === -1) {\n return ['|', false];\n }\n // Both found - check which comes first\n // If double pipe comes first or at the same position (which means\n // the single pipe is part of the double pipe), it's multi-select mode\n if (doublePipePos <= singlePipePos) {\n return ['||', true];\n }\n // If single pipe comes first, it's single-select mode\n return ['|', false];\n }\n /**\n * Create error result\n *\n * @param errorMessage - Error message\n * @returns Error result\n */\n _createErrorResult(errorMessage) {\n return {\n type: null,\n error: errorMessage,\n };\n }\n}\nexports.InteractionParser = InteractionParser;\n/**\n * Convenience function for parsing interaction format\n *\n * Supported formats:\n * 1. ?[%{{var}}...question] - Pure text input\n * 2. ?[%{{var}} option1|option2] - Pure button group (supports display//value format)\n * 3. ?[%{{var}} option1|option2|...question] - Button group + text input\n * 4. ?[%{{var}} option1||option2] - Multi-select button group\n * 5. ?[%{{var}} option1||option2||...question] - Multi-select button group + text input\n * 6. ?[%{{var}} single option] - Single button selection\n * 7. ?[Continue] or ?[Continue|Cancel] - Non-assignment button\n *\n * @param content - Raw content of interaction block\n * @returns [interaction type, parsed data]\n */\nfunction parseInteractionFormat(content) {\n // Use new layered parser\n const parser = new InteractionParser();\n const result = parser.parse(content);\n // Handle parse errors\n if (result.error) {\n // Compatibility handling when parsing fails\n return [InteractionType.TEXT_ONLY, { question: content.trim() }];\n }\n // Extract parse result and convert to original return format\n const interactionType = result.type;\n // Build return data dictionary for backward compatibility\n const returnData = {};\n if (result.type !== InteractionType.NON_ASSIGNMENT_BUTTON) {\n const variableResult = result;\n if (variableResult.variable !== undefined) {\n returnData.variable = variableResult.variable;\n }\n if (variableResult.buttons !== undefined) {\n returnData.buttons = variableResult.buttons;\n }\n if (variableResult.question !== undefined) {\n returnData.question = variableResult.question;\n }\n if (variableResult.isMultiSelect !== undefined) {\n returnData.isMultiSelect = variableResult.isMultiSelect;\n }\n }\n else {\n const buttonResult = result;\n if (buttonResult.buttons !== undefined) {\n returnData.buttons = buttonResult.buttons;\n }\n }\n // Ensure we have a valid interaction type, fallback to TEXT_ONLY if null\n const finalType = interactionType || InteractionType.TEXT_ONLY;\n return [finalType, returnData];\n}\n/**\n * Factory function to create parser instance\n */\nfunction createInteractionParser() {\n return new InteractionParser();\n}\n//# sourceMappingURL=interaction-parser.js.map"],"names":["exports","parseInteractionFormat","createInteractionParser","InteractionType","InteractionParser","content","innerContent","hasVariable","variableName","remainingContent","error","result","remarkResult","nonAssignmentResult","b","variableResult","match","ellipsisMatch","beforeEllipsis","question","buttons","isMultiSelect","shape","_separator","buttonTexts","buttonText","trimmed","button","separatorIndex","singlePipePos","doublePipePos","errorMessage","interactionType","returnData","buttonResult"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../_virtual/interaction-plugin-core.cjs.js"),y=require("../../../_virtual/index.cjs4.js"),P=require("./interaction-parser.cjs.js");var d;function h(){if(d)return i.__exports;d=1,Object.defineProperty(i.__exports,"__esModule",{value:!0}),i.__exports.transformInteractionsInTree=g;const f=y.default,p=P.__require();function x(t,s,o,c,r){return[{type:"text",value:t.substring(0,s)},{type:"element",data:{hName:r,hProperties:c}},{type:"text",value:t.substring(o)}]}function g(t,s){const o=new p.InteractionParser;(0,f.visit)(t,"text",(c,r,a)=>{if(r===null||a===null)return;const u=c.value,n=/\?\[([^\]]*)\](?!\()/.exec(u);if(n){const l=n[0],_=n.index,m=_+l.length;try{const e=n[1];if(e.includes("%{")&&(!e.includes("%{{")||e.includes("%{{}}")))return;const v=o.parseToRemarkFormat(l),I=x(u,_,m,v,"custom-variable");a.children.splice(r,1,...I)}catch(e){console.warn(`Failed to parse ${s} syntax:`,e)}}})}return i.__exports}exports.__require=h;
2
+ //# sourceMappingURL=interaction-plugin-core.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-plugin-core.cjs.js","sources":["../../../../node_modules/remark-flow/dist/interaction-plugin-core.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformInteractionsInTree = transformInteractionsInTree;\nconst unist_util_visit_1 = require(\"unist-util-visit\");\nconst interaction_parser_1 = require(\"./interaction-parser\");\n/**\n * Create AST node segments\n */\nfunction createSegments(value, startIndex, endIndex, parsedResult, hName) {\n return [\n {\n type: 'text',\n value: value.substring(0, startIndex),\n },\n {\n type: 'element',\n data: {\n hName,\n hProperties: parsedResult,\n },\n },\n {\n type: 'text',\n value: value.substring(endIndex),\n },\n ];\n}\n/**\n * Shared visitor body for the remark plugins: find `?[...]` interaction\n * syntax in text nodes and replace it with a `custom-variable` element.\n * remark-interaction and remark-custom-variable are thin wrappers around\n * this (they only differ in the warning label used on parse failures).\n *\n * @param tree - The AST to transform in place\n * @param warnLabel - Label used in the console warning on parse failures\n */\nfunction transformInteractionsInTree(tree, warnLabel) {\n const parser = new interaction_parser_1.InteractionParser();\n (0, unist_util_visit_1.visit)(tree, 'text', (node, index, parent) => {\n // Input validation\n if (index === null || parent === null)\n return;\n const value = node.value;\n // Check if contains interaction syntax\n const interactionRegex = /\\?\\[([^\\]]*)\\](?!\\()/;\n const match = interactionRegex.exec(value);\n if (match) {\n const fullMatch = match[0];\n const startIndex = match.index;\n const endIndex = startIndex + fullMatch.length;\n try {\n // Check for invalid variable syntax: keep the original text\n // instead of misparsing %{variable} / %{{}} as display buttons.\n const innerContent = match[1];\n if (innerContent.includes('%{')) {\n if (!innerContent.includes('%{{')) {\n // Contains invalid variable syntax %{variable} instead of %{{variable}}\n return;\n }\n // Check for empty variable name %{{}}\n if (innerContent.includes('%{{}}')) {\n return;\n }\n }\n const parsedResult = parser.parseToRemarkFormat(fullMatch);\n // Create AST segments\n const segments = createSegments(value, startIndex, endIndex, parsedResult, 'custom-variable');\n parent.children.splice(index, 1, ...segments);\n }\n catch (error) {\n console.warn(`Failed to parse ${warnLabel} syntax:`, error);\n // Keep original if parsing fails\n }\n }\n });\n}\n//# sourceMappingURL=interaction-plugin-core.js.map"],"names":["interactionPluginCore","transformInteractionsInTree","unist_util_visit_1","require$$0","interaction_parser_1","require$$1","createSegments","value","startIndex","endIndex","parsedResult","hName","tree","warnLabel","parser","node","index","parent","match","fullMatch","innerContent","segments","error"],"mappings":"yRACA,OAAO,eAAeA,EAAAA,UAAS,aAAc,CAAE,MAAO,GAAM,EAC5DA,EAAAA,UAAA,4BAAsCC,EACtC,MAAMC,EAAqBC,EAAAA,QACrBC,EAAuBC,EAAAA,UAAA,EAI7B,SAASC,EAAeC,EAAOC,EAAYC,EAAUC,EAAcC,EAAO,CACtE,MAAO,CACH,CACI,KAAM,OACN,MAAOJ,EAAM,UAAU,EAAGC,CAAU,GAExC,CACI,KAAM,UACN,KAAM,CACF,MAAAG,EACA,YAAaD,IAGrB,CACI,KAAM,OACN,MAAOH,EAAM,UAAUE,CAAQ,GAG3C,CAUA,SAASR,EAA4BW,EAAMC,EAAW,CAClD,MAAMC,EAAS,IAAIV,EAAqB,qBACpCF,EAAmB,OAAOU,EAAM,OAAQ,CAACG,EAAMC,EAAOC,IAAW,CAEjE,GAAID,IAAU,MAAQC,IAAW,KAC7B,OACJ,MAAMV,EAAQQ,EAAK,MAGbG,EADmB,uBACM,KAAKX,CAAK,EACzC,GAAIW,EAAO,CACP,MAAMC,EAAYD,EAAM,CAAC,EACnBV,EAAaU,EAAM,MACnBT,EAAWD,EAAaW,EAAU,OACxC,GAAI,CAGA,MAAMC,EAAeF,EAAM,CAAC,EAC5B,GAAIE,EAAa,SAAS,IAAI,IACtB,CAACA,EAAa,SAAS,KAAK,GAK5BA,EAAa,SAAS,OAAO,GAC7B,OAGR,MAAMV,EAAeI,EAAO,oBAAoBK,CAAS,EAEnDE,EAAWf,EAAeC,EAAOC,EAAYC,EAAUC,EAAc,iBAAiB,EAC5FO,EAAO,SAAS,OAAOD,EAAO,EAAG,GAAGK,CAAQ,CAC5D,OACmBC,EAAO,CACV,QAAQ,KAAK,mBAAmBT,CAAS,WAAYS,CAAK,CAE1E,CACA,CACA,CAAK,CACL","x_google_ignoreList":[0]}
@@ -0,0 +1,53 @@
1
+ import { __exports as i } from "../../../_virtual/interaction-plugin-core.es.js";
2
+ import h from "../../../_virtual/index.es4.js";
3
+ import { __require as P } from "./interaction-parser.es.js";
4
+ var m;
5
+ function C() {
6
+ if (m) return i;
7
+ m = 1, Object.defineProperty(i, "__esModule", { value: !0 }), i.transformInteractionsInTree = x;
8
+ const p = h, d = P();
9
+ function _(t, o, s, a, r) {
10
+ return [
11
+ {
12
+ type: "text",
13
+ value: t.substring(0, o)
14
+ },
15
+ {
16
+ type: "element",
17
+ data: {
18
+ hName: r,
19
+ hProperties: a
20
+ }
21
+ },
22
+ {
23
+ type: "text",
24
+ value: t.substring(s)
25
+ }
26
+ ];
27
+ }
28
+ function x(t, o) {
29
+ const s = new d.InteractionParser();
30
+ (0, p.visit)(t, "text", (a, r, c) => {
31
+ if (r === null || c === null)
32
+ return;
33
+ const u = a.value, n = /\?\[([^\]]*)\](?!\()/.exec(u);
34
+ if (n) {
35
+ const l = n[0], f = n.index, g = f + l.length;
36
+ try {
37
+ const e = n[1];
38
+ if (e.includes("%{") && (!e.includes("%{{") || e.includes("%{{}}")))
39
+ return;
40
+ const I = s.parseToRemarkFormat(l), v = _(u, f, g, I, "custom-variable");
41
+ c.children.splice(r, 1, ...v);
42
+ } catch (e) {
43
+ console.warn(`Failed to parse ${o} syntax:`, e);
44
+ }
45
+ }
46
+ });
47
+ }
48
+ return i;
49
+ }
50
+ export {
51
+ C as __require
52
+ };
53
+ //# sourceMappingURL=interaction-plugin-core.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-plugin-core.es.js","sources":["../../../../node_modules/remark-flow/dist/interaction-plugin-core.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformInteractionsInTree = transformInteractionsInTree;\nconst unist_util_visit_1 = require(\"unist-util-visit\");\nconst interaction_parser_1 = require(\"./interaction-parser\");\n/**\n * Create AST node segments\n */\nfunction createSegments(value, startIndex, endIndex, parsedResult, hName) {\n return [\n {\n type: 'text',\n value: value.substring(0, startIndex),\n },\n {\n type: 'element',\n data: {\n hName,\n hProperties: parsedResult,\n },\n },\n {\n type: 'text',\n value: value.substring(endIndex),\n },\n ];\n}\n/**\n * Shared visitor body for the remark plugins: find `?[...]` interaction\n * syntax in text nodes and replace it with a `custom-variable` element.\n * remark-interaction and remark-custom-variable are thin wrappers around\n * this (they only differ in the warning label used on parse failures).\n *\n * @param tree - The AST to transform in place\n * @param warnLabel - Label used in the console warning on parse failures\n */\nfunction transformInteractionsInTree(tree, warnLabel) {\n const parser = new interaction_parser_1.InteractionParser();\n (0, unist_util_visit_1.visit)(tree, 'text', (node, index, parent) => {\n // Input validation\n if (index === null || parent === null)\n return;\n const value = node.value;\n // Check if contains interaction syntax\n const interactionRegex = /\\?\\[([^\\]]*)\\](?!\\()/;\n const match = interactionRegex.exec(value);\n if (match) {\n const fullMatch = match[0];\n const startIndex = match.index;\n const endIndex = startIndex + fullMatch.length;\n try {\n // Check for invalid variable syntax: keep the original text\n // instead of misparsing %{variable} / %{{}} as display buttons.\n const innerContent = match[1];\n if (innerContent.includes('%{')) {\n if (!innerContent.includes('%{{')) {\n // Contains invalid variable syntax %{variable} instead of %{{variable}}\n return;\n }\n // Check for empty variable name %{{}}\n if (innerContent.includes('%{{}}')) {\n return;\n }\n }\n const parsedResult = parser.parseToRemarkFormat(fullMatch);\n // Create AST segments\n const segments = createSegments(value, startIndex, endIndex, parsedResult, 'custom-variable');\n parent.children.splice(index, 1, ...segments);\n }\n catch (error) {\n console.warn(`Failed to parse ${warnLabel} syntax:`, error);\n // Keep original if parsing fails\n }\n }\n });\n}\n//# sourceMappingURL=interaction-plugin-core.js.map"],"names":["interactionPluginCore","transformInteractionsInTree","unist_util_visit_1","require$$0","interaction_parser_1","require$$1","createSegments","value","startIndex","endIndex","parsedResult","hName","tree","warnLabel","parser","node","index","parent","match","fullMatch","innerContent","segments","error"],"mappings":";;;;;;SACA,OAAO,eAAeA,GAAS,cAAc,EAAE,OAAO,IAAM,GAC5DA,EAAA,8BAAsCC;AACtC,QAAMC,IAAqBC,GACrBC,IAAuBC,EAAA;AAI7B,WAASC,EAAeC,GAAOC,GAAYC,GAAUC,GAAcC,GAAO;AACtE,WAAO;AAAA,MACH;AAAA,QACI,MAAM;AAAA,QACN,OAAOJ,EAAM,UAAU,GAAGC,CAAU;AAAA;MAExC;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,UACF,OAAAG;AAAA,UACA,aAAaD;AAAA;;MAGrB;AAAA,QACI,MAAM;AAAA,QACN,OAAOH,EAAM,UAAUE,CAAQ;AAAA;;EAG3C;AAUA,WAASR,EAA4BW,GAAMC,GAAW;AAClD,UAAMC,IAAS,IAAIV,EAAqB,kBAAiB;AACzD,QAAIF,EAAmB,OAAOU,GAAM,QAAQ,CAACG,GAAMC,GAAOC,MAAW;AAEjE,UAAID,MAAU,QAAQC,MAAW;AAC7B;AACJ,YAAMV,IAAQQ,EAAK,OAGbG,IADmB,uBACM,KAAKX,CAAK;AACzC,UAAIW,GAAO;AACP,cAAMC,IAAYD,EAAM,CAAC,GACnBV,IAAaU,EAAM,OACnBT,IAAWD,IAAaW,EAAU;AACxC,YAAI;AAGA,gBAAMC,IAAeF,EAAM,CAAC;AAC5B,cAAIE,EAAa,SAAS,IAAI,MACtB,CAACA,EAAa,SAAS,KAAK,KAK5BA,EAAa,SAAS,OAAO;AAC7B;AAGR,gBAAMV,IAAeI,EAAO,oBAAoBK,CAAS,GAEnDE,IAAWf,EAAeC,GAAOC,GAAYC,GAAUC,GAAc,iBAAiB;AAC5F,UAAAO,EAAO,SAAS,OAAOD,GAAO,GAAG,GAAGK,CAAQ;AAAA,QAC5D,SACmBC,GAAO;AACV,kBAAQ,KAAK,mBAAmBT,CAAS,YAAYS,CAAK;AAAA,QAE1E;AAAA,MACA;AAAA,IACA,CAAK;AAAA,EACL;;;","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../_virtual/remark-custom-variable.cjs.js"),g=require("../../../_virtual/index.cjs3.js"),y=require("./interaction-parser.cjs.js");var _;function h(){if(_)return s.__exports;_=1,Object.defineProperty(s.__exports,"__esModule",{value:!0}),s.__exports.default=f;const d=g.default,m=y.__require();function p(t,a,o,r,n){return[{type:"text",value:t.substring(0,a)},{type:"element",data:{hName:n,hProperties:r}},{type:"text",value:t.substring(o)}]}function f(){return t=>{const a=new m.InteractionParser;(0,d.visit)(t,"text",(o,r,n)=>{if(r===null||n===null)return;const u=o.value,i=/\?\[([^\]]*)\](?!\()/.exec(u);if(i){const c=i[0],l=i.index,x=l+c.length;try{const e=i[1];if(e.includes("%{")&&(!e.includes("%{{")||e.includes("%{{}}")))return;const b=a.parseToRemarkFormat(c),v=p(u,l,x,b,"custom-variable");n.children.splice(r,1,...v)}catch(e){console.warn("Failed to parse variable interaction syntax:",e)}}})}}return s.__exports}exports.__require=h;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../_virtual/remark-custom-variable.cjs.js"),a=require("./interaction-plugin-core.cjs.js");var r;function n(){if(r)return e.__exports;r=1,Object.defineProperty(e.__exports,"__esModule",{value:!0}),e.__exports.default=i;const t=a.__require();function i(){return o=>{(0,t.transformInteractionsInTree)(o,"variable interaction")}}return e.__exports}exports.__require=n;
2
2
  //# sourceMappingURL=remark-custom-variable.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-custom-variable.cjs.js","sources":["../../../../node_modules/remark-flow/dist/remark-custom-variable.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = remarkCustomVariable;\nconst unist_util_visit_1 = require(\"unist-util-visit\");\nconst interaction_parser_1 = require(\"./interaction-parser\");\n/**\n * Create AST node segments\n */\nfunction createSegments(value, startIndex, endIndex, parsedResult, hName) {\n return [\n {\n type: 'text',\n value: value.substring(0, startIndex),\n },\n {\n type: 'element',\n data: {\n hName,\n hProperties: parsedResult,\n },\n },\n {\n type: 'text',\n value: value.substring(endIndex),\n },\n ];\n}\nfunction remarkCustomVariable() {\n return (tree) => {\n // Create parser instance\n const parser = new interaction_parser_1.InteractionParser();\n (0, unist_util_visit_1.visit)(tree, 'text', (node, index, parent) => {\n // Input validation\n if (index === null || parent === null)\n return;\n const value = node.value;\n // Check if contains interaction syntax\n const interactionRegex = /\\?\\[([^\\]]*)\\](?!\\()/;\n const match = interactionRegex.exec(value);\n if (match) {\n const fullMatch = match[0];\n const startIndex = match.index;\n const endIndex = startIndex + fullMatch.length;\n try {\n // Check for invalid variable syntax\n const innerContent = match[1];\n if (innerContent.includes('%{')) {\n if (!innerContent.includes('%{{')) {\n // Contains invalid variable syntax %{variable} instead of %{{variable}}\n return;\n }\n // Check for empty variable name %{{}}\n if (innerContent.includes('%{{}}')) {\n return;\n }\n }\n // Convert to remark compatible format (handle all types for backward compatibility)\n const parsedResult = parser.parseToRemarkFormat(fullMatch);\n // Create AST segments\n const segments = createSegments(value, startIndex, endIndex, parsedResult, 'custom-variable');\n parent.children.splice(index, 1, ...segments);\n }\n catch (error) {\n console.warn('Failed to parse variable interaction syntax:', error);\n // Keep original if parsing fails\n }\n }\n });\n };\n}\n//# sourceMappingURL=remark-custom-variable.js.map"],"names":["remarkCustomVariable_1","remarkCustomVariable","unist_util_visit_1","require$$0","interaction_parser_1","require$$1","createSegments","value","startIndex","endIndex","parsedResult","hName","tree","parser","node","index","parent","match","fullMatch","innerContent","segments","error"],"mappings":"wRACA,OAAO,eAAeA,EAAAA,UAAS,aAAc,CAAE,MAAO,GAAM,EAC5DA,EAAAA,UAAA,QAAkBC,EAClB,MAAMC,EAAqBC,EAAAA,QACrBC,EAAuBC,EAAAA,UAAA,EAI7B,SAASC,EAAeC,EAAOC,EAAYC,EAAUC,EAAcC,EAAO,CACtE,MAAO,CACH,CACI,KAAM,OACN,MAAOJ,EAAM,UAAU,EAAGC,CAAU,GAExC,CACI,KAAM,UACN,KAAM,CACF,MAAAG,EACA,YAAaD,IAGrB,CACI,KAAM,OACN,MAAOH,EAAM,UAAUE,CAAQ,GAG3C,CACA,SAASR,GAAuB,CAC5B,OAAQW,GAAS,CAEb,MAAMC,EAAS,IAAIT,EAAqB,qBACpCF,EAAmB,OAAOU,EAAM,OAAQ,CAACE,EAAMC,EAAOC,IAAW,CAEjE,GAAID,IAAU,MAAQC,IAAW,KAC7B,OACJ,MAAMT,EAAQO,EAAK,MAGbG,EADmB,uBACM,KAAKV,CAAK,EACzC,GAAIU,EAAO,CACP,MAAMC,EAAYD,EAAM,CAAC,EACnBT,EAAaS,EAAM,MACnBR,EAAWD,EAAaU,EAAU,OACxC,GAAI,CAEA,MAAMC,EAAeF,EAAM,CAAC,EAC5B,GAAIE,EAAa,SAAS,IAAI,IACtB,CAACA,EAAa,SAAS,KAAK,GAK5BA,EAAa,SAAS,OAAO,GAC7B,OAIR,MAAMT,EAAeG,EAAO,oBAAoBK,CAAS,EAEnDE,EAAWd,EAAeC,EAAOC,EAAYC,EAAUC,EAAc,iBAAiB,EAC5FM,EAAO,SAAS,OAAOD,EAAO,EAAG,GAAGK,CAAQ,CAChE,OACuBC,EAAO,CACV,QAAQ,KAAK,+CAAgDA,CAAK,CAEtF,CACA,CACA,CAAS,CACT,CACA","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"remark-custom-variable.cjs.js","sources":["../../../../node_modules/remark-flow/dist/remark-custom-variable.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = remarkCustomVariable;\nconst interaction_plugin_core_1 = require(\"./interaction-plugin-core\");\nfunction remarkCustomVariable() {\n return (tree) => {\n (0, interaction_plugin_core_1.transformInteractionsInTree)(tree, 'variable interaction');\n };\n}\n//# sourceMappingURL=remark-custom-variable.js.map"],"names":["remarkCustomVariable_1","remarkCustomVariable","interaction_plugin_core_1","require$$0","tree"],"mappings":"gPACA,OAAO,eAAeA,EAAAA,UAAS,aAAc,CAAE,MAAO,GAAM,EAC5DA,EAAAA,UAAA,QAAkBC,EAClB,MAAMC,EAA4BC,EAAAA,UAAA,EAClC,SAASF,GAAuB,CAC5B,OAAQG,GAAS,IACTF,EAA0B,6BAA6BE,EAAM,sBAAsB,CAC/F,CACA","x_google_ignoreList":[0]}
@@ -1,55 +1,18 @@
1
- import { __exports as a } from "../../../_virtual/remark-custom-variable.es.js";
2
- import g from "../../../_virtual/index.es3.js";
3
- import { __require as h } from "./interaction-parser.es.js";
4
- var m;
5
- function C() {
6
- if (m) return a;
7
- m = 1, Object.defineProperty(a, "__esModule", { value: !0 }), a.default = _;
8
- const f = g, p = h();
9
- function d(t, s, o, r, n) {
10
- return [
11
- {
12
- type: "text",
13
- value: t.substring(0, s)
14
- },
15
- {
16
- type: "element",
17
- data: {
18
- hName: n,
19
- hProperties: r
20
- }
21
- },
22
- {
23
- type: "text",
24
- value: t.substring(o)
25
- }
26
- ];
27
- }
28
- function _() {
29
- return (t) => {
30
- const s = new p.InteractionParser();
31
- (0, f.visit)(t, "text", (o, r, n) => {
32
- if (r === null || n === null)
33
- return;
34
- const u = o.value, i = /\?\[([^\]]*)\](?!\()/.exec(u);
35
- if (i) {
36
- const c = i[0], l = i.index, x = l + c.length;
37
- try {
38
- const e = i[1];
39
- if (e.includes("%{") && (!e.includes("%{{") || e.includes("%{{}}")))
40
- return;
41
- const b = s.parseToRemarkFormat(c), v = d(u, l, x, b, "custom-variable");
42
- n.children.splice(r, 1, ...v);
43
- } catch (e) {
44
- console.warn("Failed to parse variable interaction syntax:", e);
45
- }
46
- }
47
- });
1
+ import { __exports as r } from "../../../_virtual/remark-custom-variable.es.js";
2
+ import { __require as o } from "./interaction-plugin-core.es.js";
3
+ var e;
4
+ function m() {
5
+ if (e) return r;
6
+ e = 1, Object.defineProperty(r, "__esModule", { value: !0 }), r.default = a;
7
+ const t = o();
8
+ function a() {
9
+ return (i) => {
10
+ (0, t.transformInteractionsInTree)(i, "variable interaction");
48
11
  };
49
12
  }
50
- return a;
13
+ return r;
51
14
  }
52
15
  export {
53
- C as __require
16
+ m as __require
54
17
  };
55
18
  //# sourceMappingURL=remark-custom-variable.es.js.map