defuss-markdown 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../src/index.ts"],"mappings":"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","names":[]}
1
+ {"version":3,"file":"index.d.ts","sources":["../../src/index.ts"],"mappings":"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","names":[]}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ const FALL_THROUGH = Symbol("defuss-markdown:fallback-renderer");
2
2
  const DEFAULT_PARSER_OPTIONS = Object.freeze({
3
3
  gfm: true,
4
4
  math: true,
5
+ table: true,
5
6
  htmlTree: true,
6
7
  containers: true
7
8
  });
@@ -235,13 +236,13 @@ function renderUnknownNode(node, context) {
235
236
  function renderTable(node, context) {
236
237
  const rows = Array.isArray(node.children) ? node.children : [];
237
238
  if (rows.length === 0) {
238
- return h("table", {});
239
+ return h("table", { class: "table" });
239
240
  }
240
241
  const [headerRow, ...bodyRows] = rows;
241
242
  const alignments = Array.isArray(node.align) ? node.align : [];
242
243
  return h(
243
244
  "table",
244
- {},
245
+ { class: "table" },
245
246
  h(
246
247
  "thead",
247
248
  {},
@@ -308,45 +309,99 @@ function createBlockState() {
308
309
  };
309
310
  }
310
311
  function hydrateStateFromParserOrUpdate(parser, update, state) {
312
+ const updateKeys = update && typeof update === "object" ? Object.keys(update) : [];
313
+ console.log("[defuss-markdown] hydrateState: updateKeys =", updateKeys, "isIncremental =", isIncrementalUpdate(update));
314
+ if (isIncrementalUpdate(update)) {
315
+ const value = update;
316
+ const completed = pickBlockArray(value.completed);
317
+ const updated = pickBlockArray(value.updated);
318
+ const pending = pickBlockArray(value.pending);
319
+ const removed = pickBlockArray(value.removed);
320
+ console.log("[defuss-markdown] Incremark INCREMENTAL path:", {
321
+ completed: completed.map((b) => `${b.id}(${b.status})`),
322
+ updated: updated.map((b) => `${b.id}(${b.status})`),
323
+ pending: pending.map((b) => `${b.id}(${b.status})`),
324
+ removed: removed.map((b) => b.id)
325
+ });
326
+ applyIncrementalCollections(state, update);
327
+ const parserCompleted = pickBlockArray(parser.getCompletedBlocks?.());
328
+ if (parserCompleted.length > 0) {
329
+ for (const block of parserCompleted) {
330
+ upsertBlock(state, block);
331
+ }
332
+ }
333
+ const parserPending = pickBlockArray(parser.pendingBlocks ?? parser.pendingBlock);
334
+ for (const block of parserPending) {
335
+ upsertBlock(state, block);
336
+ }
337
+ return;
338
+ }
311
339
  const directSnapshot = extractSnapshotBlocksFromUpdate(update);
312
340
  if (directSnapshot) {
341
+ console.log("[defuss-markdown] DIRECT SNAPSHOT path, blocks =", directSnapshot.map((b) => b.id));
313
342
  replaceState(state, directSnapshot);
314
343
  return;
315
344
  }
316
345
  const parserSnapshot = extractBlocksFromParser(parser);
317
346
  if (parserSnapshot) {
347
+ console.log("[defuss-markdown] PARSER SNAPSHOT path, blocks =", parserSnapshot.map((b) => b.id));
318
348
  replaceState(state, parserSnapshot);
319
349
  return;
320
350
  }
351
+ console.log("[defuss-markdown] FALLBACK to applyIncrementalCollections");
321
352
  applyIncrementalCollections(state, update);
322
353
  }
354
+ function isIncrementalUpdate(update) {
355
+ if (!update || typeof update !== "object") {
356
+ return false;
357
+ }
358
+ const value = update;
359
+ return Array.isArray(value.completed) || Array.isArray(value.updated) || Array.isArray(value.pending);
360
+ }
323
361
  function extractSnapshotBlocksFromUpdate(update) {
324
362
  if (!update || typeof update !== "object") {
325
363
  return null;
326
364
  }
327
365
  const value = update;
328
366
  const direct = pickBlockArray(value.blocks);
329
- return direct.length > 0 ? direct : null;
367
+ const pending = pickBlockArray(value.pendingBlocks ?? value.pendingBlock);
368
+ if (direct.length > 0) {
369
+ if (pending.length > 0) {
370
+ return mergeCompletedAndPending(direct, pending);
371
+ }
372
+ return direct;
373
+ }
374
+ if (pending.length > 0) {
375
+ return pending;
376
+ }
377
+ return null;
330
378
  }
331
379
  function extractBlocksFromParser(parser) {
380
+ const pending = pickBlockArray(parser.pendingBlocks ?? parser.pendingBlock);
332
381
  const methodBlocks = pickBlockArray(parser.getBlocks?.());
333
382
  if (methodBlocks.length > 0) {
383
+ if (pending.length > 0) {
384
+ return mergeCompletedAndPending(methodBlocks, pending);
385
+ }
334
386
  return methodBlocks;
335
387
  }
336
388
  const methodMerged = mergeCompletedAndPending(
337
389
  pickBlockArray(parser.getCompletedBlocks?.()),
338
- pickBlockArray(parser.pendingBlocks ?? parser.pendingBlock)
390
+ pending
339
391
  );
340
392
  if (methodMerged.length > 0) {
341
393
  return methodMerged;
342
394
  }
343
395
  const propBlocks = pickBlockArray(parser.blocks);
344
396
  if (propBlocks.length > 0) {
397
+ if (pending.length > 0) {
398
+ return mergeCompletedAndPending(propBlocks, pending);
399
+ }
345
400
  return propBlocks;
346
401
  }
347
402
  const propMerged = mergeCompletedAndPending(
348
403
  pickBlockArray(parser.completedBlocks),
349
- pickBlockArray(parser.pendingBlocks ?? parser.pendingBlock)
404
+ pending
350
405
  );
351
406
  return propMerged.length > 0 ? propMerged : null;
352
407
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "defuss-markdown",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "description": "Incremental Markdown -> Defuss JSX bridge built on Incremark core.",
6
6
  "keywords": [