@fuzdev/mdz 0.3.0 → 0.5.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.
Files changed (81) hide show
  1. package/LICENSE +10 -17
  2. package/README.md +6 -3
  3. package/dist/Mdz.svelte +8 -7
  4. package/dist/Mdz.svelte.d.ts.map +1 -1
  5. package/dist/MdzNodeView.svelte +74 -30
  6. package/dist/MdzNodeView.svelte.d.ts +1 -2
  7. package/dist/MdzNodeView.svelte.d.ts.map +1 -1
  8. package/dist/MdzPrecompiled.svelte +3 -3
  9. package/dist/MdzPrecompiled.svelte.d.ts.map +1 -1
  10. package/dist/MdzRoot.svelte +3 -3
  11. package/dist/MdzRoot.svelte.d.ts.map +1 -1
  12. package/dist/MdzStream.svelte +3 -3
  13. package/dist/MdzStream.svelte.d.ts.map +1 -1
  14. package/dist/MdzStreamNodeView.svelte +79 -31
  15. package/dist/MdzStreamNodeView.svelte.d.ts +1 -2
  16. package/dist/MdzStreamNodeView.svelte.d.ts.map +1 -1
  17. package/dist/context_helpers.js +1 -1
  18. package/dist/mdz.d.ts +12 -1
  19. package/dist/mdz.d.ts.map +1 -1
  20. package/dist/mdz.js +1 -1
  21. package/dist/mdz_contexts.d.ts +33 -6
  22. package/dist/mdz_contexts.d.ts.map +1 -1
  23. package/dist/mdz_debug_work.d.ts.map +1 -1
  24. package/dist/mdz_helpers.d.ts +31 -3
  25. package/dist/mdz_helpers.d.ts.map +1 -1
  26. package/dist/mdz_helpers.js +104 -12
  27. package/dist/mdz_lexer.d.ts +3 -1
  28. package/dist/mdz_lexer.d.ts.map +1 -1
  29. package/dist/mdz_lexer.js +115 -31
  30. package/dist/mdz_opcodes.d.ts +3 -1
  31. package/dist/mdz_opcodes.d.ts.map +1 -1
  32. package/dist/mdz_opcodes_to_nodes.d.ts.map +1 -1
  33. package/dist/mdz_opcodes_to_nodes.js +25 -17
  34. package/dist/mdz_stream_parser.d.ts.map +1 -1
  35. package/dist/mdz_stream_parser.js +8 -8
  36. package/dist/mdz_stream_parser_block.js +5 -5
  37. package/dist/mdz_stream_parser_inline.js +4 -4
  38. package/dist/mdz_stream_parser_link.d.ts.map +1 -1
  39. package/dist/mdz_stream_parser_link.js +83 -11
  40. package/dist/mdz_stream_parser_list.d.ts.map +1 -1
  41. package/dist/mdz_stream_parser_list.js +13 -7
  42. package/dist/mdz_stream_parser_state.d.ts.map +1 -1
  43. package/dist/mdz_stream_parser_state.js +7 -7
  44. package/dist/mdz_stream_parser_table.d.ts.map +1 -1
  45. package/dist/mdz_stream_parser_table.js +16 -9
  46. package/dist/mdz_stream_parser_text.js +2 -2
  47. package/dist/mdz_stream_parser_url.js +7 -7
  48. package/dist/mdz_stream_state.svelte.d.ts +3 -1
  49. package/dist/mdz_stream_state.svelte.d.ts.map +1 -1
  50. package/dist/mdz_stream_state.svelte.js +4 -0
  51. package/dist/mdz_to_svelte.d.ts +17 -4
  52. package/dist/mdz_to_svelte.d.ts.map +1 -1
  53. package/dist/mdz_to_svelte.js +22 -9
  54. package/dist/mdz_token_parser.d.ts.map +1 -1
  55. package/dist/mdz_token_parser.js +25 -11
  56. package/dist/svelte_preprocess_mdz.d.ts +6 -3
  57. package/dist/svelte_preprocess_mdz.d.ts.map +1 -1
  58. package/dist/svelte_preprocess_mdz.js +11 -11
  59. package/package.json +25 -40
  60. package/src/lib/context_helpers.ts +2 -2
  61. package/src/lib/mdz.ts +15 -3
  62. package/src/lib/mdz_contexts.ts +41 -11
  63. package/src/lib/mdz_debug_work.ts +1 -1
  64. package/src/lib/mdz_helpers.ts +164 -43
  65. package/src/lib/mdz_lexer.ts +173 -80
  66. package/src/lib/mdz_opcodes.ts +3 -1
  67. package/src/lib/mdz_opcodes_to_nodes.ts +40 -30
  68. package/src/lib/mdz_stream_parser.ts +17 -17
  69. package/src/lib/mdz_stream_parser_block.ts +14 -14
  70. package/src/lib/mdz_stream_parser_inline.ts +18 -18
  71. package/src/lib/mdz_stream_parser_link.ts +88 -18
  72. package/src/lib/mdz_stream_parser_list.ts +31 -25
  73. package/src/lib/mdz_stream_parser_state.ts +27 -27
  74. package/src/lib/mdz_stream_parser_table.ts +38 -31
  75. package/src/lib/mdz_stream_parser_text.ts +3 -3
  76. package/src/lib/mdz_stream_parser_url.ts +11 -11
  77. package/src/lib/mdz_stream_state.svelte.ts +11 -8
  78. package/src/lib/mdz_to_svelte.ts +71 -27
  79. package/src/lib/mdz_token_parser.ts +52 -38
  80. package/src/lib/svelte_preprocess_mdz.ts +66 -60
  81. package/src/lib/tsdoc_mdz.ts +1 -1
@@ -4,8 +4,8 @@
4
4
  *
5
5
  * @module
6
6
  */
7
- import { A_UPPER, LEFT_BRACKET, LEFT_PAREN, MAX_INLINE_NESTING_DEPTH, RIGHT_ANGLE, RIGHT_BRACKET, RIGHT_PAREN, SLASH, SPACE, Z_UPPER, is_letter, is_tag_name_char, is_valid_path_char, mdz_is_safe_reference, mdz_is_url, } from './mdz_helpers.js';
8
- import { accumulate_text, alloc_id, buffer_index_of, emit, ensure_paragraph, flush_text, is_run_boundary, offset, pop_stack_entry, push_stack_entry, revert_above, } from './mdz_stream_parser_state.js';
7
+ import { A_UPPER, APOSTROPHE, DOUBLE_QUOTE, EQUALS, LEFT_BRACKET, LEFT_PAREN, MAX_INLINE_NESTING_DEPTH, RIGHT_ANGLE, RIGHT_BRACKET, RIGHT_PAREN, SLASH, SPACE, Z_UPPER, is_letter, is_tag_name_char, is_valid_path_char, mdz_is_safe_reference, mdz_is_url } from './mdz_helpers.js';
8
+ import { accumulate_text, alloc_id, buffer_index_of, emit, ensure_paragraph, flush_text, is_run_boundary, offset, pop_stack_entry, push_stack_entry, revert_above } from './mdz_stream_parser_state.js';
9
9
  import { consume_delimiter_as_text } from './mdz_stream_parser_text.js';
10
10
  import { mdz_debug_work } from './mdz_debug_work.js';
11
11
  // -- Links --
@@ -119,7 +119,7 @@ export const try_complete_link = (state, link_stack_idx) => {
119
119
  id: entry.id,
120
120
  end: offset(state, i + 1),
121
121
  reference,
122
- link_type,
122
+ link_type
123
123
  });
124
124
  state.active_text_id = null;
125
125
  state.pos = i + 1;
@@ -161,12 +161,84 @@ export const try_tag_open = (state) => {
161
161
  if (i >= state.buffer.length)
162
162
  return 'need_more';
163
163
  const name = state.buffer.slice(name_start, i);
164
- // skip whitespace
165
- while (i < state.buffer.length && state.buffer.charCodeAt(i) === SPACE) {
166
- i++;
164
+ // Attribute loop: consume space-separated attributes until `/>` or `>`.
165
+ // This widens the held-tag-open rescan surface (the TODO above) with the
166
+ // attribute/value text — still line-bounded, since a newline anywhere aborts
167
+ // the whole tag (`not_match`). Every buffer-end point holds (`need_more`) so
168
+ // the same tree is produced regardless of where feeds split. The quoted-value
169
+ // terminator search reuses `buffer_index_of` (memoized, append-aware) so a
170
+ // long streamed value doesn't rescan quadratically across held retries,
171
+ // matching `try_complete_link`.
172
+ const attributes = [];
173
+ const seen = new Set();
174
+ for (;;) {
175
+ // skip a run of literal spaces only (tabs/newlines are not SPACE)
176
+ let had_space = false;
177
+ while (i < state.buffer.length && state.buffer.charCodeAt(i) === SPACE) {
178
+ i++;
179
+ had_space = true;
180
+ }
181
+ if (i >= state.buffer.length)
182
+ return 'need_more';
183
+ const c = state.buffer.charCodeAt(i);
184
+ // `/>` or `>` ends the open tag — break to the existing self-close / commit
185
+ if (c === SLASH || c === RIGHT_ANGLE)
186
+ break;
187
+ // otherwise an attribute name must follow, space-separated from what
188
+ // precedes it (`<a x="1"y="2">` — `y` abuts the closing quote — reverts)
189
+ if (!is_letter(c))
190
+ return 'not_match';
191
+ if (!had_space)
192
+ return 'not_match';
193
+ // collect the attribute name (same grammar as tag names)
194
+ const attr_start = i;
195
+ i++; // first char already passed is_letter
196
+ while (i < state.buffer.length && is_tag_name_char(state.buffer.charCodeAt(i))) {
197
+ i++;
198
+ }
199
+ if (i >= state.buffer.length)
200
+ return 'need_more'; // mid-name — could still grow
201
+ const attr_name = state.buffer.slice(attr_start, i);
202
+ // duplicate names are ambiguous (Svelte compile-errors) → literal tag
203
+ if (seen.has(attr_name))
204
+ return 'not_match';
205
+ seen.add(attr_name);
206
+ let value = true; // bare name is boolean `true`
207
+ if (state.buffer.charCodeAt(i) === EQUALS) {
208
+ i++; // consume =
209
+ if (i >= state.buffer.length)
210
+ return 'need_more'; // nothing after `=` yet
211
+ // the value must be immediately quoted — no space, no `{`, no unquoted
212
+ const quote_code = state.buffer.charCodeAt(i);
213
+ if (quote_code !== DOUBLE_QUOTE && quote_code !== APOSTROPHE)
214
+ return 'not_match';
215
+ i++; // consume opening quote
216
+ const value_start = i;
217
+ // find the matching quote and the next newline via the memoized,
218
+ // append-aware search; a `>` inside the value is content, consumed
219
+ // atomically here so a `</Name>`-shaped substring never reaches
220
+ // `try_close_tag`
221
+ const quote_str = quote_code === DOUBLE_QUOTE ? '"' : "'";
222
+ const q = buffer_index_of(state, quote_str, value_start);
223
+ const n = buffer_index_of(state, '\n', value_start);
224
+ if (q !== -1 && (n === -1 || q < n)) {
225
+ value = state.buffer.slice(value_start, q);
226
+ i = q + 1; // past the closing quote
227
+ }
228
+ else if (n !== -1 && (q === -1 || n < q)) {
229
+ return 'not_match'; // newline inside the value → literal tag
230
+ }
231
+ else {
232
+ return 'need_more'; // neither found yet — unterminated so far, hold
233
+ }
234
+ }
235
+ attributes.push({
236
+ name: attr_name,
237
+ value,
238
+ start: offset(state, attr_start),
239
+ end: offset(state, i)
240
+ });
167
241
  }
168
- if (i >= state.buffer.length)
169
- return 'need_more';
170
242
  // check for self-closing />
171
243
  if (state.buffer.charCodeAt(i) === SLASH && i + 1 >= state.buffer.length) {
172
244
  return 'need_more'; // `/` at the buffer end can't classify yet (`/>` or junk)
@@ -179,7 +251,7 @@ export const try_tag_open = (state) => {
179
251
  ensure_paragraph(state);
180
252
  const id = alloc_id(state);
181
253
  const tag_start = offset(state, start);
182
- emit(state, { type: 'open', id, node_type, start: tag_start, name });
254
+ emit(state, { type: 'open', id, node_type, start: tag_start, name, attributes });
183
255
  emit(state, { type: 'close', id, end: offset(state, i + 2) });
184
256
  state.active_text_id = null;
185
257
  state.pos = i + 2;
@@ -199,8 +271,8 @@ export const try_tag_open = (state) => {
199
271
  ensure_paragraph(state);
200
272
  const id = alloc_id(state);
201
273
  const tag_start = offset(state, start);
202
- const delimiter = state.buffer.slice(start, i); // e.g., "<Alert>"
203
- emit(state, { type: 'open', id, node_type, start: tag_start, name });
274
+ const delimiter = state.buffer.slice(start, i); // e.g., "<Alert>" or "<Alert x="1">"
275
+ emit(state, { type: 'open', id, node_type, start: tag_start, name, attributes });
204
276
  push_stack_entry(state, id, node_type, tag_start, delimiter, name);
205
277
  state.active_text_id = null;
206
278
  state.pos = i;
@@ -1 +1 @@
1
- {"version":3,"file":"mdz_stream_parser_list.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_stream_parser_list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAmBH,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,SAAS,EAad,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CACf;AAoBD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC7B,OAAO,oBAAoB,EAC3B,GAAG,MAAM,EACT,QAAQ,OAAO,KACb,mBAAmB,GAAG,SAAS,GAAG,IAsDpC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAC9B,OAAO,oBAAoB,EAC3B,GAAG,MAAM,EACT,QAAQ,OAAO,KACb,oBAAoB,GAAG,SAAS,GAAG,IAuBrC,CAAC;AAgGF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,oBAAoB,EAAE,QAAQ,OAAO,KAAG,SAY7E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,iBAAiB,GAC7B,OAAO,oBAAoB,EAC3B,QAAQ,OAAO,KACb,OAAO,GAAG,YAqMZ,CAAC"}
1
+ {"version":3,"file":"mdz_stream_parser_list.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_stream_parser_list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAmBH,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,SAAS,EAad,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CACf;AAoBD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC7B,OAAO,oBAAoB,EAC3B,GAAG,MAAM,EACT,QAAQ,OAAO,KACb,mBAAmB,GAAG,SAAS,GAAG,IAsDpC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAC9B,OAAO,oBAAoB,EAC3B,GAAG,MAAM,EACT,QAAQ,OAAO,KACb,oBAAoB,GAAG,SAAS,GAAG,IAuBrC,CAAC;AAgGF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,oBAAoB,EAAE,QAAQ,OAAO,KAAG,SAY7E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,iBAAiB,GAC7B,OAAO,oBAAoB,EAC3B,QAAQ,OAAO,KACb,OAAO,GAAG,YA2MZ,CAAC"}
@@ -12,9 +12,9 @@
12
12
  *
13
13
  * @module
14
14
  */
15
- import { BACKTICK, HYPHEN, MAX_LIST_NUMBER_DIGITS, MIN_CODEBLOCK_BACKTICKS, NEWLINE, NINE, PERIOD, PIPE, RIGHT_ANGLE, SPACE, ZERO, is_line_whitespace, mdz_match_blockquote_prefix, mdz_blockquote_line_has_content, } from './mdz_helpers.js';
15
+ import { BACKTICK, HYPHEN, MAX_LIST_NUMBER_DIGITS, MIN_CODEBLOCK_BACKTICKS, NEWLINE, NINE, PERIOD, PIPE, RIGHT_ANGLE, SPACE, ZERO, is_line_whitespace, mdz_match_blockquote_prefix, mdz_blockquote_line_has_content } from './mdz_helpers.js';
16
16
  import { match_table_in_item_head, open_table_in_item } from './mdz_stream_parser_table.js';
17
- import { accumulate_text, alloc_id, close_all_list_levels, close_list_item, close_list_level, close_list_run, close_paragraph, emit, extend_accumulated_end, flush_text, offset, push_stack_entry, } from './mdz_stream_parser_state.js';
17
+ import { accumulate_text, alloc_id, close_all_list_levels, close_list_item, close_list_level, close_list_run, close_paragraph, emit, extend_accumulated_end, flush_text, offset, push_stack_entry } from './mdz_stream_parser_state.js';
18
18
  /**
19
19
  * Whether only line whitespace remains between `from` and the line's end —
20
20
  * `'pending'` when the buffer ends inside the run while streaming (the line
@@ -53,7 +53,7 @@ export const match_list_marker = (state, i, forced) => {
53
53
  start: i,
54
54
  marker_end: after,
55
55
  content_start: after,
56
- empty: true,
56
+ empty: true
57
57
  };
58
58
  }
59
59
  // in bounds: `blank === false` means the scan found a char at or past `after`
@@ -88,7 +88,7 @@ export const match_list_marker = (state, i, forced) => {
88
88
  start: i,
89
89
  marker_end: after,
90
90
  content_start: after,
91
- empty: true,
91
+ empty: true
92
92
  };
93
93
  }
94
94
  // in bounds: `blank === false` means the scan found a char at or past `after`
@@ -168,7 +168,7 @@ const open_list_level = (state, indent, marker) => {
168
168
  node_type: 'List',
169
169
  start,
170
170
  ordered: true,
171
- start_number: marker.number,
171
+ start_number: marker.number
172
172
  });
173
173
  }
174
174
  else {
@@ -378,13 +378,19 @@ export const process_list_line = (state, forced) => {
378
378
  }
379
379
  const id = alloc_id(state);
380
380
  const cb_start = offset(state, j);
381
- emit(state, { type: 'open', id, node_type: 'Codeblock', start: cb_start, lang: fence.lang });
381
+ emit(state, {
382
+ type: 'open',
383
+ id,
384
+ node_type: 'Codeblock',
385
+ start: cb_start,
386
+ lang: fence.lang
387
+ });
382
388
  state.codeblock = {
383
389
  id,
384
390
  backtick_count: fence.backtick_count,
385
391
  text_id: null,
386
392
  fence_indent: indent,
387
- start: cb_start,
393
+ start: cb_start
388
394
  };
389
395
  state.active_text_id = null;
390
396
  state.pos = fence.content_start;
@@ -1 +1 @@
1
- {"version":3,"file":"mdz_stream_parser_state.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_stream_parser_state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mdz_stream_parser_state.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_stream_parser_state.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ export const create_state = () => ({
44
44
  paragraph_stack_idx: -1,
45
45
  last_text_id: null,
46
46
  last_text_ended_with_newline: false,
47
- last_text_was_singleton_newline: false,
47
+ last_text_was_singleton_newline: false
48
48
  });
49
49
  /** @nodocs */
50
50
  export const alloc_id = (state) => state.next_id++;
@@ -64,7 +64,7 @@ export const push_stack_entry = (state, id, node_type, start, delimiter = '', ta
64
64
  tag_name,
65
65
  has_children: false,
66
66
  has_non_whitespace_content: false,
67
- start,
67
+ start
68
68
  });
69
69
  if (node_type === 'Paragraph') {
70
70
  state.paragraph_stack_idx = state.stack.length - 1;
@@ -345,7 +345,7 @@ export const flush_text = (state) => {
345
345
  type: 'append_text',
346
346
  id: state.active_text_id,
347
347
  content: state.accumulated_text,
348
- end: state.accumulated_text_end,
348
+ end: state.accumulated_text_end
349
349
  });
350
350
  }
351
351
  else {
@@ -358,7 +358,7 @@ export const flush_text = (state) => {
358
358
  content: state.accumulated_text,
359
359
  text_type: 'Text',
360
360
  start,
361
- end: state.accumulated_text_end,
361
+ end: state.accumulated_text_end
362
362
  });
363
363
  state.active_text_id = id;
364
364
  }
@@ -436,7 +436,7 @@ export const revert_above = (state, target_idx) => {
436
436
  type: 'revert',
437
437
  id: entry.id,
438
438
  replacement_text: entry.delimiter,
439
- start: entry.start,
439
+ start: entry.start
440
440
  });
441
441
  }
442
442
  state.active_text_id = null;
@@ -489,7 +489,7 @@ export const revert_failed_close = (state, stack_idx) => {
489
489
  type: 'revert',
490
490
  id: entry.id,
491
491
  replacement_text: entry.delimiter,
492
- start: entry.start,
492
+ start: entry.start
493
493
  });
494
494
  // structural opcode seals the prior text run (mirrors `emit`)
495
495
  seal_text_run(state);
@@ -651,7 +651,7 @@ export const close_list_item = (state) => {
651
651
  emit(state, {
652
652
  type: 'close',
653
653
  id: entry.id,
654
- end: entry.has_children ? offset(state) : state.last_empty_item_end,
654
+ end: entry.has_children ? offset(state) : state.last_empty_item_end
655
655
  });
656
656
  state.active_text_id = null;
657
657
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mdz_stream_parser_table.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_stream_parser_table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,EAAmC,KAAK,aAAa,EAAC,MAAM,UAAU,CAAC;AAC9E,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,SAAS,EAQd,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,EAAE,QAAQ,OAAO,KAAG,SAyC9E,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,oBAAoB,EAAE,QAAQ,OAAO,KAAG,OAyCjF,CAAC;AA2DF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,oBAAoB,KAAG,IAczD,CAAC;AAEF,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC/B,YAAY,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACpC,OAAO,oBAAoB,EAC3B,cAAc,MAAM,EACpB,eAAe,MAAM,EACrB,QAAQ,OAAO,KACb,eAAe,GAAG,SAAS,GAAG,IAmBhC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC9B,OAAO,oBAAoB,EAC3B,cAAc,MAAM,EACpB,eAAe,MAAM,EACrB,MAAM,eAAe,KACnB,IAsBF,CAAC"}
1
+ {"version":3,"file":"mdz_stream_parser_table.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_stream_parser_table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,SAAS,EAQd,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,EAAE,QAAQ,OAAO,KAAG,SAyC9E,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,oBAAoB,EAAE,QAAQ,OAAO,KAAG,OAyCjF,CAAC;AA2DF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,oBAAoB,KAAG,IAczD,CAAC;AAEF,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC/B,YAAY,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACpC,OAAO,oBAAoB,EAC3B,cAAc,MAAM,EACpB,eAAe,MAAM,EACrB,QAAQ,OAAO,KACb,eAAe,GAAG,SAAS,GAAG,IAmBhC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC9B,OAAO,oBAAoB,EAC3B,cAAc,MAAM,EACpB,eAAe,MAAM,EACrB,MAAM,eAAe,KACnB,IAsBF,CAAC"}
@@ -14,9 +14,9 @@
14
14
  * @module
15
15
  */
16
16
  import { DEV } from 'esm-env';
17
- import { NEWLINE, PIPE, is_line_whitespace, mdz_split_table_row, mdz_parse_table_delimiter, } from './mdz_helpers.js';
17
+ import { NEWLINE, PIPE, is_line_whitespace, mdz_split_table_row, mdz_parse_table_delimiter } from './mdz_helpers.js';
18
18
  import { MdzTableCellParser } from './mdz.js';
19
- import { alloc_id, close_paragraph, emit, flush_text, offset, pop_stack_entry, push_stack_entry, } from './mdz_stream_parser_state.js';
19
+ import { alloc_id, close_paragraph, emit, flush_text, offset, pop_stack_entry, push_stack_entry } from './mdz_stream_parser_state.js';
20
20
  /**
21
21
  * Try to open a table at a column-0 pipe row. Returns `need_more` until both
22
22
  * the header line and its delimiter line are buffered (or, in forced mode,
@@ -56,7 +56,7 @@ export const try_table_start = (state, forced) => {
56
56
  state.table = {
57
57
  id: table_id,
58
58
  item_indent: null,
59
- cell_parser: new MdzTableCellParser(state.buffer),
59
+ cell_parser: new MdzTableCellParser(state.buffer)
60
60
  };
61
61
  emit_table_row(state, header_cells, true, start, header_end);
62
62
  // skip past the delimiter row to the first potential body line
@@ -238,13 +238,13 @@ export const open_table_in_item = (state, header_first, marker_indent, head) =>
238
238
  id: table_id,
239
239
  node_type: 'Table',
240
240
  start: table_start,
241
- align: head.align,
241
+ align: head.align
242
242
  });
243
243
  push_stack_entry(state, table_id, 'Table', table_start);
244
244
  state.table = {
245
245
  id: table_id,
246
246
  item_indent: marker_indent,
247
- cell_parser: new MdzTableCellParser(state.buffer),
247
+ cell_parser: new MdzTableCellParser(state.buffer)
248
248
  };
249
249
  emit_table_row(state, head.header_cells, true, header_first, head.header_end);
250
250
  // leave the cursor on the delimiter's newline (or EOF) — the in-item body-row
@@ -299,7 +299,7 @@ const emit_inline_nodes = (state, nodes) => {
299
299
  content: node.content,
300
300
  text_type: 'Text',
301
301
  start: offset(state, node.start),
302
- end: offset(state, node.end),
302
+ end: offset(state, node.end)
303
303
  });
304
304
  break;
305
305
  case 'Code':
@@ -309,7 +309,7 @@ const emit_inline_nodes = (state, nodes) => {
309
309
  content: node.content,
310
310
  text_type: 'Code',
311
311
  start: offset(state, node.start),
312
- end: offset(state, node.end),
312
+ end: offset(state, node.end)
313
313
  });
314
314
  break;
315
315
  case 'Bold':
@@ -336,7 +336,7 @@ const emit_inline_nodes = (state, nodes) => {
336
336
  id,
337
337
  end: offset(state, node.end),
338
338
  reference: node.reference,
339
- link_type: node.link_type,
339
+ link_type: node.link_type
340
340
  });
341
341
  break;
342
342
  }
@@ -344,7 +344,14 @@ const emit_inline_nodes = (state, nodes) => {
344
344
  case 'Component': {
345
345
  const id = alloc_id(state);
346
346
  const s = offset(state, node.start);
347
- emit(state, { type: 'open', id, node_type: node.type, start: s, name: node.name });
347
+ emit(state, {
348
+ type: 'open',
349
+ id,
350
+ node_type: node.type,
351
+ start: s,
352
+ name: node.name,
353
+ attributes: node.attributes
354
+ });
348
355
  push_stack_entry(state, id, node.type, s, '', node.name);
349
356
  emit_inline_nodes(state, node.children);
350
357
  pop_stack_entry(state);
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { HTTPS_PREFIX_LENGTH, NEWLINE, SPACE, TAB, TEXT_CLASS_NEWLINE, TEXT_CLASS_PATH, TEXT_CLASS_STOP, TEXT_CLASS_URL, TEXT_SCAN_CLASS, is_word_char, match_url_prefix_case_insensitive, } from './mdz_helpers.js';
7
- import { accumulate_text, ensure_paragraph, offset, } from './mdz_stream_parser_state.js';
6
+ import { HTTPS_PREFIX_LENGTH, NEWLINE, SPACE, TAB, TEXT_CLASS_NEWLINE, TEXT_CLASS_PATH, TEXT_CLASS_STOP, TEXT_CLASS_URL, TEXT_SCAN_CLASS, is_word_char, match_url_prefix_case_insensitive } from './mdz_helpers.js';
7
+ import { accumulate_text, ensure_paragraph, offset } from './mdz_stream_parser_state.js';
8
8
  import { mdz_debug_work } from './mdz_debug_work.js';
9
9
  /**
10
10
  * Consume a delimiter at the current position as literal text — the shared
@@ -12,8 +12,8 @@
12
12
  *
13
13
  * @module
14
14
  */
15
- import { NEWLINE, SPACE, TAB, PERIOD, SLASH, ascii_to_lower, is_valid_path_char, is_word_char, match_url_prefix_case_insensitive, mdz_trim_url_punctuation, } from './mdz_helpers.js';
16
- import { accumulate_text, alloc_id, emit, ensure_paragraph, flush_text, offset, } from './mdz_stream_parser_state.js';
15
+ import { NEWLINE, SPACE, TAB, PERIOD, SLASH, ascii_to_lower, is_valid_path_char, is_word_char, match_url_prefix_case_insensitive, mdz_trim_url_punctuation } from './mdz_helpers.js';
16
+ import { accumulate_text, alloc_id, emit, ensure_paragraph, flush_text, offset } from './mdz_stream_parser_state.js';
17
17
  const HTTPS_PREFIX = 'https://';
18
18
  const HTTP_PREFIX = 'http://';
19
19
  /**
@@ -113,7 +113,7 @@ export const start_pending_url = (state, link_type) => {
113
113
  link_type,
114
114
  confirmed: true,
115
115
  viable_https: false,
116
- viable_http: false,
116
+ viable_http: false
117
117
  };
118
118
  // don't advance pos — URL chars start at current position, handled by process_url_content
119
119
  };
@@ -134,7 +134,7 @@ export const start_speculative_url = (state) => {
134
134
  link_type: 'external',
135
135
  confirmed: false,
136
136
  viable_https: true,
137
- viable_http: true,
137
+ viable_http: true
138
138
  };
139
139
  };
140
140
  /**
@@ -261,7 +261,7 @@ export const complete_pending_url = (state) => {
261
261
  start: pu.start,
262
262
  end: url_end,
263
263
  trim_end,
264
- trim_id,
264
+ trim_id
265
265
  });
266
266
  state.active_text_id = trim_id;
267
267
  }
@@ -274,7 +274,7 @@ export const complete_pending_url = (state) => {
274
274
  reference,
275
275
  link_type: pu.link_type,
276
276
  start: pu.start,
277
- end: url_end,
277
+ end: url_end
278
278
  });
279
279
  state.active_text_id = null;
280
280
  }
@@ -317,7 +317,7 @@ export const scan_auto_link_forced = (state, link_type) => {
317
317
  content: reference,
318
318
  text_type: 'Text',
319
319
  start: link_start,
320
- end: link_end,
320
+ end: link_end
321
321
  });
322
322
  emit(state, { type: 'close', id: link_id, end: link_end, reference, link_type });
323
323
  state.active_text_id = null;
@@ -8,7 +8,7 @@
8
8
  * @module
9
9
  */
10
10
  import type { MdzNodeId, MdzNodeType, MdzOpcode } from './mdz_opcodes.js';
11
- import type { MdzTableAlign } from './mdz.js';
11
+ import type { MdzAttribute, MdzTableAlign } from './mdz.js';
12
12
  /**
13
13
  * A reactive node in the stream renderer tree.
14
14
  * Fields are `$state` so Svelte re-renders only what changes.
@@ -22,6 +22,8 @@ export declare class MdzStreamNode {
22
22
  reference?: string;
23
23
  link_type?: 'external' | 'internal';
24
24
  name?: string;
25
+ /** Parsed tag attributes (Element/Component nodes); known at open, never mutated, so plain not `$state`. */
26
+ attributes?: Array<MdzAttribute>;
25
27
  lang?: string | null;
26
28
  heading_id?: string;
27
29
  ordered?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"mdz_stream_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_stream_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAE5C;;;GAGG;AACH,qBAAa,aAAa;IACzB,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAc;IAE5C,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAY;IAC9B,SAAS,CAAC,EAAE,UAAU,GAAG,UAAU,CAAY;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAY;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7B,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;gBAEL,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW;CAI5C;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;;IAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAc;IAqCxC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IA6R9B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;CAK5C"}
1
+ {"version":3,"file":"mdz_stream_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_stream_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE5D;;;GAGG;AACH,qBAAa,aAAa;IACzB,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAc;IAE5C,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAY;IAC9B,SAAS,CAAC,EAAE,UAAU,GAAG,UAAU,CAAY;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4GAA4G;IAC5G,UAAU,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAY;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7B,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;gBAEL,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW;CAI5C;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;;IAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAc;IAqCxC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IA8R9B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;CAK5C"}
@@ -22,6 +22,8 @@ export class MdzStreamNode {
22
22
  reference = $state();
23
23
  link_type = $state();
24
24
  name;
25
+ /** Parsed tag attributes (Element/Component nodes); known at open, never mutated, so plain not `$state`. */
26
+ attributes;
25
27
  lang;
26
28
  heading_id = $state();
27
29
  ordered;
@@ -92,6 +94,8 @@ export class MdzStreamState {
92
94
  node.level = opcode.level;
93
95
  if (opcode.name !== undefined)
94
96
  node.name = opcode.name;
97
+ if (opcode.attributes !== undefined)
98
+ node.attributes = opcode.attributes;
95
99
  if (opcode.lang !== undefined)
96
100
  node.lang = opcode.lang;
97
101
  if (opcode.ordered !== undefined)
@@ -8,6 +8,15 @@
8
8
  * @module
9
9
  */
10
10
  import type { MdzNode } from './mdz.js';
11
+ import type { MdzComponentProps } from './mdz_contexts.js';
12
+ /**
13
+ * A build-time component registry entry: an import path, or an import path
14
+ * plus the attribute names passed as props (see `MdzComponentProps`).
15
+ */
16
+ export type MdzComponentImport = string | {
17
+ path: string;
18
+ props?: MdzComponentProps;
19
+ };
11
20
  /**
12
21
  * Result of converting `MdzNode` arrays to Svelte markup.
13
22
  */
@@ -27,10 +36,13 @@ export interface MdzToSvelteResult {
27
36
  */
28
37
  export interface MdzToSvelteOptions {
29
38
  /**
30
- * Component name to import path mapping (e.g., `{Alert: '$lib/Alert.svelte'}`).
39
+ * Component name to import mapping, mirroring the runtime `MdzComponents`
40
+ * registry: a bare import path receives no attributes
41
+ * (`{Note: '#lib/Note.svelte'}`), and the config form names the attributes
42
+ * passed as props (`{Alert: {path: '#lib/Alert.svelte', props: ['status']}}`).
31
43
  * If content references a component not in this map, `has_unconfigured_tags` is set.
32
44
  */
33
- components: Record<string, string>;
45
+ components: Record<string, MdzComponentImport>;
34
46
  /**
35
47
  * Allowed HTML elements (e.g., `{aside: true, details: true}`).
36
48
  * Values are boolean placeholders for future per-element configuration,
@@ -40,8 +52,9 @@ export interface MdzToSvelteOptions {
40
52
  elements: Record<string, boolean>;
41
53
  /**
42
54
  * Base path for resolving relative links (e.g., `'/docs/usage/'`).
43
- * When provided, relative references (`./`, `../`) are resolved to absolute paths
44
- * and passed through `resolve()`. Trailing slash recommended.
55
+ * When provided, relative references (`./`, `../`) are resolved against it and,
56
+ * like absolute references, passed through `resolve()` in its pathname form.
57
+ * Trailing slash recommended.
45
58
  */
46
59
  base?: string;
47
60
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mdz_to_svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_to_svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAC,OAAO,EAAkB,MAAM,UAAU,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IAEf,yDAAyD;IACzD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAA;KAAC,CAAC,CAAC;IAEhE,yEAAyE;IACzE,qBAAqB,EAAE,OAAO,CAAC;CAC/B;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACzB,OAAO,KAAK,CAAC,OAAO,CAAC,EACrB,SAAS,kBAAkB,KACzB,iBAsJF,CAAC"}
1
+ {"version":3,"file":"mdz_to_svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_to_svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAe3D;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAUtF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IAEf,yDAAyD;IACzD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IAElE,yEAAyE;IACzE,qBAAqB,EAAE,OAAO,CAAC;CAC/B;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAE/C;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACzB,OAAO,KAAK,CAAC,OAAO,CAAC,EACrB,SAAS,kBAAkB,KACzB,iBAmKF,CAAC"}
@@ -10,7 +10,14 @@
10
10
  import { UnreachableError } from '@fuzdev/fuz_util/error.ts';
11
11
  import { escape_svelte_text } from '@fuzdev/fuz_util/svelte_preprocess_helpers.ts';
12
12
  import { escape_js_string } from '@fuzdev/fuz_util/string.ts';
13
- import { mdz_is_void_element, mdz_classify_link } from './mdz_helpers.js';
13
+ import { mdz_is_void_element, mdz_classify_link, mdz_filter_element_attributes, mdz_filter_component_attributes, ALLOWED_ELEMENT_ATTRIBUTES } from './mdz_helpers.js';
14
+ const format_attributes = (entries) => {
15
+ let out = '';
16
+ for (const [name, value] of entries) {
17
+ out += value === true ? ` ${name}={true}` : ` ${name}={'${escape_js_string(value)}'}`;
18
+ }
19
+ return out;
20
+ };
14
21
  /** Derives an import's local identifier from a `.svelte` import path's basename. */
15
22
  const component_local_name = (import_path) => import_path.slice(import_path.lastIndexOf('/') + 1).replace(/\.svelte$/, '');
16
23
  /**
@@ -68,7 +75,7 @@ export const mdz_to_svelte = (nodes, options) => {
68
75
  return children_markup;
69
76
  if (link.kind === 'resolve') {
70
77
  imports.set('resolve', { path: '$app/paths', kind: 'named' });
71
- return `<a href={resolve('${escape_js_string(link.href)}')}>${children_markup}</a>`;
78
+ return `<a href={resolve('${escape_js_string(link.path)}')}>${children_markup}</a>`;
72
79
  }
73
80
  if (link.kind === 'external') {
74
81
  return `<a href={'${escape_js_string(link.href)}'} target="_blank" rel="noopener">${children_markup}</a>`;
@@ -130,24 +137,30 @@ export const mdz_to_svelte = (nodes, options) => {
130
137
  return `<h${node.level}${id_attr}>${render_nodes(node.children)}</h${node.level}>`;
131
138
  }
132
139
  case 'Element': {
133
- if (elements[node.name] === undefined) {
140
+ if (elements[node.name] !== true) {
134
141
  has_unconfigured_tags = true;
135
142
  return '';
136
143
  }
144
+ // filter via the SAME helper the node views use, so precompiled and
145
+ // runtime output stay identical (its DEV-warn fires at build time too)
146
+ const attrs_str = format_attributes(Object.entries(mdz_filter_element_attributes(node.name, node.attributes, ALLOWED_ELEMENT_ATTRIBUTES)));
137
147
  if (mdz_is_void_element(node.name)) {
138
148
  // void elements cannot have content — any parsed children are dropped
139
- return `<${node.name} />`;
149
+ return `<${node.name}${attrs_str} />`;
140
150
  }
141
- return `<${node.name}>${render_nodes(node.children)}</${node.name}>`;
151
+ return `<${node.name}${attrs_str}>${render_nodes(node.children)}</${node.name}>`;
142
152
  }
143
153
  case 'Component': {
144
- const import_path = components[node.name];
145
- if (!import_path) {
154
+ const entry = components[node.name];
155
+ if (!entry) {
146
156
  has_unconfigured_tags = true;
147
157
  return '';
148
158
  }
149
- imports.set(node.name, { path: import_path, kind: 'default' });
150
- return `<${node.name}>${render_nodes(node.children)}</${node.name}>`;
159
+ const { path, props } = typeof entry === 'string' ? { path: entry, props: undefined } : entry;
160
+ imports.set(node.name, { path, kind: 'default' });
161
+ // filter via the SAME helper the node views use
162
+ const attrs_str = format_attributes(Object.entries(mdz_filter_component_attributes(node.name, node.attributes, props)));
163
+ return `<${node.name}${attrs_str}>${render_nodes(node.children)}</${node.name}>`;
151
164
  }
152
165
  default:
153
166
  throw new UnreachableError(node);
@@ -1 +1 @@
1
- {"version":3,"file":"mdz_token_parser.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_token_parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACX,OAAO,EAeP,MAAM,UAAU,CAAC;AAQlB,OAAO,EACN,KAAK,QAAQ,EAYb,MAAM,gBAAgB,CAAC;AAiBxB;;;GAGG;AACH,qBAAa,cAAc;;gBAId,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;IAInC;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;IAKpC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IAIvB;;;;;;OAMG;IACH,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;CA+iBlC"}
1
+ {"version":3,"file":"mdz_token_parser.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz_token_parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACX,OAAO,EAeP,MAAM,UAAU,CAAC;AAQlB,OAAO,EACN,KAAK,QAAQ,EAYb,MAAM,gBAAgB,CAAC;AAiBxB;;;GAGG;AACH,qBAAa,cAAc;;gBAId,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;IAInC;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;IAKpC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IAIvB;;;;;;OAMG;IACH,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;CA6jBlC"}