microboard-temp 0.14.19 → 0.14.21

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 (126) hide show
  1. package/dist/cjs/browser.js +388 -154
  2. package/dist/cjs/index.js +388 -154
  3. package/dist/cjs/node.js +388 -154
  4. package/dist/cjs/overlayIconManifest.js +115 -0
  5. package/dist/esm/browser.js +388 -154
  6. package/dist/esm/index.js +388 -154
  7. package/dist/esm/node.js +388 -154
  8. package/dist/esm/overlayIconManifest.js +113 -0
  9. package/dist/overlay-icons/Items/Card/icons/Flip.icon.svg +1 -0
  10. package/dist/overlay-icons/Items/Card/icons/RotateCcw.icon.svg +1 -0
  11. package/dist/overlay-icons/Items/Card/icons/RotateCw.icon.svg +1 -0
  12. package/dist/overlay-icons/Items/Card/icons/Tool.icon.svg +7 -0
  13. package/dist/overlay-icons/Items/Connector/icons/LineCurved.icon.svg +1 -0
  14. package/dist/overlay-icons/Items/Connector/icons/LineOrthogonal.icon.svg +1 -0
  15. package/dist/overlay-icons/Items/Connector/icons/LineStraight.icon.svg +1 -0
  16. package/dist/overlay-icons/Items/Connector/icons/PointerArrowHeavy.icon.svg +1 -0
  17. package/dist/overlay-icons/Items/Connector/icons/PointerArrowThin.icon.svg +1 -0
  18. package/dist/overlay-icons/Items/Connector/icons/PointerCircleFilled.icon.svg +1 -0
  19. package/dist/overlay-icons/Items/Connector/icons/PointerCircleOutline.icon.svg +1 -0
  20. package/dist/overlay-icons/Items/Connector/icons/PointerDiamondFilled.icon.svg +1 -0
  21. package/dist/overlay-icons/Items/Connector/icons/PointerDiamondOutline.icon.svg +1 -0
  22. package/dist/overlay-icons/Items/Connector/icons/PointerNone.icon.svg +1 -0
  23. package/dist/overlay-icons/Items/Connector/icons/PointerTriangleFilled.icon.svg +1 -0
  24. package/dist/overlay-icons/Items/Connector/icons/PointerTriangleOutline.icon.svg +1 -0
  25. package/dist/overlay-icons/Items/Connector/icons/SmartJump.icon.svg +3 -0
  26. package/dist/overlay-icons/Items/Connector/icons/Style.icon.svg +5 -0
  27. package/dist/overlay-icons/Items/Connector/icons/SwitchPointers.icon.svg +4 -0
  28. package/dist/overlay-icons/Items/Connector/icons/Tool.icon.svg +3 -0
  29. package/dist/overlay-icons/Items/Deck/icons/CreateFromSelection.icon.svg +1 -0
  30. package/dist/overlay-icons/Items/Deck/icons/DrawBottom.icon.svg +1 -0
  31. package/dist/overlay-icons/Items/Deck/icons/DrawMany.icon.svg +1 -0
  32. package/dist/overlay-icons/Items/Deck/icons/DrawRandom.icon.svg +1 -0
  33. package/dist/overlay-icons/Items/Deck/icons/DrawTop.icon.svg +1 -0
  34. package/dist/overlay-icons/Items/Deck/icons/Flip.icon.svg +1 -0
  35. package/dist/overlay-icons/Items/Deck/icons/Shuffle.icon.svg +1 -0
  36. package/dist/overlay-icons/Items/Dice/icons/Range.icon.svg +1 -0
  37. package/dist/overlay-icons/Items/Dice/icons/Throw.icon.svg +1 -0
  38. package/dist/overlay-icons/Items/Dice/icons/Tool.icon.svg +1 -0
  39. package/dist/overlay-icons/Items/Drawing/icons/Eraser.icon.svg +3 -0
  40. package/dist/overlay-icons/Items/Drawing/icons/Highlighter.icon.svg +3 -0
  41. package/dist/overlay-icons/Items/Drawing/icons/Pen.icon.svg +3 -0
  42. package/dist/overlay-icons/Items/Frame/Basic/1-1/1-1.icon.svg +1 -0
  43. package/dist/overlay-icons/Items/Frame/Basic/16-9/16-9.icon.svg +1 -0
  44. package/dist/overlay-icons/Items/Frame/Basic/3-2/3-2.icon.svg +1 -0
  45. package/dist/overlay-icons/Items/Frame/Basic/4-3/4-3.icon.svg +1 -0
  46. package/dist/overlay-icons/Items/Frame/Basic/9-18/9-18.icon.svg +1 -0
  47. package/dist/overlay-icons/Items/Frame/Basic/A4/A4.icon.svg +1 -0
  48. package/dist/overlay-icons/Items/Frame/Basic/Custom/Custom.icon.svg +14 -0
  49. package/dist/overlay-icons/Items/Frame/Basic/Letter/Letter.icon.svg +1 -0
  50. package/dist/overlay-icons/Items/Frame/Frame.icon.svg +1 -0
  51. package/dist/overlay-icons/Items/Placeholder/Placeholder.icon.svg +4 -0
  52. package/dist/overlay-icons/Items/RichText/icons/FontSize.icon.svg +3 -0
  53. package/dist/overlay-icons/Items/RichText/icons/Text.icon.svg +3 -0
  54. package/dist/overlay-icons/Items/Screen/icons/Background.icon.svg +1 -0
  55. package/dist/overlay-icons/Items/Screen/icons/BackgroundImage.icon.svg +1 -0
  56. package/dist/overlay-icons/Items/Screen/icons/BackgroundImageRemove.icon.svg +1 -0
  57. package/dist/overlay-icons/Items/Screen/icons/Pouch.icon.svg +1 -0
  58. package/dist/overlay-icons/Items/Screen/icons/Tool.icon.svg +1 -0
  59. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_Annotation/BPMN_Annotation.icon.svg +1 -0
  60. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_DataObject/BPMN_DataObject.icon.svg +1 -0
  61. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_DataStore/BPMN_DataStore.icon.svg +1 -0
  62. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_EndEvent/BPMN_EndEvent.icon.svg +1 -0
  63. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_EventSubprocess/BPMN_EventSubprocess.icon.svg +1 -0
  64. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_Gateway/BPMN_Gateway.icon.svg +1 -0
  65. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_GatewayParallel/BPMN_GatewayParallel.icon.svg +1 -0
  66. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_GatewayXOR/BPMN_GatewayXOR.icon.svg +1 -0
  67. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_Group/BPMN_Group.icon.svg +1 -0
  68. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_IntermediateEvent/BPMN_IntermediateEvent.icon.svg +1 -0
  69. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_IntermediateEventNoneInterrupting/BPMN_IntermediateEventNoneInterrupting.icon.svg +1 -0
  70. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_Participant/BPMN_Participant.icon.svg +1 -0
  71. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_StartEvent/BPMN_StartEvent.icon.svg +1 -0
  72. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_StartEventNoneInterrupting/BPMN_StartEventNoneInterrupting.icon.svg +1 -0
  73. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_Task/BPMN_Task.icon.svg +1 -0
  74. package/dist/overlay-icons/Items/Shape/BPMN/BPMN_Transaction/BPMN_Transaction.icon.svg +1 -0
  75. package/dist/overlay-icons/Items/Shape/Basic/ArrowLeft/ArrowLeft.icon.svg +14 -0
  76. package/dist/overlay-icons/Items/Shape/Basic/ArrowLeftRight/ArrowLeftRight.icon.svg +14 -0
  77. package/dist/overlay-icons/Items/Shape/Basic/ArrowRight/ArrowRight.icon.svg +14 -0
  78. package/dist/overlay-icons/Items/Shape/Basic/BracesLeft/BracesLeft.icon.svg +14 -0
  79. package/dist/overlay-icons/Items/Shape/Basic/BracesRight/BracesRight.icon.svg +14 -0
  80. package/dist/overlay-icons/Items/Shape/Basic/Circle/Circle.icon.svg +14 -0
  81. package/dist/overlay-icons/Items/Shape/Basic/Cloud/Cloud.icon.svg +14 -0
  82. package/dist/overlay-icons/Items/Shape/Basic/Cross/Cross.icon.svg +14 -0
  83. package/dist/overlay-icons/Items/Shape/Basic/Cylinder/Cylinder.icon.svg +19 -0
  84. package/dist/overlay-icons/Items/Shape/Basic/Hexagon/Hexagon.icon.svg +14 -0
  85. package/dist/overlay-icons/Items/Shape/Basic/Octagon/Octagon.icon.svg +14 -0
  86. package/dist/overlay-icons/Items/Shape/Basic/Parallelogram/Parallelogram.icon.svg +14 -0
  87. package/dist/overlay-icons/Items/Shape/Basic/Pentagon/Pentagon.icon.svg +14 -0
  88. package/dist/overlay-icons/Items/Shape/Basic/Rectangle/Rectangle.icon.svg +14 -0
  89. package/dist/overlay-icons/Items/Shape/Basic/Rhombus/Rhombus.icon.svg +14 -0
  90. package/dist/overlay-icons/Items/Shape/Basic/RoundedRectangle/RoundedRectangle.icon.svg +14 -0
  91. package/dist/overlay-icons/Items/Shape/Basic/SpeachBubble/SpeachBubble.icon.svg +14 -0
  92. package/dist/overlay-icons/Items/Shape/Basic/Star/Star.icon.svg +14 -0
  93. package/dist/overlay-icons/Items/Shape/Basic/Trapezoid/Trapezoid.icon.svg +14 -0
  94. package/dist/overlay-icons/Items/Shape/Basic/Triangle/Triangle.icon.svg +14 -0
  95. package/dist/overlay-icons/Items/Shape/icons/ArrowBlockLeft.icon.svg +3 -0
  96. package/dist/overlay-icons/Items/Shape/icons/ArrowBlockRight.icon.svg +3 -0
  97. package/dist/overlay-icons/Items/Shape/icons/Color.icon.svg +4 -0
  98. package/dist/overlay-icons/Items/Shape/icons/Fill.icon.svg +4 -0
  99. package/dist/overlay-icons/Items/Shape/icons/PredefinedProcess.icon.svg +4 -0
  100. package/dist/overlay-icons/Items/Shape/icons/ReversedParallelogram.icon.svg +3 -0
  101. package/dist/overlay-icons/Items/Shape/icons/ReversedTriangle.icon.svg +3 -0
  102. package/dist/overlay-icons/Items/Shape/icons/Stroke.icon.svg +3 -0
  103. package/dist/overlay-icons/Items/Shape/icons/StrokeDash.icon.svg +3 -0
  104. package/dist/overlay-icons/Items/Shape/icons/StrokeDot.icon.svg +5 -0
  105. package/dist/overlay-icons/Items/Shape/icons/StrokeLongDash.icon.svg +3 -0
  106. package/dist/overlay-icons/Items/Shape/icons/StrokeSolid.icon.svg +3 -0
  107. package/dist/overlay-icons/Items/Shape/icons/Tool.icon.svg +3 -0
  108. package/dist/overlay-icons/Items/Shape/icons/Type.icon.svg +5 -0
  109. package/dist/overlay-icons/Items/Sticker/Path/Sticker.icon.svg +14 -0
  110. package/dist/overlay-icons/Overlay/icons/BringToFront.icon.svg +5 -0
  111. package/dist/overlay-icons/Overlay/icons/Delete.icon.svg +7 -0
  112. package/dist/overlay-icons/Overlay/icons/Duplicate.icon.svg +4 -0
  113. package/dist/overlay-icons/Overlay/icons/Lock.icon.svg +4 -0
  114. package/dist/overlay-icons/Overlay/icons/SendToBack.icon.svg +5 -0
  115. package/dist/overlay-icons/Overlay/icons/Unlock.icon.svg +4 -0
  116. package/dist/overlay-icons/Overlay/overlay-icons.svg +323 -0
  117. package/dist/types/Items/Card/CardOverlay.d.ts +2 -1
  118. package/dist/types/Overlay/IconPack.d.ts +5 -3
  119. package/dist/types/Overlay/OverlayMetadata.d.ts +24 -0
  120. package/dist/types/Overlay/overlayRegistry.d.ts +1 -0
  121. package/dist/types/Selection/SelectionOverlay.d.ts +1 -0
  122. package/dist/types/Selection/index.d.ts +1 -0
  123. package/dist/types/Tools/WorkflowTool.d.ts +8 -0
  124. package/dist/types/Tools/index.d.ts +1 -0
  125. package/dist/types/overlayIconManifest.d.ts +2 -0
  126. package/package.json +8 -2
package/dist/esm/node.js CHANGED
@@ -12275,7 +12275,11 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
12275
12275
  }
12276
12276
  }
12277
12277
  // src/Overlay/IconPack.ts
12278
- var OVERLAY_ICON_SPRITE_PATH = "src/Overlay/overlay-icons.svg";
12278
+ var OVERLAY_ICON_ASSET_PREFIX = "overlay-icons/";
12279
+ var OVERLAY_ICON_SPRITE_PATH = normalizeOverlayIconAssetPath("src/Overlay/overlay-icons.svg");
12280
+ function normalizeOverlayIconAssetPath(sourcePath) {
12281
+ return sourcePath.startsWith("src/") ? `${OVERLAY_ICON_ASSET_PREFIX}${sourcePath.slice(4)}` : sourcePath;
12282
+ }
12279
12283
  function overlaySymbolIcon(key) {
12280
12284
  return {
12281
12285
  kind: "symbol",
@@ -12283,10 +12287,18 @@ function overlaySymbolIcon(key) {
12283
12287
  sourcePath: OVERLAY_ICON_SPRITE_PATH
12284
12288
  };
12285
12289
  }
12286
- function overlayAssetIcon(path2) {
12287
- return {
12290
+ function overlayAssetIcon(sourcePath, state) {
12291
+ const path2 = normalizeOverlayIconAssetPath(sourcePath);
12292
+ return state ? {
12293
+ kind: "asset",
12294
+ path: path2,
12295
+ sourcePath,
12296
+ mimeType: "image/svg+xml",
12297
+ state
12298
+ } : {
12288
12299
  kind: "asset",
12289
12300
  path: path2,
12301
+ sourcePath,
12290
12302
  mimeType: "image/svg+xml"
12291
12303
  };
12292
12304
  }
@@ -12302,16 +12314,16 @@ function symbolIcon(key, state) {
12302
12314
  return state ? { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH, state } : { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH };
12303
12315
  }
12304
12316
  function styleFillIcon(state) {
12305
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFill, state);
12317
+ return overlayAssetIcon("src/Items/Shape/icons/Fill.icon.svg", state);
12306
12318
  }
12307
12319
  function styleStrokeIcon(state) {
12308
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleStroke, state);
12320
+ return overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg", state);
12309
12321
  }
12310
12322
  function styleColorIcon(state) {
12311
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleColor, state);
12323
+ return overlayAssetIcon("src/Items/Shape/icons/Color.icon.svg", state);
12312
12324
  }
12313
12325
  function styleFontSizeIcon(state) {
12314
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFontSize, state);
12326
+ return overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg", state);
12315
12327
  }
12316
12328
  // src/Overlay/overlayRegistry.ts
12317
12329
  var itemOverlays = {};
@@ -12446,10 +12458,23 @@ function compareEntriesByOrder(a, b) {
12446
12458
  return aOrder - bOrder || aLabel.localeCompare(bLabel);
12447
12459
  }
12448
12460
  function readOverlayValueSource(context, source) {
12461
+ if (source.kind === "selectionProperty") {
12462
+ return readOverlayContextProperty(context.selection, source.property);
12463
+ }
12449
12464
  if (source.kind === "itemProperty") {
12450
- return context.item ? context.item[source.property] : undefined;
12465
+ return readOverlayContextProperty(context.item, source.property);
12451
12466
  }
12452
- return context.tool ? context.tool[source.property] : undefined;
12467
+ return readOverlayContextProperty(context.tool, source.property);
12468
+ }
12469
+ function readOverlayContextProperty(target, property) {
12470
+ if (!target) {
12471
+ return;
12472
+ }
12473
+ const value = target[property];
12474
+ if (typeof value === "function") {
12475
+ return value.call(target);
12476
+ }
12477
+ return value;
12453
12478
  }
12454
12479
  // src/Items/BaseItem/BaseItem.ts
12455
12480
  class BaseItem {
@@ -40186,7 +40211,6 @@ var richTextOverlay = {
40186
40211
  id: "text.fontSize",
40187
40212
  label: "Font size",
40188
40213
  icon: styleFontSizeIcon(),
40189
- icon: styleFontSizeIcon(),
40190
40214
  target: "each",
40191
40215
  controls: [
40192
40216
  {
@@ -40209,7 +40233,7 @@ var richTextOverlay = {
40209
40233
  {
40210
40234
  id: "textTypography",
40211
40235
  label: "Typography",
40212
- icon: overlaySymbolIcon("text.fontSize"),
40236
+ icon: overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg"),
40213
40237
  actionIds: ["text.fontSize"]
40214
40238
  }
40215
40239
  ]
@@ -40220,7 +40244,7 @@ var addTextToolOverlay = {
40220
40244
  kind: "create",
40221
40245
  createsItemType: "RichText",
40222
40246
  family: "text",
40223
- icon: overlaySymbolIcon("tool.text"),
40247
+ icon: overlayAssetIcon("src/Items/RichText/icons/Text.icon.svg"),
40224
40248
  description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool.",
40225
40249
  launch: { kind: "activate-tool" },
40226
40250
  surface: {
@@ -46628,12 +46652,28 @@ var COLOR_PALETTE = [
46628
46652
  "#118AB2",
46629
46653
  "#7B61FF"
46630
46654
  ];
46631
- var symbolIcon2 = (key) => overlaySymbolIcon(key);
46655
+ var connectorAssetIcon = (file2) => overlayAssetIcon(`src/Items/Connector/icons/${file2}.icon.svg`);
46656
+ var lineStyleAssetIcons = {
46657
+ straight: connectorAssetIcon("LineStraight"),
46658
+ curved: connectorAssetIcon("LineCurved"),
46659
+ orthogonal: connectorAssetIcon("LineOrthogonal")
46660
+ };
46661
+ var pointerAssetIcons = {
46662
+ None: connectorAssetIcon("PointerNone"),
46663
+ ArrowThin: connectorAssetIcon("PointerArrowThin"),
46664
+ ArrowHeavy: connectorAssetIcon("PointerArrowHeavy"),
46665
+ TriangleFilled: connectorAssetIcon("PointerTriangleFilled"),
46666
+ TriangleOutline: connectorAssetIcon("PointerTriangleOutline"),
46667
+ CircleFilled: connectorAssetIcon("PointerCircleFilled"),
46668
+ CircleOutline: connectorAssetIcon("PointerCircleOutline"),
46669
+ DiamondFilled: connectorAssetIcon("PointerDiamondFilled"),
46670
+ DiamondOutline: connectorAssetIcon("PointerDiamondOutline")
46671
+ };
46632
46672
  var lineStyleOptions = ConnectorLineStyles.map((style) => ({
46633
46673
  id: style,
46634
46674
  label: style[0].toUpperCase() + style.slice(1),
46635
46675
  value: style,
46636
- icon: symbolIcon2(`connector.lineStyle.${style}`)
46676
+ icon: lineStyleAssetIcons[style]
46637
46677
  }));
46638
46678
  var lineWidthOptions = ConnectionLineWidths.map((width) => ({
46639
46679
  id: `${width}`,
@@ -46644,13 +46684,13 @@ var pointerOptions = CONNECTOR_POINTER_TYPES.map((pointer) => ({
46644
46684
  id: pointer,
46645
46685
  label: pointer,
46646
46686
  value: pointer,
46647
- icon: symbolIcon2(`connector.pointer.${pointer}`)
46687
+ icon: pointerAssetIcons[pointer]
46648
46688
  }));
46649
46689
  var borderStyleOptions = ["solid", "dot", "dash", "longDash"].map((style) => ({
46650
46690
  id: style,
46651
46691
  label: style,
46652
46692
  value: style,
46653
- icon: symbolIcon2(`stroke.${style}`)
46693
+ icon: overlayAssetIcon(style === "solid" ? "src/Items/Shape/icons/StrokeSolid.icon.svg" : style === "dot" ? "src/Items/Shape/icons/StrokeDot.icon.svg" : style === "dash" ? "src/Items/Shape/icons/StrokeDash.icon.svg" : "src/Items/Shape/icons/StrokeLongDash.icon.svg")
46654
46694
  }));
46655
46695
  var connectorStyleControls = [
46656
46696
  {
@@ -46705,7 +46745,7 @@ var connectorStyleControls = [
46705
46745
  {
46706
46746
  id: "smartJump",
46707
46747
  label: "Smart jump",
46708
- icon: symbolIcon2("connector.smartJump"),
46748
+ icon: connectorAssetIcon("SmartJump"),
46709
46749
  valueSource: { kind: "itemProperty", property: "smartJump" },
46710
46750
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
46711
46751
  invoke: { kind: "setProperty", property: "smartJump" }
@@ -46764,7 +46804,7 @@ var connectorToolControls = [
46764
46804
  {
46765
46805
  id: "toolSmartJump",
46766
46806
  label: "Smart jump",
46767
- icon: symbolIcon2("connector.smartJump"),
46807
+ icon: connectorAssetIcon("SmartJump"),
46768
46808
  valueSource: { kind: "toolProperty", property: "smartJump" },
46769
46809
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
46770
46810
  invoke: { kind: "toolProperty", property: "smartJump" }
@@ -46776,21 +46816,21 @@ var connectorOverlay = {
46776
46816
  {
46777
46817
  id: "connector.switchPointers",
46778
46818
  label: "Switch arrows",
46779
- icon: symbolIcon2("connector.switchPointers"),
46819
+ icon: connectorAssetIcon("SwitchPointers"),
46780
46820
  target: "selection",
46781
46821
  invoke: { kind: "operation", class: "Connector", method: "switchPointers" }
46782
46822
  },
46783
46823
  {
46784
46824
  id: "connector.style",
46785
46825
  label: "Connector style",
46786
- icon: symbolIcon2("connector.style"),
46826
+ icon: connectorAssetIcon("Style"),
46787
46827
  target: "each",
46788
46828
  controls: connectorStyleControls,
46789
46829
  groups: [
46790
46830
  {
46791
46831
  id: "connectorStyle",
46792
46832
  label: "Connector style",
46793
- icon: symbolIcon2("connector.style"),
46833
+ icon: connectorAssetIcon("Style"),
46794
46834
  controlIds: connectorStyleControls.map((control) => control.id)
46795
46835
  }
46796
46836
  ]
@@ -46800,7 +46840,7 @@ var connectorOverlay = {
46800
46840
  {
46801
46841
  id: "connectorArrows",
46802
46842
  label: "Arrows",
46803
- icon: symbolIcon2("connector.style"),
46843
+ icon: connectorAssetIcon("Style"),
46804
46844
  actionIds: ["connector.switchPointers", "connector.style"]
46805
46845
  }
46806
46846
  ]
@@ -46812,8 +46852,7 @@ var addConnectorToolOverlay = {
46812
46852
  createsItemType: "Connector",
46813
46853
  family: "connector",
46814
46854
  icon: {
46815
- kind: "symbol",
46816
- key: "tool.connector",
46855
+ ...connectorAssetIcon("Tool"),
46817
46856
  state: {
46818
46857
  swatch: { kind: "toolProperty", property: "lineColor" },
46819
46858
  note: "UI can tint or swatch the connector icon from the pending line color."
@@ -46825,14 +46864,14 @@ var addConnectorToolOverlay = {
46825
46864
  {
46826
46865
  id: "connectorToolQuickDefaults",
46827
46866
  label: "Connector quick defaults",
46828
- icon: symbolIcon2("connector.lineStyle.straight"),
46867
+ icon: connectorAssetIcon("LineStraight"),
46829
46868
  controlIds: ["toolLineStyle"],
46830
46869
  description: "Primary defaults that match the compact create-surface picker."
46831
46870
  },
46832
46871
  {
46833
46872
  id: "connectorToolAdvancedDefaults",
46834
46873
  label: "Connector defaults",
46835
- icon: symbolIcon2("connector.style"),
46874
+ icon: connectorAssetIcon("Style"),
46836
46875
  controlIds: connectorToolControls.map((control) => control.id),
46837
46876
  description: "Extended defaults available in richer create flows."
46838
46877
  }
@@ -60980,7 +61019,8 @@ var COLOR_PALETTE2 = [
60980
61019
  "transparent"
60981
61020
  ];
60982
61021
  var inlineShapeAsset = (folder, file2 = folder) => overlayAssetIcon(`src/Items/Shape/Basic/${folder}/${file2}.icon.svg`);
60983
- var symbolIcon3 = (key) => overlaySymbolIcon(key);
61022
+ var localShapeIcon = (file2) => overlayAssetIcon(`src/Items/Shape/icons/${file2}.icon.svg`);
61023
+ var bpmnIcon = (folder) => overlayAssetIcon(`src/Items/Shape/BPMN/${folder}/${folder}.icon.svg`);
60984
61024
  var BASIC_INLINE_OPTIONS = [
60985
61025
  { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle"), family: "basicShapes" },
60986
61026
  { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle"), family: "basicShapes" },
@@ -60990,48 +61030,48 @@ var BASIC_INLINE_OPTIONS = [
60990
61030
  ];
60991
61031
  var SHAPE_CATALOG_OPTIONS = [
60992
61032
  ...BASIC_INLINE_OPTIONS,
60993
- { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle"), family: "basicShapes" },
61033
+ { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: localShapeIcon("ReversedTriangle"), family: "basicShapes" },
60994
61034
  { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft"), family: "basicShapes" },
60995
61035
  { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight"), family: "basicShapes" },
60996
61036
  { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight"), family: "basicShapes" },
60997
- { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft"), family: "basicShapes" },
60998
- { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight"), family: "basicShapes" },
61037
+ { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: localShapeIcon("ArrowBlockLeft"), family: "basicShapes" },
61038
+ { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: localShapeIcon("ArrowBlockRight"), family: "basicShapes" },
60999
61039
  { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud"), family: "basicShapes" },
61000
61040
  { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross"), family: "basicShapes" },
61001
61041
  { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder"), family: "basicShapes" },
61002
61042
  { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon"), family: "basicShapes" },
61003
61043
  { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon"), family: "basicShapes" },
61004
61044
  { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram"), family: "basicShapes" },
61005
- { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram"), family: "basicShapes" },
61045
+ { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: localShapeIcon("ReversedParallelogram"), family: "basicShapes" },
61006
61046
  { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon"), family: "basicShapes" },
61007
- { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess"), family: "basicShapes" },
61047
+ { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: localShapeIcon("PredefinedProcess"), family: "basicShapes" },
61008
61048
  { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble"), family: "basicShapes" },
61009
61049
  { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star"), family: "basicShapes" },
61010
61050
  { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid"), family: "basicShapes" },
61011
61051
  { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft"), family: "basicShapes" },
61012
61052
  { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight"), family: "basicShapes" },
61013
- { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task"), family: "bpmn" },
61014
- { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway"), family: "bpmn" },
61015
- { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel"), family: "bpmn" },
61016
- { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor"), family: "bpmn" },
61017
- { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent"), family: "bpmn" },
61018
- { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting"), family: "bpmn" },
61019
- { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent"), family: "bpmn" },
61020
- { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent"), family: "bpmn" },
61021
- { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting"), family: "bpmn" },
61022
- { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject"), family: "bpmn" },
61023
- { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore"), family: "bpmn" },
61024
- { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant"), family: "bpmn" },
61025
- { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction"), family: "bpmn" },
61026
- { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess"), family: "bpmn" },
61027
- { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group"), family: "bpmn" },
61028
- { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation"), family: "bpmn" }
61053
+ { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: bpmnIcon("BPMN_Task"), family: "bpmn" },
61054
+ { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: bpmnIcon("BPMN_Gateway"), family: "bpmn" },
61055
+ { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: bpmnIcon("BPMN_GatewayParallel"), family: "bpmn" },
61056
+ { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: bpmnIcon("BPMN_GatewayXOR"), family: "bpmn" },
61057
+ { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: bpmnIcon("BPMN_StartEvent"), family: "bpmn" },
61058
+ { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: bpmnIcon("BPMN_StartEventNoneInterrupting"), family: "bpmn" },
61059
+ { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: bpmnIcon("BPMN_EndEvent"), family: "bpmn" },
61060
+ { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: bpmnIcon("BPMN_IntermediateEvent"), family: "bpmn" },
61061
+ { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: bpmnIcon("BPMN_IntermediateEventNoneInterrupting"), family: "bpmn" },
61062
+ { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: bpmnIcon("BPMN_DataObject"), family: "bpmn" },
61063
+ { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: bpmnIcon("BPMN_DataStore"), family: "bpmn" },
61064
+ { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: bpmnIcon("BPMN_Participant"), family: "bpmn" },
61065
+ { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: bpmnIcon("BPMN_Transaction"), family: "bpmn" },
61066
+ { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: bpmnIcon("BPMN_EventSubprocess"), family: "bpmn" },
61067
+ { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: bpmnIcon("BPMN_Group"), family: "bpmn" },
61068
+ { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: bpmnIcon("BPMN_Annotation"), family: "bpmn" }
61029
61069
  ];
61030
61070
  var BORDER_STYLE_OPTIONS = [
61031
- { id: "solid", label: "Solid", value: "solid", icon: symbolIcon3("stroke.solid") },
61032
- { id: "dot", label: "Dot", value: "dot", icon: symbolIcon3("stroke.dot") },
61033
- { id: "dash", label: "Dash", value: "dash", icon: symbolIcon3("stroke.dash") },
61034
- { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon3("stroke.longDash") }
61071
+ { id: "solid", label: "Solid", value: "solid", icon: localShapeIcon("StrokeSolid") },
61072
+ { id: "dot", label: "Dot", value: "dot", icon: localShapeIcon("StrokeDot") },
61073
+ { id: "dash", label: "Dash", value: "dash", icon: localShapeIcon("StrokeDash") },
61074
+ { id: "long-dash", label: "Long dash", value: "longDash", icon: localShapeIcon("StrokeLongDash") }
61035
61075
  ];
61036
61076
  var shapeTypeControl = {
61037
61077
  id: "shapeType",
@@ -61064,10 +61104,6 @@ var fillControl = {
61064
61104
  swatch: { kind: "itemProperty", property: "backgroundColor" },
61065
61105
  note: "UI can render the current fill color as a swatch inside the icon."
61066
61106
  }),
61067
- icon: styleFillIcon({
61068
- swatch: { kind: "itemProperty", property: "backgroundColor" },
61069
- note: "UI can render the current fill color as a swatch inside the icon."
61070
- }),
61071
61107
  editor: {
61072
61108
  kind: "color",
61073
61109
  palette: COLOR_PALETTE2,
@@ -61118,7 +61154,7 @@ var shapeOverlay = {
61118
61154
  {
61119
61155
  id: "shape.shapeType",
61120
61156
  label: "Shape type",
61121
- icon: symbolIcon3("shape.type"),
61157
+ icon: localShapeIcon("Type"),
61122
61158
  target: "each",
61123
61159
  controls: [shapeTypeControl]
61124
61160
  },
@@ -61149,13 +61185,13 @@ var shapeOverlay = {
61149
61185
  {
61150
61186
  id: "shapeTypeSection",
61151
61187
  label: "Type",
61152
- icon: symbolIcon3("shape.type"),
61188
+ icon: localShapeIcon("Type"),
61153
61189
  actionIds: ["shape.shapeType"]
61154
61190
  },
61155
61191
  {
61156
61192
  id: "shapeAppearanceSection",
61157
61193
  label: "Appearance",
61158
- icon: symbolIcon3("shape.stroke"),
61194
+ icon: localShapeIcon("Stroke"),
61159
61195
  actionIds: ["shape.fill", "shape.strokeStyle"]
61160
61196
  }
61161
61197
  ]
@@ -61167,7 +61203,7 @@ var addShapeToolOverlay = {
61167
61203
  createsItemType: "Shape",
61168
61204
  family: "shape",
61169
61205
  icon: {
61170
- ...overlaySymbolIcon("tool.shape"),
61206
+ ...overlayAssetIcon("src/Items/Shape/icons/Tool.icon.svg"),
61171
61207
  state: {
61172
61208
  note: "UI may swap the top-level icon to the selected shape option when desired."
61173
61209
  }
@@ -65600,6 +65636,68 @@ var propertyOps = {
65600
65636
  }
65601
65637
  };
65602
65638
 
65639
+ // src/Tools/Tool.ts
65640
+ class Tool {
65641
+ leftButtonDown() {
65642
+ return false;
65643
+ }
65644
+ leftButtonUp() {
65645
+ return false;
65646
+ }
65647
+ leftButtonDouble() {
65648
+ return false;
65649
+ }
65650
+ rightButtonDown() {
65651
+ return false;
65652
+ }
65653
+ rightButtonUp() {
65654
+ return false;
65655
+ }
65656
+ rightButtonDouble() {
65657
+ return false;
65658
+ }
65659
+ middleButtonDown() {
65660
+ return false;
65661
+ }
65662
+ middleButtonUp() {
65663
+ return false;
65664
+ }
65665
+ middleButtonDouble() {
65666
+ return false;
65667
+ }
65668
+ keyDown(_key) {
65669
+ return false;
65670
+ }
65671
+ keyUp(_key) {
65672
+ return false;
65673
+ }
65674
+ pointerMoveBy(_x, _y) {
65675
+ return false;
65676
+ }
65677
+ pointerDown() {
65678
+ return false;
65679
+ }
65680
+ pointerUp() {
65681
+ return false;
65682
+ }
65683
+ onCancel() {}
65684
+ onConfirm() {}
65685
+ render(_context) {}
65686
+ }
65687
+
65688
+ // src/Tools/BoardTool.ts
65689
+ class BoardTool extends Tool {
65690
+ board;
65691
+ constructor(board) {
65692
+ super();
65693
+ this.board = board;
65694
+ }
65695
+ }
65696
+
65697
+ // src/Tools/WorkflowTool.ts
65698
+ class WorkflowTool extends BoardTool {
65699
+ }
65700
+
65603
65701
  // src/Items/Card/CardOverlay.ts
65604
65702
  var cardOverlay = {
65605
65703
  itemType: "Card",
@@ -65607,14 +65705,14 @@ var cardOverlay = {
65607
65705
  {
65608
65706
  id: "card.flip",
65609
65707
  label: "Flip card",
65610
- icon: overlaySymbolIcon("card.flip"),
65708
+ icon: overlayAssetIcon("src/Items/Card/icons/Flip.icon.svg"),
65611
65709
  target: "each",
65612
65710
  invoke: { kind: "customMethod", methodName: "toggleIsOpen" }
65613
65711
  },
65614
65712
  {
65615
65713
  id: "card.rotateCcw",
65616
65714
  label: "Rotate 90 counter clockwise",
65617
- icon: overlaySymbolIcon("card.rotateCcw"),
65715
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCcw.icon.svg"),
65618
65716
  target: "each",
65619
65717
  invoke: {
65620
65718
  kind: "customMethod",
@@ -65625,7 +65723,7 @@ var cardOverlay = {
65625
65723
  {
65626
65724
  id: "card.rotateCw",
65627
65725
  label: "Rotate 90 clockwise",
65628
- icon: overlaySymbolIcon("card.rotateCw"),
65726
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCw.icon.svg"),
65629
65727
  target: "each",
65630
65728
  invoke: {
65631
65729
  kind: "customMethod",
@@ -65635,6 +65733,73 @@ var cardOverlay = {
65635
65733
  }
65636
65734
  ]
65637
65735
  };
65736
+ var addCardToolOverlay = {
65737
+ toolName: "AddCard",
65738
+ label: "Card",
65739
+ kind: "create",
65740
+ createsItemType: "Card",
65741
+ family: "game",
65742
+ icon: overlayAssetIcon("src/Items/Card/icons/Tool.icon.svg"),
65743
+ launch: {
65744
+ kind: "workflow",
65745
+ workflow: {
65746
+ kind: "property-sheet",
65747
+ description: "Upload front and back images for one or more cards.",
65748
+ submitLabel: "Create cards",
65749
+ controls: [
65750
+ {
65751
+ id: "cardArtwork",
65752
+ label: "Card artwork",
65753
+ editor: {
65754
+ kind: "asset-upload",
65755
+ mode: "paired",
65756
+ fields: [
65757
+ {
65758
+ id: "face",
65759
+ label: "Front",
65760
+ accept: ["image/*"],
65761
+ required: true
65762
+ },
65763
+ {
65764
+ id: "back",
65765
+ label: "Back",
65766
+ accept: ["image/*"],
65767
+ required: true
65768
+ }
65769
+ ]
65770
+ }
65771
+ }
65772
+ ],
65773
+ submit: {
65774
+ kind: "create-items",
65775
+ itemType: "Card",
65776
+ strategy: "per-upload-entry",
65777
+ placement: "stagger-from-pointer",
65778
+ properties: [
65779
+ {
65780
+ property: "faceUrl",
65781
+ source: { kind: "uploadField", controlId: "cardArtwork", fieldId: "face" }
65782
+ },
65783
+ {
65784
+ property: "backsideUrl",
65785
+ source: { kind: "uploadField", controlId: "cardArtwork", fieldId: "back" }
65786
+ }
65787
+ ]
65788
+ }
65789
+ }
65790
+ },
65791
+ surface: {
65792
+ order: 4,
65793
+ group: {
65794
+ id: "gameItems",
65795
+ label: "Game items",
65796
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
65797
+ order: 1,
65798
+ behavior: "open-panel"
65799
+ },
65800
+ relatedToolNames: ["AddDice", "AddScreen", "AddPouch"]
65801
+ }
65802
+ };
65638
65803
 
65639
65804
  // src/Items/Card/Card.ts
65640
65805
  var defaultCardData = {
@@ -65829,6 +65994,11 @@ registerItem({
65829
65994
  defaultData: defaultCardData,
65830
65995
  overlay: cardOverlay
65831
65996
  });
65997
+ registerTool({
65998
+ name: "AddCard",
65999
+ tool: WorkflowTool,
66000
+ overlay: addCardToolOverlay
66001
+ });
65832
66002
  registerHotkey({
65833
66003
  name: "Rotate90deg",
65834
66004
  hotkey: { key: { button: "KeyQ", shift: true }, label: { windows: "Shift+Q", mac: "⇧Q" } },
@@ -65879,28 +66049,28 @@ var deckOverlay = {
65879
66049
  {
65880
66050
  id: "deck.getTopCard",
65881
66051
  label: "Draw top card",
65882
- icon: overlaySymbolIcon("deck.drawTop"),
66052
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawTop.icon.svg"),
65883
66053
  target: "single",
65884
66054
  invoke: { kind: "customMethod", methodName: "getTopCard" }
65885
66055
  },
65886
66056
  {
65887
66057
  id: "deck.getBottomCard",
65888
66058
  label: "Draw bottom card",
65889
- icon: overlaySymbolIcon("deck.drawBottom"),
66059
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawBottom.icon.svg"),
65890
66060
  target: "single",
65891
66061
  invoke: { kind: "customMethod", methodName: "getBottomCard" }
65892
66062
  },
65893
66063
  {
65894
66064
  id: "deck.getRandomCard",
65895
66065
  label: "Draw random card",
65896
- icon: overlaySymbolIcon("deck.drawRandom"),
66066
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawRandom.icon.svg"),
65897
66067
  target: "single",
65898
66068
  invoke: { kind: "customMethod", methodName: "getRandomCard" }
65899
66069
  },
65900
66070
  {
65901
66071
  id: "deck.getCards",
65902
66072
  label: "Draw cards",
65903
- icon: overlaySymbolIcon("deck.drawMany"),
66073
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawMany.icon.svg"),
65904
66074
  target: "single",
65905
66075
  controls: [
65906
66076
  {
@@ -65922,14 +66092,14 @@ var deckOverlay = {
65922
66092
  {
65923
66093
  id: "deck.shuffle",
65924
66094
  label: "Shuffle",
65925
- icon: overlaySymbolIcon("deck.shuffle"),
66095
+ icon: overlayAssetIcon("src/Items/Deck/icons/Shuffle.icon.svg"),
65926
66096
  target: "single",
65927
66097
  invoke: { kind: "customMethod", methodName: "shuffleDeck" }
65928
66098
  },
65929
66099
  {
65930
66100
  id: "deck.flip",
65931
66101
  label: "Flip deck",
65932
- icon: overlaySymbolIcon("deck.flip"),
66102
+ icon: overlayAssetIcon("src/Items/Deck/icons/Flip.icon.svg"),
65933
66103
  target: "single",
65934
66104
  invoke: { kind: "customMethod", methodName: "flipDeck" }
65935
66105
  }
@@ -65938,7 +66108,7 @@ var deckOverlay = {
65938
66108
  var createDeckSelectionAction = {
65939
66109
  id: "deck.createFromSelection",
65940
66110
  label: "Create deck",
65941
- icon: overlaySymbolIcon("deck.createFromSelection"),
66111
+ icon: overlayAssetIcon("src/Items/Deck/icons/CreateFromSelection.icon.svg"),
65942
66112
  description: "Stacks selected cards into a new deck, or merges selected cards and decks into one deck.",
65943
66113
  invoke: { kind: "selectionMethod", methodName: "createDeck" },
65944
66114
  isAvailable: (items) => {
@@ -66335,64 +66505,6 @@ registerHotkey({
66335
66505
  }
66336
66506
  });
66337
66507
  registerSelectionAction(createDeckSelectionAction);
66338
- // src/Tools/Tool.ts
66339
- class Tool {
66340
- leftButtonDown() {
66341
- return false;
66342
- }
66343
- leftButtonUp() {
66344
- return false;
66345
- }
66346
- leftButtonDouble() {
66347
- return false;
66348
- }
66349
- rightButtonDown() {
66350
- return false;
66351
- }
66352
- rightButtonUp() {
66353
- return false;
66354
- }
66355
- rightButtonDouble() {
66356
- return false;
66357
- }
66358
- middleButtonDown() {
66359
- return false;
66360
- }
66361
- middleButtonUp() {
66362
- return false;
66363
- }
66364
- middleButtonDouble() {
66365
- return false;
66366
- }
66367
- keyDown(_key) {
66368
- return false;
66369
- }
66370
- keyUp(_key) {
66371
- return false;
66372
- }
66373
- pointerMoveBy(_x, _y) {
66374
- return false;
66375
- }
66376
- pointerDown() {
66377
- return false;
66378
- }
66379
- pointerUp() {
66380
- return false;
66381
- }
66382
- onCancel() {}
66383
- onConfirm() {}
66384
- render(_context) {}
66385
- }
66386
-
66387
- // src/Tools/BoardTool.ts
66388
- class BoardTool extends Tool {
66389
- board;
66390
- constructor(board) {
66391
- super();
66392
- this.board = board;
66393
- }
66394
- }
66395
-
66396
66508
  // src/Tools/CustomTool.ts
66397
66509
  class CustomTool extends BoardTool {
66398
66510
  name;
@@ -66507,14 +66619,14 @@ var diceOverlay = {
66507
66619
  {
66508
66620
  id: "dice.throw",
66509
66621
  label: "Throw dice",
66510
- icon: overlaySymbolIcon("dice.throw"),
66622
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
66511
66623
  target: "each",
66512
66624
  invoke: { kind: "customMethod", methodName: "throwDice" }
66513
66625
  },
66514
66626
  {
66515
66627
  id: "dice.range",
66516
66628
  label: "Range",
66517
- icon: overlaySymbolIcon("dice.range"),
66629
+ icon: overlayAssetIcon("src/Items/Dice/icons/Range.icon.svg"),
66518
66630
  target: "each",
66519
66631
  controls: [
66520
66632
  {
@@ -66555,7 +66667,7 @@ var diceOverlay = {
66555
66667
  {
66556
66668
  id: "diceActions",
66557
66669
  label: "Dice",
66558
- icon: overlaySymbolIcon("dice.throw"),
66670
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
66559
66671
  actionIds: ["dice.throw", "dice.range", "dice.fill"]
66560
66672
  }
66561
66673
  ]
@@ -66566,14 +66678,14 @@ var addDiceToolOverlay = {
66566
66678
  kind: "create",
66567
66679
  createsItemType: "Dice",
66568
66680
  family: "game",
66569
- icon: overlaySymbolIcon("tool.dice"),
66681
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
66570
66682
  launch: { kind: "activate-tool" },
66571
66683
  surface: {
66572
66684
  order: 1,
66573
66685
  group: {
66574
66686
  id: "gameItems",
66575
66687
  label: "Game items",
66576
- icon: overlaySymbolIcon("tool.dice"),
66688
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
66577
66689
  order: 1,
66578
66690
  behavior: "open-panel"
66579
66691
  },
@@ -66926,7 +67038,7 @@ var screenOverlay = {
66926
67038
  id: "screen.background",
66927
67039
  label: "Background",
66928
67040
  icon: {
66929
- ...overlaySymbolIcon("screen.background"),
67041
+ ...overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
66930
67042
  state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
66931
67043
  },
66932
67044
  target: "each",
@@ -66948,7 +67060,7 @@ var screenOverlay = {
66948
67060
  id: "screen.stroke",
66949
67061
  label: "Stroke",
66950
67062
  icon: {
66951
- ...overlaySymbolIcon("shape.stroke"),
67063
+ ...overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
66952
67064
  state: { swatch: { kind: "itemProperty", property: "borderColor" } }
66953
67065
  },
66954
67066
  target: "each",
@@ -66984,7 +67096,7 @@ var screenOverlay = {
66984
67096
  {
66985
67097
  id: "screenStrokeStyle",
66986
67098
  label: "Stroke",
66987
- icon: overlaySymbolIcon("shape.stroke"),
67099
+ icon: overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
66988
67100
  controlIds: ["borderColor", "borderWidth"]
66989
67101
  }
66990
67102
  ]
@@ -66992,7 +67104,7 @@ var screenOverlay = {
66992
67104
  {
66993
67105
  id: "screen.backgroundImage",
66994
67106
  label: "Background image",
66995
- icon: overlaySymbolIcon("screen.backgroundImage"),
67107
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImage.icon.svg"),
66996
67108
  target: "each",
66997
67109
  when: {
66998
67110
  kind: "falsy",
@@ -67015,7 +67127,7 @@ var screenOverlay = {
67015
67127
  {
67016
67128
  id: "screen.removeBackgroundImage",
67017
67129
  label: "Remove background image",
67018
- icon: overlaySymbolIcon("screen.backgroundImage.remove"),
67130
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImageRemove.icon.svg"),
67019
67131
  target: "each",
67020
67132
  when: {
67021
67133
  kind: "truthy",
@@ -67032,7 +67144,7 @@ var screenOverlay = {
67032
67144
  {
67033
67145
  id: "screenAppearance",
67034
67146
  label: "Appearance",
67035
- icon: overlaySymbolIcon("screen.background"),
67147
+ icon: overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
67036
67148
  actionIds: ["screen.background", "screen.stroke", "screen.backgroundImage", "screen.removeBackgroundImage"]
67037
67149
  }
67038
67150
  ]
@@ -67043,14 +67155,14 @@ var addScreenToolOverlay = {
67043
67155
  kind: "create",
67044
67156
  createsItemType: "Screen",
67045
67157
  family: "container",
67046
- icon: overlaySymbolIcon("tool.screen"),
67158
+ icon: overlayAssetIcon("src/Items/Screen/icons/Tool.icon.svg"),
67047
67159
  launch: { kind: "activate-tool" },
67048
67160
  surface: {
67049
67161
  order: 2,
67050
67162
  group: {
67051
67163
  id: "gameItems",
67052
67164
  label: "Game items",
67053
- icon: overlaySymbolIcon("tool.dice"),
67165
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
67054
67166
  order: 1,
67055
67167
  behavior: "open-panel"
67056
67168
  },
@@ -67063,14 +67175,14 @@ var addPouchToolOverlay = {
67063
67175
  kind: "create",
67064
67176
  createsItemType: "Screen",
67065
67177
  family: "container",
67066
- icon: overlaySymbolIcon("tool.pouch"),
67178
+ icon: overlayAssetIcon("src/Items/Screen/icons/Pouch.icon.svg"),
67067
67179
  launch: { kind: "activate-tool" },
67068
67180
  surface: {
67069
67181
  order: 3,
67070
67182
  group: {
67071
67183
  id: "gameItems",
67072
67184
  label: "Game items",
67073
- icon: overlaySymbolIcon("tool.dice"),
67185
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
67074
67186
  order: 1,
67075
67187
  behavior: "open-panel"
67076
67188
  },
@@ -70196,6 +70308,125 @@ class Presence {
70196
70308
  }
70197
70309
  }
70198
70310
 
70311
+ // src/Selection/SelectionOverlay.ts
70312
+ function everyItemHasRichText(items) {
70313
+ return items.length > 0 && items.every((item) => !!item.getRichText?.());
70314
+ }
70315
+ registerSelectionAction({
70316
+ id: "selection.delete",
70317
+ label: "Delete",
70318
+ icon: overlayAssetIcon("src/Overlay/icons/Delete.icon.svg"),
70319
+ description: "Removes the selected items from the board.",
70320
+ invoke: { kind: "selectionMethod", methodName: "removeFromBoard" },
70321
+ isAvailable: (items) => items.length > 0
70322
+ });
70323
+ registerSelectionAction({
70324
+ id: "selection.duplicate",
70325
+ label: "Duplicate",
70326
+ icon: overlayAssetIcon("src/Overlay/icons/Duplicate.icon.svg"),
70327
+ description: "Duplicates the selected items.",
70328
+ invoke: { kind: "selectionMethod", methodName: "duplicate" },
70329
+ isAvailable: (items) => items.length > 0
70330
+ });
70331
+ registerSelectionAction({
70332
+ id: "selection.lock",
70333
+ label: "Lock",
70334
+ icon: overlayAssetIcon("src/Overlay/icons/Lock.icon.svg"),
70335
+ description: "Locks the selected items.",
70336
+ invoke: { kind: "selectionMethod", methodName: "lock" },
70337
+ isAvailable: (items) => items.length > 0 && !items.some((item) => item.transformation.isLocked)
70338
+ });
70339
+ registerSelectionAction({
70340
+ id: "selection.unlock",
70341
+ label: "Unlock",
70342
+ icon: overlayAssetIcon("src/Overlay/icons/Unlock.icon.svg"),
70343
+ description: "Unlocks the selected items.",
70344
+ invoke: { kind: "selectionMethod", methodName: "unlock" },
70345
+ isAvailable: (items) => items.some((item) => item.transformation.isLocked)
70346
+ });
70347
+ registerSelectionAction({
70348
+ id: "selection.bringToFront",
70349
+ label: "Bring to front",
70350
+ icon: overlayAssetIcon("src/Overlay/icons/BringToFront.icon.svg"),
70351
+ description: "Moves the selection above overlapping items.",
70352
+ invoke: { kind: "selectionMethod", methodName: "bringToFront" },
70353
+ isAvailable: (items) => items.length > 0
70354
+ });
70355
+ registerSelectionAction({
70356
+ id: "selection.sendToBack",
70357
+ label: "Send to back",
70358
+ icon: overlayAssetIcon("src/Overlay/icons/SendToBack.icon.svg"),
70359
+ description: "Moves the selection behind overlapping items.",
70360
+ invoke: { kind: "selectionMethod", methodName: "sendToBack" },
70361
+ isAvailable: (items) => items.length > 0
70362
+ });
70363
+ registerSelectionAction({
70364
+ id: "selection.text.fontSize",
70365
+ label: "Font size",
70366
+ icon: styleFontSizeIcon(),
70367
+ invoke: { kind: "selectionMethod", methodName: "setFontSize" },
70368
+ controls: [
70369
+ {
70370
+ id: "fontSize",
70371
+ label: "Font size",
70372
+ valueSource: { kind: "selectionProperty", property: "getFontSize" },
70373
+ editor: {
70374
+ kind: "number-stepper",
70375
+ min: 8,
70376
+ max: 144,
70377
+ step: 1,
70378
+ presets: [12, 14, 16, 18, 24, 32, 48],
70379
+ unit: "px"
70380
+ },
70381
+ invoke: { kind: "selectionMethod", methodName: "setFontSize" }
70382
+ }
70383
+ ],
70384
+ isAvailable: everyItemHasRichText
70385
+ });
70386
+ registerSelectionAction({
70387
+ id: "selection.text.color",
70388
+ label: "Text color",
70389
+ icon: styleColorIcon({
70390
+ swatch: { kind: "selectionProperty", property: "getFontColor" }
70391
+ }),
70392
+ invoke: { kind: "selectionMethod", methodName: "setFontColor" },
70393
+ controls: [
70394
+ {
70395
+ id: "fontColor",
70396
+ label: "Text color",
70397
+ valueSource: { kind: "selectionProperty", property: "getFontColor" },
70398
+ editor: {
70399
+ kind: "color",
70400
+ palette: ["#111111", "#FFFFFF", "#E11D48", "#2563EB", "#16A34A", "#F59E0B"]
70401
+ },
70402
+ invoke: { kind: "selectionMethod", methodName: "setFontColor" }
70403
+ }
70404
+ ],
70405
+ isAvailable: everyItemHasRichText
70406
+ });
70407
+ registerSelectionAction({
70408
+ id: "selection.text.highlight",
70409
+ label: "Highlight",
70410
+ icon: {
70411
+ ...overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
70412
+ state: { swatch: { kind: "selectionProperty", property: "getFontHighlight" } }
70413
+ },
70414
+ invoke: { kind: "selectionMethod", methodName: "setFontHighlight" },
70415
+ controls: [
70416
+ {
70417
+ id: "fontHighlight",
70418
+ label: "Highlight",
70419
+ valueSource: { kind: "selectionProperty", property: "getFontHighlight" },
70420
+ editor: {
70421
+ kind: "color",
70422
+ palette: ["transparent", "#FEF08A", "#FDBA74", "#BFDBFE", "#FBCFE8", "#D9F99D"]
70423
+ },
70424
+ invoke: { kind: "selectionMethod", methodName: "setFontHighlight" }
70425
+ }
70426
+ ],
70427
+ isAvailable: everyItemHasRichText
70428
+ });
70429
+
70199
70430
  // src/Selection/SelectionItems.ts
70200
70431
  class SelectionItems {
70201
70432
  items = new Map;
@@ -75035,7 +75266,7 @@ var addDrawingToolOverlay = {
75035
75266
  family: "drawing",
75036
75267
  createsItemType: "Drawing",
75037
75268
  icon: {
75038
- ...overlaySymbolIcon("tool.pen"),
75269
+ ...overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
75039
75270
  state: {
75040
75271
  swatch: { kind: "toolProperty", property: "strokeColor" },
75041
75272
  note: "UI can show the pending pen color in the icon."
@@ -75047,7 +75278,7 @@ var addDrawingToolOverlay = {
75047
75278
  {
75048
75279
  id: "drawingDefaults",
75049
75280
  label: "Pen defaults",
75050
- icon: overlaySymbolIcon("tool.pen"),
75281
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
75051
75282
  controlIds: strokeControls2.map((control) => control.id)
75052
75283
  }
75053
75284
  ]
@@ -75058,7 +75289,7 @@ var addDrawingToolOverlay = {
75058
75289
  group: {
75059
75290
  id: "drawingTools",
75060
75291
  label: "Drawing",
75061
- icon: overlaySymbolIcon("tool.pen"),
75292
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
75062
75293
  order: 5,
75063
75294
  behavior: "activate-last-used"
75064
75295
  },
@@ -75072,7 +75303,7 @@ var addHighlighterToolOverlay = {
75072
75303
  family: "drawing",
75073
75304
  createsItemType: "Drawing",
75074
75305
  icon: {
75075
- ...overlaySymbolIcon("tool.highlighter"),
75306
+ ...overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
75076
75307
  state: {
75077
75308
  swatch: { kind: "toolProperty", property: "strokeColor" },
75078
75309
  note: "UI can show the pending highlighter color in the icon."
@@ -75084,7 +75315,7 @@ var addHighlighterToolOverlay = {
75084
75315
  {
75085
75316
  id: "highlighterDefaults",
75086
75317
  label: "Highlighter defaults",
75087
- icon: overlaySymbolIcon("tool.highlighter"),
75318
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
75088
75319
  controlIds: strokeControls2.map((control) => control.id)
75089
75320
  }
75090
75321
  ]
@@ -75095,7 +75326,7 @@ var addHighlighterToolOverlay = {
75095
75326
  group: {
75096
75327
  id: "drawingTools",
75097
75328
  label: "Drawing",
75098
- icon: overlaySymbolIcon("tool.pen"),
75329
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
75099
75330
  order: 5,
75100
75331
  behavior: "activate-last-used"
75101
75332
  },
@@ -75107,7 +75338,7 @@ var eraserToolOverlay = {
75107
75338
  label: "Eraser",
75108
75339
  kind: "mode",
75109
75340
  family: "drawing",
75110
- icon: overlaySymbolIcon("tool.eraser"),
75341
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Eraser.icon.svg"),
75111
75342
  defaults: {
75112
75343
  controls: [
75113
75344
  {
@@ -75131,7 +75362,7 @@ var eraserToolOverlay = {
75131
75362
  group: {
75132
75363
  id: "drawingTools",
75133
75364
  label: "Drawing",
75134
- icon: overlaySymbolIcon("tool.pen"),
75365
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
75135
75366
  order: 5,
75136
75367
  behavior: "activate-last-used"
75137
75368
  },
@@ -75336,7 +75567,7 @@ var frameTypeOptions = Object.keys(Frames).map((frameType) => ({
75336
75567
  id: frameType,
75337
75568
  label: frameType === "Custom" ? "Custom" : Frames[frameType].name,
75338
75569
  value: frameType,
75339
- icon: overlaySymbolIcon(`frame.${frameType}`)
75570
+ icon: overlayAssetIcon(frameType === "Custom" ? "src/Items/Frame/Basic/Custom/Custom.icon.svg" : frameType === "A4" ? "src/Items/Frame/Basic/A4/A4.icon.svg" : frameType === "Letter" ? "src/Items/Frame/Basic/Letter/Letter.icon.svg" : frameType === "Frame16x9" ? "src/Items/Frame/Basic/16-9/16-9.icon.svg" : frameType === "Frame4x3" ? "src/Items/Frame/Basic/4-3/4-3.icon.svg" : frameType === "Frame1x1" ? "src/Items/Frame/Basic/1-1/1-1.icon.svg" : frameType === "Frame3x2" ? "src/Items/Frame/Basic/3-2/3-2.icon.svg" : "src/Items/Frame/Basic/9-18/9-18.icon.svg")
75340
75571
  }));
75341
75572
  var addFrameToolOverlay = {
75342
75573
  toolName: "AddFrame",
@@ -75344,7 +75575,7 @@ var addFrameToolOverlay = {
75344
75575
  kind: "create",
75345
75576
  createsItemType: "Frame",
75346
75577
  family: "frame",
75347
- icon: overlaySymbolIcon("tool.frame"),
75578
+ icon: overlayAssetIcon("src/Items/Frame/Frame.icon.svg"),
75348
75579
  defaults: {
75349
75580
  controls: [
75350
75581
  {
@@ -75726,7 +75957,7 @@ var addStickerToolOverlay = {
75726
75957
  createsItemType: "Sticker",
75727
75958
  family: "sticker",
75728
75959
  icon: {
75729
- ...overlaySymbolIcon("tool.sticker"),
75960
+ ...overlayAssetIcon("src/Items/Sticker/Path/Sticker.icon.svg"),
75730
75961
  state: {
75731
75962
  swatch: { kind: "toolProperty", property: "backgroundColor" }
75732
75963
  }
@@ -78254,6 +78485,7 @@ export {
78254
78485
  overlaySymbolIcon,
78255
78486
  overlayAssetIcon,
78256
78487
  omitDefaultProperties,
78488
+ normalizeOverlayIconAssetPath,
78257
78489
  messageRouter,
78258
78490
  meetsWCAG_AAA,
78259
78491
  meetsWCAG_AA,
@@ -78322,6 +78554,7 @@ export {
78322
78554
  calculatePosition,
78323
78555
  calculateAudioPosition,
78324
78556
  borderWidths,
78557
+ WorkflowTool,
78325
78558
  VideoItem,
78326
78559
  Transformation,
78327
78560
  Tools,
@@ -78354,6 +78587,7 @@ export {
78354
78587
  PRESENCE_CLEANUP_IDLE_TIMER,
78355
78588
  OVERLAY_SYMBOL_KEYS,
78356
78589
  OVERLAY_ICON_SPRITE_PATH,
78590
+ OVERLAY_ICON_ASSET_PREFIX,
78357
78591
  MiroItemConverter,
78358
78592
  Mbr,
78359
78593
  Matrix,