microboard-temp 0.14.20 → 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 +280 -62
  2. package/dist/cjs/index.js +280 -62
  3. package/dist/cjs/node.js +280 -62
  4. package/dist/cjs/overlayIconManifest.js +115 -0
  5. package/dist/esm/browser.js +280 -62
  6. package/dist/esm/index.js +280 -62
  7. package/dist/esm/node.js +280 -62
  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 +4 -2
  119. package/dist/types/Overlay/OverlayMetadata.d.ts +24 -0
  120. package/dist/types/Overlay/overlayRegistry.d.ts +1 -0
  121. package/dist/types/Selection/SelectionOverlay.d.ts +1 -0
  122. package/dist/types/Selection/index.d.ts +1 -0
  123. package/dist/types/Tools/WorkflowTool.d.ts +8 -0
  124. package/dist/types/Tools/index.d.ts +1 -0
  125. package/dist/types/overlayIconManifest.d.ts +2 -0
  126. package/package.json +8 -2
package/dist/esm/node.js CHANGED
@@ -12275,7 +12275,11 @@ function toLocalTransformOp(op, containerMatrix, itemId) {
12275
12275
  }
12276
12276
  }
12277
12277
  // src/Overlay/IconPack.ts
12278
- var OVERLAY_ICON_SPRITE_PATH = "src/Overlay/overlay-icons.svg";
12278
+ var OVERLAY_ICON_ASSET_PREFIX = "overlay-icons/";
12279
+ var OVERLAY_ICON_SPRITE_PATH = normalizeOverlayIconAssetPath("src/Overlay/overlay-icons.svg");
12280
+ function normalizeOverlayIconAssetPath(sourcePath) {
12281
+ return sourcePath.startsWith("src/") ? `${OVERLAY_ICON_ASSET_PREFIX}${sourcePath.slice(4)}` : sourcePath;
12282
+ }
12279
12283
  function overlaySymbolIcon(key) {
12280
12284
  return {
12281
12285
  kind: "symbol",
@@ -12283,15 +12287,18 @@ function overlaySymbolIcon(key) {
12283
12287
  sourcePath: OVERLAY_ICON_SPRITE_PATH
12284
12288
  };
12285
12289
  }
12286
- function overlayAssetIcon(path2, state) {
12290
+ function overlayAssetIcon(sourcePath, state) {
12291
+ const path2 = normalizeOverlayIconAssetPath(sourcePath);
12287
12292
  return state ? {
12288
12293
  kind: "asset",
12289
12294
  path: path2,
12295
+ sourcePath,
12290
12296
  mimeType: "image/svg+xml",
12291
12297
  state
12292
12298
  } : {
12293
12299
  kind: "asset",
12294
12300
  path: path2,
12301
+ sourcePath,
12295
12302
  mimeType: "image/svg+xml"
12296
12303
  };
12297
12304
  }
@@ -12451,10 +12458,23 @@ function compareEntriesByOrder(a, b) {
12451
12458
  return aOrder - bOrder || aLabel.localeCompare(bLabel);
12452
12459
  }
12453
12460
  function readOverlayValueSource(context, source) {
12461
+ if (source.kind === "selectionProperty") {
12462
+ return readOverlayContextProperty(context.selection, source.property);
12463
+ }
12454
12464
  if (source.kind === "itemProperty") {
12455
- return context.item ? context.item[source.property] : undefined;
12465
+ return readOverlayContextProperty(context.item, source.property);
12466
+ }
12467
+ return readOverlayContextProperty(context.tool, source.property);
12468
+ }
12469
+ function readOverlayContextProperty(target, property) {
12470
+ if (!target) {
12471
+ return;
12472
+ }
12473
+ const value = target[property];
12474
+ if (typeof value === "function") {
12475
+ return value.call(target);
12456
12476
  }
12457
- return context.tool ? context.tool[source.property] : undefined;
12477
+ return value;
12458
12478
  }
12459
12479
  // src/Items/BaseItem/BaseItem.ts
12460
12480
  class BaseItem {
@@ -65616,6 +65636,68 @@ var propertyOps = {
65616
65636
  }
65617
65637
  };
65618
65638
 
65639
+ // src/Tools/Tool.ts
65640
+ class Tool {
65641
+ leftButtonDown() {
65642
+ return false;
65643
+ }
65644
+ leftButtonUp() {
65645
+ return false;
65646
+ }
65647
+ leftButtonDouble() {
65648
+ return false;
65649
+ }
65650
+ rightButtonDown() {
65651
+ return false;
65652
+ }
65653
+ rightButtonUp() {
65654
+ return false;
65655
+ }
65656
+ rightButtonDouble() {
65657
+ return false;
65658
+ }
65659
+ middleButtonDown() {
65660
+ return false;
65661
+ }
65662
+ middleButtonUp() {
65663
+ return false;
65664
+ }
65665
+ middleButtonDouble() {
65666
+ return false;
65667
+ }
65668
+ keyDown(_key) {
65669
+ return false;
65670
+ }
65671
+ keyUp(_key) {
65672
+ return false;
65673
+ }
65674
+ pointerMoveBy(_x, _y) {
65675
+ return false;
65676
+ }
65677
+ pointerDown() {
65678
+ return false;
65679
+ }
65680
+ pointerUp() {
65681
+ return false;
65682
+ }
65683
+ onCancel() {}
65684
+ onConfirm() {}
65685
+ render(_context) {}
65686
+ }
65687
+
65688
+ // src/Tools/BoardTool.ts
65689
+ class BoardTool extends Tool {
65690
+ board;
65691
+ constructor(board) {
65692
+ super();
65693
+ this.board = board;
65694
+ }
65695
+ }
65696
+
65697
+ // src/Tools/WorkflowTool.ts
65698
+ class WorkflowTool extends BoardTool {
65699
+ }
65700
+
65619
65701
  // src/Items/Card/CardOverlay.ts
65620
65702
  var cardOverlay = {
65621
65703
  itemType: "Card",
@@ -65651,6 +65733,73 @@ var cardOverlay = {
65651
65733
  }
65652
65734
  ]
65653
65735
  };
65736
+ var addCardToolOverlay = {
65737
+ toolName: "AddCard",
65738
+ label: "Card",
65739
+ kind: "create",
65740
+ createsItemType: "Card",
65741
+ family: "game",
65742
+ icon: overlayAssetIcon("src/Items/Card/icons/Tool.icon.svg"),
65743
+ launch: {
65744
+ kind: "workflow",
65745
+ workflow: {
65746
+ kind: "property-sheet",
65747
+ description: "Upload front and back images for one or more cards.",
65748
+ submitLabel: "Create cards",
65749
+ controls: [
65750
+ {
65751
+ id: "cardArtwork",
65752
+ label: "Card artwork",
65753
+ editor: {
65754
+ kind: "asset-upload",
65755
+ mode: "paired",
65756
+ fields: [
65757
+ {
65758
+ id: "face",
65759
+ label: "Front",
65760
+ accept: ["image/*"],
65761
+ required: true
65762
+ },
65763
+ {
65764
+ id: "back",
65765
+ label: "Back",
65766
+ accept: ["image/*"],
65767
+ required: true
65768
+ }
65769
+ ]
65770
+ }
65771
+ }
65772
+ ],
65773
+ submit: {
65774
+ kind: "create-items",
65775
+ itemType: "Card",
65776
+ strategy: "per-upload-entry",
65777
+ placement: "stagger-from-pointer",
65778
+ properties: [
65779
+ {
65780
+ property: "faceUrl",
65781
+ source: { kind: "uploadField", controlId: "cardArtwork", fieldId: "face" }
65782
+ },
65783
+ {
65784
+ property: "backsideUrl",
65785
+ source: { kind: "uploadField", controlId: "cardArtwork", fieldId: "back" }
65786
+ }
65787
+ ]
65788
+ }
65789
+ }
65790
+ },
65791
+ surface: {
65792
+ order: 4,
65793
+ group: {
65794
+ id: "gameItems",
65795
+ label: "Game items",
65796
+ icon: overlayAssetIcon("src/Items/Dice/icons/Tool.icon.svg"),
65797
+ order: 1,
65798
+ behavior: "open-panel"
65799
+ },
65800
+ relatedToolNames: ["AddDice", "AddScreen", "AddPouch"]
65801
+ }
65802
+ };
65654
65803
 
65655
65804
  // src/Items/Card/Card.ts
65656
65805
  var defaultCardData = {
@@ -65845,6 +65994,11 @@ registerItem({
65845
65994
  defaultData: defaultCardData,
65846
65995
  overlay: cardOverlay
65847
65996
  });
65997
+ registerTool({
65998
+ name: "AddCard",
65999
+ tool: WorkflowTool,
66000
+ overlay: addCardToolOverlay
66001
+ });
65848
66002
  registerHotkey({
65849
66003
  name: "Rotate90deg",
65850
66004
  hotkey: { key: { button: "KeyQ", shift: true }, label: { windows: "Shift+Q", mac: "⇧Q" } },
@@ -66351,64 +66505,6 @@ registerHotkey({
66351
66505
  }
66352
66506
  });
66353
66507
  registerSelectionAction(createDeckSelectionAction);
66354
- // src/Tools/Tool.ts
66355
- class Tool {
66356
- leftButtonDown() {
66357
- return false;
66358
- }
66359
- leftButtonUp() {
66360
- return false;
66361
- }
66362
- leftButtonDouble() {
66363
- return false;
66364
- }
66365
- rightButtonDown() {
66366
- return false;
66367
- }
66368
- rightButtonUp() {
66369
- return false;
66370
- }
66371
- rightButtonDouble() {
66372
- return false;
66373
- }
66374
- middleButtonDown() {
66375
- return false;
66376
- }
66377
- middleButtonUp() {
66378
- return false;
66379
- }
66380
- middleButtonDouble() {
66381
- return false;
66382
- }
66383
- keyDown(_key) {
66384
- return false;
66385
- }
66386
- keyUp(_key) {
66387
- return false;
66388
- }
66389
- pointerMoveBy(_x, _y) {
66390
- return false;
66391
- }
66392
- pointerDown() {
66393
- return false;
66394
- }
66395
- pointerUp() {
66396
- return false;
66397
- }
66398
- onCancel() {}
66399
- onConfirm() {}
66400
- render(_context) {}
66401
- }
66402
-
66403
- // src/Tools/BoardTool.ts
66404
- class BoardTool extends Tool {
66405
- board;
66406
- constructor(board) {
66407
- super();
66408
- this.board = board;
66409
- }
66410
- }
66411
-
66412
66508
  // src/Tools/CustomTool.ts
66413
66509
  class CustomTool extends BoardTool {
66414
66510
  name;
@@ -70212,6 +70308,125 @@ class Presence {
70212
70308
  }
70213
70309
  }
70214
70310
 
70311
+ // src/Selection/SelectionOverlay.ts
70312
+ function everyItemHasRichText(items) {
70313
+ return items.length > 0 && items.every((item) => !!item.getRichText?.());
70314
+ }
70315
+ registerSelectionAction({
70316
+ id: "selection.delete",
70317
+ label: "Delete",
70318
+ icon: overlayAssetIcon("src/Overlay/icons/Delete.icon.svg"),
70319
+ description: "Removes the selected items from the board.",
70320
+ invoke: { kind: "selectionMethod", methodName: "removeFromBoard" },
70321
+ isAvailable: (items) => items.length > 0
70322
+ });
70323
+ registerSelectionAction({
70324
+ id: "selection.duplicate",
70325
+ label: "Duplicate",
70326
+ icon: overlayAssetIcon("src/Overlay/icons/Duplicate.icon.svg"),
70327
+ description: "Duplicates the selected items.",
70328
+ invoke: { kind: "selectionMethod", methodName: "duplicate" },
70329
+ isAvailable: (items) => items.length > 0
70330
+ });
70331
+ registerSelectionAction({
70332
+ id: "selection.lock",
70333
+ label: "Lock",
70334
+ icon: overlayAssetIcon("src/Overlay/icons/Lock.icon.svg"),
70335
+ description: "Locks the selected items.",
70336
+ invoke: { kind: "selectionMethod", methodName: "lock" },
70337
+ isAvailable: (items) => items.length > 0 && !items.some((item) => item.transformation.isLocked)
70338
+ });
70339
+ registerSelectionAction({
70340
+ id: "selection.unlock",
70341
+ label: "Unlock",
70342
+ icon: overlayAssetIcon("src/Overlay/icons/Unlock.icon.svg"),
70343
+ description: "Unlocks the selected items.",
70344
+ invoke: { kind: "selectionMethod", methodName: "unlock" },
70345
+ isAvailable: (items) => items.some((item) => item.transformation.isLocked)
70346
+ });
70347
+ registerSelectionAction({
70348
+ id: "selection.bringToFront",
70349
+ label: "Bring to front",
70350
+ icon: overlayAssetIcon("src/Overlay/icons/BringToFront.icon.svg"),
70351
+ description: "Moves the selection above overlapping items.",
70352
+ invoke: { kind: "selectionMethod", methodName: "bringToFront" },
70353
+ isAvailable: (items) => items.length > 0
70354
+ });
70355
+ registerSelectionAction({
70356
+ id: "selection.sendToBack",
70357
+ label: "Send to back",
70358
+ icon: overlayAssetIcon("src/Overlay/icons/SendToBack.icon.svg"),
70359
+ description: "Moves the selection behind overlapping items.",
70360
+ invoke: { kind: "selectionMethod", methodName: "sendToBack" },
70361
+ isAvailable: (items) => items.length > 0
70362
+ });
70363
+ registerSelectionAction({
70364
+ id: "selection.text.fontSize",
70365
+ label: "Font size",
70366
+ icon: styleFontSizeIcon(),
70367
+ invoke: { kind: "selectionMethod", methodName: "setFontSize" },
70368
+ controls: [
70369
+ {
70370
+ id: "fontSize",
70371
+ label: "Font size",
70372
+ valueSource: { kind: "selectionProperty", property: "getFontSize" },
70373
+ editor: {
70374
+ kind: "number-stepper",
70375
+ min: 8,
70376
+ max: 144,
70377
+ step: 1,
70378
+ presets: [12, 14, 16, 18, 24, 32, 48],
70379
+ unit: "px"
70380
+ },
70381
+ invoke: { kind: "selectionMethod", methodName: "setFontSize" }
70382
+ }
70383
+ ],
70384
+ isAvailable: everyItemHasRichText
70385
+ });
70386
+ registerSelectionAction({
70387
+ id: "selection.text.color",
70388
+ label: "Text color",
70389
+ icon: styleColorIcon({
70390
+ swatch: { kind: "selectionProperty", property: "getFontColor" }
70391
+ }),
70392
+ invoke: { kind: "selectionMethod", methodName: "setFontColor" },
70393
+ controls: [
70394
+ {
70395
+ id: "fontColor",
70396
+ label: "Text color",
70397
+ valueSource: { kind: "selectionProperty", property: "getFontColor" },
70398
+ editor: {
70399
+ kind: "color",
70400
+ palette: ["#111111", "#FFFFFF", "#E11D48", "#2563EB", "#16A34A", "#F59E0B"]
70401
+ },
70402
+ invoke: { kind: "selectionMethod", methodName: "setFontColor" }
70403
+ }
70404
+ ],
70405
+ isAvailable: everyItemHasRichText
70406
+ });
70407
+ registerSelectionAction({
70408
+ id: "selection.text.highlight",
70409
+ label: "Highlight",
70410
+ icon: {
70411
+ ...overlayAssetIcon("src/Items/Screen/icons/Background.icon.svg"),
70412
+ state: { swatch: { kind: "selectionProperty", property: "getFontHighlight" } }
70413
+ },
70414
+ invoke: { kind: "selectionMethod", methodName: "setFontHighlight" },
70415
+ controls: [
70416
+ {
70417
+ id: "fontHighlight",
70418
+ label: "Highlight",
70419
+ valueSource: { kind: "selectionProperty", property: "getFontHighlight" },
70420
+ editor: {
70421
+ kind: "color",
70422
+ palette: ["transparent", "#FEF08A", "#FDBA74", "#BFDBFE", "#FBCFE8", "#D9F99D"]
70423
+ },
70424
+ invoke: { kind: "selectionMethod", methodName: "setFontHighlight" }
70425
+ }
70426
+ ],
70427
+ isAvailable: everyItemHasRichText
70428
+ });
70429
+
70215
70430
  // src/Selection/SelectionItems.ts
70216
70431
  class SelectionItems {
70217
70432
  items = new Map;
@@ -78270,6 +78485,7 @@ export {
78270
78485
  overlaySymbolIcon,
78271
78486
  overlayAssetIcon,
78272
78487
  omitDefaultProperties,
78488
+ normalizeOverlayIconAssetPath,
78273
78489
  messageRouter,
78274
78490
  meetsWCAG_AAA,
78275
78491
  meetsWCAG_AA,
@@ -78338,6 +78554,7 @@ export {
78338
78554
  calculatePosition,
78339
78555
  calculateAudioPosition,
78340
78556
  borderWidths,
78557
+ WorkflowTool,
78341
78558
  VideoItem,
78342
78559
  Transformation,
78343
78560
  Tools,
@@ -78370,6 +78587,7 @@ export {
78370
78587
  PRESENCE_CLEANUP_IDLE_TIMER,
78371
78588
  OVERLAY_SYMBOL_KEYS,
78372
78589
  OVERLAY_ICON_SPRITE_PATH,
78590
+ OVERLAY_ICON_ASSET_PREFIX,
78373
78591
  MiroItemConverter,
78374
78592
  Mbr,
78375
78593
  Matrix,