sketchmark 1.2.1 → 1.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EAIV,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,cAAc,CAAC;AAsS9D,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmB1E;AAMD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACtE,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,EAC5B,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,CAAC,MAAM,EAAE,MAAM,CAAC,CA6ClB;AAuGD,wBAAgB,MAAM,CAAC,EAAE,EAAE,UAAU,GAAG,UAAU,CA8JjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EAIV,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,cAAc,CAAC;AAsS9D,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmB1E;AAMD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACtE,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,EAC5B,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,CAAC,MAAM,EAAE,MAAM,CAAC,CA6ClB;AAyGD,wBAAgB,MAAM,CAAC,EAAE,EAAE,UAAU,GAAG,UAAU,CA8JjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,UAAU,EAoBX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAqC/C,qBAAa,UAAW,SAAQ,KAAK;IAG1B,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;gBAFlB,GAAG,EAAE,MAAM,EACJ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM;CAKrB;AAwCD,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,UAAU,CAk8BzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,UAAU,EAoBX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAqC/C,qBAAa,UAAW,SAAQ,KAAK;IAG1B,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;gBAFlB,GAAG,EAAE,MAAM,EACJ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM;CAKrB;AAwCD,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,UAAU,CAy/BzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderer/canvas/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EAEX,MAAM,aAAa,CAAC;AAgCrB,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAQ,MAAM,CAAC;IACrB,UAAU,CAAC,EAAG,MAAM,CAAC;IACrB,SAAS,CAAC,EAAI,MAAM,CAAC;IACrB,MAAM,CAAC,EAAO,MAAM,CAAC;IACrB,KAAK,CAAC,EAAQ,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,OAAO,CAAC,EAAM,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAoGD,wBAAgB,cAAc,CAC5B,EAAE,EAAO,UAAU,EACnB,MAAM,EAAG,iBAAiB,EAC1B,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAsZN;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAEpE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderer/canvas/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EAEX,MAAM,aAAa,CAAC;AAgCrB,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAQ,MAAM,CAAC;IACrB,UAAU,CAAC,EAAG,MAAM,CAAC;IACrB,SAAS,CAAC,EAAI,MAAM,CAAC;IACrB,MAAM,CAAC,EAAO,MAAM,CAAC;IACrB,KAAK,CAAC,EAAQ,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,OAAO,CAAC,EAAM,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAoGD,wBAAgB,cAAc,CAC5B,EAAE,EAAO,UAAU,EACnB,MAAM,EAAG,iBAAiB,EAC1B,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAiaN;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAEpE"}
@@ -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;AAmQrB,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,CA8jBf;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,EAEX,MAAM,aAAa,CAAC;AAmQrB,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,CA6kBf;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAKtD"}
@@ -118,6 +118,7 @@ export interface SceneGraph {
118
118
  title?: string;
119
119
  description?: string;
120
120
  layout: string;
121
+ style: StyleProps;
121
122
  nodes: SceneNode[];
122
123
  edges: SceneEdge[];
123
124
  tables: SceneTable[];
@@ -130,6 +131,8 @@ export interface SceneGraph {
130
131
  rootOrder: RootItemRef[];
131
132
  width: number;
132
133
  height: number;
134
+ fixedWidth?: number;
135
+ fixedHeight?: number;
133
136
  }
134
137
  export declare function buildSceneGraph(ast: DiagramAST): SceneGraph;
135
138
  export declare function nodeMap(sg: SceneGraph): Map<string, SceneNode>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scene/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scene/index.ts"],"names":[],"mappings":"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"}
@@ -380,6 +380,7 @@ var AIDiagram = (function (exports) {
380
380
  const ast = {
381
381
  kind: "diagram",
382
382
  layout: "column",
383
+ style: {},
383
384
  nodes: [],
384
385
  edges: [],
385
386
  groups: [],
@@ -436,6 +437,54 @@ var AIDiagram = (function (exports) {
436
437
  }
437
438
  return props;
438
439
  }
440
+ function parseConfigValue(value) {
441
+ if (value === "true" || value === "on")
442
+ return true;
443
+ if (value === "false" || value === "off")
444
+ return false;
445
+ const numeric = Number(value);
446
+ return Number.isNaN(numeric) ? value : numeric;
447
+ }
448
+ function applyRootProps(props) {
449
+ const styleProps = propsToStyle(props);
450
+ const styleKeys = new Set([
451
+ "fill",
452
+ "stroke",
453
+ "stroke-width",
454
+ "color",
455
+ "opacity",
456
+ "font-size",
457
+ "font-weight",
458
+ "font",
459
+ "dash",
460
+ "stroke-dash",
461
+ "padding",
462
+ "text-align",
463
+ "vertical-align",
464
+ "line-height",
465
+ "letter-spacing",
466
+ ]);
467
+ ast.style = { ...(ast.style ?? {}), ...styleProps };
468
+ if (props.layout) {
469
+ ast.layout = props.layout;
470
+ }
471
+ if (props.width !== undefined) {
472
+ ast.width = parseFloat(props.width);
473
+ }
474
+ if (props.height !== undefined) {
475
+ ast.height = parseFloat(props.height);
476
+ }
477
+ if (props.font !== undefined) {
478
+ ast.config.font = parseConfigValue(props.font);
479
+ }
480
+ for (const [key, value] of Object.entries(props)) {
481
+ if (key === "layout" || key === "width" || key === "height")
482
+ continue;
483
+ if (styleKeys.has(key))
484
+ continue;
485
+ ast.config[key] = parseConfigValue(value);
486
+ }
487
+ }
439
488
  function parseGroupProps(toks, startIndex) {
440
489
  const props = {};
441
490
  const itemIds = [];
@@ -917,8 +966,12 @@ var AIDiagram = (function (exports) {
917
966
  };
918
967
  }
919
968
  skipNL();
920
- if (cur().value === "diagram")
969
+ if (cur().value === "diagram") {
921
970
  skip();
971
+ const toks = lineTokens();
972
+ const props = parseSimpleProps(toks, 0);
973
+ applyRootProps(props);
974
+ }
922
975
  skipNL();
923
976
  while (cur().type !== "EOF" && cur().value !== "end") {
924
977
  skipNL();
@@ -929,7 +982,7 @@ var AIDiagram = (function (exports) {
929
982
  continue;
930
983
  }
931
984
  if (v === "diagram") {
932
- skip();
985
+ lineTokens();
933
986
  continue;
934
987
  }
935
988
  if (v === "end")
@@ -939,10 +992,7 @@ var AIDiagram = (function (exports) {
939
992
  continue;
940
993
  }
941
994
  if (v === "layout") {
942
- skip();
943
- ast.layout = cur().value ?? "column";
944
- skip();
945
- continue;
995
+ throw new ParseError(`Root layout must be declared on the diagram line, e.g. diagram layout=absolute`, t.line, t.col);
946
996
  }
947
997
  if (v === "title") {
948
998
  skip();
@@ -966,15 +1016,7 @@ var AIDiagram = (function (exports) {
966
1016
  continue;
967
1017
  }
968
1018
  if (v === "config") {
969
- skip();
970
- const key = cur().value;
971
- skip();
972
- if (cur().type === "EQUALS")
973
- skip();
974
- const value = cur().value;
975
- skip();
976
- ast.config[key] = value;
977
- continue;
1019
+ throw new ParseError(`Root config must be declared on the diagram line, e.g. diagram gap=40 margin=0 tts=true`, t.line, t.col);
978
1020
  }
979
1021
  if (v === "style") {
980
1022
  skip();
@@ -3627,6 +3669,7 @@ var AIDiagram = (function (exports) {
3627
3669
  title: ast.title,
3628
3670
  description: ast.description,
3629
3671
  layout: ast.layout,
3672
+ style: ast.style ?? {},
3630
3673
  nodes,
3631
3674
  edges,
3632
3675
  groups,
@@ -3639,6 +3682,8 @@ var AIDiagram = (function (exports) {
3639
3682
  rootOrder: ast.rootOrder ?? [],
3640
3683
  width: 0,
3641
3684
  height: 0,
3685
+ fixedWidth: ast.width,
3686
+ fixedHeight: ast.height,
3642
3687
  };
3643
3688
  }
3644
3689
  // ── Helpers ───────────────────────────────────────────────
@@ -5215,8 +5260,10 @@ var AIDiagram = (function (exports) {
5215
5260
  ...sg.charts.map((c) => c.y + c.h),
5216
5261
  ...sg.markdowns.map((m) => m.y + m.h),
5217
5262
  ];
5218
- sg.width = (allX.length ? Math.max(...allX) : 400) + margin;
5219
- sg.height = (allY.length ? Math.max(...allY) : 300) + margin;
5263
+ const autoWidth = (allX.length ? Math.max(...allX) : 400) + margin;
5264
+ const autoHeight = (allY.length ? Math.max(...allY) : 300) + margin;
5265
+ sg.width = sg.fixedWidth ?? autoWidth;
5266
+ sg.height = sg.fixedHeight ?? autoHeight;
5220
5267
  }
5221
5268
  // ── Public entry point ────────────────────────────────────
5222
5269
  function layout(sg) {
@@ -8252,7 +8299,7 @@ var AIDiagram = (function (exports) {
8252
8299
  const palette = resolvePalette(themeName);
8253
8300
  // ── Diagram-level font ──────────────────────────────────
8254
8301
  const diagramFont = (() => {
8255
- const raw = String(sg.config["font"] ?? "");
8302
+ const raw = String(sg.style?.font ?? sg.config["font"] ?? "");
8256
8303
  if (raw) {
8257
8304
  loadFont(raw);
8258
8305
  return resolveFont(raw);
@@ -8282,8 +8329,22 @@ var AIDiagram = (function (exports) {
8282
8329
  bgRect.setAttribute("y", "0");
8283
8330
  bgRect.setAttribute("width", String(sg.width));
8284
8331
  bgRect.setAttribute("height", String(sg.height));
8285
- bgRect.setAttribute("fill", palette.background);
8332
+ bgRect.setAttribute("fill", String(sg.style?.fill ?? palette.background));
8286
8333
  svg.appendChild(bgRect);
8334
+ const rootStroke = sg.style?.stroke;
8335
+ const rootStrokeWidth = Number(sg.style?.strokeWidth ?? 0);
8336
+ if (rootStroke && rootStroke !== "none" && rootStrokeWidth > 0) {
8337
+ const frame = se("rect");
8338
+ const inset = rootStrokeWidth / 2;
8339
+ frame.setAttribute("x", String(inset));
8340
+ frame.setAttribute("y", String(inset));
8341
+ frame.setAttribute("width", String(Math.max(0, sg.width - rootStrokeWidth)));
8342
+ frame.setAttribute("height", String(Math.max(0, sg.height - rootStrokeWidth)));
8343
+ frame.setAttribute("fill", "none");
8344
+ frame.setAttribute("stroke", String(rootStroke));
8345
+ frame.setAttribute("stroke-width", String(rootStrokeWidth));
8346
+ svg.appendChild(frame);
8347
+ }
8287
8348
  }
8288
8349
  const rc = rough.svg(svg);
8289
8350
  // ── Title ────────────────────────────────────────────────
@@ -9011,7 +9072,7 @@ var AIDiagram = (function (exports) {
9011
9072
  const palette = resolvePalette(themeName);
9012
9073
  // ── Diagram-level font ───────────────────────────────────
9013
9074
  const diagramFont = (() => {
9014
- const raw = String(sg.config['font'] ?? '');
9075
+ const raw = String(sg.style?.font ?? sg.config['font'] ?? '');
9015
9076
  if (raw) {
9016
9077
  loadFont(raw);
9017
9078
  return resolveFont(raw);
@@ -9020,8 +9081,18 @@ var AIDiagram = (function (exports) {
9020
9081
  })();
9021
9082
  // ── Background ───────────────────────────────────────────
9022
9083
  if (!options.transparent) {
9023
- ctx.fillStyle = options.background ?? palette.background;
9084
+ ctx.fillStyle = options.background ?? String(sg.style?.fill ?? palette.background);
9024
9085
  ctx.fillRect(0, 0, sg.width, sg.height);
9086
+ const rootStroke = sg.style?.stroke;
9087
+ const rootStrokeWidth = Number(sg.style?.strokeWidth ?? 0);
9088
+ if (rootStroke && rootStroke !== 'none' && rootStrokeWidth > 0) {
9089
+ const inset = rootStrokeWidth / 2;
9090
+ ctx.save();
9091
+ ctx.strokeStyle = String(rootStroke);
9092
+ ctx.lineWidth = rootStrokeWidth;
9093
+ ctx.strokeRect(inset, inset, Math.max(0, sg.width - rootStrokeWidth), Math.max(0, sg.height - rootStrokeWidth));
9094
+ ctx.restore();
9095
+ }
9025
9096
  }
9026
9097
  else {
9027
9098
  ctx.clearRect(0, 0, sg.width, sg.height);
@@ -10071,6 +10142,10 @@ var AIDiagram = (function (exports) {
10071
10142
  if (!el.id.startsWith("group-")) {
10072
10143
  const ids = new Set([el.id]);
10073
10144
  this._relatedElementIdsByPrimaryId.get(el.id)?.forEach((id) => ids.add(id));
10145
+ this.svg.querySelectorAll(POSITIONABLE_SELECTOR).forEach((candidate) => {
10146
+ if (candidate.dataset.animationParent === target)
10147
+ ids.add(candidate.id);
10148
+ });
10074
10149
  return Array.from(ids)
10075
10150
  .map((id) => getEl(this.svg, id))
10076
10151
  .filter((candidate) => candidate != null);
@@ -10271,6 +10346,7 @@ var AIDiagram = (function (exports) {
10271
10346
  el.classList.remove("hl", "faded", "hidden");
10272
10347
  el.style.opacity = el.style.filter = "";
10273
10348
  if (this.drawTargetNodes.has(el.id)) {
10349
+ hideDrawEl(el);
10274
10350
  prepareNodeForDraw(el);
10275
10351
  }
10276
10352
  else {
@@ -10769,6 +10845,15 @@ var AIDiagram = (function (exports) {
10769
10845
  _doColor(target, color) {
10770
10846
  if (!color)
10771
10847
  return;
10848
+ const applyTextColor = (root) => {
10849
+ root.querySelectorAll("text").forEach((t) => {
10850
+ t.style.fill = color;
10851
+ const existingStyle = t.getAttribute("style") ?? "";
10852
+ const nextStyle = `${existingStyle.replace(/(?:^|;)\s*fill\s*:[^;]*/g, "").trim().replace(/;?$/, ";")}fill:${color};`;
10853
+ t.setAttribute("style", nextStyle);
10854
+ t.setAttribute("fill", color);
10855
+ });
10856
+ };
10772
10857
  for (const el of this._resolveCascadeTargets(target)) {
10773
10858
  if (parseEdgeTarget(target)) {
10774
10859
  el.querySelectorAll("path, line, polyline").forEach((p) => {
@@ -10791,11 +10876,14 @@ var AIDiagram = (function (exports) {
10791
10876
  hit = true;
10792
10877
  });
10793
10878
  if (!hit) {
10794
- el.querySelectorAll("text").forEach((t) => {
10795
- t.style.fill = color;
10796
- });
10879
+ applyTextColor(el);
10797
10880
  }
10798
10881
  }
10882
+ this.svg.querySelectorAll(`${POSITIONABLE_SELECTOR}[data-animation-parent]`).forEach((el) => {
10883
+ if (el.dataset.animationParent === target) {
10884
+ applyTextColor(el);
10885
+ }
10886
+ });
10799
10887
  }
10800
10888
  // ── narration ───────────────────────────────────────────
10801
10889
  _initCaption() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sketchmark",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
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",