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
@@ -11499,7 +11499,11 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
11499
11499
  }
11500
11500
  }
11501
11501
  // src/Overlay/IconPack.ts
11502
- var OVERLAY_ICON_SPRITE_PATH = "src/Overlay/overlay-icons.svg";
11502
+ var OVERLAY_ICON_ASSET_PREFIX = "overlay-icons/";
11503
+ var OVERLAY_ICON_SPRITE_PATH = normalizeOverlayIconAssetPath("src/Overlay/overlay-icons.svg");
11504
+ function normalizeOverlayIconAssetPath(sourcePath) {
11505
+ return sourcePath.startsWith("src/") ? `${OVERLAY_ICON_ASSET_PREFIX}${sourcePath.slice(4)}` : sourcePath;
11506
+ }
11503
11507
  function overlaySymbolIcon(key) {
11504
11508
  return {
11505
11509
  kind: "symbol",
@@ -11507,10 +11511,18 @@ function overlaySymbolIcon(key) {
11507
11511
  sourcePath: OVERLAY_ICON_SPRITE_PATH
11508
11512
  };
11509
11513
  }
11510
- function overlayAssetIcon(path2) {
11511
- return {
11514
+ function overlayAssetIcon(sourcePath, state) {
11515
+ const path2 = normalizeOverlayIconAssetPath(sourcePath);
11516
+ return state ? {
11517
+ kind: "asset",
11518
+ path: path2,
11519
+ sourcePath,
11520
+ mimeType: "image/svg+xml",
11521
+ state
11522
+ } : {
11512
11523
  kind: "asset",
11513
11524
  path: path2,
11525
+ sourcePath,
11514
11526
  mimeType: "image/svg+xml"
11515
11527
  };
11516
11528
  }
@@ -11526,16 +11538,16 @@ function symbolIcon(key, state) {
11526
11538
  return state ? { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH, state } : { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH };
11527
11539
  }
11528
11540
  function styleFillIcon(state) {
11529
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFill, state);
11541
+ return overlayAssetIcon("src/Items/Shape/icons/Fill.icon.svg", state);
11530
11542
  }
11531
11543
  function styleStrokeIcon(state) {
11532
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleStroke, state);
11544
+ return overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg", state);
11533
11545
  }
11534
11546
  function styleColorIcon(state) {
11535
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleColor, state);
11547
+ return overlayAssetIcon("src/Items/Shape/icons/Color.icon.svg", state);
11536
11548
  }
11537
11549
  function styleFontSizeIcon(state) {
11538
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFontSize, state);
11550
+ return overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg", state);
11539
11551
  }
11540
11552
  // src/Overlay/overlayRegistry.ts
11541
11553
  var itemOverlays = {};
@@ -11670,10 +11682,23 @@ function compareEntriesByOrder(a, b) {
11670
11682
  return aOrder - bOrder || aLabel.localeCompare(bLabel);
11671
11683
  }
11672
11684
  function readOverlayValueSource(context, source) {
11685
+ if (source.kind === "selectionProperty") {
11686
+ return readOverlayContextProperty(context.selection, source.property);
11687
+ }
11673
11688
  if (source.kind === "itemProperty") {
11674
- return context.item ? context.item[source.property] : undefined;
11689
+ return readOverlayContextProperty(context.item, source.property);
11675
11690
  }
11676
- return context.tool ? context.tool[source.property] : undefined;
11691
+ return readOverlayContextProperty(context.tool, source.property);
11692
+ }
11693
+ function readOverlayContextProperty(target, property) {
11694
+ if (!target) {
11695
+ return;
11696
+ }
11697
+ const value = target[property];
11698
+ if (typeof value === "function") {
11699
+ return value.call(target);
11700
+ }
11701
+ return value;
11677
11702
  }
11678
11703
  // src/Items/BaseItem/BaseItem.ts
11679
11704
  class BaseItem {
@@ -37659,7 +37684,6 @@ var richTextOverlay = {
37659
37684
  id: "text.fontSize",
37660
37685
  label: "Font size",
37661
37686
  icon: styleFontSizeIcon(),
37662
- icon: styleFontSizeIcon(),
37663
37687
  target: "each",
37664
37688
  controls: [
37665
37689
  {
@@ -37682,7 +37706,7 @@ var richTextOverlay = {
37682
37706
  {
37683
37707
  id: "textTypography",
37684
37708
  label: "Typography",
37685
- icon: overlaySymbolIcon("text.fontSize"),
37709
+ icon: overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg"),
37686
37710
  actionIds: ["text.fontSize"]
37687
37711
  }
37688
37712
  ]
@@ -37693,7 +37717,7 @@ var addTextToolOverlay = {
37693
37717
  kind: "create",
37694
37718
  createsItemType: "RichText",
37695
37719
  family: "text",
37696
- icon: overlaySymbolIcon("tool.text"),
37720
+ icon: overlayAssetIcon("src/Items/RichText/icons/Text.icon.svg"),
37697
37721
  description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool.",
37698
37722
  launch: { kind: "activate-tool" },
37699
37723
  surface: {
@@ -44168,12 +44192,28 @@ var COLOR_PALETTE = [
44168
44192
  "#118AB2",
44169
44193
  "#7B61FF"
44170
44194
  ];
44171
- var symbolIcon2 = (key) => overlaySymbolIcon(key);
44195
+ var connectorAssetIcon = (file2) => overlayAssetIcon(`src/Items/Connector/icons/${file2}.icon.svg`);
44196
+ var lineStyleAssetIcons = {
44197
+ straight: connectorAssetIcon("LineStraight"),
44198
+ curved: connectorAssetIcon("LineCurved"),
44199
+ orthogonal: connectorAssetIcon("LineOrthogonal")
44200
+ };
44201
+ var pointerAssetIcons = {
44202
+ None: connectorAssetIcon("PointerNone"),
44203
+ ArrowThin: connectorAssetIcon("PointerArrowThin"),
44204
+ ArrowHeavy: connectorAssetIcon("PointerArrowHeavy"),
44205
+ TriangleFilled: connectorAssetIcon("PointerTriangleFilled"),
44206
+ TriangleOutline: connectorAssetIcon("PointerTriangleOutline"),
44207
+ CircleFilled: connectorAssetIcon("PointerCircleFilled"),
44208
+ CircleOutline: connectorAssetIcon("PointerCircleOutline"),
44209
+ DiamondFilled: connectorAssetIcon("PointerDiamondFilled"),
44210
+ DiamondOutline: connectorAssetIcon("PointerDiamondOutline")
44211
+ };
44172
44212
  var lineStyleOptions = ConnectorLineStyles.map((style) => ({
44173
44213
  id: style,
44174
44214
  label: style[0].toUpperCase() + style.slice(1),
44175
44215
  value: style,
44176
- icon: symbolIcon2(`connector.lineStyle.${style}`)
44216
+ icon: lineStyleAssetIcons[style]
44177
44217
  }));
44178
44218
  var lineWidthOptions = ConnectionLineWidths.map((width) => ({
44179
44219
  id: `${width}`,
@@ -44184,13 +44224,13 @@ var pointerOptions = CONNECTOR_POINTER_TYPES.map((pointer) => ({
44184
44224
  id: pointer,
44185
44225
  label: pointer,
44186
44226
  value: pointer,
44187
- icon: symbolIcon2(`connector.pointer.${pointer}`)
44227
+ icon: pointerAssetIcons[pointer]
44188
44228
  }));
44189
44229
  var borderStyleOptions = ["solid", "dot", "dash", "longDash"].map((style) => ({
44190
44230
  id: style,
44191
44231
  label: style,
44192
44232
  value: style,
44193
- icon: symbolIcon2(`stroke.${style}`)
44233
+ 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")
44194
44234
  }));
44195
44235
  var connectorStyleControls = [
44196
44236
  {
@@ -44245,7 +44285,7 @@ var connectorStyleControls = [
44245
44285
  {
44246
44286
  id: "smartJump",
44247
44287
  label: "Smart jump",
44248
- icon: symbolIcon2("connector.smartJump"),
44288
+ icon: connectorAssetIcon("SmartJump"),
44249
44289
  valueSource: { kind: "itemProperty", property: "smartJump" },
44250
44290
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44251
44291
  invoke: { kind: "setProperty", property: "smartJump" }
@@ -44304,7 +44344,7 @@ var connectorToolControls = [
44304
44344
  {
44305
44345
  id: "toolSmartJump",
44306
44346
  label: "Smart jump",
44307
- icon: symbolIcon2("connector.smartJump"),
44347
+ icon: connectorAssetIcon("SmartJump"),
44308
44348
  valueSource: { kind: "toolProperty", property: "smartJump" },
44309
44349
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44310
44350
  invoke: { kind: "toolProperty", property: "smartJump" }
@@ -44316,21 +44356,21 @@ var connectorOverlay = {
44316
44356
  {
44317
44357
  id: "connector.switchPointers",
44318
44358
  label: "Switch arrows",
44319
- icon: symbolIcon2("connector.switchPointers"),
44359
+ icon: connectorAssetIcon("SwitchPointers"),
44320
44360
  target: "selection",
44321
44361
  invoke: { kind: "operation", class: "Connector", method: "switchPointers" }
44322
44362
  },
44323
44363
  {
44324
44364
  id: "connector.style",
44325
44365
  label: "Connector style",
44326
- icon: symbolIcon2("connector.style"),
44366
+ icon: connectorAssetIcon("Style"),
44327
44367
  target: "each",
44328
44368
  controls: connectorStyleControls,
44329
44369
  groups: [
44330
44370
  {
44331
44371
  id: "connectorStyle",
44332
44372
  label: "Connector style",
44333
- icon: symbolIcon2("connector.style"),
44373
+ icon: connectorAssetIcon("Style"),
44334
44374
  controlIds: connectorStyleControls.map((control) => control.id)
44335
44375
  }
44336
44376
  ]
@@ -44340,7 +44380,7 @@ var connectorOverlay = {
44340
44380
  {
44341
44381
  id: "connectorArrows",
44342
44382
  label: "Arrows",
44343
- icon: symbolIcon2("connector.style"),
44383
+ icon: connectorAssetIcon("Style"),
44344
44384
  actionIds: ["connector.switchPointers", "connector.style"]
44345
44385
  }
44346
44386
  ]
@@ -44352,8 +44392,7 @@ var addConnectorToolOverlay = {
44352
44392
  createsItemType: "Connector",
44353
44393
  family: "connector",
44354
44394
  icon: {
44355
- kind: "symbol",
44356
- key: "tool.connector",
44395
+ ...connectorAssetIcon("Tool"),
44357
44396
  state: {
44358
44397
  swatch: { kind: "toolProperty", property: "lineColor" },
44359
44398
  note: "UI can tint or swatch the connector icon from the pending line color."
@@ -44365,14 +44404,14 @@ var addConnectorToolOverlay = {
44365
44404
  {
44366
44405
  id: "connectorToolQuickDefaults",
44367
44406
  label: "Connector quick defaults",
44368
- icon: symbolIcon2("connector.lineStyle.straight"),
44407
+ icon: connectorAssetIcon("LineStraight"),
44369
44408
  controlIds: ["toolLineStyle"],
44370
44409
  description: "Primary defaults that match the compact create-surface picker."
44371
44410
  },
44372
44411
  {
44373
44412
  id: "connectorToolAdvancedDefaults",
44374
44413
  label: "Connector defaults",
44375
- icon: symbolIcon2("connector.style"),
44414
+ icon: connectorAssetIcon("Style"),
44376
44415
  controlIds: connectorToolControls.map((control) => control.id),
44377
44416
  description: "Extended defaults available in richer create flows."
44378
44417
  }
@@ -58519,7 +58558,8 @@ var COLOR_PALETTE2 = [
58519
58558
  "transparent"
58520
58559
  ];
58521
58560
  var inlineShapeAsset = (folder, file2 = folder) => overlayAssetIcon(`src/Items/Shape/Basic/${folder}/${file2}.icon.svg`);
58522
- var symbolIcon3 = (key) => overlaySymbolIcon(key);
58561
+ var localShapeIcon = (file2) => overlayAssetIcon(`src/Items/Shape/icons/${file2}.icon.svg`);
58562
+ var bpmnIcon = (folder) => overlayAssetIcon(`src/Items/Shape/BPMN/${folder}/${folder}.icon.svg`);
58523
58563
  var BASIC_INLINE_OPTIONS = [
58524
58564
  { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle"), family: "basicShapes" },
58525
58565
  { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle"), family: "basicShapes" },
@@ -58529,48 +58569,48 @@ var BASIC_INLINE_OPTIONS = [
58529
58569
  ];
58530
58570
  var SHAPE_CATALOG_OPTIONS = [
58531
58571
  ...BASIC_INLINE_OPTIONS,
58532
- { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle"), family: "basicShapes" },
58572
+ { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: localShapeIcon("ReversedTriangle"), family: "basicShapes" },
58533
58573
  { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft"), family: "basicShapes" },
58534
58574
  { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight"), family: "basicShapes" },
58535
58575
  { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight"), family: "basicShapes" },
58536
- { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft"), family: "basicShapes" },
58537
- { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight"), family: "basicShapes" },
58576
+ { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: localShapeIcon("ArrowBlockLeft"), family: "basicShapes" },
58577
+ { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: localShapeIcon("ArrowBlockRight"), family: "basicShapes" },
58538
58578
  { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud"), family: "basicShapes" },
58539
58579
  { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross"), family: "basicShapes" },
58540
58580
  { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder"), family: "basicShapes" },
58541
58581
  { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon"), family: "basicShapes" },
58542
58582
  { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon"), family: "basicShapes" },
58543
58583
  { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram"), family: "basicShapes" },
58544
- { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram"), family: "basicShapes" },
58584
+ { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: localShapeIcon("ReversedParallelogram"), family: "basicShapes" },
58545
58585
  { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon"), family: "basicShapes" },
58546
- { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess"), family: "basicShapes" },
58586
+ { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: localShapeIcon("PredefinedProcess"), family: "basicShapes" },
58547
58587
  { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble"), family: "basicShapes" },
58548
58588
  { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star"), family: "basicShapes" },
58549
58589
  { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid"), family: "basicShapes" },
58550
58590
  { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft"), family: "basicShapes" },
58551
58591
  { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight"), family: "basicShapes" },
58552
- { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task"), family: "bpmn" },
58553
- { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway"), family: "bpmn" },
58554
- { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel"), family: "bpmn" },
58555
- { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor"), family: "bpmn" },
58556
- { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent"), family: "bpmn" },
58557
- { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting"), family: "bpmn" },
58558
- { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent"), family: "bpmn" },
58559
- { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent"), family: "bpmn" },
58560
- { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting"), family: "bpmn" },
58561
- { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject"), family: "bpmn" },
58562
- { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore"), family: "bpmn" },
58563
- { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant"), family: "bpmn" },
58564
- { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction"), family: "bpmn" },
58565
- { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess"), family: "bpmn" },
58566
- { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group"), family: "bpmn" },
58567
- { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation"), family: "bpmn" }
58592
+ { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: bpmnIcon("BPMN_Task"), family: "bpmn" },
58593
+ { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: bpmnIcon("BPMN_Gateway"), family: "bpmn" },
58594
+ { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: bpmnIcon("BPMN_GatewayParallel"), family: "bpmn" },
58595
+ { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: bpmnIcon("BPMN_GatewayXOR"), family: "bpmn" },
58596
+ { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: bpmnIcon("BPMN_StartEvent"), family: "bpmn" },
58597
+ { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: bpmnIcon("BPMN_StartEventNoneInterrupting"), family: "bpmn" },
58598
+ { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: bpmnIcon("BPMN_EndEvent"), family: "bpmn" },
58599
+ { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: bpmnIcon("BPMN_IntermediateEvent"), family: "bpmn" },
58600
+ { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: bpmnIcon("BPMN_IntermediateEventNoneInterrupting"), family: "bpmn" },
58601
+ { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: bpmnIcon("BPMN_DataObject"), family: "bpmn" },
58602
+ { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: bpmnIcon("BPMN_DataStore"), family: "bpmn" },
58603
+ { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: bpmnIcon("BPMN_Participant"), family: "bpmn" },
58604
+ { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: bpmnIcon("BPMN_Transaction"), family: "bpmn" },
58605
+ { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: bpmnIcon("BPMN_EventSubprocess"), family: "bpmn" },
58606
+ { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: bpmnIcon("BPMN_Group"), family: "bpmn" },
58607
+ { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: bpmnIcon("BPMN_Annotation"), family: "bpmn" }
58568
58608
  ];
58569
58609
  var BORDER_STYLE_OPTIONS = [
58570
- { id: "solid", label: "Solid", value: "solid", icon: symbolIcon3("stroke.solid") },
58571
- { id: "dot", label: "Dot", value: "dot", icon: symbolIcon3("stroke.dot") },
58572
- { id: "dash", label: "Dash", value: "dash", icon: symbolIcon3("stroke.dash") },
58573
- { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon3("stroke.longDash") }
58610
+ { id: "solid", label: "Solid", value: "solid", icon: localShapeIcon("StrokeSolid") },
58611
+ { id: "dot", label: "Dot", value: "dot", icon: localShapeIcon("StrokeDot") },
58612
+ { id: "dash", label: "Dash", value: "dash", icon: localShapeIcon("StrokeDash") },
58613
+ { id: "long-dash", label: "Long dash", value: "longDash", icon: localShapeIcon("StrokeLongDash") }
58574
58614
  ];
58575
58615
  var shapeTypeControl = {
58576
58616
  id: "shapeType",
@@ -58603,10 +58643,6 @@ var fillControl = {
58603
58643
  swatch: { kind: "itemProperty", property: "backgroundColor" },
58604
58644
  note: "UI can render the current fill color as a swatch inside the icon."
58605
58645
  }),
58606
- icon: styleFillIcon({
58607
- swatch: { kind: "itemProperty", property: "backgroundColor" },
58608
- note: "UI can render the current fill color as a swatch inside the icon."
58609
- }),
58610
58646
  editor: {
58611
58647
  kind: "color",
58612
58648
  palette: COLOR_PALETTE2,
@@ -58657,7 +58693,7 @@ var shapeOverlay = {
58657
58693
  {
58658
58694
  id: "shape.shapeType",
58659
58695
  label: "Shape type",
58660
- icon: symbolIcon3("shape.type"),
58696
+ icon: localShapeIcon("Type"),
58661
58697
  target: "each",
58662
58698
  controls: [shapeTypeControl]
58663
58699
  },
@@ -58688,13 +58724,13 @@ var shapeOverlay = {
58688
58724
  {
58689
58725
  id: "shapeTypeSection",
58690
58726
  label: "Type",
58691
- icon: symbolIcon3("shape.type"),
58727
+ icon: localShapeIcon("Type"),
58692
58728
  actionIds: ["shape.shapeType"]
58693
58729
  },
58694
58730
  {
58695
58731
  id: "shapeAppearanceSection",
58696
58732
  label: "Appearance",
58697
- icon: symbolIcon3("shape.stroke"),
58733
+ icon: localShapeIcon("Stroke"),
58698
58734
  actionIds: ["shape.fill", "shape.strokeStyle"]
58699
58735
  }
58700
58736
  ]
@@ -58706,7 +58742,7 @@ var addShapeToolOverlay = {
58706
58742
  createsItemType: "Shape",
58707
58743
  family: "shape",
58708
58744
  icon: {
58709
- ...overlaySymbolIcon("tool.shape"),
58745
+ ...overlayAssetIcon("src/Items/Shape/icons/Tool.icon.svg"),
58710
58746
  state: {
58711
58747
  note: "UI may swap the top-level icon to the selected shape option when desired."
58712
58748
  }
@@ -63139,6 +63175,68 @@ var propertyOps = {
63139
63175
  }
63140
63176
  };
63141
63177
 
63178
+ // src/Tools/Tool.ts
63179
+ class Tool {
63180
+ leftButtonDown() {
63181
+ return false;
63182
+ }
63183
+ leftButtonUp() {
63184
+ return false;
63185
+ }
63186
+ leftButtonDouble() {
63187
+ return false;
63188
+ }
63189
+ rightButtonDown() {
63190
+ return false;
63191
+ }
63192
+ rightButtonUp() {
63193
+ return false;
63194
+ }
63195
+ rightButtonDouble() {
63196
+ return false;
63197
+ }
63198
+ middleButtonDown() {
63199
+ return false;
63200
+ }
63201
+ middleButtonUp() {
63202
+ return false;
63203
+ }
63204
+ middleButtonDouble() {
63205
+ return false;
63206
+ }
63207
+ keyDown(_key) {
63208
+ return false;
63209
+ }
63210
+ keyUp(_key) {
63211
+ return false;
63212
+ }
63213
+ pointerMoveBy(_x, _y) {
63214
+ return false;
63215
+ }
63216
+ pointerDown() {
63217
+ return false;
63218
+ }
63219
+ pointerUp() {
63220
+ return false;
63221
+ }
63222
+ onCancel() {}
63223
+ onConfirm() {}
63224
+ render(_context) {}
63225
+ }
63226
+
63227
+ // src/Tools/BoardTool.ts
63228
+ class BoardTool extends Tool {
63229
+ board;
63230
+ constructor(board) {
63231
+ super();
63232
+ this.board = board;
63233
+ }
63234
+ }
63235
+
63236
+ // src/Tools/WorkflowTool.ts
63237
+ class WorkflowTool extends BoardTool {
63238
+ }
63239
+
63142
63240
  // src/Items/Card/CardOverlay.ts
63143
63241
  var cardOverlay = {
63144
63242
  itemType: "Card",
@@ -63146,14 +63244,14 @@ var cardOverlay = {
63146
63244
  {
63147
63245
  id: "card.flip",
63148
63246
  label: "Flip card",
63149
- icon: overlaySymbolIcon("card.flip"),
63247
+ icon: overlayAssetIcon("src/Items/Card/icons/Flip.icon.svg"),
63150
63248
  target: "each",
63151
63249
  invoke: { kind: "customMethod", methodName: "toggleIsOpen" }
63152
63250
  },
63153
63251
  {
63154
63252
  id: "card.rotateCcw",
63155
63253
  label: "Rotate 90 counter clockwise",
63156
- icon: overlaySymbolIcon("card.rotateCcw"),
63254
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCcw.icon.svg"),
63157
63255
  target: "each",
63158
63256
  invoke: {
63159
63257
  kind: "customMethod",
@@ -63164,7 +63262,7 @@ var cardOverlay = {
63164
63262
  {
63165
63263
  id: "card.rotateCw",
63166
63264
  label: "Rotate 90 clockwise",
63167
- icon: overlaySymbolIcon("card.rotateCw"),
63265
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCw.icon.svg"),
63168
63266
  target: "each",
63169
63267
  invoke: {
63170
63268
  kind: "customMethod",
@@ -63174,6 +63272,73 @@ var cardOverlay = {
63174
63272
  }
63175
63273
  ]
63176
63274
  };
63275
+ var addCardToolOverlay = {
63276
+ toolName: "AddCard",
63277
+ label: "Card",
63278
+ kind: "create",
63279
+ createsItemType: "Card",
63280
+ family: "game",
63281
+ icon: overlayAssetIcon("src/Items/Card/icons/Tool.icon.svg"),
63282
+ launch: {
63283
+ kind: "workflow",
63284
+ workflow: {
63285
+ kind: "property-sheet",
63286
+ description: "Upload front and back images for one or more cards.",
63287
+ submitLabel: "Create cards",
63288
+ controls: [
63289
+ {
63290
+ id: "cardArtwork",
63291
+ label: "Card artwork",
63292
+ editor: {
63293
+ kind: "asset-upload",
63294
+ mode: "paired",
63295
+ fields: [
63296
+ {
63297
+ id: "face",
63298
+ label: "Front",
63299
+ accept: ["image/*"],
63300
+ required: true
63301
+ },
63302
+ {
63303
+ id: "back",
63304
+ label: "Back",
63305
+ accept: ["image/*"],
63306
+ required: true
63307
+ }
63308
+ ]
63309
+ }
63310
+ }
63311
+ ],
63312
+ submit: {
63313
+ kind: "create-items",
63314
+ itemType: "Card",
63315
+ strategy: "per-upload-entry",
63316
+ placement: "stagger-from-pointer",
63317
+ properties: [
63318
+ {
63319
+ property: "faceUrl",
63320
+ source: { kind: "uploadField", controlId: "cardArtwork", fieldId: "face" }
63321
+ },
63322
+ {
63323
+ property: "backsideUrl",
63324
+ source: { kind: "uploadField", controlId: "cardArtwork", fieldId: "back" }
63325
+ }
63326
+ ]
63327
+ }
63328
+ }
63329
+ },
63330
+ surface: {
63331
+ order: 4,
63332
+ group: {
63333
+ id: "gameItems",
63334
+ label: "Game items",
63335
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
63336
+ order: 1,
63337
+ behavior: "open-panel"
63338
+ },
63339
+ relatedToolNames: ["AddDice", "AddScreen", "AddPouch"]
63340
+ }
63341
+ };
63177
63342
 
63178
63343
  // src/Items/Card/Card.ts
63179
63344
  var defaultCardData = {
@@ -63368,6 +63533,11 @@ registerItem({
63368
63533
  defaultData: defaultCardData,
63369
63534
  overlay: cardOverlay
63370
63535
  });
63536
+ registerTool({
63537
+ name: "AddCard",
63538
+ tool: WorkflowTool,
63539
+ overlay: addCardToolOverlay
63540
+ });
63371
63541
  registerHotkey({
63372
63542
  name: "Rotate90deg",
63373
63543
  hotkey: { key: { button: "KeyQ", shift: true }, label: { windows: "Shift+Q", mac: "⇧Q" } },
@@ -63418,28 +63588,28 @@ var deckOverlay = {
63418
63588
  {
63419
63589
  id: "deck.getTopCard",
63420
63590
  label: "Draw top card",
63421
- icon: overlaySymbolIcon("deck.drawTop"),
63591
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawTop.icon.svg"),
63422
63592
  target: "single",
63423
63593
  invoke: { kind: "customMethod", methodName: "getTopCard" }
63424
63594
  },
63425
63595
  {
63426
63596
  id: "deck.getBottomCard",
63427
63597
  label: "Draw bottom card",
63428
- icon: overlaySymbolIcon("deck.drawBottom"),
63598
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawBottom.icon.svg"),
63429
63599
  target: "single",
63430
63600
  invoke: { kind: "customMethod", methodName: "getBottomCard" }
63431
63601
  },
63432
63602
  {
63433
63603
  id: "deck.getRandomCard",
63434
63604
  label: "Draw random card",
63435
- icon: overlaySymbolIcon("deck.drawRandom"),
63605
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawRandom.icon.svg"),
63436
63606
  target: "single",
63437
63607
  invoke: { kind: "customMethod", methodName: "getRandomCard" }
63438
63608
  },
63439
63609
  {
63440
63610
  id: "deck.getCards",
63441
63611
  label: "Draw cards",
63442
- icon: overlaySymbolIcon("deck.drawMany"),
63612
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawMany.icon.svg"),
63443
63613
  target: "single",
63444
63614
  controls: [
63445
63615
  {
@@ -63461,14 +63631,14 @@ var deckOverlay = {
63461
63631
  {
63462
63632
  id: "deck.shuffle",
63463
63633
  label: "Shuffle",
63464
- icon: overlaySymbolIcon("deck.shuffle"),
63634
+ icon: overlayAssetIcon("src/Items/Deck/icons/Shuffle.icon.svg"),
63465
63635
  target: "single",
63466
63636
  invoke: { kind: "customMethod", methodName: "shuffleDeck" }
63467
63637
  },
63468
63638
  {
63469
63639
  id: "deck.flip",
63470
63640
  label: "Flip deck",
63471
- icon: overlaySymbolIcon("deck.flip"),
63641
+ icon: overlayAssetIcon("src/Items/Deck/icons/Flip.icon.svg"),
63472
63642
  target: "single",
63473
63643
  invoke: { kind: "customMethod", methodName: "flipDeck" }
63474
63644
  }
@@ -63477,7 +63647,7 @@ var deckOverlay = {
63477
63647
  var createDeckSelectionAction = {
63478
63648
  id: "deck.createFromSelection",
63479
63649
  label: "Create deck",
63480
- icon: overlaySymbolIcon("deck.createFromSelection"),
63650
+ icon: overlayAssetIcon("src/Items/Deck/icons/CreateFromSelection.icon.svg"),
63481
63651
  description: "Stacks selected cards into a new deck, or merges selected cards and decks into one deck.",
63482
63652
  invoke: { kind: "selectionMethod", methodName: "createDeck" },
63483
63653
  isAvailable: (items) => {
@@ -63874,64 +64044,6 @@ registerHotkey({
63874
64044
  }
63875
64045
  });
63876
64046
  registerSelectionAction(createDeckSelectionAction);
63877
- // src/Tools/Tool.ts
63878
- class Tool {
63879
- leftButtonDown() {
63880
- return false;
63881
- }
63882
- leftButtonUp() {
63883
- return false;
63884
- }
63885
- leftButtonDouble() {
63886
- return false;
63887
- }
63888
- rightButtonDown() {
63889
- return false;
63890
- }
63891
- rightButtonUp() {
63892
- return false;
63893
- }
63894
- rightButtonDouble() {
63895
- return false;
63896
- }
63897
- middleButtonDown() {
63898
- return false;
63899
- }
63900
- middleButtonUp() {
63901
- return false;
63902
- }
63903
- middleButtonDouble() {
63904
- return false;
63905
- }
63906
- keyDown(_key) {
63907
- return false;
63908
- }
63909
- keyUp(_key) {
63910
- return false;
63911
- }
63912
- pointerMoveBy(_x, _y) {
63913
- return false;
63914
- }
63915
- pointerDown() {
63916
- return false;
63917
- }
63918
- pointerUp() {
63919
- return false;
63920
- }
63921
- onCancel() {}
63922
- onConfirm() {}
63923
- render(_context) {}
63924
- }
63925
-
63926
- // src/Tools/BoardTool.ts
63927
- class BoardTool extends Tool {
63928
- board;
63929
- constructor(board) {
63930
- super();
63931
- this.board = board;
63932
- }
63933
- }
63934
-
63935
64047
  // src/Tools/CustomTool.ts
63936
64048
  class CustomTool extends BoardTool {
63937
64049
  name;
@@ -64046,14 +64158,14 @@ var diceOverlay = {
64046
64158
  {
64047
64159
  id: "dice.throw",
64048
64160
  label: "Throw dice",
64049
- icon: overlaySymbolIcon("dice.throw"),
64161
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
64050
64162
  target: "each",
64051
64163
  invoke: { kind: "customMethod", methodName: "throwDice" }
64052
64164
  },
64053
64165
  {
64054
64166
  id: "dice.range",
64055
64167
  label: "Range",
64056
- icon: overlaySymbolIcon("dice.range"),
64168
+ icon: overlayAssetIcon("src/Items/Dice/icons/Range.icon.svg"),
64057
64169
  target: "each",
64058
64170
  controls: [
64059
64171
  {
@@ -64094,7 +64206,7 @@ var diceOverlay = {
64094
64206
  {
64095
64207
  id: "diceActions",
64096
64208
  label: "Dice",
64097
- icon: overlaySymbolIcon("dice.throw"),
64209
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
64098
64210
  actionIds: ["dice.throw", "dice.range", "dice.fill"]
64099
64211
  }
64100
64212
  ]
@@ -64105,14 +64217,14 @@ var addDiceToolOverlay = {
64105
64217
  kind: "create",
64106
64218
  createsItemType: "Dice",
64107
64219
  family: "game",
64108
- icon: overlaySymbolIcon("tool.dice"),
64220
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64109
64221
  launch: { kind: "activate-tool" },
64110
64222
  surface: {
64111
64223
  order: 1,
64112
64224
  group: {
64113
64225
  id: "gameItems",
64114
64226
  label: "Game items",
64115
- icon: overlaySymbolIcon("tool.dice"),
64227
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64116
64228
  order: 1,
64117
64229
  behavior: "open-panel"
64118
64230
  },
@@ -64465,7 +64577,7 @@ var screenOverlay = {
64465
64577
  id: "screen.background",
64466
64578
  label: "Background",
64467
64579
  icon: {
64468
- ...overlaySymbolIcon("screen.background"),
64580
+ ...overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
64469
64581
  state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
64470
64582
  },
64471
64583
  target: "each",
@@ -64487,7 +64599,7 @@ var screenOverlay = {
64487
64599
  id: "screen.stroke",
64488
64600
  label: "Stroke",
64489
64601
  icon: {
64490
- ...overlaySymbolIcon("shape.stroke"),
64602
+ ...overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
64491
64603
  state: { swatch: { kind: "itemProperty", property: "borderColor" } }
64492
64604
  },
64493
64605
  target: "each",
@@ -64523,7 +64635,7 @@ var screenOverlay = {
64523
64635
  {
64524
64636
  id: "screenStrokeStyle",
64525
64637
  label: "Stroke",
64526
- icon: overlaySymbolIcon("shape.stroke"),
64638
+ icon: overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
64527
64639
  controlIds: ["borderColor", "borderWidth"]
64528
64640
  }
64529
64641
  ]
@@ -64531,7 +64643,7 @@ var screenOverlay = {
64531
64643
  {
64532
64644
  id: "screen.backgroundImage",
64533
64645
  label: "Background image",
64534
- icon: overlaySymbolIcon("screen.backgroundImage"),
64646
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImage.icon.svg"),
64535
64647
  target: "each",
64536
64648
  when: {
64537
64649
  kind: "falsy",
@@ -64554,7 +64666,7 @@ var screenOverlay = {
64554
64666
  {
64555
64667
  id: "screen.removeBackgroundImage",
64556
64668
  label: "Remove background image",
64557
- icon: overlaySymbolIcon("screen.backgroundImage.remove"),
64669
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImageRemove.icon.svg"),
64558
64670
  target: "each",
64559
64671
  when: {
64560
64672
  kind: "truthy",
@@ -64571,7 +64683,7 @@ var screenOverlay = {
64571
64683
  {
64572
64684
  id: "screenAppearance",
64573
64685
  label: "Appearance",
64574
- icon: overlaySymbolIcon("screen.background"),
64686
+ icon: overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
64575
64687
  actionIds: ["screen.background", "screen.stroke", "screen.backgroundImage", "screen.removeBackgroundImage"]
64576
64688
  }
64577
64689
  ]
@@ -64582,14 +64694,14 @@ var addScreenToolOverlay = {
64582
64694
  kind: "create",
64583
64695
  createsItemType: "Screen",
64584
64696
  family: "container",
64585
- icon: overlaySymbolIcon("tool.screen"),
64697
+ icon: overlayAssetIcon("src/Items/Screen/icons/Tool.icon.svg"),
64586
64698
  launch: { kind: "activate-tool" },
64587
64699
  surface: {
64588
64700
  order: 2,
64589
64701
  group: {
64590
64702
  id: "gameItems",
64591
64703
  label: "Game items",
64592
- icon: overlaySymbolIcon("tool.dice"),
64704
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64593
64705
  order: 1,
64594
64706
  behavior: "open-panel"
64595
64707
  },
@@ -64602,14 +64714,14 @@ var addPouchToolOverlay = {
64602
64714
  kind: "create",
64603
64715
  createsItemType: "Screen",
64604
64716
  family: "container",
64605
- icon: overlaySymbolIcon("tool.pouch"),
64717
+ icon: overlayAssetIcon("src/Items/Screen/icons/Pouch.icon.svg"),
64606
64718
  launch: { kind: "activate-tool" },
64607
64719
  surface: {
64608
64720
  order: 3,
64609
64721
  group: {
64610
64722
  id: "gameItems",
64611
64723
  label: "Game items",
64612
- icon: overlaySymbolIcon("tool.dice"),
64724
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64613
64725
  order: 1,
64614
64726
  behavior: "open-panel"
64615
64727
  },
@@ -67735,6 +67847,125 @@ class Presence {
67735
67847
  }
67736
67848
  }
67737
67849
 
67850
+ // src/Selection/SelectionOverlay.ts
67851
+ function everyItemHasRichText(items) {
67852
+ return items.length > 0 && items.every((item) => !!item.getRichText?.());
67853
+ }
67854
+ registerSelectionAction({
67855
+ id: "selection.delete",
67856
+ label: "Delete",
67857
+ icon: overlayAssetIcon("src/Overlay/icons/Delete.icon.svg"),
67858
+ description: "Removes the selected items from the board.",
67859
+ invoke: { kind: "selectionMethod", methodName: "removeFromBoard" },
67860
+ isAvailable: (items) => items.length > 0
67861
+ });
67862
+ registerSelectionAction({
67863
+ id: "selection.duplicate",
67864
+ label: "Duplicate",
67865
+ icon: overlayAssetIcon("src/Overlay/icons/Duplicate.icon.svg"),
67866
+ description: "Duplicates the selected items.",
67867
+ invoke: { kind: "selectionMethod", methodName: "duplicate" },
67868
+ isAvailable: (items) => items.length > 0
67869
+ });
67870
+ registerSelectionAction({
67871
+ id: "selection.lock",
67872
+ label: "Lock",
67873
+ icon: overlayAssetIcon("src/Overlay/icons/Lock.icon.svg"),
67874
+ description: "Locks the selected items.",
67875
+ invoke: { kind: "selectionMethod", methodName: "lock" },
67876
+ isAvailable: (items) => items.length > 0 && !items.some((item) => item.transformation.isLocked)
67877
+ });
67878
+ registerSelectionAction({
67879
+ id: "selection.unlock",
67880
+ label: "Unlock",
67881
+ icon: overlayAssetIcon("src/Overlay/icons/Unlock.icon.svg"),
67882
+ description: "Unlocks the selected items.",
67883
+ invoke: { kind: "selectionMethod", methodName: "unlock" },
67884
+ isAvailable: (items) => items.some((item) => item.transformation.isLocked)
67885
+ });
67886
+ registerSelectionAction({
67887
+ id: "selection.bringToFront",
67888
+ label: "Bring to front",
67889
+ icon: overlayAssetIcon("src/Overlay/icons/BringToFront.icon.svg"),
67890
+ description: "Moves the selection above overlapping items.",
67891
+ invoke: { kind: "selectionMethod", methodName: "bringToFront" },
67892
+ isAvailable: (items) => items.length > 0
67893
+ });
67894
+ registerSelectionAction({
67895
+ id: "selection.sendToBack",
67896
+ label: "Send to back",
67897
+ icon: overlayAssetIcon("src/Overlay/icons/SendToBack.icon.svg"),
67898
+ description: "Moves the selection behind overlapping items.",
67899
+ invoke: { kind: "selectionMethod", methodName: "sendToBack" },
67900
+ isAvailable: (items) => items.length > 0
67901
+ });
67902
+ registerSelectionAction({
67903
+ id: "selection.text.fontSize",
67904
+ label: "Font size",
67905
+ icon: styleFontSizeIcon(),
67906
+ invoke: { kind: "selectionMethod", methodName: "setFontSize" },
67907
+ controls: [
67908
+ {
67909
+ id: "fontSize",
67910
+ label: "Font size",
67911
+ valueSource: { kind: "selectionProperty", property: "getFontSize" },
67912
+ editor: {
67913
+ kind: "number-stepper",
67914
+ min: 8,
67915
+ max: 144,
67916
+ step: 1,
67917
+ presets: [12, 14, 16, 18, 24, 32, 48],
67918
+ unit: "px"
67919
+ },
67920
+ invoke: { kind: "selectionMethod", methodName: "setFontSize" }
67921
+ }
67922
+ ],
67923
+ isAvailable: everyItemHasRichText
67924
+ });
67925
+ registerSelectionAction({
67926
+ id: "selection.text.color",
67927
+ label: "Text color",
67928
+ icon: styleColorIcon({
67929
+ swatch: { kind: "selectionProperty", property: "getFontColor" }
67930
+ }),
67931
+ invoke: { kind: "selectionMethod", methodName: "setFontColor" },
67932
+ controls: [
67933
+ {
67934
+ id: "fontColor",
67935
+ label: "Text color",
67936
+ valueSource: { kind: "selectionProperty", property: "getFontColor" },
67937
+ editor: {
67938
+ kind: "color",
67939
+ palette: ["#111111", "#FFFFFF", "#E11D48", "#2563EB", "#16A34A", "#F59E0B"]
67940
+ },
67941
+ invoke: { kind: "selectionMethod", methodName: "setFontColor" }
67942
+ }
67943
+ ],
67944
+ isAvailable: everyItemHasRichText
67945
+ });
67946
+ registerSelectionAction({
67947
+ id: "selection.text.highlight",
67948
+ label: "Highlight",
67949
+ icon: {
67950
+ ...overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
67951
+ state: { swatch: { kind: "selectionProperty", property: "getFontHighlight" } }
67952
+ },
67953
+ invoke: { kind: "selectionMethod", methodName: "setFontHighlight" },
67954
+ controls: [
67955
+ {
67956
+ id: "fontHighlight",
67957
+ label: "Highlight",
67958
+ valueSource: { kind: "selectionProperty", property: "getFontHighlight" },
67959
+ editor: {
67960
+ kind: "color",
67961
+ palette: ["transparent", "#FEF08A", "#FDBA74", "#BFDBFE", "#FBCFE8", "#D9F99D"]
67962
+ },
67963
+ invoke: { kind: "selectionMethod", methodName: "setFontHighlight" }
67964
+ }
67965
+ ],
67966
+ isAvailable: everyItemHasRichText
67967
+ });
67968
+
67738
67969
  // src/Selection/SelectionItems.ts
67739
67970
  class SelectionItems {
67740
67971
  items = new Map;
@@ -72574,7 +72805,7 @@ var addDrawingToolOverlay = {
72574
72805
  family: "drawing",
72575
72806
  createsItemType: "Drawing",
72576
72807
  icon: {
72577
- ...overlaySymbolIcon("tool.pen"),
72808
+ ...overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72578
72809
  state: {
72579
72810
  swatch: { kind: "toolProperty", property: "strokeColor" },
72580
72811
  note: "UI can show the pending pen color in the icon."
@@ -72586,7 +72817,7 @@ var addDrawingToolOverlay = {
72586
72817
  {
72587
72818
  id: "drawingDefaults",
72588
72819
  label: "Pen defaults",
72589
- icon: overlaySymbolIcon("tool.pen"),
72820
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72590
72821
  controlIds: strokeControls2.map((control) => control.id)
72591
72822
  }
72592
72823
  ]
@@ -72597,7 +72828,7 @@ var addDrawingToolOverlay = {
72597
72828
  group: {
72598
72829
  id: "drawingTools",
72599
72830
  label: "Drawing",
72600
- icon: overlaySymbolIcon("tool.pen"),
72831
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72601
72832
  order: 5,
72602
72833
  behavior: "activate-last-used"
72603
72834
  },
@@ -72611,7 +72842,7 @@ var addHighlighterToolOverlay = {
72611
72842
  family: "drawing",
72612
72843
  createsItemType: "Drawing",
72613
72844
  icon: {
72614
- ...overlaySymbolIcon("tool.highlighter"),
72845
+ ...overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
72615
72846
  state: {
72616
72847
  swatch: { kind: "toolProperty", property: "strokeColor" },
72617
72848
  note: "UI can show the pending highlighter color in the icon."
@@ -72623,7 +72854,7 @@ var addHighlighterToolOverlay = {
72623
72854
  {
72624
72855
  id: "highlighterDefaults",
72625
72856
  label: "Highlighter defaults",
72626
- icon: overlaySymbolIcon("tool.highlighter"),
72857
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
72627
72858
  controlIds: strokeControls2.map((control) => control.id)
72628
72859
  }
72629
72860
  ]
@@ -72634,7 +72865,7 @@ var addHighlighterToolOverlay = {
72634
72865
  group: {
72635
72866
  id: "drawingTools",
72636
72867
  label: "Drawing",
72637
- icon: overlaySymbolIcon("tool.pen"),
72868
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72638
72869
  order: 5,
72639
72870
  behavior: "activate-last-used"
72640
72871
  },
@@ -72646,7 +72877,7 @@ var eraserToolOverlay = {
72646
72877
  label: "Eraser",
72647
72878
  kind: "mode",
72648
72879
  family: "drawing",
72649
- icon: overlaySymbolIcon("tool.eraser"),
72880
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Eraser.icon.svg"),
72650
72881
  defaults: {
72651
72882
  controls: [
72652
72883
  {
@@ -72670,7 +72901,7 @@ var eraserToolOverlay = {
72670
72901
  group: {
72671
72902
  id: "drawingTools",
72672
72903
  label: "Drawing",
72673
- icon: overlaySymbolIcon("tool.pen"),
72904
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72674
72905
  order: 5,
72675
72906
  behavior: "activate-last-used"
72676
72907
  },
@@ -72875,7 +73106,7 @@ var frameTypeOptions = Object.keys(Frames).map((frameType) => ({
72875
73106
  id: frameType,
72876
73107
  label: frameType === "Custom" ? "Custom" : Frames[frameType].name,
72877
73108
  value: frameType,
72878
- icon: overlaySymbolIcon(`frame.${frameType}`)
73109
+ 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")
72879
73110
  }));
72880
73111
  var addFrameToolOverlay = {
72881
73112
  toolName: "AddFrame",
@@ -72883,7 +73114,7 @@ var addFrameToolOverlay = {
72883
73114
  kind: "create",
72884
73115
  createsItemType: "Frame",
72885
73116
  family: "frame",
72886
- icon: overlaySymbolIcon("tool.frame"),
73117
+ icon: overlayAssetIcon("src/Items/Frame/Frame.icon.svg"),
72887
73118
  defaults: {
72888
73119
  controls: [
72889
73120
  {
@@ -73265,7 +73496,7 @@ var addStickerToolOverlay = {
73265
73496
  createsItemType: "Sticker",
73266
73497
  family: "sticker",
73267
73498
  icon: {
73268
- ...overlaySymbolIcon("tool.sticker"),
73499
+ ...overlayAssetIcon("src/Items/Sticker/Path/Sticker.icon.svg"),
73269
73500
  state: {
73270
73501
  swatch: { kind: "toolProperty", property: "backgroundColor" }
73271
73502
  }
@@ -75721,6 +75952,7 @@ export {
75721
75952
  overlaySymbolIcon,
75722
75953
  overlayAssetIcon,
75723
75954
  omitDefaultProperties,
75955
+ normalizeOverlayIconAssetPath,
75724
75956
  messageRouter,
75725
75957
  meetsWCAG_AAA,
75726
75958
  meetsWCAG_AA,
@@ -75789,6 +76021,7 @@ export {
75789
76021
  calculatePosition,
75790
76022
  calculateAudioPosition,
75791
76023
  borderWidths,
76024
+ WorkflowTool,
75792
76025
  VideoItem,
75793
76026
  Transformation,
75794
76027
  Tools,
@@ -75821,6 +76054,7 @@ export {
75821
76054
  PRESENCE_CLEANUP_IDLE_TIMER,
75822
76055
  OVERLAY_SYMBOL_KEYS,
75823
76056
  OVERLAY_ICON_SPRITE_PATH,
76057
+ OVERLAY_ICON_ASSET_PREFIX,
75824
76058
  MiroItemConverter,
75825
76059
  Mbr,
75826
76060
  Matrix,