sketchmark 1.3.5 → 1.3.7

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","sourceRoot":"","sources":["../../../src/renderer/svg/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EAEX,MAAM,aAAa,CAAC;AAoQrB,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,WAAW,GAAG,aAAa,EACtC,OAAO,GAAE,kBAAuB,GAC/B,aAAa,CAglBf;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAKtD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderer/svg/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EAKX,MAAM,aAAa,CAAC;AA0TrB,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,WAAW,GAAG,aAAa,EACtC,OAAO,GAAE,kBAAuB,GAC/B,aAAa,CAolBf;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAKtD"}
@@ -8281,6 +8281,36 @@ var AIDiagram = (function (exports) {
8281
8281
  if (groupId)
8282
8282
  el.dataset.parentGroup = groupId;
8283
8283
  }
8284
+ function resolveEdgeEndpointKind(id, nm, tm, gm, cm) {
8285
+ if (nm.has(id))
8286
+ return "node";
8287
+ if (gm.has(id))
8288
+ return "group";
8289
+ if (tm.has(id))
8290
+ return "table";
8291
+ if (cm.has(id))
8292
+ return "chart";
8293
+ return null;
8294
+ }
8295
+ function collectEdgeGroupLineage(endpointId, endpointKind, parentGroups) {
8296
+ const lineage = [];
8297
+ let groupId = endpointKind === "group"
8298
+ ? endpointId
8299
+ : parentGroups.get(`${endpointKind}:${endpointId}`);
8300
+ while (groupId) {
8301
+ lineage.push(groupId);
8302
+ groupId = parentGroups.get(`group:${groupId}`);
8303
+ }
8304
+ return lineage;
8305
+ }
8306
+ function resolveEdgeParentGroupId(fromId, toId, nm, tm, gm, cm, parentGroups) {
8307
+ const fromKind = resolveEdgeEndpointKind(fromId, nm, tm, gm, cm);
8308
+ const toKind = resolveEdgeEndpointKind(toId, nm, tm, gm, cm);
8309
+ if (!fromKind || !toKind)
8310
+ return undefined;
8311
+ const toLineage = new Set(collectEdgeGroupLineage(toId, toKind, parentGroups));
8312
+ return collectEdgeGroupLineage(fromId, fromKind, parentGroups).find((groupId) => toLineage.has(groupId));
8313
+ }
8284
8314
  // ── Node shapes ───────────────────────────────────────────────────────────
8285
8315
  function renderShape$1(rc, n, palette) {
8286
8316
  const s = n.style ?? {};
@@ -8438,6 +8468,7 @@ var AIDiagram = (function (exports) {
8438
8468
  const [x1, y1] = getConnPoint(src, dstCX, dstCY, e.fromAnchor);
8439
8469
  const [x2, y2] = getConnPoint(dst, srcCX, srcCY, e.toAnchor);
8440
8470
  const eg = mkGroup(`edge-${e.from}-${e.to}`, "eg");
8471
+ setParentGroupData(eg, resolveEdgeParentGroupId(e.from, e.to, nm, tm, gmMap, cm, parentGroups));
8441
8472
  if (e.style?.opacity != null)
8442
8473
  eg.setAttribute("opacity", String(e.style.opacity));
8443
8474
  const len = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2) || 1;
@@ -9484,7 +9515,7 @@ var AIDiagram = (function (exports) {
9484
9515
  const getNoteEl = (svg, id) => getEl(svg, `note-${id}`);
9485
9516
  const getChartEl = (svg, id) => getEl(svg, `chart-${id}`);
9486
9517
  const getMarkdownEl = (svg, id) => getEl(svg, `markdown-${id}`);
9487
- const POSITIONABLE_SELECTOR = ".ng, .gg, .tg, .ntg, .cg, .mdg";
9518
+ const POSITIONABLE_SELECTOR = ".ng, .gg, .tg, .ntg, .cg, .eg, .mdg";
9488
9519
  function resolveNonEdgeDrawEl(svg, target) {
9489
9520
  return (getGroupEl(svg, target) ??
9490
9521
  getTableEl(svg, target) ??
@@ -9992,8 +10023,12 @@ var AIDiagram = (function (exports) {
9992
10023
  this._rc = _rc;
9993
10024
  this._config = _config;
9994
10025
  this._step = -1;
10026
+ this._isPlaying = false;
10027
+ this._playRunId = 0;
9995
10028
  this._pendingStepTimers = new Set();
9996
10029
  this._pendingNarrationTimers = new Set();
10030
+ this._playbackDelayTimerId = null;
10031
+ this._resolvePlaybackDelay = null;
9997
10032
  this._transforms = new Map();
9998
10033
  this._listeners = [];
9999
10034
  // ── Narration caption ──
@@ -10009,6 +10044,7 @@ var AIDiagram = (function (exports) {
10009
10044
  // ── TTS ──
10010
10045
  this._tts = false;
10011
10046
  this._speechDone = null;
10047
+ this._resolveSpeechDone = null;
10012
10048
  this.drawTargetEdges = getDrawTargetEdgeIds(steps);
10013
10049
  this.drawTargetNodes = getDrawTargetNodeIds(steps);
10014
10050
  // Groups: non-edge draw steps whose target has a #group-{id} element in the SVG.
@@ -10073,8 +10109,16 @@ var AIDiagram = (function (exports) {
10073
10109
  _buildDrawStepIndex() {
10074
10110
  const drawStepIndexByElementId = new Map();
10075
10111
  forEachPlaybackStep(this.steps, (step, stepIndex) => {
10076
- if (step.action !== "draw" || parseEdgeTarget(step.target))
10112
+ if (step.action !== "draw")
10113
+ return;
10114
+ const edge = parseEdgeTarget(step.target);
10115
+ if (edge) {
10116
+ const edgeEl = getEdgeEl(this.svg, edge.from, edge.to);
10117
+ if (edgeEl && !drawStepIndexByElementId.has(edgeEl.id)) {
10118
+ drawStepIndexByElementId.set(edgeEl.id, stepIndex);
10119
+ }
10077
10120
  return;
10121
+ }
10078
10122
  const el = resolveNonEdgeDrawEl(this.svg, step.target);
10079
10123
  if (el && !drawStepIndexByElementId.has(el.id)) {
10080
10124
  drawStepIndexByElementId.set(el.id, stepIndex);
@@ -10232,6 +10276,9 @@ var AIDiagram = (function (exports) {
10232
10276
  get atEnd() {
10233
10277
  return this._step === this.steps.length - 1;
10234
10278
  }
10279
+ get isPlaying() {
10280
+ return this._isPlaying;
10281
+ }
10235
10282
  on(listener) {
10236
10283
  this._listeners.push(listener);
10237
10284
  return () => {
@@ -10249,12 +10296,14 @@ var AIDiagram = (function (exports) {
10249
10296
  l(e);
10250
10297
  }
10251
10298
  reset() {
10299
+ this.stop();
10252
10300
  this._step = -1;
10253
10301
  this._clearAll();
10254
10302
  this.emit("animation-reset");
10255
10303
  }
10256
10304
  /** Remove caption and annotation layer from the DOM */
10257
10305
  destroy() {
10306
+ this.stop();
10258
10307
  this._clearAll();
10259
10308
  this._captionEl?.remove();
10260
10309
  this._captionEl = null;
@@ -10265,16 +10314,11 @@ var AIDiagram = (function (exports) {
10265
10314
  this._pointerEl = null;
10266
10315
  }
10267
10316
  next() {
10268
- if (!this.canNext)
10269
- return false;
10270
- this._step++;
10271
- this._applyStep(this._step, false);
10272
- this.emit("step-change");
10273
- if (!this.canNext)
10274
- this.emit("animation-end");
10275
- return true;
10317
+ this.stop();
10318
+ return this._advanceNext();
10276
10319
  }
10277
10320
  prev() {
10321
+ this.stop();
10278
10322
  if (!this.canPrev)
10279
10323
  return false;
10280
10324
  this._step--;
@@ -10285,18 +10329,33 @@ var AIDiagram = (function (exports) {
10285
10329
  return true;
10286
10330
  }
10287
10331
  async play(msPerStep = 900) {
10332
+ if (this._isPlaying || !this.canNext)
10333
+ return;
10334
+ const runId = ++this._playRunId;
10335
+ this._isPlaying = true;
10288
10336
  this.emit("animation-start");
10289
- while (this.canNext) {
10290
- const nextStep = this.steps[this._step + 1];
10291
- this.next();
10292
- // Wait for timer AND speech to finish (whichever is longer)
10293
- await Promise.all([
10294
- new Promise((r) => setTimeout(r, this._playbackWaitMs(nextStep, msPerStep))),
10295
- this._speechDone ?? Promise.resolve(),
10296
- ]);
10337
+ try {
10338
+ while (this.canNext && this._playRunId === runId) {
10339
+ const nextStep = this.steps[this._step + 1];
10340
+ if (!this._advanceNext())
10341
+ break;
10342
+ if (this._playRunId !== runId)
10343
+ break;
10344
+ await Promise.all([
10345
+ this._waitForPlaybackDelay(this._playbackWaitMs(nextStep, msPerStep)),
10346
+ this._speechDone ?? Promise.resolve(),
10347
+ ]);
10348
+ }
10349
+ }
10350
+ finally {
10351
+ if (this._playRunId === runId) {
10352
+ this._isPlaying = false;
10353
+ this._cancelPlaybackDelay();
10354
+ }
10297
10355
  }
10298
10356
  }
10299
10357
  goTo(index) {
10358
+ this.stop();
10300
10359
  index = Math.max(-1, Math.min(this.steps.length - 1, index));
10301
10360
  if (index === this._step)
10302
10361
  return;
@@ -10310,6 +10369,30 @@ var AIDiagram = (function (exports) {
10310
10369
  }
10311
10370
  this.emit("step-change");
10312
10371
  }
10372
+ stop() {
10373
+ if (!this._isPlaying && !this._resolvePlaybackDelay) {
10374
+ this._clearPendingStepTimers();
10375
+ this._cancelNarrationTyping();
10376
+ this._cancelSpeech();
10377
+ return;
10378
+ }
10379
+ this._isPlaying = false;
10380
+ this._playRunId += 1;
10381
+ this._cancelPlaybackDelay();
10382
+ this._clearPendingStepTimers();
10383
+ this._cancelNarrationTyping();
10384
+ this._cancelSpeech();
10385
+ }
10386
+ _advanceNext() {
10387
+ if (!this.canNext)
10388
+ return false;
10389
+ this._step++;
10390
+ this._applyStep(this._step, false);
10391
+ this.emit("step-change");
10392
+ if (!this.canNext)
10393
+ this.emit("animation-end");
10394
+ return true;
10395
+ }
10313
10396
  _clearTimerBucket(bucket) {
10314
10397
  bucket.forEach((id) => window.clearTimeout(id));
10315
10398
  bucket.clear();
@@ -10335,6 +10418,34 @@ var AIDiagram = (function (exports) {
10335
10418
  _scheduleStep(fn, delayMs) {
10336
10419
  this._scheduleTimer(fn, delayMs, this._pendingStepTimers);
10337
10420
  }
10421
+ _waitForPlaybackDelay(delayMs) {
10422
+ this._cancelPlaybackDelay();
10423
+ return new Promise((resolve) => {
10424
+ let settled = false;
10425
+ const finish = () => {
10426
+ if (settled)
10427
+ return;
10428
+ settled = true;
10429
+ if (this._playbackDelayTimerId !== null) {
10430
+ window.clearTimeout(this._playbackDelayTimerId);
10431
+ this._playbackDelayTimerId = null;
10432
+ }
10433
+ if (this._resolvePlaybackDelay === finish) {
10434
+ this._resolvePlaybackDelay = null;
10435
+ }
10436
+ resolve();
10437
+ };
10438
+ this._resolvePlaybackDelay = finish;
10439
+ if (delayMs <= 0) {
10440
+ finish();
10441
+ return;
10442
+ }
10443
+ this._playbackDelayTimerId = window.setTimeout(finish, delayMs);
10444
+ });
10445
+ }
10446
+ _cancelPlaybackDelay() {
10447
+ this._resolvePlaybackDelay?.();
10448
+ }
10338
10449
  _stepWaitMs(step, fallbackMs) {
10339
10450
  const delay = Math.max(0, step.delay ?? 0);
10340
10451
  const duration = Math.max(0, step.duration ?? 0);
@@ -10376,6 +10487,7 @@ var AIDiagram = (function (exports) {
10376
10487
  return this._stepWaitMs(step, fallbackMs);
10377
10488
  }
10378
10489
  _clearAll() {
10490
+ this._cancelPlaybackDelay();
10379
10491
  this._clearPendingStepTimers();
10380
10492
  this._cancelNarrationTyping();
10381
10493
  this._cancelSpeech();
@@ -10706,6 +10818,7 @@ var AIDiagram = (function (exports) {
10706
10818
  const el = getEdgeEl(this.svg, edge.from, edge.to);
10707
10819
  if (!el)
10708
10820
  return;
10821
+ showDrawEl(el);
10709
10822
  if (silent) {
10710
10823
  revealEdgeInstant(el);
10711
10824
  requestAnimationFrame(() => requestAnimationFrame(() => {
@@ -10987,16 +11100,30 @@ var AIDiagram = (function (exports) {
10987
11100
  utter.rate = 0.95;
10988
11101
  utter.pitch = 1;
10989
11102
  utter.lang = "en-US";
10990
- // Track when speech actually finishes
11103
+ // Track when speech actually finishes so play() can block until the utterance ends.
10991
11104
  this._speechDone = new Promise((resolve) => {
10992
- utter.onend = () => resolve();
10993
- utter.onerror = () => resolve();
11105
+ let settled = false;
11106
+ const finish = () => {
11107
+ if (settled)
11108
+ return;
11109
+ settled = true;
11110
+ if (this._resolveSpeechDone === finish) {
11111
+ this._resolveSpeechDone = null;
11112
+ this._speechDone = null;
11113
+ }
11114
+ resolve();
11115
+ };
11116
+ this._resolveSpeechDone = finish;
11117
+ utter.onend = finish;
11118
+ utter.onerror = finish;
10994
11119
  });
10995
11120
  speechSynthesis.speak(utter);
10996
11121
  }
10997
11122
  _cancelSpeech() {
10998
11123
  if (typeof speechSynthesis !== "undefined")
10999
11124
  speechSynthesis.cancel();
11125
+ this._resolveSpeechDone?.();
11126
+ this._resolveSpeechDone = null;
11000
11127
  this._speechDone = null;
11001
11128
  }
11002
11129
  /** Pre-warm the speech engine with a silent utterance to eliminate cold-start delay */
@@ -11305,11 +11432,12 @@ var AIDiagram = (function (exports) {
11305
11432
  .cg.faded, .eg.faded, .mdg.faded { opacity: 0.22; }
11306
11433
 
11307
11434
  .ng.hidden { opacity: 0; pointer-events: none; }
11308
- .gg.gg-hidden { opacity: 0; }
11309
- .tg.gg-hidden { opacity: 0; }
11310
- .ntg.gg-hidden { opacity: 0; }
11311
- .cg.gg-hidden { opacity: 0; }
11312
- .mdg.gg-hidden { opacity: 0; }
11435
+ .gg.gg-hidden { opacity: 0; }
11436
+ .tg.gg-hidden { opacity: 0; }
11437
+ .ntg.gg-hidden { opacity: 0; }
11438
+ .cg.gg-hidden { opacity: 0; }
11439
+ .eg.gg-hidden { opacity: 0; }
11440
+ .mdg.gg-hidden { opacity: 0; }
11313
11441
 
11314
11442
  /* narration caption */
11315
11443
  .skm-caption { pointer-events: none; user-select: none; }
@@ -11805,7 +11933,13 @@ var AIDiagram = (function (exports) {
11805
11933
  this.resetButton.addEventListener("click", () => this.resetAnimation());
11806
11934
  this.prevButton.addEventListener("click", () => this.prevStep());
11807
11935
  this.nextButton.addEventListener("click", () => this.nextStep());
11808
- this.playButton.addEventListener("click", () => void this.play());
11936
+ this.playButton.addEventListener("click", () => {
11937
+ if (this.playInFlight) {
11938
+ this.stopPlayback();
11939
+ return;
11940
+ }
11941
+ void this.play();
11942
+ });
11809
11943
  this.captionButton.addEventListener("click", () => this.setCaptionVisible(!this.showCaption));
11810
11944
  this.ttsButton.addEventListener("click", () => this.setTtsEnabled(!this.getTtsEnabled()));
11811
11945
  this.viewport.addEventListener("pointerdown", this.onPointerDown);
@@ -11869,6 +12003,7 @@ var AIDiagram = (function (exports) {
11869
12003
  this.dsl = normalizeNewlines(nextDsl);
11870
12004
  this.clearError();
11871
12005
  this.mirroredEditor?.clearError();
12006
+ this.playInFlight = false;
11872
12007
  this.animUnsub?.();
11873
12008
  this.animUnsub = null;
11874
12009
  this.instance?.anim?.destroy();
@@ -11939,9 +12074,16 @@ var AIDiagram = (function (exports) {
11939
12074
  this.syncAnimationUi();
11940
12075
  }
11941
12076
  }
12077
+ stopPlayback() {
12078
+ this.playInFlight = false;
12079
+ if (this.renderer === "svg")
12080
+ this.instance?.anim.stop();
12081
+ this.syncAnimationUi();
12082
+ }
11942
12083
  nextStep() {
11943
12084
  if (!this.instance || this.renderer !== "svg")
11944
12085
  return;
12086
+ this.playInFlight = false;
11945
12087
  this.instance.anim.next();
11946
12088
  this.syncAnimationUi();
11947
12089
  this.focusCurrentStep();
@@ -11949,6 +12091,7 @@ var AIDiagram = (function (exports) {
11949
12091
  prevStep() {
11950
12092
  if (!this.instance || this.renderer !== "svg")
11951
12093
  return;
12094
+ this.playInFlight = false;
11952
12095
  this.instance.anim.prev();
11953
12096
  this.syncAnimationUi();
11954
12097
  this.focusCurrentStep();
@@ -11956,6 +12099,7 @@ var AIDiagram = (function (exports) {
11956
12099
  resetAnimation() {
11957
12100
  if (!this.instance || this.renderer !== "svg")
11958
12101
  return;
12102
+ this.playInFlight = false;
11959
12103
  this.instance.anim.reset();
11960
12104
  this.syncAnimationUi();
11961
12105
  }
@@ -11984,6 +12128,7 @@ var AIDiagram = (function (exports) {
11984
12128
  this.render();
11985
12129
  }
11986
12130
  destroy() {
12131
+ this.playInFlight = false;
11987
12132
  this.editorCleanup?.();
11988
12133
  this.animUnsub?.();
11989
12134
  this.instance?.anim?.destroy();
@@ -12058,6 +12203,9 @@ var AIDiagram = (function (exports) {
12058
12203
  this.prevButton.disabled = true;
12059
12204
  this.nextButton.disabled = true;
12060
12205
  this.resetButton.disabled = true;
12206
+ this.playButton.textContent = "Play";
12207
+ this.playButton.classList.remove("is-active");
12208
+ this.playButton.setAttribute("aria-pressed", "false");
12061
12209
  this.playButton.disabled = true;
12062
12210
  this.syncToggleUi();
12063
12211
  return;
@@ -12067,7 +12215,10 @@ var AIDiagram = (function (exports) {
12067
12215
  this.prevButton.disabled = !anim.canPrev;
12068
12216
  this.nextButton.disabled = !anim.canNext;
12069
12217
  this.resetButton.disabled = false;
12070
- this.playButton.disabled = this.playInFlight || !anim.canNext;
12218
+ this.playButton.textContent = this.playInFlight ? "Stop" : "Play";
12219
+ this.playButton.classList.toggle("is-active", this.playInFlight);
12220
+ this.playButton.setAttribute("aria-pressed", this.playInFlight ? "true" : "false");
12221
+ this.playButton.disabled = this.playInFlight ? false : !anim.canNext;
12071
12222
  this.syncToggleUi();
12072
12223
  }
12073
12224
  getStepTarget(stepItem) {
@@ -12973,6 +13124,10 @@ var AIDiagram = (function (exports) {
12973
13124
  this.btnPrev.addEventListener("click", () => this.prevStep());
12974
13125
  this.btnNext.addEventListener("click", () => this.nextStep());
12975
13126
  this.btnPlay.addEventListener("click", () => {
13127
+ if (this.playInFlight) {
13128
+ this.stopPlayback();
13129
+ return;
13130
+ }
12976
13131
  void this.play();
12977
13132
  });
12978
13133
  this.btnCaption.addEventListener("click", () => this.setCaptionVisible(!this.showCaption));
@@ -13030,6 +13185,7 @@ var AIDiagram = (function (exports) {
13030
13185
  }
13031
13186
  this.clearError();
13032
13187
  this.stopMotion();
13188
+ this.playInFlight = false;
13033
13189
  this.animUnsub?.();
13034
13190
  this.animUnsub = null;
13035
13191
  this.instance?.anim?.destroy();
@@ -13102,9 +13258,15 @@ var AIDiagram = (function (exports) {
13102
13258
  this.syncControls();
13103
13259
  }
13104
13260
  }
13261
+ stopPlayback() {
13262
+ this.playInFlight = false;
13263
+ this.instance?.anim.stop();
13264
+ this.syncControls();
13265
+ }
13105
13266
  nextStep() {
13106
13267
  if (!this.instance)
13107
13268
  return;
13269
+ this.playInFlight = false;
13108
13270
  this.instance.anim.next();
13109
13271
  this.syncControls();
13110
13272
  if (this.options.autoFocus !== false && this.options.autoFocusOnStep !== false) {
@@ -13114,6 +13276,7 @@ var AIDiagram = (function (exports) {
13114
13276
  prevStep() {
13115
13277
  if (!this.instance)
13116
13278
  return;
13279
+ this.playInFlight = false;
13117
13280
  this.instance.anim.prev();
13118
13281
  this.syncControls();
13119
13282
  if (this.options.autoFocus !== false && this.options.autoFocusOnStep !== false) {
@@ -13123,6 +13286,7 @@ var AIDiagram = (function (exports) {
13123
13286
  resetAnimation() {
13124
13287
  if (!this.instance)
13125
13288
  return;
13289
+ this.playInFlight = false;
13126
13290
  this.instance.anim.reset();
13127
13291
  this.syncControls();
13128
13292
  }
@@ -13149,6 +13313,7 @@ var AIDiagram = (function (exports) {
13149
13313
  }
13150
13314
  destroy() {
13151
13315
  this.stopMotion();
13316
+ this.playInFlight = false;
13152
13317
  this.animUnsub?.();
13153
13318
  this.instance?.anim?.destroy();
13154
13319
  this.instance = null;
@@ -13181,6 +13346,9 @@ var AIDiagram = (function (exports) {
13181
13346
  this.btnRestart.disabled = true;
13182
13347
  this.btnPrev.disabled = true;
13183
13348
  this.btnNext.disabled = true;
13349
+ this.btnPlay.textContent = "Play";
13350
+ this.btnPlay.classList.remove("is-active");
13351
+ this.btnPlay.setAttribute("aria-pressed", "false");
13184
13352
  this.btnPlay.disabled = true;
13185
13353
  return;
13186
13354
  }
@@ -13189,7 +13357,10 @@ var AIDiagram = (function (exports) {
13189
13357
  this.btnRestart.disabled = false;
13190
13358
  this.btnPrev.disabled = !anim.canPrev;
13191
13359
  this.btnNext.disabled = !anim.canNext;
13192
- this.btnPlay.disabled = this.playInFlight || !anim.canNext;
13360
+ this.btnPlay.textContent = this.playInFlight ? "Stop" : "Play";
13361
+ this.btnPlay.classList.toggle("is-active", this.playInFlight);
13362
+ this.btnPlay.setAttribute("aria-pressed", this.playInFlight ? "true" : "false");
13363
+ this.btnPlay.disabled = this.playInFlight ? false : !anim.canNext;
13193
13364
  }
13194
13365
  syncViewControls() {
13195
13366
  const hasView = !!this.instance?.svg;
@@ -113,6 +113,7 @@ export declare class SketchmarkCanvas {
113
113
  on<K extends keyof SketchmarkCanvasEvents>(event: K, listener: (payload: SketchmarkCanvasEvents[K]) => void): () => void;
114
114
  render(nextDsl?: string): DiagramInstance | null;
115
115
  play(): Promise<void>;
116
+ stopPlayback(): void;
116
117
  nextStep(): void;
117
118
  prevStep(): void;
118
119
  resetAnimation(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/ui/canvas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/ui/canvas.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,7 @@ export declare class SketchmarkEmbed {
96
96
  on<K extends keyof SketchmarkEmbedEvents>(event: K, listener: (payload: SketchmarkEmbedEvents[K]) => void): () => void;
97
97
  render(nextDsl?: string): DiagramInstance | null;
98
98
  play(): Promise<void>;
99
+ stopPlayback(): void;
99
100
  nextStep(): void;
100
101
  prevStep(): void;
101
102
  resetAnimation(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/ui/embed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/ui/embed.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sketchmark",
3
- "version": "1.3.5",
3
+ "version": "1.3.7",
4
4
  "description": "A plain-text DSL for hand-drawn diagrams. Write boxes, edges, and groups as code — renders sketchy SVG/Canvas via rough.js with a built-in step-by-step animation system.",
5
5
  "keywords": [
6
6
  "diagram",