@sequent-org/moodboard 1.4.31 → 1.4.33

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 (139) hide show
  1. package/package.json +5 -1
  2. package/src/assets/fonts/inter/inter-cyrillic-400-normal.woff2 +0 -0
  3. package/src/assets/fonts/inter/inter-cyrillic-500-normal.woff2 +0 -0
  4. package/src/assets/fonts/inter/inter-latin-400-normal.woff2 +0 -0
  5. package/src/assets/fonts/inter/inter-latin-500-normal.woff2 +0 -0
  6. package/src/assets/icons/attachments.svg +3 -1
  7. package/src/assets/icons/comments.svg +2 -2
  8. package/src/assets/icons/connector.svg +6 -0
  9. package/src/assets/icons/emoji.svg +6 -1
  10. package/src/assets/icons/frame.svg +4 -1
  11. package/src/assets/icons/image.svg +5 -1
  12. package/src/assets/icons/laser.svg +1 -0
  13. package/src/assets/icons/lasso.svg +5 -0
  14. package/src/assets/icons/mindmap.svg +10 -2
  15. package/src/assets/icons/note.svg +4 -1
  16. package/src/assets/icons/pan.svg +5 -2
  17. package/src/assets/icons/pencil.svg +4 -1
  18. package/src/assets/icons/reactions.svg +5 -0
  19. package/src/assets/icons/redo.svg +3 -2
  20. package/src/assets/icons/select.svg +2 -8
  21. package/src/assets/icons/shapes.svg +5 -1
  22. package/src/assets/icons/text-add.svg +15 -1
  23. package/src/assets/icons/undo.svg +3 -2
  24. package/src/assets/reactions/1f44d.svg +20 -0
  25. package/src/assets/reactions/1f44e.svg +20 -0
  26. package/src/assets/reactions/2705.svg +20 -0
  27. package/src/assets/reactions/274c.svg +19 -0
  28. package/src/assets/reactions/2753.svg +20 -0
  29. package/src/assets/reactions/2764.svg +22 -0
  30. package/src/assets/reactions/2b50.svg +19 -0
  31. package/src/assets/reactions/plus-one.svg +25 -0
  32. package/src/core/PixiEngine.js +23 -0
  33. package/src/core/bootstrap/CoreInitializer.js +43 -0
  34. package/src/core/commands/GroupDeleteCommand.js +13 -1
  35. package/src/core/commands/UpdateShapeStyleCommand.js +121 -0
  36. package/src/core/commands/UpdateTextStyleCommand.js +17 -6
  37. package/src/core/commands/index.js +3 -0
  38. package/src/core/events/Events.js +22 -0
  39. package/src/core/flows/LayerAndViewportFlow.js +1 -0
  40. package/src/core/flows/ObjectLifecycleFlow.js +155 -7
  41. package/src/core/index.js +28 -1
  42. package/src/grid/CrossGridZoomPhases.js +3 -3
  43. package/src/initNoBundler.js +1 -1
  44. package/src/moodboard/DataManager.js +28 -0
  45. package/src/moodboard/MoodBoard.js +27 -0
  46. package/src/moodboard/bootstrap/MoodBoardInitializer.js +69 -1
  47. package/src/moodboard/bootstrap/MoodBoardUiFactory.js +22 -4
  48. package/src/moodboard/integration/MoodBoardEventBindings.js +5 -1
  49. package/src/moodboard/integration/MoodBoardLoadApi.js +10 -1
  50. package/src/moodboard/lifecycle/MoodBoardDestroyer.js +9 -0
  51. package/src/objects/ConnectorObject.js +2 -2
  52. package/src/objects/FrameObject.js +119 -59
  53. package/src/objects/ShapeObject.js +49 -74
  54. package/src/objects/shape/ShapeDrawer.js +210 -0
  55. package/src/services/ConnectorBindingResolver.js +112 -0
  56. package/src/services/ConnectorRouter.js +210 -0
  57. package/src/services/comments/CommentService.js +344 -0
  58. package/src/tools/object-tools/CommentTool.js +85 -0
  59. package/src/tools/object-tools/DrawingTool.js +110 -10
  60. package/src/tools/object-tools/LaserPointerTool.js +121 -0
  61. package/src/tools/object-tools/SelectTool.js +25 -1
  62. package/src/tools/object-tools/TextTool.js +6 -1
  63. package/src/tools/object-tools/connector/ConnectorDragController.js +50 -3
  64. package/src/tools/object-tools/connector/connectorGesture.js +33 -19
  65. package/src/tools/object-tools/placement/PlacementInputRouter.js +22 -1
  66. package/src/tools/object-tools/selection/BoxSelectController.js +24 -2
  67. package/src/tools/object-tools/selection/FrameTitleInlineEditorController.js +139 -0
  68. package/src/tools/object-tools/selection/InlineEditorController.js +12 -0
  69. package/src/tools/object-tools/selection/InlineEditorDomFactory.js +36 -0
  70. package/src/tools/object-tools/selection/LassoSelectController.js +125 -0
  71. package/src/tools/object-tools/selection/MindmapInlineEditorController.js +1 -0
  72. package/src/tools/object-tools/selection/SelectInputRouter.js +64 -5
  73. package/src/tools/object-tools/selection/SelectToolLifecycleController.js +11 -1
  74. package/src/tools/object-tools/selection/SelectToolSetup.js +13 -1
  75. package/src/tools/object-tools/selection/TextEditorInteractionController.js +46 -12
  76. package/src/tools/object-tools/selection/TextEditorSyncService.js +1 -0
  77. package/src/tools/object-tools/selection/TextInlineEditorController.js +65 -6
  78. package/src/ui/CommentPopover.js +6 -0
  79. package/src/ui/CommentsBar.js +91 -0
  80. package/src/ui/ConnectorPropertiesPanel.js +150 -0
  81. package/src/ui/ContextMenu.js +25 -0
  82. package/src/ui/DrawingPropertiesPanel.js +362 -0
  83. package/src/ui/FilePropertiesPanel.js +5 -0
  84. package/src/ui/FramePropertiesPanel.js +5 -0
  85. package/src/ui/HtmlTextLayer.js +246 -66
  86. package/src/ui/NotePropertiesPanel.js +6 -0
  87. package/src/ui/ShapePropertiesPanel.js +307 -0
  88. package/src/ui/TextPropertiesPanel.js +100 -1
  89. package/src/ui/Toolbar.js +25 -2
  90. package/src/ui/Topbar.js +2 -2
  91. package/src/ui/animation/HoverLiftController.js +6 -7
  92. package/src/ui/chat/ChatComposer.js +59 -12
  93. package/src/ui/chat/ChatExtendedPromptModal.js +1 -12
  94. package/src/ui/chat/ChatWindow.js +60 -144
  95. package/src/ui/chat/ChatWindowRenderer.js +1 -8
  96. package/src/ui/chat/icons.js +0 -4
  97. package/src/ui/comments/CommentListPanel.js +213 -0
  98. package/src/ui/comments/CommentPinLayer.js +448 -0
  99. package/src/ui/comments/CommentThreadPopover.js +539 -0
  100. package/src/ui/comments/commentFormat.js +32 -0
  101. package/src/ui/connector-properties/ConnectorPropertiesPanelBindings.js +223 -0
  102. package/src/ui/connector-properties/ConnectorPropertiesPanelEventBridge.js +114 -0
  103. package/src/ui/connector-properties/ConnectorPropertiesPanelMapper.js +144 -0
  104. package/src/ui/connector-properties/ConnectorPropertiesPanelRenderer.js +447 -0
  105. package/src/ui/connector-properties/ConnectorPropertiesPanelState.js +61 -0
  106. package/src/ui/connectors/ConnectionAnchorsLayer.js +1 -0
  107. package/src/ui/connectors/ConnectorHandlesLayer.js +321 -0
  108. package/src/ui/connectors/ConnectorLabelLayer.js +334 -0
  109. package/src/ui/connectors/ConnectorLayer.js +264 -57
  110. package/src/ui/handles/HandlesDomRenderer.js +5 -13
  111. package/src/ui/handles/HandlesEventBridge.js +1 -0
  112. package/src/ui/handles/SingleSelectionHandlesController.js +4 -0
  113. package/src/ui/mindmap/MindmapCollapseLayer.js +1 -0
  114. package/src/ui/mindmap/MindmapConnectionLayer.js +1 -0
  115. package/src/ui/mindmap/MindmapHtmlTextLayer.js +6 -0
  116. package/src/ui/shape-properties/ShapePropertiesPanelDom.js +533 -0
  117. package/src/ui/shape-properties/ShapePropertiesPanelSync.js +132 -0
  118. package/src/ui/styles/chat.css +682 -28
  119. package/src/ui/styles/index.css +1 -0
  120. package/src/ui/styles/panels.css +112 -2
  121. package/src/ui/styles/shape-properties-panel.css +250 -0
  122. package/src/ui/styles/toolbar.css +7 -2
  123. package/src/ui/styles/topbar.css +1 -1
  124. package/src/ui/styles/workspace.css +257 -6
  125. package/src/ui/text-properties/TextFormatControls.js +88 -0
  126. package/src/ui/text-properties/TextListRenderer.js +137 -0
  127. package/src/ui/text-properties/TextPropertiesPanelBindings.js +27 -0
  128. package/src/ui/text-properties/TextPropertiesPanelEventBridge.js +3 -1
  129. package/src/ui/text-properties/TextPropertiesPanelMapper.js +56 -0
  130. package/src/ui/text-properties/TextPropertiesPanelRenderer.js +24 -0
  131. package/src/ui/text-properties/TextPropertiesPanelState.js +8 -0
  132. package/src/ui/toolbar/ReactionsPopupController.js +88 -0
  133. package/src/ui/toolbar/ToolbarActionRouter.js +71 -5
  134. package/src/ui/toolbar/ToolbarPopupsController.js +120 -118
  135. package/src/ui/toolbar/ToolbarRenderer.js +9 -1
  136. package/src/ui/toolbar/ToolbarStateController.js +4 -1
  137. package/src/utils/iconLoader.js +17 -16
  138. package/src/utils/markdown.js +14 -0
  139. package/src/utils/richText.js +125 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sequent-org/moodboard",
3
- "version": "1.4.31",
3
+ "version": "1.4.33",
4
4
  "type": "module",
5
5
  "description": "Interactive moodboard",
6
6
  "main": "./src/index.js",
@@ -42,11 +42,15 @@
42
42
  "dependencies": {
43
43
  "@pixi/filter-drop-shadow": "^5.2.0",
44
44
  "axios": "^1.0.0",
45
+ "dompurify": "^3.4.7",
45
46
  "gsap": "^3.15.0",
47
+ "katex": "^0.17.0",
46
48
  "lucide-static": "^1.16.0",
49
+ "marked": "^18.0.4",
47
50
  "pixi.js": "^7.0.0"
48
51
  },
49
52
  "devDependencies": {
53
+ "@fontsource/inter": "^5.2.8",
50
54
  "@playwright/test": "^1.58.2",
51
55
  "@testing-library/dom": "^10.4.1",
52
56
  "@testing-library/jest-dom": "^6.7.0",
@@ -1 +1,3 @@
1
- <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" type="attach" size="22"><path d="M19.3898 9.99121L11.1255 18.2555C9.24609 20.1349 6.19898 20.1349 4.31958 18.2555C2.44018 16.3761 2.44019 13.329 4.31958 11.4496L12.5839 3.1853C13.8368 1.93237 15.8682 1.93237 17.1212 3.1853C18.3741 4.43824 18.3741 6.46964 17.1212 7.72257L9.18094 15.6628C8.55448 16.2893 7.53877 16.2893 6.91231 15.6628C6.28584 15.0363 6.28584 14.0206 6.91231 13.3942L13.8803 6.42621"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551" />
3
+ </svg>
@@ -1,3 +1,3 @@
1
- <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M0.5 8C0.5 6.51664 0.939867 5.0666 1.76398 3.83323C2.58809 2.59986 3.75943 1.63856 5.12987 1.07091C6.50032 0.50325 8.00832 0.354725 9.46318 0.644114C10.918 0.933503 12.2544 1.64781 13.3033 2.6967C14.3522 3.7456 15.0665 5.08197 15.3559 6.53683C15.6453 7.99168 15.4968 9.49968 14.9291 10.8701C14.3614 12.2406 13.4001 13.4119 12.1668 14.236C10.9334 15.0601 9.48336 15.5 8 15.5H3.2C2.632 15.5 2.236 15.5 1.927 15.474C1.625 15.45 1.451 15.404 1.319 15.337C1.03651 15.1932 0.806853 14.9635 0.663 14.681C0.596 14.549 0.55 14.375 0.526 14.073C0.5 13.765 0.5 13.368 0.5 12.8V8Z" stroke="#1B1F24"/>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719" />
3
3
  </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <circle cx="5" cy="19" r="2"/>
3
+ <circle cx="19" cy="5" r="2"/>
4
+ <line x1="6.5" y1="17.5" x2="17.5" y2="6.5"/>
5
+ <polyline points="13 5 19 5 19 11"/>
6
+ </svg>
@@ -1 +1,6 @@
1
- <svg aria-hidden="true" viewBox="0 0 24 24" fill="none" class="c-bxOhME c-bxOhME-dvzWZT-size-medium c-bxOhME-iPJLV-css"><path fill="currentColor" d="M12.05 4a8 8 0 0 0-1.75 15.808.52.52 0 0 0 .478-.144.913.913 0 0 0 .27-.664v-1c0-.366.028-.725.082-1.075A5.001 5.001 0 0 1 7 12h2a3 3 0 0 0 2.729 2.988A7 7 0 0 1 18.049 11h1a.913.913 0 0 0 .665-.27.52.52 0 0 0 .144-.478A8.005 8.005 0 0 0 12.062 4h-.013Zm6.585 9h-.586a5 5 0 0 0-5 5v.586L18.635 13ZM2.05 12c0-5.523 4.477-10 10-10h.014a9.948 9.948 0 0 1 5.817 1.875A9.987 9.987 0 0 1 22.05 12v.414L12.462 22h-.414c-5.523 0-10-4.477-10-10ZM8 8h2v2H8V8Zm6 0h2v2h-2V8Z"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <circle cx="12" cy="12" r="10" />
3
+ <path d="M8 14s1.5 2 4 2 4-2 4-2" />
4
+ <line x1="9" x2="9.01" y1="9" y2="9" />
5
+ <line x1="15" x2="15.01" y1="9" y2="9" />
6
+ </svg>
@@ -1 +1,4 @@
1
- <svg aria-hidden="true" viewBox="0 0 24 24" fill="none" class="c-bxOhME c-bxOhME-dvzWZT-size-medium c-bxOhME-iPJLV-css"><path fill="currentColor" d="M6 2v2h12V2h2v2h2v2h-2v12h2v2h-2v2h-2v-2H6v2H4v-2H2v-2h2V6H2V4h2V2h2Zm0 16h12V6H6v12Z"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <rect x="3" y="3" width="18" height="18" rx="3" />
3
+ <rect x="3" y="3" width="9" height="6" rx="3" />
4
+ </svg>
@@ -1 +1,5 @@
1
- <svg aria-hidden="true" viewBox="0 0 24 24" fill="none" class="c-bxOhME c-bxOhME-dvzWZT-size-medium c-bxOhME-iPJLV-css"><path fill="currentColor" fill-rule="evenodd" d="M15 6a3 3 0 1 1 0 6 3 3 0 0 1 0-6Zm0 2a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm4-6a3 3 0 0 1 3 3v14a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h14ZM5 4a1 1 0 0 0-1 1v9.148l2.219-2.773L7 11h2l.747.336L17.448 20H19a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H5ZM4 17.352V19a1 1 0 0 0 1 1h9.773l-6.221-7h-1.07L4 17.352Z" clip-rule="evenodd"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <rect width="18" height="18" x="3" y="3" rx="2" ry="2" />
3
+ <circle cx="9" cy="9" r="2" />
4
+ <path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" />
5
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="2"/><path d="M12 2v3"/><path d="m4.93 4.93 2.12 2.12"/><path d="M2 12h3"/><path d="m4.93 19.07 2.12-2.12"/><path d="M12 19v3"/><path d="m19.07 19.07-2.12-2.12"/><path d="M22 12h-3"/><path d="m19.07 4.93-2.12 2.12"/></svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M3.704 14.467a10 8 0 1 1 3.115 2.375" />
3
+ <path d="M7 22a5 5 0 0 1-2-3.994" />
4
+ <circle cx="5" cy="16" r="2" />
5
+ </svg>
@@ -1,3 +1,11 @@
1
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M19 2a3 3 0 1 1 0 6c-.463 0-.9-.109-1.291-.296l-1.19 1.19A3.992 3.992 0 0 1 18 12a3.991 3.991 0 0 1-1.48 3.105l1.189 1.19A2.984 2.984 0 0 1 19 16a3 3 0 1 1-3 3c0-.463.108-.9.295-1.291l-1.748-1.748A4.106 4.106 0 0 1 14 16h-4c-.186 0-.37-.014-.549-.04l-1.747 1.75c.187.392.296.828.296 1.291a3 3 0 1 1-3-3c.462 0 .899.108 1.29.295l1.19-1.19A3.992 3.992 0 0 1 6 12a3.99 3.99 0 0 1 1.48-3.106l-1.19-1.19A2.982 2.982 0 0 1 5 8a3 3 0 1 1 3-3c0 .463-.109.899-.296 1.29l1.748 1.748C9.632 8.014 9.814 8 10 8h4c.185 0 .368.013.547.037l1.748-1.747A2.983 2.983 0 0 1 16 5a3 3 0 0 1 3-3ZM5 18a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm14 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm-9-8a2 2 0 1 0 0 4h4a2 2 0 1 0 0-4h-4ZM5 4a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm14 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"/>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <rect x="9" y="9" width="6" height="6" rx="2" />
3
+ <circle cx="5" cy="5" r="2" />
4
+ <circle cx="19" cy="5" r="2" />
5
+ <circle cx="5" cy="19" r="2" />
6
+ <circle cx="19" cy="19" r="2" />
7
+ <path d="m6.5 6.5 2 2" />
8
+ <path d="m17.5 6.5-2 2" />
9
+ <path d="m6.5 17.5 2-2" />
10
+ <path d="m17.5 17.5-2-2" />
3
11
  </svg>
@@ -1 +1,4 @@
1
- <svg aria-hidden="true" viewBox="0 0 24 24" fill="none" class="c-bxOhME c-bxOhME-dvzWZT-size-medium c-bxOhME-iPJLV-css"><path fill="currentColor" fill-rule="evenodd" d="M5 2a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h7c5.523 0 10-4.477 10-10V5a3 3 0 0 0-3-3H5Zm15 7V5a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1v-.004h4a3 3 0 0 0 3-3V13l1-1h4a3 3 0 0 0 3-3Zm-6.952 10.932A4.977 4.977 0 0 0 14 16.996V14h3a4.977 4.977 0 0 0 2.932-.95 8.004 8.004 0 0 1-6.884 6.882Z" clip-rule="evenodd"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z" />
3
+ <path d="M15 3v5a1 1 0 0 0 1 1h5" />
4
+ </svg>
@@ -1,3 +1,6 @@
1
- <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path fill-rule="evenodd" clip-rule="evenodd" d="M10.997 5.62H11V7C11 7.13261 11.0527 7.25979 11.1465 7.35356C11.2402 7.44732 11.3674 7.5 11.5 7.5C11.6326 7.5 11.7598 7.44732 11.8536 7.35356C11.9473 7.25979 12 7.13261 12 7V2.923C12.02 2.6653 12.139 2.42536 12.3321 2.25349C12.5251 2.08162 12.7773 1.99119 13.0355 2.00115C13.2938 2.0111 13.5382 2.12069 13.7175 2.30691C13.8967 2.49313 13.9969 2.74153 13.997 3V5.62H14V7C14 7.13261 14.0527 7.25979 14.1465 7.35356C14.2402 7.44732 14.3674 7.5 14.5 7.5C14.6326 7.5 14.7598 7.44732 14.8536 7.35356C14.9473 7.25979 15 7.13261 15 7V5C15 4.73479 15.1054 4.48043 15.2929 4.2929C15.4804 4.10536 15.7348 4 16 4C16.2652 4 16.5196 4.10536 16.7071 4.2929C16.8947 4.48043 17 4.73479 17 5V5.62H17.01V10.363C17.0103 10.4109 17.0069 10.4587 17 10.506C16.9968 10.5292 16.9945 10.5526 16.993 10.576C16.8701 12.2839 16.105 13.8818 14.8515 15.0482C13.598 16.2147 11.9493 16.8631 10.237 16.863C10.075 16.863 9.91801 16.859 9.76701 16.853C8.23201 16.783 6.88201 16.067 5.66001 14.933C4.43001 13.792 3.38001 12.273 2.47201 10.714C2.18301 10.219 1.98601 9.834 1.91701 9.521C1.89271 9.43553 1.88725 9.34579 1.90101 9.258C1.90801 9.229 1.92301 9.187 1.98801 9.123C2.05309 9.05357 2.13441 9.00141 2.22466 8.97121C2.31491 8.94101 2.41125 8.93372 2.50501 8.95C2.72901 8.98 3.02301 9.115 3.31201 9.384L3.31301 9.386L4.31301 10.331C4.45502 10.4653 4.63325 10.555 4.82568 10.589C5.01811 10.6231 5.2163 10.6 5.39577 10.5227C5.57524 10.4454 5.72811 10.3171 5.8355 10.1539C5.94288 9.99058 6.00008 9.79943 6.00001 9.604V3C6.00001 2.73479 6.10537 2.48043 6.2929 2.2929C6.48044 2.10536 6.7348 2 7.00001 2C7.26523 2 7.51958 2.10536 7.70712 2.2929C7.89465 2.48043 8.00001 2.73479 8.00001 3V7C8.00001 7.13261 8.05269 7.25979 8.14646 7.35356C8.24023 7.44732 8.3674 7.5 8.50001 7.5C8.63262 7.5 8.7598 7.44732 8.85357 7.35356C8.94733 7.25979 9.00001 7.13261 9.00001 7V2C9.00001 1.73479 9.10537 1.48043 9.2929 1.2929C9.48044 1.10536 9.73479 1 10 1C10.2652 1 10.5196 1.10536 10.7071 1.2929C10.8947 1.48043 11 1.73479 11 2V2.89C10.998 2.92664 10.997 2.96332 10.997 3V5.62ZM5.00001 5.5V3C5.00008 2.63777 5.09852 2.28235 5.28483 1.97171C5.47114 1.66106 5.73831 1.40684 6.05783 1.2362C6.37736 1.06555 6.73722 0.984888 7.09901 1.00282C7.4608 1.02075 7.81093 1.1366 8.11201 1.338C8.24888 0.946692 8.50397 0.607583 8.84198 0.36758C9.18 0.127577 9.58425 -0.00145855 9.9988 -0.00167819C10.4134 -0.00189782 10.8177 0.126709 11.156 0.366354C11.4943 0.605999 11.7497 0.944837 11.887 1.336C12.1882 1.13504 12.5383 1.01963 12.9 1.00206C13.2616 0.984492 13.6213 1.06544 13.9405 1.23625C14.2598 1.40707 14.5267 1.66136 14.7128 1.97198C14.8988 2.28261 14.9971 2.63792 14.997 3V3.27C15.301 3.09381 15.646 3.00079 15.9973 3.00032C16.3487 2.99985 16.6939 3.09194 16.9984 3.26732C17.3028 3.44271 17.5557 3.69519 17.7315 3.99936C17.9073 4.30354 18 4.64866 18 5V5.5H18.01V10.363C18.01 10.459 18.003 10.554 17.99 10.647C17.8492 12.6071 16.9712 14.441 15.5328 15.7799C14.0943 17.1187 12.2021 17.863 10.237 17.863C10.06 17.863 9.88801 17.859 9.72101 17.851C6.03901 17.684 3.46501 14.402 1.60801 11.218C1.04301 10.249 0.498011 9.175 1.29201 8.405C2.08501 7.636 3.19001 7.901 3.99701 8.655L4.00001 8.66L5.00001 9.605V5.5Z" fill="#1B1F24"/>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2" />
3
+ <path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2" />
4
+ <path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8" />
5
+ <path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15" />
3
6
  </svg>
@@ -1 +1,4 @@
1
- <svg aria-hidden="true" viewBox="0 0 24 24" fill="none" class="c-bxOhME c-bxOhME-dvzWZT-size-medium c-bxOhME-iPJLV-css"><path fill="currentColor" fill-rule="evenodd" d="M14.492 3.414 8.921 8.985a4.312 4.312 0 0 0 6.105 6.09l5.564-5.562 1.414 1.414-5.664 5.664a6.002 6.002 0 0 1-2.182 1.392L3.344 21.94 2.06 20.656 6.02 9.845c.3-.82.774-1.563 1.391-2.18l.093-.092.01-.01L13.077 2l1.415 1.414ZM4.68 19.32l4.486-1.64a6.305 6.305 0 0 1-1.651-1.19 6.306 6.306 0 0 1-1.192-1.655L4.68 19.32Z" clip-rule="evenodd"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z" />
3
+ <path d="m15 5 4 4" />
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
3
+ <path d="M7 10v12"/>
4
+ <path d="M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z"/>
5
+ </svg>
@@ -1,3 +1,4 @@
1
- <svg width="14" height="10" viewBox="0 0 14 10" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path fill-rule="evenodd" clip-rule="evenodd" d="M10.1456 9.85411C10.099 9.80766 10.0621 9.75249 10.0369 9.69174C10.0117 9.63099 9.99871 9.56587 9.99871 9.50011C9.99871 9.43434 10.0117 9.36922 10.0369 9.30847C10.0621 9.24773 10.099 9.19255 10.1456 9.14611L12.2926 7.00011H3.49961C2.57135 7.00011 1.68111 6.63136 1.02473 5.97498C0.368355 5.3186 -0.000392914 4.42836 -0.000392914 3.50011C-0.000392914 2.57185 0.368355 1.68161 1.02473 1.02523C1.68111 0.368855 2.57135 0.000106812 3.49961 0.000106812H4.49961C4.63222 0.000106812 4.75939 0.0527849 4.85316 0.146553C4.94693 0.240321 4.99961 0.367498 4.99961 0.500107C4.99961 0.632715 4.94693 0.759892 4.85316 0.853661C4.75939 0.947429 4.63222 1.00011 4.49961 1.00011H3.49961C2.83657 1.00011 2.20068 1.2635 1.73184 1.73234C1.263 2.20118 0.999607 2.83707 0.999607 3.50011C0.999607 4.16315 1.263 4.79903 1.73184 5.26787C2.20068 5.73671 2.83657 6.00011 3.49961 6.00011H12.2926L10.1456 3.85411C10.0517 3.76022 9.99898 3.63288 9.99898 3.50011C9.99898 3.36733 10.0517 3.23999 10.1456 3.14611C10.2395 3.05222 10.3668 2.99948 10.4996 2.99948C10.6324 2.99948 10.7597 3.05222 10.8536 3.14611L13.8536 6.14611C13.9473 6.23987 14 6.36702 14 6.49961C14 6.63219 13.9473 6.75934 13.8536 6.85311L10.8536 9.85311C10.8072 9.89967 10.752 9.93661 10.6912 9.96182C10.6305 9.98703 10.5654 10 10.4996 10C10.4338 10 10.3687 9.98703 10.308 9.96182C10.2472 9.93661 10.1921 9.90067 10.1456 9.85411Z" fill="#1B1F24"/>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="m15 14 5-5-5-5" />
3
+ <path d="M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13" />
3
4
  </svg>
@@ -1,9 +1,3 @@
1
- <svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <mask id="mask0_66_4379" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="17" height="17">
3
- <path d="M0 0H17V17H0V0Z" fill="white"/>
4
- <path fill-rule="evenodd" clip-rule="evenodd" d="M15.294 8.06299C15.4924 8.00216 15.6669 7.88112 15.7934 7.71665C15.92 7.55217 15.9922 7.35242 16.0001 7.14506C16.008 6.93771 15.9512 6.73303 15.8376 6.5594C15.724 6.38576 15.5592 6.25177 15.366 6.17599L2.36599 1.06899C2.18473 0.997562 1.98654 0.980637 1.79579 1.0203C1.60503 1.05996 1.43002 1.15448 1.29225 1.29225C1.15448 1.43002 1.05996 1.60503 1.0203 1.79579C0.980637 1.98654 0.997562 2.18473 1.06899 2.36599L6.17599 15.366C6.25177 15.5592 6.38576 15.724 6.5594 15.8376C6.73303 15.9512 6.93771 16.008 7.14506 16.0001C7.35242 15.9922 7.55217 15.92 7.71665 15.7934C7.88112 15.6669 8.00216 15.4924 8.06299 15.294L9.76399 9.76399L15.294 8.06299Z" fill="black"/>
5
- </mask>
6
- <g mask="url(#mask0_66_4379)">
7
- <path d="M9.764 9.764L9.47 8.809C9.31431 8.857 9.17271 8.94231 9.05751 9.05751C8.94231 9.17271 8.857 9.31431 8.809 9.47L9.764 9.764ZM15 7.107L15.588 9.019C15.9844 8.89694 16.333 8.65467 16.5856 8.32573C16.8382 7.99679 16.9824 7.59745 16.998 7.183L15 7.107ZM15 7.107L16.999 7.183C17.0146 6.76851 16.9009 6.35942 16.6738 6.01238C16.4466 5.66534 16.1171 5.39752 15.731 5.246L15 7.107ZM2 2L15 7.107L15.731 5.246L2.731 0.138998L2 2ZM2 2L2.731 0.138998C2.36874 -0.00327954 1.97285 -0.0367717 1.59184 0.0426271C1.21083 0.122026 0.861269 0.310866 0.585999 0.585998L2 2ZM2 2L0.585999 0.585998C0.310697 0.861157 0.12167 1.21067 0.0420925 1.59168C-0.0374851 1.9727 -0.00315414 2.36865 0.138999 2.731L2 2ZM7.107 15L2 2L0.138999 2.731L5.246 15.731L7.107 15ZM7.107 15L5.246 15.731C5.39735 16.1173 5.66511 16.447 6.01216 16.6743C6.35921 16.9017 6.76839 17.0155 7.183 17L7.107 15ZM7.107 15L7.183 17C7.59745 16.9844 7.99679 16.8392 8.32573 16.5866C8.65467 16.334 8.89694 15.9854 9.019 15.589L7.107 15ZM8.809 9.47L7.107 15L9.019 15.588L10.72 10.058L8.809 9.47ZM15 7.107L9.47 8.809L10.058 10.72L15.588 9.019L15 7.107Z" fill="currentColor"/>
8
- </g>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z" />
9
3
  </svg>
@@ -1 +1,5 @@
1
- <svg aria-hidden="true" viewBox="0 0 24 24" fill="none" class="c-bxOhME c-bxOhME-dvzWZT-size-medium c-bxOhME-iPJLV-css"><path fill="currentColor" fill-rule="evenodd" d="m7.374 13.514 3.9 7L10.4 22H2.5l-.868-1.496 4-7 1.742.01ZM4.223 20h4.475l-2.21-3.966L4.223 20Zm17.774-5.923-.5 6.5-1.994-.154.292-3.805-5.088 5.089-1.414-1.414 5.089-5.09-3.805.294-.154-1.994 6.5-.5 1.074 1.074ZM17.75 1.75a4.75 4.75 0 1 1 0 9.5 4.75 4.75 0 0 1 0-9.5Zm0 2a2.75 2.75 0 1 0 0 5.5 2.75 2.75 0 0 0 0-5.5ZM11 3v7l-1 1H3l-1-1V3l1-1h7l1 1ZM4 9h5V4H4v5Z" clip-rule="evenodd"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z" />
3
+ <rect x="3" y="14" width="7" height="7" rx="1" />
4
+ <circle cx="17.5" cy="17.5" r="3.5" />
5
+ </svg>
@@ -1 +1,15 @@
1
- <svg aria-hidden="true" viewBox="0 0 24 24" fill="none" class="c-bxOhME c-bxOhME-dvzWZT-size-medium c-bxOhME-iPJLV-css"><path fill="currentColor" d="m20 3 1 1v4h-2V5h-6l.001 14H16v2H8v-2h3.001L11 5H5v3H3V4l1-1h16Z"></path></svg>
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <path d="M12 4v16" />
13
+ <path d="M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2" />
14
+ <path d="M9 20h6" />
15
+ </svg>
@@ -1,3 +1,4 @@
1
- <svg width="14" height="10" viewBox="0 0 14 10" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path fill-rule="evenodd" clip-rule="evenodd" d="M3.85403 0.146016C3.90059 0.192461 3.93753 0.247637 3.96274 0.308382C3.98795 0.369127 4.00092 0.434248 4.00092 0.500016C4.00092 0.565783 3.98795 0.630904 3.96274 0.691649C3.93753 0.752395 3.90059 0.80757 3.85403 0.854016L1.70703 3.00002H10.5C11.4283 3.00002 12.3185 3.36876 12.9749 4.02514C13.6313 4.68152 14 5.57176 14 6.50002C14 7.42827 13.6313 8.31851 12.9749 8.97489C12.3185 9.63127 11.4283 10 10.5 10H9.50003C9.36742 10 9.24024 9.94734 9.14647 9.85357C9.0527 9.7598 9.00003 9.63262 9.00003 9.50002C9.00003 9.36741 9.0527 9.24023 9.14647 9.14646C9.24024 9.05269 9.36742 9.00002 9.50003 9.00002H10.5C11.1631 9.00002 11.799 8.73662 12.2678 8.26778C12.7366 7.79894 13 7.16306 13 6.50002C13 5.83697 12.7366 5.20109 12.2678 4.73225C11.799 4.26341 11.1631 4.00002 10.5 4.00002H1.70703L3.85403 6.14602C3.94791 6.2399 4.00066 6.36724 4.00066 6.50002C4.00066 6.63279 3.94791 6.76013 3.85403 6.85402C3.76014 6.9479 3.6328 7.00065 3.50003 7.00065C3.36725 7.00065 3.23991 6.9479 3.14603 6.85402L0.146027 3.85402C0.0522916 3.76025 -0.000366211 3.6331 -0.000366211 3.50052C-0.000366211 3.36793 0.0522916 3.24078 0.146027 3.14702L3.14603 0.147016C3.19247 0.100452 3.24765 0.0635098 3.30839 0.0383034C3.36914 0.0130969 3.43426 0.00012207 3.50003 0.00012207C3.56579 0.00012207 3.63092 0.0130969 3.69166 0.0383034C3.75241 0.0635098 3.80758 0.0994524 3.85403 0.146016Z" fill="#1B1F24"/>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M9 14 4 9l5-5" />
3
+ <path d="M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11" />
3
4
  </svg>
@@ -0,0 +1,20 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 128 128" width="128" height="128">
2
+ <defs>
3
+ <filter id="outline" x="-25%" y="-25%" width="150%" height="150%">
4
+ <feMorphology in="SourceAlpha" operator="dilate" radius="5" result="dilated"/>
5
+ <feFlood flood-color="white" result="white"/>
6
+ <feComposite in="white" in2="dilated" operator="in"/>
7
+ </filter>
8
+ <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
9
+ <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#000" flood-opacity="0.25"/>
10
+ </filter>
11
+ <g id="icon" transform="translate(8,8) scale(3.5)">
12
+ <path d="M12.3125 5.53122C12.3125 2.63122 14.4375 1.94789 15.625 1.96872C18.0375 1.96872 18.7073 3.97771 18.9062 5.04681C19.1536 6.37617 18.9115 9.55588 18.8004 11.0156L18.7973 11.0573C18.956 11.0201 19.1274 10.9999 19.3125 10.9999H23.17C24.73 10.9999 26 12.2699 26 13.8299C26 14.636 25.7414 15.3646 25.2346 15.8807C26.2789 16.3414 27 17.3084 27 18.4237C27 19.4466 26.5373 20.3448 25.6357 20.8421C26.4591 21.353 27 22.2078 27 23.1737C27 24.2814 26.4574 25.2429 25.4024 25.7073C25.7767 26.0933 26 26.6677 26 27.5015C26 28.8805 25.0312 30.0031 23.17 30.0031H19.3125C19.2671 30.0031 19.2224 30.0021 19.1783 29.9999H16.0469C5.60938 30.1718 5 23.4062 5 20.6562C5 15.5001 7.29793 13.9674 9.34062 12.605C10.3064 11.9608 11.215 11.3547 11.7969 10.4218C12.285 9.63906 12.3125 8.92181 12.3125 5.53122Z" fill="#FFC83D"/>
13
+ <path d="M19 11C17.9792 11.0312 15 11.5937 15 13.9687C15 15.2188 15.4688 15.9219 16.0313 16.3125C15.4688 16.5625 14.9688 17.4906 14.9688 18.6406C14.9688 19.9219 16.0313 20.8594 16.0313 20.8594C16.0313 20.8594 14.9688 21.8906 14.9688 23.125C14.9688 24.057 15.3774 24.7446 16.0313 25.2133C15.6771 25.413 14.9688 26.1062 14.9688 27.2812C14.9688 28.6824 16.277 29.856 18.8392 29.9611C17.5908 29.73 16.9844 28.5862 16.9844 27.5016C16.9844 27.1431 17.1185 26.5675 17.4514 26.0588H23C23.2761 26.0588 23.5 25.8349 23.5 25.5588C23.5 25.2826 23.2761 25.0588 23 25.0588H17.5889C17.1838 24.5287 16.9844 23.8413 16.9844 23.1738C16.9844 22.7584 17.1407 22.0855 17.5304 21.5H23C23.2761 21.5 23.5 21.2761 23.5 21C23.5 20.7239 23.2761 20.5 23 20.5H17.7507C17.2368 19.9509 16.9844 19.1748 16.9844 18.4238C16.9844 18.0665 17.1 17.5188 17.3803 17H23C23.2761 17 23.5 16.7761 23.5 16.5C23.5 16.2239 23.2761 16 23 16H17.8268C17.2634 15.4035 16.9844 14.5164 16.9844 13.83C16.9844 13.02 17.4266 11.2303 19.0002 11.0202L19 11Z" fill="#D67D00"/>
14
+ </g>
15
+ </defs>
16
+ <g filter="url(#shadow)">
17
+ <use href="#icon" xlink:href="#icon" filter="url(#outline)"/>
18
+ <use href="#icon" xlink:href="#icon"/>
19
+ </g>
20
+ </svg>
@@ -0,0 +1,20 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 128 128" width="128" height="128">
2
+ <defs>
3
+ <filter id="outline" x="-25%" y="-25%" width="150%" height="150%">
4
+ <feMorphology in="SourceAlpha" operator="dilate" radius="5" result="dilated"/>
5
+ <feFlood flood-color="white" result="white"/>
6
+ <feComposite in="white" in2="dilated" operator="in"/>
7
+ </filter>
8
+ <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
9
+ <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#000" flood-opacity="0.25"/>
10
+ </filter>
11
+ <g id="icon" transform="translate(8,8) scale(3.5)">
12
+ <path d="M19.6875 26.4403C19.6875 29.3403 17.5625 30.0237 16.375 30.0028C13.9625 30.0028 13.2927 27.9938 13.0938 26.9247C12.8464 25.5954 13.0885 22.4157 13.1996 20.9559L13.2027 20.9143C13.044 20.9514 12.8726 20.9716 12.6875 20.9716H8.83C7.27 20.9716 6 19.7016 6 18.1416C6 17.3355 6.25865 16.6069 6.76542 16.0909C5.72106 15.6301 5 14.6631 5 13.5478C5 12.5249 5.46273 11.6267 6.36431 11.1295C5.54092 10.6185 5 9.76378 5 8.79785C5 7.69011 5.54264 6.7286 6.5976 6.2642C6.22328 5.87828 6 5.30388 6 4.47C6 3.09102 6.96875 1.96839 8.83 1.96839L12.6875 1.9684C12.7329 1.9684 12.7776 1.96947 12.8217 1.9716H15.9531C26.3906 1.79972 27 8.56535 27 11.3153C27 16.4714 24.7021 18.0041 22.6594 19.3666C21.6936 20.0107 20.785 20.6168 20.2031 21.5497C19.715 22.3325 19.6875 23.0497 19.6875 26.4403Z" fill="#FFC83D"/>
13
+ <path d="M14.3943 6.91281H9C8.72386 6.91281 8.5 6.68895 8.5 6.41281C8.5 6.13667 8.72386 5.91281 9 5.91281H14.5486C14.8815 5.40409 15.0156 4.8285 15.0156 4.47C15.0156 3.38537 14.4092 2.24163 13.1608 2.0105C15.723 2.11556 17.0312 3.28919 17.0312 4.69035C17.0312 5.86535 16.3229 6.55855 15.9687 6.75827C16.6226 7.22697 17.0312 7.91465 17.0312 8.8466C17.0312 10.081 15.9687 11.1122 15.9687 11.1122C15.9687 11.1122 17.0312 12.0497 17.0312 13.331C17.0312 14.481 16.5312 15.4091 15.9687 15.6591C16.5312 16.0497 17 16.7528 17 18.0028C17 20.3778 14.0208 20.9403 13 20.9716L12.9998 20.9514C14.5733 20.7413 15.0156 18.9516 15.0156 18.1416C15.0156 17.4552 14.7366 16.5681 14.1732 15.9716H9C8.72386 15.9716 8.5 15.7477 8.5 15.4716C8.5 15.1954 8.72386 14.9716 9 14.9716H14.6197C14.9 14.4528 15.0156 13.9051 15.0156 13.5478C15.0156 12.7968 14.7632 12.0207 14.2493 11.4716H9C8.72386 11.4716 8.5 11.2477 8.5 10.9716C8.5 10.6954 8.72386 10.4716 9 10.4716H14.4696C14.8593 9.88612 15.0156 9.21319 15.0156 8.79785C15.0156 8.33144 14.876 7.54024 14.3943 6.91281Z" fill="#D67D00"/>
14
+ </g>
15
+ </defs>
16
+ <g filter="url(#shadow)">
17
+ <use href="#icon" xlink:href="#icon" filter="url(#outline)"/>
18
+ <use href="#icon" xlink:href="#icon"/>
19
+ </g>
20
+ </svg>
@@ -0,0 +1,20 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 128 128" width="128" height="128">
2
+ <defs>
3
+ <filter id="outline" x="-25%" y="-25%" width="150%" height="150%">
4
+ <feMorphology in="SourceAlpha" operator="dilate" radius="5" result="dilated"/>
5
+ <feFlood flood-color="white" result="white"/>
6
+ <feComposite in="white" in2="dilated" operator="in"/>
7
+ </filter>
8
+ <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
9
+ <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#000" flood-opacity="0.25"/>
10
+ </filter>
11
+ <g id="icon" transform="translate(8,8) scale(3.5)">
12
+ <path d="M2 6C2 3.79086 3.79086 2 6 2H26C28.2091 2 30 3.79086 30 6V26C30 28.2091 28.2091 30 26 30H6C3.79086 30 2 28.2091 2 26V6Z" fill="#00D26A"/>
13
+ <path d="M13.242 23C12.8588 23 12.4757 22.8566 12.183 22.5692L6.43855 16.9278C5.85382 16.3535 5.85382 15.422 6.43855 14.8477C7.02329 14.2735 7.97186 14.2735 8.55659 14.8477L13.242 19.4491L23.4434 9.43069C24.0281 8.85644 24.9767 8.85644 25.5614 9.43069C26.1462 10.0049 26.1462 10.9365 25.5614 11.5107L14.301 22.5692C14.009 22.8566 13.6252 23 13.242 23Z" fill="#F4F4F4"/>
14
+ </g>
15
+ </defs>
16
+ <g filter="url(#shadow)">
17
+ <use href="#icon" xlink:href="#icon" filter="url(#outline)"/>
18
+ <use href="#icon" xlink:href="#icon"/>
19
+ </g>
20
+ </svg>
@@ -0,0 +1,19 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 128 128" width="128" height="128">
2
+ <defs>
3
+ <filter id="outline" x="-25%" y="-25%" width="150%" height="150%">
4
+ <feMorphology in="SourceAlpha" operator="dilate" radius="5" result="dilated"/>
5
+ <feFlood flood-color="white" result="white"/>
6
+ <feComposite in="white" in2="dilated" operator="in"/>
7
+ </filter>
8
+ <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
9
+ <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#000" flood-opacity="0.25"/>
10
+ </filter>
11
+ <g id="icon" transform="translate(8,8) scale(3.5)">
12
+ <path d="M24.8787 2.87868C26.0503 1.70711 27.9497 1.70711 29.1213 2.87868C30.2929 4.05025 30.2929 5.94975 29.1213 7.12132L20.331 15.9116C20.2822 15.9604 20.2822 16.0396 20.331 16.0884L29.1213 24.8787C30.2929 26.0503 30.2929 27.9497 29.1213 29.1213C27.9497 30.2929 26.0503 30.2929 24.8787 29.1213L16.0884 20.331C16.0396 20.2822 15.9604 20.2822 15.9116 20.331L7.12132 29.1213C5.94975 30.2929 4.05025 30.2929 2.87868 29.1213C1.70711 27.9497 1.70711 26.0503 2.87868 24.8787L11.669 16.0884C11.7178 16.0396 11.7178 15.9604 11.669 15.9116L2.87868 7.12132C1.70711 5.94975 1.70711 4.05025 2.87868 2.87868C4.05025 1.70711 5.94975 1.70711 7.12132 2.87868L15.9116 11.669C15.9604 11.7178 16.0396 11.7178 16.0884 11.669L24.8787 2.87868Z" fill="#F92F60"/>
13
+ </g>
14
+ </defs>
15
+ <g filter="url(#shadow)">
16
+ <use href="#icon" xlink:href="#icon" filter="url(#outline)"/>
17
+ <use href="#icon" xlink:href="#icon"/>
18
+ </g>
19
+ </svg>
@@ -0,0 +1,20 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 128 128" width="128" height="128">
2
+ <defs>
3
+ <filter id="outline" x="-25%" y="-25%" width="150%" height="150%">
4
+ <feMorphology in="SourceAlpha" operator="dilate" radius="5" result="dilated"/>
5
+ <feFlood flood-color="white" result="white"/>
6
+ <feComposite in="white" in2="dilated" operator="in"/>
7
+ </filter>
8
+ <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
9
+ <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#000" flood-opacity="0.25"/>
10
+ </filter>
11
+ <g id="icon" transform="translate(8,8) scale(3.5)">
12
+ <path d="M13.0372 20.8626C13.0372 22.1648 14.1823 23.2221 15.5924 23.2221C17.0025 23.2221 18.1475 22.1648 18.1475 20.8528V19.1506C18.1475 19.0395 18.2212 18.9421 18.3271 18.9086C21.6766 17.8508 24 14.9188 24 11.5616V10.3084C24 6.0691 20.3104 2.53471 15.7726 2.4466C13.4931 2.39764 11.3409 3.19068 9.70813 4.65926C8.08598 6.12784 7.18478 8.10553 7.18478 10.2105C7.18478 11.5224 8.34043 12.5798 9.75054 12.5798C11.1606 12.5798 12.3057 11.5224 12.3057 10.2203C12.3057 9.39788 12.6556 8.62443 13.2917 8.04679C13.9278 7.46915 14.7654 7.15585 15.6666 7.17543C17.4478 7.21459 18.8897 8.62443 18.8897 10.3182V11.5616C18.8897 13.0302 17.7659 14.2932 16.2073 14.5575C14.3731 14.8708 13.0372 16.3492 13.0372 18.0723V20.8626Z" fill="#F8312F"/>
13
+ <path d="M15.5 30C16.8807 30 18 28.8807 18 27.5C18 26.1193 16.8807 25 15.5 25C14.1193 25 13 26.1193 13 27.5C13 28.8807 14.1193 30 15.5 30Z" fill="#F8312F"/>
14
+ </g>
15
+ </defs>
16
+ <g filter="url(#shadow)">
17
+ <use href="#icon" xlink:href="#icon" filter="url(#outline)"/>
18
+ <use href="#icon" xlink:href="#icon"/>
19
+ </g>
20
+ </svg>
@@ -0,0 +1,22 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 128 128" width="128" height="128">
2
+ <defs>
3
+ <filter id="outline" x="-25%" y="-25%" width="150%" height="150%">
4
+ <feMorphology in="SourceAlpha" operator="dilate" radius="5" result="dilated"/>
5
+ <feFlood flood-color="white" result="white"/>
6
+ <feComposite in="white" in2="dilated" operator="in"/>
7
+ </filter>
8
+ <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
9
+ <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#000" flood-opacity="0.25"/>
10
+ </filter>
11
+ <g id="icon" transform="translate(8,8) scale(3.5)">
12
+ <path d="M5.99987 6.00001C10.6646 3.66763 14.4999 6.50001 15.9999 8.50001C17.4999 6.5 21.3351 3.66763 25.9999 6.00001C31.9999 8.99999 30.4998 16.5 25.9998 21C23.8041 23.1958 19.9371 27.0628 17.1087 29.2137C16.4552 29.7106 15.5614 29.6884 14.9226 29.1728C12.3299 27.08 8.16491 23.165 5.99987 21C1.49986 16.5 -0.000126839 8.99999 5.99987 6.00001Z" fill="#F8312F"/>
13
+ <path d="M15.9998 8.49998V11.5492C17.2695 8.86501 20.4252 5.28051 25.6578 5.83746C21.1482 3.80623 17.463 6.54908 15.9998 8.49998Z" fill="#CA0B4A"/>
14
+ <path d="M11.9456 5.53691C10.2614 4.95005 8.22499 4.88745 5.99987 6.00001C-0.000126839 8.99999 1.49986 16.5 5.99987 21C8.16491 23.165 12.3299 27.08 14.9226 29.1728C15.5614 29.6884 16.4552 29.7106 17.1087 29.2137C17.3629 29.0204 17.6255 28.8132 17.8945 28.5946C15.0398 26.4524 11.0335 23.0762 8.85898 21.1325C3.90218 16.702 2.24993 9.31788 8.85898 6.36425C9.93279 5.88435 10.9667 5.62654 11.9456 5.53691Z" fill="#CA0B4A"/>
15
+ <ellipse cx="23.4771" cy="12.5937" rx="2.83554" ry="4.78125" transform="rotate(30 23.4771 12.5937)" fill="#F37366"/>
16
+ </g>
17
+ </defs>
18
+ <g filter="url(#shadow)">
19
+ <use href="#icon" xlink:href="#icon" filter="url(#outline)"/>
20
+ <use href="#icon" xlink:href="#icon"/>
21
+ </g>
22
+ </svg>
@@ -0,0 +1,19 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 128 128" width="128" height="128">
2
+ <defs>
3
+ <filter id="outline" x="-25%" y="-25%" width="150%" height="150%">
4
+ <feMorphology in="SourceAlpha" operator="dilate" radius="5" result="dilated"/>
5
+ <feFlood flood-color="white" result="white"/>
6
+ <feComposite in="white" in2="dilated" operator="in"/>
7
+ </filter>
8
+ <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
9
+ <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#000" flood-opacity="0.25"/>
10
+ </filter>
11
+ <g id="icon" transform="translate(8,8) scale(3.5)">
12
+ <path d="M18.6992 4.62713L20.9469 8.93616C21.288 9.57602 21.9102 10.0259 22.6326 10.1259L27.3788 10.7758C29.9175 11.1257 30.9008 14.255 29.0244 15.9946L25.7733 18.9939C25.2114 19.5138 24.9505 20.2836 25.091 21.0334L25.8837 25.4324C26.3252 27.8819 23.7765 29.7915 21.5389 28.6717L17.0034 26.4222C16.3713 26.1123 15.6287 26.1123 14.9966 26.4222L10.4611 28.6717C8.22347 29.7815 5.67477 27.8819 6.11628 25.4324L6.90898 21.0334C7.04946 20.2836 6.78857 19.5138 6.22665 18.9939L2.97556 15.9946C1.09916 14.265 2.08251 11.1257 4.62118 10.7758L9.36737 10.1259C10.0898 10.0259 10.722 9.58601 11.0531 8.93616L13.3008 4.62713C14.4447 2.45762 17.5653 2.45762 18.6992 4.62713Z" fill="#FCD53F"/>
13
+ </g>
14
+ </defs>
15
+ <g filter="url(#shadow)">
16
+ <use href="#icon" xlink:href="#icon" filter="url(#outline)"/>
17
+ <use href="#icon" xlink:href="#icon"/>
18
+ </g>
19
+ </svg>
@@ -0,0 +1,25 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 128 128" width="128" height="128">
2
+ <defs>
3
+ <filter id="outline" x="-25%" y="-25%" width="150%" height="150%">
4
+ <feMorphology in="SourceAlpha" operator="dilate" radius="5" result="dilated"/>
5
+ <feFlood flood-color="white" result="white"/>
6
+ <feComposite in="white" in2="dilated" operator="in"/>
7
+ </filter>
8
+ <filter id="shadow" x="-25%" y="-25%" width="150%" height="150%">
9
+ <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#000" flood-opacity="0.25"/>
10
+ </filter>
11
+ <g id="icon" transform="translate(8,8) scale(3.5)">
12
+ <!-- Blue rounded-square badge background -->
13
+ <rect x="1" y="1" width="30" height="30" rx="7" fill="#1B73E8"/>
14
+ <!-- "+" glyph: two overlapping white bars -->
15
+ <rect x="3.5" y="14.75" width="11" height="2.5" fill="white"/>
16
+ <rect x="7.75" y="9.5" width="2.5" height="13" fill="white"/>
17
+ <!-- "1" glyph: vertical bar + diagonal serif at top-left + base line -->
18
+ <path d="M17.5 13L20 8.5H23.5V24.5H15.5V23H20V13Z" fill="white"/>
19
+ </g>
20
+ </defs>
21
+ <g filter="url(#shadow)">
22
+ <use href="#icon" xlink:href="#icon" filter="url(#outline)"/>
23
+ <use href="#icon" xlink:href="#icon"/>
24
+ </g>
25
+ </svg>
@@ -93,6 +93,9 @@ export class PixiEngine {
93
93
  if (pixiObject._mb.type === 'mindmap' && pixiObject._mb.instance && typeof pixiObject._mb.instance.redrawForZoom === 'function') {
94
94
  pixiObject._mb.instance.redrawForZoom(s);
95
95
  }
96
+ if (pixiObject._mb.type === 'frame' && pixiObject._mb.instance && typeof pixiObject._mb.instance.applyWorldScale === 'function') {
97
+ pixiObject._mb.instance.applyWorldScale(s);
98
+ }
96
99
  } catch (_) {}
97
100
  } else {
98
101
  console.warn(`Unknown object type: ${objectData.type}`);
@@ -184,6 +187,26 @@ export class PixiEngine {
184
187
  }
185
188
  }
186
189
 
190
+ /**
191
+ * Подгоняет рендерер под новый размер вьюпорта (CSS px).
192
+ * Без этого WebGL drawing buffer и инлайн-размер канваса остаются от
193
+ * старого размера: после ресайза окна канвас не покрывает контейнер,
194
+ * и справа проступает фон рабочей области (визуально — «перекрытие контента»).
195
+ */
196
+ resize(width, height) {
197
+ const w = Math.max(1, Math.floor(width));
198
+ const h = Math.max(1, Math.floor(height));
199
+ const renderer = this.app?.renderer;
200
+ if (!renderer) return;
201
+ // DPR мог измениться при переносе окна между мониторами — синхронизируем,
202
+ // иначе buffer остаётся в старом разрешении и правая часть «мылится».
203
+ const dpr = (typeof window !== 'undefined' && window.devicePixelRatio) ? window.devicePixelRatio : 1;
204
+ if (renderer.resolution !== dpr) {
205
+ renderer.resolution = dpr;
206
+ }
207
+ renderer.resize(w, h);
208
+ }
209
+
187
210
  // Добавление/обновление сетки в gridLayer
188
211
  setGrid(gridInstance) {
189
212
  if (!this.gridLayer) return;
@@ -4,6 +4,7 @@ import { BoardService } from '../../services/BoardService.js';
4
4
  import { ZoomPanController } from '../../services/ZoomPanController.js';
5
5
  import { ZOrderManager } from '../../services/ZOrderManager.js';
6
6
  import { FrameService } from '../../services/FrameService.js';
7
+ import { Events } from '../events/Events.js';
7
8
 
8
9
  export async function initializeCore(core) {
9
10
  try {
@@ -20,6 +21,8 @@ export async function initializeCore(core) {
20
21
  core.frameService = new FrameService(core.eventBus, core.pixi, core.state);
21
22
  core.frameService.attach();
22
23
 
24
+ setupViewportResize(core);
25
+
23
26
  core.state.loadBoard({
24
27
  id: core.options.boardId || 'demo',
25
28
  name: 'Demo Board',
@@ -31,6 +34,42 @@ export async function initializeCore(core) {
31
34
  }
32
35
  }
33
36
 
37
+ /**
38
+ * Подписывает рендерер на изменение размера контейнера.
39
+ * Размер берём с контейнера, а не с канваса: PIXI (autoDensity) выставляет
40
+ * канвасу инлайн-размер в px, перебивая CSS width:100%, поэтому
41
+ * canvas.clientWidth «залипает» на стартовом размере и не отражает контейнер.
42
+ * Без этого после ресайза окна (оконный режим → полный экран) канвас остаётся
43
+ * прежнего размера и справа проступает фон рабочей области.
44
+ */
45
+ function setupViewportResize(core) {
46
+ if (typeof ResizeObserver === 'undefined' || !core.container) return;
47
+
48
+ let rafId = null;
49
+ const applyResize = () => {
50
+ rafId = null;
51
+ if (core.destroyed) return;
52
+ const el = core.container;
53
+ if (!el) return;
54
+ const width = el.clientWidth;
55
+ const height = el.clientHeight;
56
+ if (width <= 0 || height <= 0) return;
57
+ core.pixi.resize(width, height);
58
+ // Пересобираем screen-space сетку под новый размер и репозиционируем
59
+ // её вместе с оверлеями через существующий viewport-флоу.
60
+ core.boardService?.resize?.();
61
+ core.eventBus.emit(Events.Viewport.Changed);
62
+ };
63
+
64
+ core.resizeObserver = new ResizeObserver(() => {
65
+ if (rafId !== null) return;
66
+ rafId = (typeof requestAnimationFrame === 'function')
67
+ ? requestAnimationFrame(applyResize)
68
+ : setTimeout(applyResize, 16);
69
+ });
70
+ core.resizeObserver.observe(core.container);
71
+ }
72
+
34
73
  export async function initializeCoreTools(core) {
35
74
  const canvasElement = core.pixi.app.view;
36
75
  core.workspaceSize = () => ({ width: canvasElement.clientWidth, height: canvasElement.clientHeight });
@@ -59,6 +98,10 @@ export async function initializeCoreTools(core) {
59
98
  const connectorTool = new connectorToolModule.ConnectorTool(core.eventBus, core);
60
99
  core.toolManager.registerTool(connectorTool);
61
100
 
101
+ const laserToolModule = await import('../../tools/object-tools/LaserPointerTool.js');
102
+ const laserTool = new laserToolModule.LaserPointerTool(core.eventBus);
103
+ core.toolManager.registerTool(laserTool);
104
+
62
105
  core.selectTool = selectTool;
63
106
  core.toolManager.activateTool('select');
64
107
 
@@ -9,7 +9,19 @@ export class GroupDeleteCommand extends BaseCommand {
9
9
  constructor(coreMoodboard, objectIds) {
10
10
  super('group_delete', `Удалить группу (${objectIds.length} объектов)`);
11
11
  this.coreMoodboard = coreMoodboard;
12
- this.objectIds = Array.isArray(objectIds) ? [...objectIds] : [];
12
+ const baseIds = new Set(Array.isArray(objectIds) ? objectIds : []);
13
+ // Вариант B: атомарно удаляем коннекторы, привязанные к удаляемым объектам
14
+ const allObjects = coreMoodboard.state.getObjects();
15
+ for (const obj of allObjects) {
16
+ if (obj.type === 'connector') {
17
+ const start = obj.properties?.start?.boundId;
18
+ const end = obj.properties?.end?.boundId;
19
+ if ((start && baseIds.has(start)) || (end && baseIds.has(end))) {
20
+ baseIds.add(obj.id);
21
+ }
22
+ }
23
+ }
24
+ this.objectIds = [...baseIds];
13
25
  }
14
26
 
15
27
  async execute() {