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/index.js CHANGED
@@ -11492,7 +11492,11 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
11492
11492
  }
11493
11493
  }
11494
11494
  // src/Overlay/IconPack.ts
11495
- var OVERLAY_ICON_SPRITE_PATH = "src/Overlay/overlay-icons.svg";
11495
+ var OVERLAY_ICON_ASSET_PREFIX = "overlay-icons/";
11496
+ var OVERLAY_ICON_SPRITE_PATH = normalizeOverlayIconAssetPath("src/Overlay/overlay-icons.svg");
11497
+ function normalizeOverlayIconAssetPath(sourcePath) {
11498
+ return sourcePath.startsWith("src/") ? `${OVERLAY_ICON_ASSET_PREFIX}${sourcePath.slice(4)}` : sourcePath;
11499
+ }
11496
11500
  function overlaySymbolIcon(key) {
11497
11501
  return {
11498
11502
  kind: "symbol",
@@ -11500,10 +11504,18 @@ function overlaySymbolIcon(key) {
11500
11504
  sourcePath: OVERLAY_ICON_SPRITE_PATH
11501
11505
  };
11502
11506
  }
11503
- function overlayAssetIcon(path2) {
11504
- return {
11507
+ function overlayAssetIcon(sourcePath, state) {
11508
+ const path2 = normalizeOverlayIconAssetPath(sourcePath);
11509
+ return state ? {
11510
+ kind: "asset",
11511
+ path: path2,
11512
+ sourcePath,
11513
+ mimeType: "image/svg+xml",
11514
+ state
11515
+ } : {
11505
11516
  kind: "asset",
11506
11517
  path: path2,
11518
+ sourcePath,
11507
11519
  mimeType: "image/svg+xml"
11508
11520
  };
11509
11521
  }
@@ -11519,16 +11531,16 @@ function symbolIcon(key, state) {
11519
11531
  return state ? { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH, state } : { kind: "symbol", key, sourcePath: OVERLAY_ICON_SPRITE_PATH };
11520
11532
  }
11521
11533
  function styleFillIcon(state) {
11522
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFill, state);
11534
+ return overlayAssetIcon("src/Items/Shape/icons/Fill.icon.svg", state);
11523
11535
  }
11524
11536
  function styleStrokeIcon(state) {
11525
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleStroke, state);
11537
+ return overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg", state);
11526
11538
  }
11527
11539
  function styleColorIcon(state) {
11528
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleColor, state);
11540
+ return overlayAssetIcon("src/Items/Shape/icons/Color.icon.svg", state);
11529
11541
  }
11530
11542
  function styleFontSizeIcon(state) {
11531
- return symbolIcon(OVERLAY_SYMBOL_KEYS.styleFontSize, state);
11543
+ return overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg", state);
11532
11544
  }
11533
11545
  // src/Overlay/overlayRegistry.ts
11534
11546
  var itemOverlays = {};
@@ -11663,10 +11675,23 @@ function compareEntriesByOrder(a, b) {
11663
11675
  return aOrder - bOrder || aLabel.localeCompare(bLabel);
11664
11676
  }
11665
11677
  function readOverlayValueSource(context, source) {
11678
+ if (source.kind === "selectionProperty") {
11679
+ return readOverlayContextProperty(context.selection, source.property);
11680
+ }
11666
11681
  if (source.kind === "itemProperty") {
11667
- return context.item ? context.item[source.property] : undefined;
11682
+ return readOverlayContextProperty(context.item, source.property);
11668
11683
  }
11669
- return context.tool ? context.tool[source.property] : undefined;
11684
+ return readOverlayContextProperty(context.tool, source.property);
11685
+ }
11686
+ function readOverlayContextProperty(target, property) {
11687
+ if (!target) {
11688
+ return;
11689
+ }
11690
+ const value = target[property];
11691
+ if (typeof value === "function") {
11692
+ return value.call(target);
11693
+ }
11694
+ return value;
11670
11695
  }
11671
11696
  // src/Items/BaseItem/BaseItem.ts
11672
11697
  class BaseItem {
@@ -37652,7 +37677,6 @@ var richTextOverlay = {
37652
37677
  id: "text.fontSize",
37653
37678
  label: "Font size",
37654
37679
  icon: styleFontSizeIcon(),
37655
- icon: styleFontSizeIcon(),
37656
37680
  target: "each",
37657
37681
  controls: [
37658
37682
  {
@@ -37675,7 +37699,7 @@ var richTextOverlay = {
37675
37699
  {
37676
37700
  id: "textTypography",
37677
37701
  label: "Typography",
37678
- icon: overlaySymbolIcon("text.fontSize"),
37702
+ icon: overlayAssetIcon("src/Items/RichText/icons/FontSize.icon.svg"),
37679
37703
  actionIds: ["text.fontSize"]
37680
37704
  }
37681
37705
  ]
@@ -37686,7 +37710,7 @@ var addTextToolOverlay = {
37686
37710
  kind: "create",
37687
37711
  createsItemType: "RichText",
37688
37712
  family: "text",
37689
- icon: overlaySymbolIcon("tool.text"),
37713
+ icon: overlayAssetIcon("src/Items/RichText/icons/Text.icon.svg"),
37690
37714
  description: "Creates editable rich text. The current first pass has no pre-placement defaults on this tool.",
37691
37715
  launch: { kind: "activate-tool" },
37692
37716
  surface: {
@@ -44161,12 +44185,28 @@ var COLOR_PALETTE = [
44161
44185
  "#118AB2",
44162
44186
  "#7B61FF"
44163
44187
  ];
44164
- var symbolIcon2 = (key) => overlaySymbolIcon(key);
44188
+ var connectorAssetIcon = (file2) => overlayAssetIcon(`src/Items/Connector/icons/${file2}.icon.svg`);
44189
+ var lineStyleAssetIcons = {
44190
+ straight: connectorAssetIcon("LineStraight"),
44191
+ curved: connectorAssetIcon("LineCurved"),
44192
+ orthogonal: connectorAssetIcon("LineOrthogonal")
44193
+ };
44194
+ var pointerAssetIcons = {
44195
+ None: connectorAssetIcon("PointerNone"),
44196
+ ArrowThin: connectorAssetIcon("PointerArrowThin"),
44197
+ ArrowHeavy: connectorAssetIcon("PointerArrowHeavy"),
44198
+ TriangleFilled: connectorAssetIcon("PointerTriangleFilled"),
44199
+ TriangleOutline: connectorAssetIcon("PointerTriangleOutline"),
44200
+ CircleFilled: connectorAssetIcon("PointerCircleFilled"),
44201
+ CircleOutline: connectorAssetIcon("PointerCircleOutline"),
44202
+ DiamondFilled: connectorAssetIcon("PointerDiamondFilled"),
44203
+ DiamondOutline: connectorAssetIcon("PointerDiamondOutline")
44204
+ };
44165
44205
  var lineStyleOptions = ConnectorLineStyles.map((style) => ({
44166
44206
  id: style,
44167
44207
  label: style[0].toUpperCase() + style.slice(1),
44168
44208
  value: style,
44169
- icon: symbolIcon2(`connector.lineStyle.${style}`)
44209
+ icon: lineStyleAssetIcons[style]
44170
44210
  }));
44171
44211
  var lineWidthOptions = ConnectionLineWidths.map((width) => ({
44172
44212
  id: `${width}`,
@@ -44177,13 +44217,13 @@ var pointerOptions = CONNECTOR_POINTER_TYPES.map((pointer) => ({
44177
44217
  id: pointer,
44178
44218
  label: pointer,
44179
44219
  value: pointer,
44180
- icon: symbolIcon2(`connector.pointer.${pointer}`)
44220
+ icon: pointerAssetIcons[pointer]
44181
44221
  }));
44182
44222
  var borderStyleOptions = ["solid", "dot", "dash", "longDash"].map((style) => ({
44183
44223
  id: style,
44184
44224
  label: style,
44185
44225
  value: style,
44186
- icon: symbolIcon2(`stroke.${style}`)
44226
+ 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")
44187
44227
  }));
44188
44228
  var connectorStyleControls = [
44189
44229
  {
@@ -44238,7 +44278,7 @@ var connectorStyleControls = [
44238
44278
  {
44239
44279
  id: "smartJump",
44240
44280
  label: "Smart jump",
44241
- icon: symbolIcon2("connector.smartJump"),
44281
+ icon: connectorAssetIcon("SmartJump"),
44242
44282
  valueSource: { kind: "itemProperty", property: "smartJump" },
44243
44283
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44244
44284
  invoke: { kind: "setProperty", property: "smartJump" }
@@ -44297,7 +44337,7 @@ var connectorToolControls = [
44297
44337
  {
44298
44338
  id: "toolSmartJump",
44299
44339
  label: "Smart jump",
44300
- icon: symbolIcon2("connector.smartJump"),
44340
+ icon: connectorAssetIcon("SmartJump"),
44301
44341
  valueSource: { kind: "toolProperty", property: "smartJump" },
44302
44342
  editor: { kind: "toggle", trueLabel: "On", falseLabel: "Off" },
44303
44343
  invoke: { kind: "toolProperty", property: "smartJump" }
@@ -44309,21 +44349,21 @@ var connectorOverlay = {
44309
44349
  {
44310
44350
  id: "connector.switchPointers",
44311
44351
  label: "Switch arrows",
44312
- icon: symbolIcon2("connector.switchPointers"),
44352
+ icon: connectorAssetIcon("SwitchPointers"),
44313
44353
  target: "selection",
44314
44354
  invoke: { kind: "operation", class: "Connector", method: "switchPointers" }
44315
44355
  },
44316
44356
  {
44317
44357
  id: "connector.style",
44318
44358
  label: "Connector style",
44319
- icon: symbolIcon2("connector.style"),
44359
+ icon: connectorAssetIcon("Style"),
44320
44360
  target: "each",
44321
44361
  controls: connectorStyleControls,
44322
44362
  groups: [
44323
44363
  {
44324
44364
  id: "connectorStyle",
44325
44365
  label: "Connector style",
44326
- icon: symbolIcon2("connector.style"),
44366
+ icon: connectorAssetIcon("Style"),
44327
44367
  controlIds: connectorStyleControls.map((control) => control.id)
44328
44368
  }
44329
44369
  ]
@@ -44333,7 +44373,7 @@ var connectorOverlay = {
44333
44373
  {
44334
44374
  id: "connectorArrows",
44335
44375
  label: "Arrows",
44336
- icon: symbolIcon2("connector.style"),
44376
+ icon: connectorAssetIcon("Style"),
44337
44377
  actionIds: ["connector.switchPointers", "connector.style"]
44338
44378
  }
44339
44379
  ]
@@ -44345,8 +44385,7 @@ var addConnectorToolOverlay = {
44345
44385
  createsItemType: "Connector",
44346
44386
  family: "connector",
44347
44387
  icon: {
44348
- kind: "symbol",
44349
- key: "tool.connector",
44388
+ ...connectorAssetIcon("Tool"),
44350
44389
  state: {
44351
44390
  swatch: { kind: "toolProperty", property: "lineColor" },
44352
44391
  note: "UI can tint or swatch the connector icon from the pending line color."
@@ -44358,14 +44397,14 @@ var addConnectorToolOverlay = {
44358
44397
  {
44359
44398
  id: "connectorToolQuickDefaults",
44360
44399
  label: "Connector quick defaults",
44361
- icon: symbolIcon2("connector.lineStyle.straight"),
44400
+ icon: connectorAssetIcon("LineStraight"),
44362
44401
  controlIds: ["toolLineStyle"],
44363
44402
  description: "Primary defaults that match the compact create-surface picker."
44364
44403
  },
44365
44404
  {
44366
44405
  id: "connectorToolAdvancedDefaults",
44367
44406
  label: "Connector defaults",
44368
- icon: symbolIcon2("connector.style"),
44407
+ icon: connectorAssetIcon("Style"),
44369
44408
  controlIds: connectorToolControls.map((control) => control.id),
44370
44409
  description: "Extended defaults available in richer create flows."
44371
44410
  }
@@ -58512,7 +58551,8 @@ var COLOR_PALETTE2 = [
58512
58551
  "transparent"
58513
58552
  ];
58514
58553
  var inlineShapeAsset = (folder, file2 = folder) => overlayAssetIcon(`src/Items/Shape/Basic/${folder}/${file2}.icon.svg`);
58515
- var symbolIcon3 = (key) => overlaySymbolIcon(key);
58554
+ var localShapeIcon = (file2) => overlayAssetIcon(`src/Items/Shape/icons/${file2}.icon.svg`);
58555
+ var bpmnIcon = (folder) => overlayAssetIcon(`src/Items/Shape/BPMN/${folder}/${folder}.icon.svg`);
58516
58556
  var BASIC_INLINE_OPTIONS = [
58517
58557
  { id: "rectangle", label: "Rectangle", value: "Rectangle", icon: inlineShapeAsset("Rectangle"), family: "basicShapes" },
58518
58558
  { id: "rounded-rectangle", label: "Rounded rectangle", value: "RoundedRectangle", icon: inlineShapeAsset("RoundedRectangle"), family: "basicShapes" },
@@ -58522,48 +58562,48 @@ var BASIC_INLINE_OPTIONS = [
58522
58562
  ];
58523
58563
  var SHAPE_CATALOG_OPTIONS = [
58524
58564
  ...BASIC_INLINE_OPTIONS,
58525
- { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: symbolIcon3("shape.reversedTriangle"), family: "basicShapes" },
58565
+ { id: "reversed-triangle", label: "Reversed triangle", value: "ReversedTriangle", icon: localShapeIcon("ReversedTriangle"), family: "basicShapes" },
58526
58566
  { id: "arrow-left", label: "Arrow left", value: "ArrowLeft", icon: inlineShapeAsset("ArrowLeft"), family: "basicShapes" },
58527
58567
  { id: "arrow-right", label: "Arrow right", value: "ArrowRight", icon: inlineShapeAsset("ArrowRight"), family: "basicShapes" },
58528
58568
  { id: "arrow-left-right", label: "Arrow left right", value: "ArrowLeftRight", icon: inlineShapeAsset("ArrowLeftRight"), family: "basicShapes" },
58529
- { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: symbolIcon3("shape.arrowBlockLeft"), family: "basicShapes" },
58530
- { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: symbolIcon3("shape.arrowBlockRight"), family: "basicShapes" },
58569
+ { id: "arrow-block-left", label: "Arrow block left", value: "ArrowBlockLeft", icon: localShapeIcon("ArrowBlockLeft"), family: "basicShapes" },
58570
+ { id: "arrow-block-right", label: "Arrow block right", value: "ArrowBlockRight", icon: localShapeIcon("ArrowBlockRight"), family: "basicShapes" },
58531
58571
  { id: "cloud", label: "Cloud", value: "Cloud", icon: inlineShapeAsset("Cloud"), family: "basicShapes" },
58532
58572
  { id: "cross", label: "Cross", value: "Cross", icon: inlineShapeAsset("Cross"), family: "basicShapes" },
58533
58573
  { id: "cylinder", label: "Cylinder", value: "Cylinder", icon: inlineShapeAsset("Cylinder"), family: "basicShapes" },
58534
58574
  { id: "hexagon", label: "Hexagon", value: "Hexagon", icon: inlineShapeAsset("Hexagon"), family: "basicShapes" },
58535
58575
  { id: "octagon", label: "Octagon", value: "Octagon", icon: inlineShapeAsset("Octagon"), family: "basicShapes" },
58536
58576
  { id: "parallelogram", label: "Parallelogram", value: "Parallelogram", icon: inlineShapeAsset("Parallelogram"), family: "basicShapes" },
58537
- { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: symbolIcon3("shape.reversedParallelogram"), family: "basicShapes" },
58577
+ { id: "reversed-parallelogram", label: "Reversed parallelogram", value: "ReversedParallelogram", icon: localShapeIcon("ReversedParallelogram"), family: "basicShapes" },
58538
58578
  { id: "pentagon", label: "Pentagon", value: "Pentagon", icon: inlineShapeAsset("Pentagon"), family: "basicShapes" },
58539
- { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: symbolIcon3("shape.predefinedProcess"), family: "basicShapes" },
58579
+ { id: "predefined-process", label: "Predefined process", value: "PredefinedProcess", icon: localShapeIcon("PredefinedProcess"), family: "basicShapes" },
58540
58580
  { id: "speech-bubble", label: "Speech bubble", value: "SpeachBubble", icon: inlineShapeAsset("SpeachBubble"), family: "basicShapes" },
58541
58581
  { id: "star", label: "Star", value: "Star", icon: inlineShapeAsset("Star"), family: "basicShapes" },
58542
58582
  { id: "trapezoid", label: "Trapezoid", value: "Trapezoid", icon: inlineShapeAsset("Trapezoid"), family: "basicShapes" },
58543
58583
  { id: "braces-left", label: "Braces left", value: "BracesLeft", icon: inlineShapeAsset("BracesLeft", "BracesLeft"), family: "basicShapes" },
58544
58584
  { id: "braces-right", label: "Braces right", value: "BracesRight", icon: inlineShapeAsset("BracesRight", "BracesRight"), family: "basicShapes" },
58545
- { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: symbolIcon3("shape.bpmn.task"), family: "bpmn" },
58546
- { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: symbolIcon3("shape.bpmn.gateway"), family: "bpmn" },
58547
- { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: symbolIcon3("shape.bpmn.gatewayParallel"), family: "bpmn" },
58548
- { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: symbolIcon3("shape.bpmn.gatewayXor"), family: "bpmn" },
58549
- { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: symbolIcon3("shape.bpmn.startEvent"), family: "bpmn" },
58550
- { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.startEventNoneInterrupting"), family: "bpmn" },
58551
- { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: symbolIcon3("shape.bpmn.endEvent"), family: "bpmn" },
58552
- { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: symbolIcon3("shape.bpmn.intermediateEvent"), family: "bpmn" },
58553
- { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: symbolIcon3("shape.bpmn.intermediateEventNoneInterrupting"), family: "bpmn" },
58554
- { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: symbolIcon3("shape.bpmn.dataObject"), family: "bpmn" },
58555
- { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: symbolIcon3("shape.bpmn.dataStore"), family: "bpmn" },
58556
- { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: symbolIcon3("shape.bpmn.participant"), family: "bpmn" },
58557
- { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: symbolIcon3("shape.bpmn.transaction"), family: "bpmn" },
58558
- { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: symbolIcon3("shape.bpmn.eventSubprocess"), family: "bpmn" },
58559
- { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: symbolIcon3("shape.bpmn.group"), family: "bpmn" },
58560
- { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: symbolIcon3("shape.bpmn.annotation"), family: "bpmn" }
58585
+ { id: "bpmn-task", label: "BPMN task", value: "BPMN_Task", icon: bpmnIcon("BPMN_Task"), family: "bpmn" },
58586
+ { id: "bpmn-gateway", label: "BPMN gateway", value: "BPMN_Gateway", icon: bpmnIcon("BPMN_Gateway"), family: "bpmn" },
58587
+ { id: "bpmn-gateway-parallel", label: "BPMN gateway parallel", value: "BPMN_GatewayParallel", icon: bpmnIcon("BPMN_GatewayParallel"), family: "bpmn" },
58588
+ { id: "bpmn-gateway-xor", label: "BPMN gateway XOR", value: "BPMN_GatewayXOR", icon: bpmnIcon("BPMN_GatewayXOR"), family: "bpmn" },
58589
+ { id: "bpmn-start-event", label: "BPMN start event", value: "BPMN_StartEvent", icon: bpmnIcon("BPMN_StartEvent"), family: "bpmn" },
58590
+ { id: "bpmn-start-event-non-interrupting", label: "BPMN start event non interrupting", value: "BPMN_StartEventNoneInterrupting", icon: bpmnIcon("BPMN_StartEventNoneInterrupting"), family: "bpmn" },
58591
+ { id: "bpmn-end-event", label: "BPMN end event", value: "BPMN_EndEvent", icon: bpmnIcon("BPMN_EndEvent"), family: "bpmn" },
58592
+ { id: "bpmn-intermediate-event", label: "BPMN intermediate event", value: "BPMN_IntermediateEvent", icon: bpmnIcon("BPMN_IntermediateEvent"), family: "bpmn" },
58593
+ { id: "bpmn-intermediate-event-none-interrupting", label: "BPMN intermediate event none interrupting", value: "BPMN_IntermediateEventNoneInterrupting", icon: bpmnIcon("BPMN_IntermediateEventNoneInterrupting"), family: "bpmn" },
58594
+ { id: "bpmn-data-object", label: "BPMN data object", value: "BPMN_DataObject", icon: bpmnIcon("BPMN_DataObject"), family: "bpmn" },
58595
+ { id: "bpmn-data-store", label: "BPMN data store", value: "BPMN_DataStore", icon: bpmnIcon("BPMN_DataStore"), family: "bpmn" },
58596
+ { id: "bpmn-participant", label: "BPMN participant", value: "BPMN_Participant", icon: bpmnIcon("BPMN_Participant"), family: "bpmn" },
58597
+ { id: "bpmn-transaction", label: "BPMN transaction", value: "BPMN_Transaction", icon: bpmnIcon("BPMN_Transaction"), family: "bpmn" },
58598
+ { id: "bpmn-event-subprocess", label: "BPMN event subprocess", value: "BPMN_EventSubprocess", icon: bpmnIcon("BPMN_EventSubprocess"), family: "bpmn" },
58599
+ { id: "bpmn-group", label: "BPMN group", value: "BPMN_Group", icon: bpmnIcon("BPMN_Group"), family: "bpmn" },
58600
+ { id: "bpmn-annotation", label: "BPMN annotation", value: "BPMN_Annotation", icon: bpmnIcon("BPMN_Annotation"), family: "bpmn" }
58561
58601
  ];
58562
58602
  var BORDER_STYLE_OPTIONS = [
58563
- { id: "solid", label: "Solid", value: "solid", icon: symbolIcon3("stroke.solid") },
58564
- { id: "dot", label: "Dot", value: "dot", icon: symbolIcon3("stroke.dot") },
58565
- { id: "dash", label: "Dash", value: "dash", icon: symbolIcon3("stroke.dash") },
58566
- { id: "long-dash", label: "Long dash", value: "longDash", icon: symbolIcon3("stroke.longDash") }
58603
+ { id: "solid", label: "Solid", value: "solid", icon: localShapeIcon("StrokeSolid") },
58604
+ { id: "dot", label: "Dot", value: "dot", icon: localShapeIcon("StrokeDot") },
58605
+ { id: "dash", label: "Dash", value: "dash", icon: localShapeIcon("StrokeDash") },
58606
+ { id: "long-dash", label: "Long dash", value: "longDash", icon: localShapeIcon("StrokeLongDash") }
58567
58607
  ];
58568
58608
  var shapeTypeControl = {
58569
58609
  id: "shapeType",
@@ -58596,10 +58636,6 @@ var fillControl = {
58596
58636
  swatch: { kind: "itemProperty", property: "backgroundColor" },
58597
58637
  note: "UI can render the current fill color as a swatch inside the icon."
58598
58638
  }),
58599
- icon: styleFillIcon({
58600
- swatch: { kind: "itemProperty", property: "backgroundColor" },
58601
- note: "UI can render the current fill color as a swatch inside the icon."
58602
- }),
58603
58639
  editor: {
58604
58640
  kind: "color",
58605
58641
  palette: COLOR_PALETTE2,
@@ -58650,7 +58686,7 @@ var shapeOverlay = {
58650
58686
  {
58651
58687
  id: "shape.shapeType",
58652
58688
  label: "Shape type",
58653
- icon: symbolIcon3("shape.type"),
58689
+ icon: localShapeIcon("Type"),
58654
58690
  target: "each",
58655
58691
  controls: [shapeTypeControl]
58656
58692
  },
@@ -58681,13 +58717,13 @@ var shapeOverlay = {
58681
58717
  {
58682
58718
  id: "shapeTypeSection",
58683
58719
  label: "Type",
58684
- icon: symbolIcon3("shape.type"),
58720
+ icon: localShapeIcon("Type"),
58685
58721
  actionIds: ["shape.shapeType"]
58686
58722
  },
58687
58723
  {
58688
58724
  id: "shapeAppearanceSection",
58689
58725
  label: "Appearance",
58690
- icon: symbolIcon3("shape.stroke"),
58726
+ icon: localShapeIcon("Stroke"),
58691
58727
  actionIds: ["shape.fill", "shape.strokeStyle"]
58692
58728
  }
58693
58729
  ]
@@ -58699,7 +58735,7 @@ var addShapeToolOverlay = {
58699
58735
  createsItemType: "Shape",
58700
58736
  family: "shape",
58701
58737
  icon: {
58702
- ...overlaySymbolIcon("tool.shape"),
58738
+ ...overlayAssetIcon("src/Items/Shape/icons/Tool.icon.svg"),
58703
58739
  state: {
58704
58740
  note: "UI may swap the top-level icon to the selected shape option when desired."
58705
58741
  }
@@ -63132,6 +63168,68 @@ var propertyOps = {
63132
63168
  }
63133
63169
  };
63134
63170
 
63171
+ // src/Tools/Tool.ts
63172
+ class Tool {
63173
+ leftButtonDown() {
63174
+ return false;
63175
+ }
63176
+ leftButtonUp() {
63177
+ return false;
63178
+ }
63179
+ leftButtonDouble() {
63180
+ return false;
63181
+ }
63182
+ rightButtonDown() {
63183
+ return false;
63184
+ }
63185
+ rightButtonUp() {
63186
+ return false;
63187
+ }
63188
+ rightButtonDouble() {
63189
+ return false;
63190
+ }
63191
+ middleButtonDown() {
63192
+ return false;
63193
+ }
63194
+ middleButtonUp() {
63195
+ return false;
63196
+ }
63197
+ middleButtonDouble() {
63198
+ return false;
63199
+ }
63200
+ keyDown(_key) {
63201
+ return false;
63202
+ }
63203
+ keyUp(_key) {
63204
+ return false;
63205
+ }
63206
+ pointerMoveBy(_x, _y) {
63207
+ return false;
63208
+ }
63209
+ pointerDown() {
63210
+ return false;
63211
+ }
63212
+ pointerUp() {
63213
+ return false;
63214
+ }
63215
+ onCancel() {}
63216
+ onConfirm() {}
63217
+ render(_context) {}
63218
+ }
63219
+
63220
+ // src/Tools/BoardTool.ts
63221
+ class BoardTool extends Tool {
63222
+ board;
63223
+ constructor(board) {
63224
+ super();
63225
+ this.board = board;
63226
+ }
63227
+ }
63228
+
63229
+ // src/Tools/WorkflowTool.ts
63230
+ class WorkflowTool extends BoardTool {
63231
+ }
63232
+
63135
63233
  // src/Items/Card/CardOverlay.ts
63136
63234
  var cardOverlay = {
63137
63235
  itemType: "Card",
@@ -63139,14 +63237,14 @@ var cardOverlay = {
63139
63237
  {
63140
63238
  id: "card.flip",
63141
63239
  label: "Flip card",
63142
- icon: overlaySymbolIcon("card.flip"),
63240
+ icon: overlayAssetIcon("src/Items/Card/icons/Flip.icon.svg"),
63143
63241
  target: "each",
63144
63242
  invoke: { kind: "customMethod", methodName: "toggleIsOpen" }
63145
63243
  },
63146
63244
  {
63147
63245
  id: "card.rotateCcw",
63148
63246
  label: "Rotate 90 counter clockwise",
63149
- icon: overlaySymbolIcon("card.rotateCcw"),
63247
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCcw.icon.svg"),
63150
63248
  target: "each",
63151
63249
  invoke: {
63152
63250
  kind: "customMethod",
@@ -63157,7 +63255,7 @@ var cardOverlay = {
63157
63255
  {
63158
63256
  id: "card.rotateCw",
63159
63257
  label: "Rotate 90 clockwise",
63160
- icon: overlaySymbolIcon("card.rotateCw"),
63258
+ icon: overlayAssetIcon("src/Items/Card/icons/RotateCw.icon.svg"),
63161
63259
  target: "each",
63162
63260
  invoke: {
63163
63261
  kind: "customMethod",
@@ -63167,6 +63265,73 @@ var cardOverlay = {
63167
63265
  }
63168
63266
  ]
63169
63267
  };
63268
+ var addCardToolOverlay = {
63269
+ toolName: "AddCard",
63270
+ label: "Card",
63271
+ kind: "create",
63272
+ createsItemType: "Card",
63273
+ family: "game",
63274
+ icon: overlayAssetIcon("src/Items/Card/icons/Tool.icon.svg"),
63275
+ launch: {
63276
+ kind: "workflow",
63277
+ workflow: {
63278
+ kind: "property-sheet",
63279
+ description: "Upload front and back images for one or more cards.",
63280
+ submitLabel: "Create cards",
63281
+ controls: [
63282
+ {
63283
+ id: "cardArtwork",
63284
+ label: "Card artwork",
63285
+ editor: {
63286
+ kind: "asset-upload",
63287
+ mode: "paired",
63288
+ fields: [
63289
+ {
63290
+ id: "face",
63291
+ label: "Front",
63292
+ accept: ["image/*"],
63293
+ required: true
63294
+ },
63295
+ {
63296
+ id: "back",
63297
+ label: "Back",
63298
+ accept: ["image/*"],
63299
+ required: true
63300
+ }
63301
+ ]
63302
+ }
63303
+ }
63304
+ ],
63305
+ submit: {
63306
+ kind: "create-items",
63307
+ itemType: "Card",
63308
+ strategy: "per-upload-entry",
63309
+ placement: "stagger-from-pointer",
63310
+ properties: [
63311
+ {
63312
+ property: "faceUrl",
63313
+ source: { kind: "uploadField", controlId: "cardArtwork", fieldId: "face" }
63314
+ },
63315
+ {
63316
+ property: "backsideUrl",
63317
+ source: { kind: "uploadField", controlId: "cardArtwork", fieldId: "back" }
63318
+ }
63319
+ ]
63320
+ }
63321
+ }
63322
+ },
63323
+ surface: {
63324
+ order: 4,
63325
+ group: {
63326
+ id: "gameItems",
63327
+ label: "Game items",
63328
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
63329
+ order: 1,
63330
+ behavior: "open-panel"
63331
+ },
63332
+ relatedToolNames: ["AddDice", "AddScreen", "AddPouch"]
63333
+ }
63334
+ };
63170
63335
 
63171
63336
  // src/Items/Card/Card.ts
63172
63337
  var defaultCardData = {
@@ -63361,6 +63526,11 @@ registerItem({
63361
63526
  defaultData: defaultCardData,
63362
63527
  overlay: cardOverlay
63363
63528
  });
63529
+ registerTool({
63530
+ name: "AddCard",
63531
+ tool: WorkflowTool,
63532
+ overlay: addCardToolOverlay
63533
+ });
63364
63534
  registerHotkey({
63365
63535
  name: "Rotate90deg",
63366
63536
  hotkey: { key: { button: "KeyQ", shift: true }, label: { windows: "Shift+Q", mac: "⇧Q" } },
@@ -63411,28 +63581,28 @@ var deckOverlay = {
63411
63581
  {
63412
63582
  id: "deck.getTopCard",
63413
63583
  label: "Draw top card",
63414
- icon: overlaySymbolIcon("deck.drawTop"),
63584
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawTop.icon.svg"),
63415
63585
  target: "single",
63416
63586
  invoke: { kind: "customMethod", methodName: "getTopCard" }
63417
63587
  },
63418
63588
  {
63419
63589
  id: "deck.getBottomCard",
63420
63590
  label: "Draw bottom card",
63421
- icon: overlaySymbolIcon("deck.drawBottom"),
63591
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawBottom.icon.svg"),
63422
63592
  target: "single",
63423
63593
  invoke: { kind: "customMethod", methodName: "getBottomCard" }
63424
63594
  },
63425
63595
  {
63426
63596
  id: "deck.getRandomCard",
63427
63597
  label: "Draw random card",
63428
- icon: overlaySymbolIcon("deck.drawRandom"),
63598
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawRandom.icon.svg"),
63429
63599
  target: "single",
63430
63600
  invoke: { kind: "customMethod", methodName: "getRandomCard" }
63431
63601
  },
63432
63602
  {
63433
63603
  id: "deck.getCards",
63434
63604
  label: "Draw cards",
63435
- icon: overlaySymbolIcon("deck.drawMany"),
63605
+ icon: overlayAssetIcon("src/Items/Deck/icons/DrawMany.icon.svg"),
63436
63606
  target: "single",
63437
63607
  controls: [
63438
63608
  {
@@ -63454,14 +63624,14 @@ var deckOverlay = {
63454
63624
  {
63455
63625
  id: "deck.shuffle",
63456
63626
  label: "Shuffle",
63457
- icon: overlaySymbolIcon("deck.shuffle"),
63627
+ icon: overlayAssetIcon("src/Items/Deck/icons/Shuffle.icon.svg"),
63458
63628
  target: "single",
63459
63629
  invoke: { kind: "customMethod", methodName: "shuffleDeck" }
63460
63630
  },
63461
63631
  {
63462
63632
  id: "deck.flip",
63463
63633
  label: "Flip deck",
63464
- icon: overlaySymbolIcon("deck.flip"),
63634
+ icon: overlayAssetIcon("src/Items/Deck/icons/Flip.icon.svg"),
63465
63635
  target: "single",
63466
63636
  invoke: { kind: "customMethod", methodName: "flipDeck" }
63467
63637
  }
@@ -63470,7 +63640,7 @@ var deckOverlay = {
63470
63640
  var createDeckSelectionAction = {
63471
63641
  id: "deck.createFromSelection",
63472
63642
  label: "Create deck",
63473
- icon: overlaySymbolIcon("deck.createFromSelection"),
63643
+ icon: overlayAssetIcon("src/Items/Deck/icons/CreateFromSelection.icon.svg"),
63474
63644
  description: "Stacks selected cards into a new deck, or merges selected cards and decks into one deck.",
63475
63645
  invoke: { kind: "selectionMethod", methodName: "createDeck" },
63476
63646
  isAvailable: (items) => {
@@ -63867,64 +64037,6 @@ registerHotkey({
63867
64037
  }
63868
64038
  });
63869
64039
  registerSelectionAction(createDeckSelectionAction);
63870
- // src/Tools/Tool.ts
63871
- class Tool {
63872
- leftButtonDown() {
63873
- return false;
63874
- }
63875
- leftButtonUp() {
63876
- return false;
63877
- }
63878
- leftButtonDouble() {
63879
- return false;
63880
- }
63881
- rightButtonDown() {
63882
- return false;
63883
- }
63884
- rightButtonUp() {
63885
- return false;
63886
- }
63887
- rightButtonDouble() {
63888
- return false;
63889
- }
63890
- middleButtonDown() {
63891
- return false;
63892
- }
63893
- middleButtonUp() {
63894
- return false;
63895
- }
63896
- middleButtonDouble() {
63897
- return false;
63898
- }
63899
- keyDown(_key) {
63900
- return false;
63901
- }
63902
- keyUp(_key) {
63903
- return false;
63904
- }
63905
- pointerMoveBy(_x, _y) {
63906
- return false;
63907
- }
63908
- pointerDown() {
63909
- return false;
63910
- }
63911
- pointerUp() {
63912
- return false;
63913
- }
63914
- onCancel() {}
63915
- onConfirm() {}
63916
- render(_context) {}
63917
- }
63918
-
63919
- // src/Tools/BoardTool.ts
63920
- class BoardTool extends Tool {
63921
- board;
63922
- constructor(board) {
63923
- super();
63924
- this.board = board;
63925
- }
63926
- }
63927
-
63928
64040
  // src/Tools/CustomTool.ts
63929
64041
  class CustomTool extends BoardTool {
63930
64042
  name;
@@ -64039,14 +64151,14 @@ var diceOverlay = {
64039
64151
  {
64040
64152
  id: "dice.throw",
64041
64153
  label: "Throw dice",
64042
- icon: overlaySymbolIcon("dice.throw"),
64154
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
64043
64155
  target: "each",
64044
64156
  invoke: { kind: "customMethod", methodName: "throwDice" }
64045
64157
  },
64046
64158
  {
64047
64159
  id: "dice.range",
64048
64160
  label: "Range",
64049
- icon: overlaySymbolIcon("dice.range"),
64161
+ icon: overlayAssetIcon("src/Items/Dice/icons/Range.icon.svg"),
64050
64162
  target: "each",
64051
64163
  controls: [
64052
64164
  {
@@ -64087,7 +64199,7 @@ var diceOverlay = {
64087
64199
  {
64088
64200
  id: "diceActions",
64089
64201
  label: "Dice",
64090
- icon: overlaySymbolIcon("dice.throw"),
64202
+ icon: overlayAssetIcon("src/Items/Dice/icons/Throw.icon.svg"),
64091
64203
  actionIds: ["dice.throw", "dice.range", "dice.fill"]
64092
64204
  }
64093
64205
  ]
@@ -64098,14 +64210,14 @@ var addDiceToolOverlay = {
64098
64210
  kind: "create",
64099
64211
  createsItemType: "Dice",
64100
64212
  family: "game",
64101
- icon: overlaySymbolIcon("tool.dice"),
64213
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64102
64214
  launch: { kind: "activate-tool" },
64103
64215
  surface: {
64104
64216
  order: 1,
64105
64217
  group: {
64106
64218
  id: "gameItems",
64107
64219
  label: "Game items",
64108
- icon: overlaySymbolIcon("tool.dice"),
64220
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64109
64221
  order: 1,
64110
64222
  behavior: "open-panel"
64111
64223
  },
@@ -64458,7 +64570,7 @@ var screenOverlay = {
64458
64570
  id: "screen.background",
64459
64571
  label: "Background",
64460
64572
  icon: {
64461
- ...overlaySymbolIcon("screen.background"),
64573
+ ...overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
64462
64574
  state: { swatch: { kind: "itemProperty", property: "backgroundColor" } }
64463
64575
  },
64464
64576
  target: "each",
@@ -64480,7 +64592,7 @@ var screenOverlay = {
64480
64592
  id: "screen.stroke",
64481
64593
  label: "Stroke",
64482
64594
  icon: {
64483
- ...overlaySymbolIcon("shape.stroke"),
64595
+ ...overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
64484
64596
  state: { swatch: { kind: "itemProperty", property: "borderColor" } }
64485
64597
  },
64486
64598
  target: "each",
@@ -64516,7 +64628,7 @@ var screenOverlay = {
64516
64628
  {
64517
64629
  id: "screenStrokeStyle",
64518
64630
  label: "Stroke",
64519
- icon: overlaySymbolIcon("shape.stroke"),
64631
+ icon: overlayAssetIcon("src/Items/Shape/icons/Stroke.icon.svg"),
64520
64632
  controlIds: ["borderColor", "borderWidth"]
64521
64633
  }
64522
64634
  ]
@@ -64524,7 +64636,7 @@ var screenOverlay = {
64524
64636
  {
64525
64637
  id: "screen.backgroundImage",
64526
64638
  label: "Background image",
64527
- icon: overlaySymbolIcon("screen.backgroundImage"),
64639
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImage.icon.svg"),
64528
64640
  target: "each",
64529
64641
  when: {
64530
64642
  kind: "falsy",
@@ -64547,7 +64659,7 @@ var screenOverlay = {
64547
64659
  {
64548
64660
  id: "screen.removeBackgroundImage",
64549
64661
  label: "Remove background image",
64550
- icon: overlaySymbolIcon("screen.backgroundImage.remove"),
64662
+ icon: overlayAssetIcon("src/Items/Screen/icons/BackgroundImageRemove.icon.svg"),
64551
64663
  target: "each",
64552
64664
  when: {
64553
64665
  kind: "truthy",
@@ -64564,7 +64676,7 @@ var screenOverlay = {
64564
64676
  {
64565
64677
  id: "screenAppearance",
64566
64678
  label: "Appearance",
64567
- icon: overlaySymbolIcon("screen.background"),
64679
+ icon: overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
64568
64680
  actionIds: ["screen.background", "screen.stroke", "screen.backgroundImage", "screen.removeBackgroundImage"]
64569
64681
  }
64570
64682
  ]
@@ -64575,14 +64687,14 @@ var addScreenToolOverlay = {
64575
64687
  kind: "create",
64576
64688
  createsItemType: "Screen",
64577
64689
  family: "container",
64578
- icon: overlaySymbolIcon("tool.screen"),
64690
+ icon: overlayAssetIcon("src/Items/Screen/icons/Tool.icon.svg"),
64579
64691
  launch: { kind: "activate-tool" },
64580
64692
  surface: {
64581
64693
  order: 2,
64582
64694
  group: {
64583
64695
  id: "gameItems",
64584
64696
  label: "Game items",
64585
- icon: overlaySymbolIcon("tool.dice"),
64697
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64586
64698
  order: 1,
64587
64699
  behavior: "open-panel"
64588
64700
  },
@@ -64595,14 +64707,14 @@ var addPouchToolOverlay = {
64595
64707
  kind: "create",
64596
64708
  createsItemType: "Screen",
64597
64709
  family: "container",
64598
- icon: overlaySymbolIcon("tool.pouch"),
64710
+ icon: overlayAssetIcon("src/Items/Screen/icons/Pouch.icon.svg"),
64599
64711
  launch: { kind: "activate-tool" },
64600
64712
  surface: {
64601
64713
  order: 3,
64602
64714
  group: {
64603
64715
  id: "gameItems",
64604
64716
  label: "Game items",
64605
- icon: overlaySymbolIcon("tool.dice"),
64717
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
64606
64718
  order: 1,
64607
64719
  behavior: "open-panel"
64608
64720
  },
@@ -67728,6 +67840,125 @@ class Presence {
67728
67840
  }
67729
67841
  }
67730
67842
 
67843
+ // src/Selection/SelectionOverlay.ts
67844
+ function everyItemHasRichText(items) {
67845
+ return items.length > 0 && items.every((item) => !!item.getRichText?.());
67846
+ }
67847
+ registerSelectionAction({
67848
+ id: "selection.delete",
67849
+ label: "Delete",
67850
+ icon: overlayAssetIcon("src/Overlay/icons/Delete.icon.svg"),
67851
+ description: "Removes the selected items from the board.",
67852
+ invoke: { kind: "selectionMethod", methodName: "removeFromBoard" },
67853
+ isAvailable: (items) => items.length > 0
67854
+ });
67855
+ registerSelectionAction({
67856
+ id: "selection.duplicate",
67857
+ label: "Duplicate",
67858
+ icon: overlayAssetIcon("src/Overlay/icons/Duplicate.icon.svg"),
67859
+ description: "Duplicates the selected items.",
67860
+ invoke: { kind: "selectionMethod", methodName: "duplicate" },
67861
+ isAvailable: (items) => items.length > 0
67862
+ });
67863
+ registerSelectionAction({
67864
+ id: "selection.lock",
67865
+ label: "Lock",
67866
+ icon: overlayAssetIcon("src/Overlay/icons/Lock.icon.svg"),
67867
+ description: "Locks the selected items.",
67868
+ invoke: { kind: "selectionMethod", methodName: "lock" },
67869
+ isAvailable: (items) => items.length > 0 && !items.some((item) => item.transformation.isLocked)
67870
+ });
67871
+ registerSelectionAction({
67872
+ id: "selection.unlock",
67873
+ label: "Unlock",
67874
+ icon: overlayAssetIcon("src/Overlay/icons/Unlock.icon.svg"),
67875
+ description: "Unlocks the selected items.",
67876
+ invoke: { kind: "selectionMethod", methodName: "unlock" },
67877
+ isAvailable: (items) => items.some((item) => item.transformation.isLocked)
67878
+ });
67879
+ registerSelectionAction({
67880
+ id: "selection.bringToFront",
67881
+ label: "Bring to front",
67882
+ icon: overlayAssetIcon("src/Overlay/icons/BringToFront.icon.svg"),
67883
+ description: "Moves the selection above overlapping items.",
67884
+ invoke: { kind: "selectionMethod", methodName: "bringToFront" },
67885
+ isAvailable: (items) => items.length > 0
67886
+ });
67887
+ registerSelectionAction({
67888
+ id: "selection.sendToBack",
67889
+ label: "Send to back",
67890
+ icon: overlayAssetIcon("src/Overlay/icons/SendToBack.icon.svg"),
67891
+ description: "Moves the selection behind overlapping items.",
67892
+ invoke: { kind: "selectionMethod", methodName: "sendToBack" },
67893
+ isAvailable: (items) => items.length > 0
67894
+ });
67895
+ registerSelectionAction({
67896
+ id: "selection.text.fontSize",
67897
+ label: "Font size",
67898
+ icon: styleFontSizeIcon(),
67899
+ invoke: { kind: "selectionMethod", methodName: "setFontSize" },
67900
+ controls: [
67901
+ {
67902
+ id: "fontSize",
67903
+ label: "Font size",
67904
+ valueSource: { kind: "selectionProperty", property: "getFontSize" },
67905
+ editor: {
67906
+ kind: "number-stepper",
67907
+ min: 8,
67908
+ max: 144,
67909
+ step: 1,
67910
+ presets: [12, 14, 16, 18, 24, 32, 48],
67911
+ unit: "px"
67912
+ },
67913
+ invoke: { kind: "selectionMethod", methodName: "setFontSize" }
67914
+ }
67915
+ ],
67916
+ isAvailable: everyItemHasRichText
67917
+ });
67918
+ registerSelectionAction({
67919
+ id: "selection.text.color",
67920
+ label: "Text color",
67921
+ icon: styleColorIcon({
67922
+ swatch: { kind: "selectionProperty", property: "getFontColor" }
67923
+ }),
67924
+ invoke: { kind: "selectionMethod", methodName: "setFontColor" },
67925
+ controls: [
67926
+ {
67927
+ id: "fontColor",
67928
+ label: "Text color",
67929
+ valueSource: { kind: "selectionProperty", property: "getFontColor" },
67930
+ editor: {
67931
+ kind: "color",
67932
+ palette: ["#111111", "#FFFFFF", "#E11D48", "#2563EB", "#16A34A", "#F59E0B"]
67933
+ },
67934
+ invoke: { kind: "selectionMethod", methodName: "setFontColor" }
67935
+ }
67936
+ ],
67937
+ isAvailable: everyItemHasRichText
67938
+ });
67939
+ registerSelectionAction({
67940
+ id: "selection.text.highlight",
67941
+ label: "Highlight",
67942
+ icon: {
67943
+ ...overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
67944
+ state: { swatch: { kind: "selectionProperty", property: "getFontHighlight" } }
67945
+ },
67946
+ invoke: { kind: "selectionMethod", methodName: "setFontHighlight" },
67947
+ controls: [
67948
+ {
67949
+ id: "fontHighlight",
67950
+ label: "Highlight",
67951
+ valueSource: { kind: "selectionProperty", property: "getFontHighlight" },
67952
+ editor: {
67953
+ kind: "color",
67954
+ palette: ["transparent", "#FEF08A", "#FDBA74", "#BFDBFE", "#FBCFE8", "#D9F99D"]
67955
+ },
67956
+ invoke: { kind: "selectionMethod", methodName: "setFontHighlight" }
67957
+ }
67958
+ ],
67959
+ isAvailable: everyItemHasRichText
67960
+ });
67961
+
67731
67962
  // src/Selection/SelectionItems.ts
67732
67963
  class SelectionItems {
67733
67964
  items = new Map;
@@ -72567,7 +72798,7 @@ var addDrawingToolOverlay = {
72567
72798
  family: "drawing",
72568
72799
  createsItemType: "Drawing",
72569
72800
  icon: {
72570
- ...overlaySymbolIcon("tool.pen"),
72801
+ ...overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72571
72802
  state: {
72572
72803
  swatch: { kind: "toolProperty", property: "strokeColor" },
72573
72804
  note: "UI can show the pending pen color in the icon."
@@ -72579,7 +72810,7 @@ var addDrawingToolOverlay = {
72579
72810
  {
72580
72811
  id: "drawingDefaults",
72581
72812
  label: "Pen defaults",
72582
- icon: overlaySymbolIcon("tool.pen"),
72813
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72583
72814
  controlIds: strokeControls2.map((control) => control.id)
72584
72815
  }
72585
72816
  ]
@@ -72590,7 +72821,7 @@ var addDrawingToolOverlay = {
72590
72821
  group: {
72591
72822
  id: "drawingTools",
72592
72823
  label: "Drawing",
72593
- icon: overlaySymbolIcon("tool.pen"),
72824
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72594
72825
  order: 5,
72595
72826
  behavior: "activate-last-used"
72596
72827
  },
@@ -72604,7 +72835,7 @@ var addHighlighterToolOverlay = {
72604
72835
  family: "drawing",
72605
72836
  createsItemType: "Drawing",
72606
72837
  icon: {
72607
- ...overlaySymbolIcon("tool.highlighter"),
72838
+ ...overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
72608
72839
  state: {
72609
72840
  swatch: { kind: "toolProperty", property: "strokeColor" },
72610
72841
  note: "UI can show the pending highlighter color in the icon."
@@ -72616,7 +72847,7 @@ var addHighlighterToolOverlay = {
72616
72847
  {
72617
72848
  id: "highlighterDefaults",
72618
72849
  label: "Highlighter defaults",
72619
- icon: overlaySymbolIcon("tool.highlighter"),
72850
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Highlighter.icon.svg"),
72620
72851
  controlIds: strokeControls2.map((control) => control.id)
72621
72852
  }
72622
72853
  ]
@@ -72627,7 +72858,7 @@ var addHighlighterToolOverlay = {
72627
72858
  group: {
72628
72859
  id: "drawingTools",
72629
72860
  label: "Drawing",
72630
- icon: overlaySymbolIcon("tool.pen"),
72861
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72631
72862
  order: 5,
72632
72863
  behavior: "activate-last-used"
72633
72864
  },
@@ -72639,7 +72870,7 @@ var eraserToolOverlay = {
72639
72870
  label: "Eraser",
72640
72871
  kind: "mode",
72641
72872
  family: "drawing",
72642
- icon: overlaySymbolIcon("tool.eraser"),
72873
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Eraser.icon.svg"),
72643
72874
  defaults: {
72644
72875
  controls: [
72645
72876
  {
@@ -72663,7 +72894,7 @@ var eraserToolOverlay = {
72663
72894
  group: {
72664
72895
  id: "drawingTools",
72665
72896
  label: "Drawing",
72666
- icon: overlaySymbolIcon("tool.pen"),
72897
+ icon: overlayAssetIcon("src/Items/Drawing/icons/Pen.icon.svg"),
72667
72898
  order: 5,
72668
72899
  behavior: "activate-last-used"
72669
72900
  },
@@ -72868,7 +73099,7 @@ var frameTypeOptions = Object.keys(Frames).map((frameType) => ({
72868
73099
  id: frameType,
72869
73100
  label: frameType === "Custom" ? "Custom" : Frames[frameType].name,
72870
73101
  value: frameType,
72871
- icon: overlaySymbolIcon(`frame.${frameType}`)
73102
+ 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")
72872
73103
  }));
72873
73104
  var addFrameToolOverlay = {
72874
73105
  toolName: "AddFrame",
@@ -72876,7 +73107,7 @@ var addFrameToolOverlay = {
72876
73107
  kind: "create",
72877
73108
  createsItemType: "Frame",
72878
73109
  family: "frame",
72879
- icon: overlaySymbolIcon("tool.frame"),
73110
+ icon: overlayAssetIcon("src/Items/Frame/Frame.icon.svg"),
72880
73111
  defaults: {
72881
73112
  controls: [
72882
73113
  {
@@ -73258,7 +73489,7 @@ var addStickerToolOverlay = {
73258
73489
  createsItemType: "Sticker",
73259
73490
  family: "sticker",
73260
73491
  icon: {
73261
- ...overlaySymbolIcon("tool.sticker"),
73492
+ ...overlayAssetIcon("src/Items/Sticker/Path/Sticker.icon.svg"),
73262
73493
  state: {
73263
73494
  swatch: { kind: "toolProperty", property: "backgroundColor" }
73264
73495
  }
@@ -75619,6 +75850,7 @@ export {
75619
75850
  overlaySymbolIcon,
75620
75851
  overlayAssetIcon,
75621
75852
  omitDefaultProperties,
75853
+ normalizeOverlayIconAssetPath,
75622
75854
  messageRouter,
75623
75855
  meetsWCAG_AAA,
75624
75856
  meetsWCAG_AA,
@@ -75687,6 +75919,7 @@ export {
75687
75919
  calculatePosition,
75688
75920
  calculateAudioPosition,
75689
75921
  borderWidths,
75922
+ WorkflowTool,
75690
75923
  VideoItem,
75691
75924
  Transformation,
75692
75925
  Tools,
@@ -75719,6 +75952,7 @@ export {
75719
75952
  PRESENCE_CLEANUP_IDLE_TIMER,
75720
75953
  OVERLAY_SYMBOL_KEYS,
75721
75954
  OVERLAY_ICON_SPRITE_PATH,
75955
+ OVERLAY_ICON_ASSET_PREFIX,
75722
75956
  MiroItemConverter,
75723
75957
  Mbr,
75724
75958
  Matrix,