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
@@ -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,15 +11511,18 @@ function overlaySymbolIcon(key) {
11507
11511
  sourcePath: OVERLAY_ICON_SPRITE_PATH
11508
11512
  };
11509
11513
  }
11510
- function overlayAssetIcon(path2, state) {
11514
+ function overlayAssetIcon(sourcePath, state) {
11515
+ const path2 = normalizeOverlayIconAssetPath(sourcePath);
11511
11516
  return state ? {
11512
11517
  kind: "asset",
11513
11518
  path: path2,
11519
+ sourcePath,
11514
11520
  mimeType: "image/svg+xml",
11515
11521
  state
11516
11522
  } : {
11517
11523
  kind: "asset",
11518
11524
  path: path2,
11525
+ sourcePath,
11519
11526
  mimeType: "image/svg+xml"
11520
11527
  };
11521
11528
  }
@@ -11675,10 +11682,23 @@ function compareEntriesByOrder(a, b) {
11675
11682
  return aOrder - bOrder || aLabel.localeCompare(bLabel);
11676
11683
  }
11677
11684
  function readOverlayValueSource(context, source) {
11685
+ if (source.kind === "selectionProperty") {
11686
+ return readOverlayContextProperty(context.selection, source.property);
11687
+ }
11678
11688
  if (source.kind === "itemProperty") {
11679
- return context.item ? context.item[source.property] : undefined;
11689
+ return readOverlayContextProperty(context.item, source.property);
11690
+ }
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);
11680
11700
  }
11681
- return context.tool ? context.tool[source.property] : undefined;
11701
+ return value;
11682
11702
  }
11683
11703
  // src/Items/BaseItem/BaseItem.ts
11684
11704
  class BaseItem {
@@ -63155,6 +63175,68 @@ var propertyOps = {
63155
63175
  }
63156
63176
  };
63157
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
+
63158
63240
  // src/Items/Card/CardOverlay.ts
63159
63241
  var cardOverlay = {
63160
63242
  itemType: "Card",
@@ -63190,6 +63272,73 @@ var cardOverlay = {
63190
63272
  }
63191
63273
  ]
63192
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
+ };
63193
63342
 
63194
63343
  // src/Items/Card/Card.ts
63195
63344
  var defaultCardData = {
@@ -63384,6 +63533,11 @@ registerItem({
63384
63533
  defaultData: defaultCardData,
63385
63534
  overlay: cardOverlay
63386
63535
  });
63536
+ registerTool({
63537
+ name: "AddCard",
63538
+ tool: WorkflowTool,
63539
+ overlay: addCardToolOverlay
63540
+ });
63387
63541
  registerHotkey({
63388
63542
  name: "Rotate90deg",
63389
63543
  hotkey: { key: { button: "KeyQ", shift: true }, label: { windows: "Shift+Q", mac: "⇧Q" } },
@@ -63890,64 +64044,6 @@ registerHotkey({
63890
64044
  }
63891
64045
  });
63892
64046
  registerSelectionAction(createDeckSelectionAction);
63893
- // src/Tools/Tool.ts
63894
- class Tool {
63895
- leftButtonDown() {
63896
- return false;
63897
- }
63898
- leftButtonUp() {
63899
- return false;
63900
- }
63901
- leftButtonDouble() {
63902
- return false;
63903
- }
63904
- rightButtonDown() {
63905
- return false;
63906
- }
63907
- rightButtonUp() {
63908
- return false;
63909
- }
63910
- rightButtonDouble() {
63911
- return false;
63912
- }
63913
- middleButtonDown() {
63914
- return false;
63915
- }
63916
- middleButtonUp() {
63917
- return false;
63918
- }
63919
- middleButtonDouble() {
63920
- return false;
63921
- }
63922
- keyDown(_key) {
63923
- return false;
63924
- }
63925
- keyUp(_key) {
63926
- return false;
63927
- }
63928
- pointerMoveBy(_x, _y) {
63929
- return false;
63930
- }
63931
- pointerDown() {
63932
- return false;
63933
- }
63934
- pointerUp() {
63935
- return false;
63936
- }
63937
- onCancel() {}
63938
- onConfirm() {}
63939
- render(_context) {}
63940
- }
63941
-
63942
- // src/Tools/BoardTool.ts
63943
- class BoardTool extends Tool {
63944
- board;
63945
- constructor(board) {
63946
- super();
63947
- this.board = board;
63948
- }
63949
- }
63950
-
63951
64047
  // src/Tools/CustomTool.ts
63952
64048
  class CustomTool extends BoardTool {
63953
64049
  name;
@@ -67751,6 +67847,125 @@ class Presence {
67751
67847
  }
67752
67848
  }
67753
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
+
67754
67969
  // src/Selection/SelectionItems.ts
67755
67970
  class SelectionItems {
67756
67971
  items = new Map;
@@ -75737,6 +75952,7 @@ export {
75737
75952
  overlaySymbolIcon,
75738
75953
  overlayAssetIcon,
75739
75954
  omitDefaultProperties,
75955
+ normalizeOverlayIconAssetPath,
75740
75956
  messageRouter,
75741
75957
  meetsWCAG_AAA,
75742
75958
  meetsWCAG_AA,
@@ -75805,6 +76021,7 @@ export {
75805
76021
  calculatePosition,
75806
76022
  calculateAudioPosition,
75807
76023
  borderWidths,
76024
+ WorkflowTool,
75808
76025
  VideoItem,
75809
76026
  Transformation,
75810
76027
  Tools,
@@ -75837,6 +76054,7 @@ export {
75837
76054
  PRESENCE_CLEANUP_IDLE_TIMER,
75838
76055
  OVERLAY_SYMBOL_KEYS,
75839
76056
  OVERLAY_ICON_SPRITE_PATH,
76057
+ OVERLAY_ICON_ASSET_PREFIX,
75840
76058
  MiroItemConverter,
75841
76059
  Mbr,
75842
76060
  Matrix,