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/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,15 +11504,18 @@ function overlaySymbolIcon(key) {
11500
11504
  sourcePath: OVERLAY_ICON_SPRITE_PATH
11501
11505
  };
11502
11506
  }
11503
- function overlayAssetIcon(path2, state) {
11507
+ function overlayAssetIcon(sourcePath, state) {
11508
+ const path2 = normalizeOverlayIconAssetPath(sourcePath);
11504
11509
  return state ? {
11505
11510
  kind: "asset",
11506
11511
  path: path2,
11512
+ sourcePath,
11507
11513
  mimeType: "image/svg+xml",
11508
11514
  state
11509
11515
  } : {
11510
11516
  kind: "asset",
11511
11517
  path: path2,
11518
+ sourcePath,
11512
11519
  mimeType: "image/svg+xml"
11513
11520
  };
11514
11521
  }
@@ -11668,10 +11675,23 @@ function compareEntriesByOrder(a, b) {
11668
11675
  return aOrder - bOrder || aLabel.localeCompare(bLabel);
11669
11676
  }
11670
11677
  function readOverlayValueSource(context, source) {
11678
+ if (source.kind === "selectionProperty") {
11679
+ return readOverlayContextProperty(context.selection, source.property);
11680
+ }
11671
11681
  if (source.kind === "itemProperty") {
11672
- return context.item ? context.item[source.property] : undefined;
11682
+ return readOverlayContextProperty(context.item, source.property);
11683
+ }
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);
11673
11693
  }
11674
- return context.tool ? context.tool[source.property] : undefined;
11694
+ return value;
11675
11695
  }
11676
11696
  // src/Items/BaseItem/BaseItem.ts
11677
11697
  class BaseItem {
@@ -63148,6 +63168,68 @@ var propertyOps = {
63148
63168
  }
63149
63169
  };
63150
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
+
63151
63233
  // src/Items/Card/CardOverlay.ts
63152
63234
  var cardOverlay = {
63153
63235
  itemType: "Card",
@@ -63183,6 +63265,73 @@ var cardOverlay = {
63183
63265
  }
63184
63266
  ]
63185
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
+ };
63186
63335
 
63187
63336
  // src/Items/Card/Card.ts
63188
63337
  var defaultCardData = {
@@ -63377,6 +63526,11 @@ registerItem({
63377
63526
  defaultData: defaultCardData,
63378
63527
  overlay: cardOverlay
63379
63528
  });
63529
+ registerTool({
63530
+ name: "AddCard",
63531
+ tool: WorkflowTool,
63532
+ overlay: addCardToolOverlay
63533
+ });
63380
63534
  registerHotkey({
63381
63535
  name: "Rotate90deg",
63382
63536
  hotkey: { key: { button: "KeyQ", shift: true }, label: { windows: "Shift+Q", mac: "⇧Q" } },
@@ -63883,64 +64037,6 @@ registerHotkey({
63883
64037
  }
63884
64038
  });
63885
64039
  registerSelectionAction(createDeckSelectionAction);
63886
- // src/Tools/Tool.ts
63887
- class Tool {
63888
- leftButtonDown() {
63889
- return false;
63890
- }
63891
- leftButtonUp() {
63892
- return false;
63893
- }
63894
- leftButtonDouble() {
63895
- return false;
63896
- }
63897
- rightButtonDown() {
63898
- return false;
63899
- }
63900
- rightButtonUp() {
63901
- return false;
63902
- }
63903
- rightButtonDouble() {
63904
- return false;
63905
- }
63906
- middleButtonDown() {
63907
- return false;
63908
- }
63909
- middleButtonUp() {
63910
- return false;
63911
- }
63912
- middleButtonDouble() {
63913
- return false;
63914
- }
63915
- keyDown(_key) {
63916
- return false;
63917
- }
63918
- keyUp(_key) {
63919
- return false;
63920
- }
63921
- pointerMoveBy(_x, _y) {
63922
- return false;
63923
- }
63924
- pointerDown() {
63925
- return false;
63926
- }
63927
- pointerUp() {
63928
- return false;
63929
- }
63930
- onCancel() {}
63931
- onConfirm() {}
63932
- render(_context) {}
63933
- }
63934
-
63935
- // src/Tools/BoardTool.ts
63936
- class BoardTool extends Tool {
63937
- board;
63938
- constructor(board) {
63939
- super();
63940
- this.board = board;
63941
- }
63942
- }
63943
-
63944
64040
  // src/Tools/CustomTool.ts
63945
64041
  class CustomTool extends BoardTool {
63946
64042
  name;
@@ -67744,6 +67840,125 @@ class Presence {
67744
67840
  }
67745
67841
  }
67746
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
+
67747
67962
  // src/Selection/SelectionItems.ts
67748
67963
  class SelectionItems {
67749
67964
  items = new Map;
@@ -75635,6 +75850,7 @@ export {
75635
75850
  overlaySymbolIcon,
75636
75851
  overlayAssetIcon,
75637
75852
  omitDefaultProperties,
75853
+ normalizeOverlayIconAssetPath,
75638
75854
  messageRouter,
75639
75855
  meetsWCAG_AAA,
75640
75856
  meetsWCAG_AA,
@@ -75703,6 +75919,7 @@ export {
75703
75919
  calculatePosition,
75704
75920
  calculateAudioPosition,
75705
75921
  borderWidths,
75922
+ WorkflowTool,
75706
75923
  VideoItem,
75707
75924
  Transformation,
75708
75925
  Tools,
@@ -75735,6 +75952,7 @@ export {
75735
75952
  PRESENCE_CLEANUP_IDLE_TIMER,
75736
75953
  OVERLAY_SYMBOL_KEYS,
75737
75954
  OVERLAY_ICON_SPRITE_PATH,
75955
+ OVERLAY_ICON_ASSET_PREFIX,
75738
75956
  MiroItemConverter,
75739
75957
  Mbr,
75740
75958
  Matrix,