@smart-factor/gem-ui-components 0.0.57 → 0.0.58

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 (363) hide show
  1. package/dist/{Drawer-D8kHnT0B.js → Drawer-d8461jqd.js} +115 -115
  2. package/dist/SignEditor.js +72298 -0
  3. package/dist/{Stack-Dr1yNuib.js → Stack-ThmeJzqr.js} +65 -65
  4. package/dist/{Tree-B4Bd33fe.js → Tree-D_Zjc1fk.js} +711 -774
  5. package/dist/assets/SignEditor.css +1 -0
  6. package/dist/components/Drawer/index.js +1 -1
  7. package/dist/components/SignEditor/SignEditor.d.ts +8 -0
  8. package/dist/components/SignEditor/SignEditor.stories.d.ts +6 -0
  9. package/dist/components/SignEditor/SignEditor.styles.d.ts +33 -0
  10. package/dist/components/SignEditor/SignEditorCanvas.d.ts +7 -0
  11. package/dist/components/SignEditor/SignEditorCanvasHeader.d.ts +7 -0
  12. package/dist/components/SignEditor/SignEditorContext.d.ts +9 -0
  13. package/dist/components/SignEditor/SignEditorContextProvider.d.ts +7 -0
  14. package/dist/components/SignEditor/SignEditorEditDialog.d.ts +12 -0
  15. package/dist/components/SignEditor/SignEditorImage.d.ts +16 -0
  16. package/dist/components/SignEditor/SignEditorImagesList.d.ts +11 -0
  17. package/dist/components/SignEditor/SignEditorPicker.d.ts +1 -0
  18. package/dist/components/SignEditor/SignEditorPickerSigns.d.ts +1 -0
  19. package/dist/components/SignEditor/SignEditorPickerStencils.d.ts +1 -0
  20. package/dist/components/SignEditor/SignEditorSaveDialog.d.ts +10 -0
  21. package/dist/components/SignEditor/index.d.ts +3 -0
  22. package/dist/components/SignEditor/useIsNameUnique.d.ts +1 -0
  23. package/dist/components/SignEditor/useOnSvgSelected.d.ts +3 -0
  24. package/dist/components/SignEditor/useSaveStencil.d.ts +9 -0
  25. package/dist/components/SignEditor/useSvgMount.d.ts +2 -0
  26. package/dist/components/Tree/index.js +1 -1
  27. package/dist/extensions/ext-connector/ext-connector.js +11 -0
  28. package/dist/extensions/ext-connector/ext-connector.js.map +1 -0
  29. package/dist/extensions/ext-eyedropper/ext-eyedropper.js +11 -0
  30. package/dist/extensions/ext-eyedropper/ext-eyedropper.js.map +1 -0
  31. package/dist/extensions/ext-grid/ext-grid.js +10 -0
  32. package/dist/extensions/ext-grid/ext-grid.js.map +1 -0
  33. package/dist/extensions/ext-helloworld/ext-helloworld.js +10 -0
  34. package/dist/extensions/ext-helloworld/ext-helloworld.js.map +1 -0
  35. package/dist/extensions/ext-layer_view/ext-layer_view.js +9 -0
  36. package/dist/extensions/ext-layer_view/ext-layer_view.js.map +1 -0
  37. package/dist/extensions/ext-markers/ext-markers.js +30 -0
  38. package/dist/extensions/ext-markers/ext-markers.js.map +1 -0
  39. package/dist/extensions/ext-opensave/ext-opensave.js +2 -0
  40. package/dist/extensions/ext-opensave/ext-opensave.js.map +1 -0
  41. package/dist/extensions/ext-overview_window/ext-overview_window.js +11 -0
  42. package/dist/extensions/ext-overview_window/ext-overview_window.js.map +1 -0
  43. package/dist/extensions/ext-panning/ext-panning.js +10 -0
  44. package/dist/extensions/ext-panning/ext-panning.js.map +1 -0
  45. package/dist/extensions/ext-polystar/ext-polystar.js +11 -0
  46. package/dist/extensions/ext-polystar/ext-polystar.js.map +1 -0
  47. package/dist/extensions/ext-shapes/ext-shapes.js +10 -0
  48. package/dist/extensions/ext-shapes/ext-shapes.js.map +1 -0
  49. package/dist/extensions/ext-shapes/shapelib/animal.json +21 -0
  50. package/dist/extensions/ext-shapes/shapelib/arrow.json +28 -0
  51. package/dist/extensions/ext-shapes/shapelib/basic.json +32 -0
  52. package/dist/extensions/ext-shapes/shapelib/dialog_balloon.json +9 -0
  53. package/dist/extensions/ext-shapes/shapelib/electronics.json +20 -0
  54. package/dist/extensions/ext-shapes/shapelib/flowchart.json +25 -0
  55. package/dist/extensions/ext-shapes/shapelib/game.json +13 -0
  56. package/dist/extensions/ext-shapes/shapelib/index.json +18 -0
  57. package/dist/extensions/ext-shapes/shapelib/license-MIT-raphael.txt +12 -0
  58. package/dist/extensions/ext-shapes/shapelib/math.json +9 -0
  59. package/dist/extensions/ext-shapes/shapelib/misc.json +37 -0
  60. package/dist/extensions/ext-shapes/shapelib/music.json +21 -0
  61. package/dist/extensions/ext-shapes/shapelib/object.json +18 -0
  62. package/dist/extensions/ext-shapes/shapelib/raphael_1.json +65 -0
  63. package/dist/extensions/ext-shapes/shapelib/raphael_2.json +64 -0
  64. package/dist/extensions/ext-shapes/shapelib/symbol.json +28 -0
  65. package/dist/extensions/ext-storage/ext-storage.js +23 -0
  66. package/dist/extensions/ext-storage/ext-storage.js.map +1 -0
  67. package/dist/fonts/roadsign-condensed.ttf +0 -0
  68. package/dist/fonts/roadsign-normal.ttf +0 -0
  69. package/dist/licenses.txt +1034 -172
  70. package/dist/main.js +2402 -38744
  71. package/dist/svgedit-assets/images/add_subpath.svg +16 -0
  72. package/dist/svgedit-assets/images/align.svg +5 -0
  73. package/dist/svgedit-assets/images/align_bottom.svg +1 -0
  74. package/dist/svgedit-assets/images/align_center.svg +1 -0
  75. package/dist/svgedit-assets/images/align_distrib_horiz.svg +1 -0
  76. package/dist/svgedit-assets/images/align_distrib_verti.svg +1 -0
  77. package/dist/svgedit-assets/images/align_left.svg +1 -0
  78. package/dist/svgedit-assets/images/align_middle.svg +1 -0
  79. package/dist/svgedit-assets/images/align_right.svg +1 -0
  80. package/dist/svgedit-assets/images/align_top.svg +1 -0
  81. package/dist/svgedit-assets/images/anchor_end.svg +8 -0
  82. package/dist/svgedit-assets/images/anchor_middle.svg +8 -0
  83. package/dist/svgedit-assets/images/anchor_start.svg +8 -0
  84. package/dist/svgedit-assets/images/angle.svg +1 -0
  85. package/dist/svgedit-assets/images/arrow_down.svg +3 -0
  86. package/dist/svgedit-assets/images/arrow_right.svg +3 -0
  87. package/dist/svgedit-assets/images/arrow_right_big.svg +3 -0
  88. package/dist/svgedit-assets/images/blur.svg +1 -0
  89. package/dist/svgedit-assets/images/bold.svg +8 -0
  90. package/dist/svgedit-assets/images/box.svg +3 -0
  91. package/dist/svgedit-assets/images/box_o.svg +3 -0
  92. package/dist/svgedit-assets/images/c_radius.svg +5 -0
  93. package/dist/svgedit-assets/images/cancel.svg +9 -0
  94. package/dist/svgedit-assets/images/circle.svg +1 -0
  95. package/dist/svgedit-assets/images/clone.svg +1 -0
  96. package/dist/svgedit-assets/images/close_path.svg +14 -0
  97. package/dist/svgedit-assets/images/closepath_icons.svg +41 -0
  98. package/dist/svgedit-assets/images/config.svg +1 -0
  99. package/dist/svgedit-assets/images/conn.svg +1 -0
  100. package/dist/svgedit-assets/images/context_menu.svg +9 -0
  101. package/dist/svgedit-assets/images/cursors/circle_cursor.svg +14 -0
  102. package/dist/svgedit-assets/images/cursors/ellipse_cursor.svg +14 -0
  103. package/dist/svgedit-assets/images/cursors/rect_cursor.svg +14 -0
  104. package/dist/svgedit-assets/images/cursors/square_cursor.svg +13 -0
  105. package/dist/svgedit-assets/images/delete.svg +1 -0
  106. package/dist/svgedit-assets/images/docprop.svg +1 -0
  107. package/dist/svgedit-assets/images/docprops.svg +19 -0
  108. package/dist/svgedit-assets/images/editPref.svg +1 -0
  109. package/dist/svgedit-assets/images/edit_foreign.svg +57 -0
  110. package/dist/svgedit-assets/images/ellipse.svg +1 -0
  111. package/dist/svgedit-assets/images/export.svg +1 -0
  112. package/dist/svgedit-assets/images/eye.svg +12 -0
  113. package/dist/svgedit-assets/images/eye_dropper.svg +1 -0
  114. package/dist/svgedit-assets/images/fh_ellipse.svg +1 -0
  115. package/dist/svgedit-assets/images/fh_rect.svg +1 -0
  116. package/dist/svgedit-assets/images/fill.svg +8 -0
  117. package/dist/svgedit-assets/images/fontsize.svg +4 -0
  118. package/dist/svgedit-assets/images/forwardslash.svg +3 -0
  119. package/dist/svgedit-assets/images/globe_link.svg +1 -0
  120. package/dist/svgedit-assets/images/go_down.svg +9 -0
  121. package/dist/svgedit-assets/images/go_up.svg +9 -0
  122. package/dist/svgedit-assets/images/grid.svg +1 -0
  123. package/dist/svgedit-assets/images/group_elements.svg +1 -0
  124. package/dist/svgedit-assets/images/handle.svg +1 -0
  125. package/dist/svgedit-assets/images/height.svg +3 -0
  126. package/dist/svgedit-assets/images/hello_world.svg +11 -0
  127. package/dist/svgedit-assets/images/image.svg +1 -0
  128. package/dist/svgedit-assets/images/imagelib.svg +10 -0
  129. package/dist/svgedit-assets/images/import.svg +10 -0
  130. package/dist/svgedit-assets/images/importImg.svg +1 -0
  131. package/dist/svgedit-assets/images/italic.svg +8 -0
  132. package/dist/svgedit-assets/images/layer_view.svg +6 -0
  133. package/dist/svgedit-assets/images/leftarrow.svg +3 -0
  134. package/dist/svgedit-assets/images/leftarrow_o.svg +3 -0
  135. package/dist/svgedit-assets/images/letter_spacing.svg +17 -0
  136. package/dist/svgedit-assets/images/library.svg +1 -0
  137. package/dist/svgedit-assets/images/linecap_butt.svg +1 -0
  138. package/dist/svgedit-assets/images/linecap_round.svg +1 -0
  139. package/dist/svgedit-assets/images/linecap_square.svg +1 -0
  140. package/dist/svgedit-assets/images/linejoin_bevel.svg +1 -0
  141. package/dist/svgedit-assets/images/linejoin_miter.svg +1 -0
  142. package/dist/svgedit-assets/images/linejoin_round.svg +1 -0
  143. package/dist/svgedit-assets/images/link_controls.svg +7 -0
  144. package/dist/svgedit-assets/images/logo.svg +25 -0
  145. package/dist/svgedit-assets/images/mcircle.svg +3 -0
  146. package/dist/svgedit-assets/images/mcircle_o.svg +3 -0
  147. package/dist/svgedit-assets/images/mkr_markers_dimension.svg +7 -0
  148. package/dist/svgedit-assets/images/mkr_markers_label.svg +5 -0
  149. package/dist/svgedit-assets/images/mkr_markers_off.svg +3 -0
  150. package/dist/svgedit-assets/images/move_bottom.svg +1 -0
  151. package/dist/svgedit-assets/images/move_top.svg +1 -0
  152. package/dist/svgedit-assets/images/netlify-dark.svg +17 -0
  153. package/dist/svgedit-assets/images/new.svg +1 -0
  154. package/dist/svgedit-assets/images/no_color.svg +4 -0
  155. package/dist/svgedit-assets/images/node_clone.svg +8 -0
  156. package/dist/svgedit-assets/images/node_delete.svg +10 -0
  157. package/dist/svgedit-assets/images/nomarker.svg +3 -0
  158. package/dist/svgedit-assets/images/ok.svg +9 -0
  159. package/dist/svgedit-assets/images/opacity.svg +12 -0
  160. package/dist/svgedit-assets/images/open.svg +1 -0
  161. package/dist/svgedit-assets/images/open_path.svg +17 -0
  162. package/dist/svgedit-assets/images/openpath.png +0 -0
  163. package/dist/svgedit-assets/images/panning.svg +1 -0
  164. package/dist/svgedit-assets/images/path.svg +1 -0
  165. package/dist/svgedit-assets/images/pen.svg +1 -0
  166. package/dist/svgedit-assets/images/pencil.svg +1 -0
  167. package/dist/svgedit-assets/images/polygon.svg +1 -0
  168. package/dist/svgedit-assets/images/rect.svg +1 -0
  169. package/dist/svgedit-assets/images/redo.svg +1 -0
  170. package/dist/svgedit-assets/images/reorient.svg +1 -0
  171. package/dist/svgedit-assets/images/reverseslash.svg +3 -0
  172. package/dist/svgedit-assets/images/rightarrow.svg +3 -0
  173. package/dist/svgedit-assets/images/rightarrow_o.svg +3 -0
  174. package/dist/svgedit-assets/images/rotate.svg +4 -0
  175. package/dist/svgedit-assets/images/save.svg +16 -0
  176. package/dist/svgedit-assets/images/saveImg.svg +1 -0
  177. package/dist/svgedit-assets/images/select.svg +1 -0
  178. package/dist/svgedit-assets/images/select_node.svg +4 -0
  179. package/dist/svgedit-assets/images/shapelib.svg +1 -0
  180. package/dist/svgedit-assets/images/source.svg +1 -0
  181. package/dist/svgedit-assets/images/square.svg +1 -0
  182. package/dist/svgedit-assets/images/star.svg +1 -0
  183. package/dist/svgedit-assets/images/star_o.svg +3 -0
  184. package/dist/svgedit-assets/images/stroke.svg +3 -0
  185. package/dist/svgedit-assets/images/svg-edit-home.svg +26 -0
  186. package/dist/svgedit-assets/images/text.svg +1 -0
  187. package/dist/svgedit-assets/images/text_decoration_linethrough.svg +6 -0
  188. package/dist/svgedit-assets/images/text_decoration_overline.svg +6 -0
  189. package/dist/svgedit-assets/images/text_decoration_underline.svg +6 -0
  190. package/dist/svgedit-assets/images/text_length.svg +19 -0
  191. package/dist/svgedit-assets/images/textmarker.svg +3 -0
  192. package/dist/svgedit-assets/images/textmarker_bottom.svg +3 -0
  193. package/dist/svgedit-assets/images/textmarker_top.svg +3 -0
  194. package/dist/svgedit-assets/images/to_path.svg +1 -0
  195. package/dist/svgedit-assets/images/tool_add_subpath.svg +1 -0
  196. package/dist/svgedit-assets/images/tool_foreign.svg +30 -0
  197. package/dist/svgedit-assets/images/tool_imagelib.svg +10 -0
  198. package/dist/svgedit-assets/images/tool_node_clone.svg +1 -0
  199. package/dist/svgedit-assets/images/tool_node_delete.svg +1 -0
  200. package/dist/svgedit-assets/images/tool_node_link.svg +1 -0
  201. package/dist/svgedit-assets/images/tool_openclose_path.svg +1 -0
  202. package/dist/svgedit-assets/images/tool_placemark.svg +11 -0
  203. package/dist/svgedit-assets/images/triangle.svg +3 -0
  204. package/dist/svgedit-assets/images/triangle_o.svg +3 -0
  205. package/dist/svgedit-assets/images/undo.svg +1 -0
  206. package/dist/svgedit-assets/images/ungroup.svg +21 -0
  207. package/dist/svgedit-assets/images/unlink_use.svg +14 -0
  208. package/dist/svgedit-assets/images/verticalslash.svg +3 -0
  209. package/dist/svgedit-assets/images/warning.svg +11 -0
  210. package/dist/svgedit-assets/images/webappfind.svg +23 -0
  211. package/dist/svgedit-assets/images/width.svg +3 -0
  212. package/dist/svgedit-assets/images/wireframe.svg +1 -0
  213. package/dist/svgedit-assets/images/word_spacing.svg +15 -0
  214. package/dist/svgedit-assets/images/xmark.svg +3 -0
  215. package/dist/svgedit-assets/images/zoom.svg +1 -0
  216. package/dist/theme-BzEoBwfH.js +37291 -0
  217. package/dist/useFormControl-Cj8rSR6R.js +68 -0
  218. package/package.json +29 -5
  219. package/dist/components/AccordionSummary/AccordionSummary.d.ts +0 -7
  220. package/dist/components/AccordionSummary/AccordionSummary.stories.d.ts +0 -8
  221. package/dist/components/AccordionSummary/AccordionSummary.styles.d.ts +0 -7
  222. package/dist/components/Button/Button.d.ts +0 -8
  223. package/dist/components/Button/Button.stories.d.ts +0 -8
  224. package/dist/components/Button/Button.styles.d.ts +0 -6
  225. package/dist/components/Button/ButtonAdd.d.ts +0 -3
  226. package/dist/components/ButtonWithIcon/ButtonWithIcon.d.ts +0 -10
  227. package/dist/components/ButtonWithIcon/ButtonWithIcon.stories.d.ts +0 -7
  228. package/dist/components/Dialog/Dialog.d.ts +0 -3
  229. package/dist/components/Dialog/Dialog.stories.d.ts +0 -7
  230. package/dist/components/Dialog/Dialog.styles.d.ts +0 -11
  231. package/dist/components/Dialog/index.d.ts +0 -2
  232. package/dist/components/Dialog/types.d.ts +0 -9
  233. package/dist/components/Drawer/Drawer.d.ts +0 -15
  234. package/dist/components/Drawer/Drawer.stories.d.ts +0 -8
  235. package/dist/components/Drawer/DrawerContent.d.ts +0 -6
  236. package/dist/components/Drawer/DrawerFooter.d.ts +0 -6
  237. package/dist/components/Drawer/DrawerHeader.d.ts +0 -7
  238. package/dist/components/Drawer/index.d.ts +0 -1
  239. package/dist/components/Dropzone/Dropzone.d.ts +0 -7
  240. package/dist/components/Dropzone/Dropzone.stories.d.ts +0 -9
  241. package/dist/components/Dropzone/Dropzone.styles.d.ts +0 -17
  242. package/dist/components/Dropzone/DropzoneField.d.ts +0 -12
  243. package/dist/components/Dropzone/const.d.ts +0 -12
  244. package/dist/components/Dropzone/index.d.ts +0 -3
  245. package/dist/components/ElementsPicker/ElementsPicker.d.ts +0 -8
  246. package/dist/components/ElementsPicker/ElementsPicker.stories.d.ts +0 -8
  247. package/dist/components/ElementsPicker/ElementsPickerElement.d.ts +0 -9
  248. package/dist/components/ElementsPicker/index.d.ts +0 -2
  249. package/dist/components/FixedActionsBottomPanel/FixedActionsBottomPanel.d.ts +0 -18
  250. package/dist/components/FixedActionsBottomPanel/FixedActionsBottomPanel.stories.d.ts +0 -13
  251. package/dist/components/FixedActionsBottomPanel/FixedActionsBottomPanel.styles.d.ts +0 -6
  252. package/dist/components/FormComponents/Autocomplete/Autocomplete.d.ts +0 -4
  253. package/dist/components/FormComponents/Autocomplete/Autocomplete.stories.d.ts +0 -11
  254. package/dist/components/FormComponents/Autocomplete/Autocomplete.styles.d.ts +0 -7
  255. package/dist/components/FormComponents/Autocomplete/index.d.ts +0 -2
  256. package/dist/components/FormComponents/Autocomplete/types.d.ts +0 -27
  257. package/dist/components/FormComponents/ContextualSearch/ContextualSearch.d.ts +0 -40
  258. package/dist/components/FormComponents/ContextualSearch/ContextualSearch.stories.d.ts +0 -15
  259. package/dist/components/FormComponents/ContextualSearch/ContextualSearch.styles.d.ts +0 -4
  260. package/dist/components/FormComponents/ContextualSearch/ContextualSearchControlled.d.ts +0 -9
  261. package/dist/components/FormComponents/ContextualSearch/ContextualSearchListListbox.d.ts +0 -7
  262. package/dist/components/FormComponents/ContextualSearch/index.d.ts +0 -2
  263. package/dist/components/FormComponents/ContextualSearch/mock.d.ts +0 -13
  264. package/dist/components/FormComponents/DatePicker/DatePicker.d.ts +0 -12
  265. package/dist/components/FormComponents/DatePicker/DatePicker.stories.d.ts +0 -9
  266. package/dist/components/FormComponents/DatePicker/DatePicker.styles.d.ts +0 -7
  267. package/dist/components/FormComponents/DateTimePicker/DateTimePicker.d.ts +0 -12
  268. package/dist/components/FormComponents/DateTimePicker/DateTimePicker.stories.d.ts +0 -9
  269. package/dist/components/FormComponents/DateTimePicker/DateTimePicker.styles.d.ts +0 -7
  270. package/dist/components/FormComponents/Input/Input.d.ts +0 -11
  271. package/dist/components/FormComponents/Input/Input.stories.d.ts +0 -11
  272. package/dist/components/FormComponents/Input/Input.styles.d.ts +0 -3
  273. package/dist/components/FormComponents/RadioChips/RadioChips.d.ts +0 -21
  274. package/dist/components/FormComponents/RadioChips/RadioChips.stories.d.ts +0 -9
  275. package/dist/components/FormComponents/RadioChips/RadioChips.styles.d.ts +0 -10
  276. package/dist/components/FormComponents/SearchInput/SearchInput.d.ts +0 -11
  277. package/dist/components/FormComponents/SearchInput/SearchInput.stories.d.ts +0 -9
  278. package/dist/components/FormComponents/SearchInput/SearchInput.styles.d.ts +0 -1
  279. package/dist/components/FormComponents/Select/Select.d.ts +0 -30
  280. package/dist/components/FormComponents/Select/Select.stories.d.ts +0 -11
  281. package/dist/components/FormComponents/Select/Select.styles.d.ts +0 -4
  282. package/dist/components/FormComponents/index.d.ts +0 -9
  283. package/dist/components/Grid/Grid.d.ts +0 -4
  284. package/dist/components/Grid/index.d.ts +0 -2
  285. package/dist/components/Grid/types.d.ts +0 -40
  286. package/dist/components/Grid/useGridInitialState.d.ts +0 -6
  287. package/dist/components/LoadingBackdrop/LoadingBackdrop.d.ts +0 -7
  288. package/dist/components/LoadingBackdrop/LoadingBackdrop.stories.d.ts +0 -7
  289. package/dist/components/LoadingBackdrop/index.d.ts +0 -1
  290. package/dist/components/ResizableWrapper/ResizableWrapper.d.ts +0 -11
  291. package/dist/components/ResizableWrapper/ResizableWrapper.stories.d.ts +0 -7
  292. package/dist/components/ResizableWrapper/ResizableWrapper.styles.d.ts +0 -10
  293. package/dist/components/SimpleAutocomplete/SimpleAutocomplete.d.ts +0 -3
  294. package/dist/components/SimpleAutocomplete/SimpleAutocomplete.stories.d.ts +0 -11
  295. package/dist/components/SimpleAutocomplete/index.d.ts +0 -1
  296. package/dist/components/SimpleInput/SimpleInput.d.ts +0 -6
  297. package/dist/components/SimpleInput/SimpleInput.stories.d.ts +0 -7
  298. package/dist/components/SimpleSelect/SimpleSelect.d.ts +0 -14
  299. package/dist/components/SimpleSelect/SimpleSelect.stories.d.ts +0 -7
  300. package/dist/components/Stepper/Stepper.d.ts +0 -13
  301. package/dist/components/Stepper/Stepper.stories.d.ts +0 -7
  302. package/dist/components/Stepper/Stepper.styles.d.ts +0 -9
  303. package/dist/components/StickyContainer/StickyContainer.d.ts +0 -7
  304. package/dist/components/StickyContainer/StickyContainer.stories.d.ts +0 -7
  305. package/dist/components/StickyContainer/StickyContainer.styles.d.ts +0 -7
  306. package/dist/components/TableComponents/ContextMenu/ContextMenu.d.ts +0 -6
  307. package/dist/components/TableComponents/ContextMenu/ContextMenu.stories.d.ts +0 -7
  308. package/dist/components/TableComponents/ContextMenu/ContextMenu.styles.d.ts +0 -1
  309. package/dist/components/TableComponents/ContextMenu/ContextMenuContext.d.ts +0 -7
  310. package/dist/components/TableComponents/ContextMenu/ContextMenuItem.d.ts +0 -8
  311. package/dist/components/TableComponents/ContextMenu/ContextMenuPropsContext/ContextMenuPropsContext.d.ts +0 -6
  312. package/dist/components/TableComponents/ContextMenu/ContextMenuPropsContext/useContextMenuProps.d.ts +0 -3
  313. package/dist/components/TableComponents/ContextMenu/index.d.ts +0 -2
  314. package/dist/components/TableComponents/TableActions/TableActions.d.ts +0 -7
  315. package/dist/components/TableComponents/TableActions/TableActions.stories.d.ts +0 -7
  316. package/dist/components/TableComponents/TableActions/index.d.ts +0 -2
  317. package/dist/components/TableComponents/TableCustomToolbar/TableCustomToolbar.d.ts +0 -10
  318. package/dist/components/TableComponents/TableCustomToolbar/index.d.ts +0 -1
  319. package/dist/components/TableComponents/TableExportButton/TableExportButton.d.ts +0 -9
  320. package/dist/components/TableComponents/TableExportButton/index.d.ts +0 -1
  321. package/dist/components/TableComponents/TableRecord/TableRecord.d.ts +0 -8
  322. package/dist/components/TableComponents/TableRecord/index.d.ts +0 -1
  323. package/dist/components/TableComponents/TableWithPagination/TableWithPagination.d.ts +0 -4
  324. package/dist/components/TableComponents/TableWithPagination/TableWithPagination.stories.d.ts +0 -13
  325. package/dist/components/TableComponents/TableWithPagination/TableWithPaginationExport.d.ts +0 -0
  326. package/dist/components/TableComponents/TableWithPagination/TableWrapper.d.ts +0 -8
  327. package/dist/components/TableComponents/TableWithPagination/types.d.ts +0 -53
  328. package/dist/components/TableComponents/index.d.ts +0 -5
  329. package/dist/components/TabsPanel/TabsPanel.d.ts +0 -14
  330. package/dist/components/TabsPanel/TabsPanel.stories.d.ts +0 -7
  331. package/dist/components/TabsPanel/TabsPanel.styles.d.ts +0 -8
  332. package/dist/components/Toast/Toast.stories.d.ts +0 -7
  333. package/dist/components/Toast/Toast.styles.d.ts +0 -12
  334. package/dist/components/Toast/ToastContent.d.ts +0 -4
  335. package/dist/components/Toast/errorToast.d.ts +0 -1
  336. package/dist/components/Toast/index.d.ts +0 -2
  337. package/dist/components/Toast/successToast.d.ts +0 -1
  338. package/dist/components/Tree/Tree.d.ts +0 -18
  339. package/dist/components/Tree/Tree.stories.d.ts +0 -7
  340. package/dist/components/Tree/index.d.ts +0 -1
  341. package/dist/consts/data-grid.d.ts +0 -122
  342. package/dist/helpers/columns/getBooleanColumn.d.ts +0 -6
  343. package/dist/helpers/columns/getDateColumn.d.ts +0 -6
  344. package/dist/helpers/columns/getDateTimeColumn.d.ts +0 -6
  345. package/dist/helpers/columns/getNumericColumn.d.ts +0 -6
  346. package/dist/helpers/columns/getStaticColumn.d.ts +0 -6
  347. package/dist/helpers/columns/getStringColumn.d.ts +0 -6
  348. package/dist/helpers/columns/index.d.ts +0 -6
  349. package/dist/helpers/date/formatDate.d.ts +0 -3
  350. package/dist/helpers/date/formatDateTime.d.ts +0 -3
  351. package/dist/helpers/date/index.d.ts +0 -2
  352. package/dist/helpers/index.d.ts +0 -2
  353. package/dist/hooks/index.d.ts +0 -4
  354. package/dist/hooks/useContextMenu.d.ts +0 -8
  355. package/dist/hooks/useDataGridInitialState.d.ts +0 -6
  356. package/dist/hooks/useDataGridState.d.ts +0 -9
  357. package/dist/hooks/useGetFileUrl.d.ts +0 -5
  358. package/dist/hooks/useKeepDefinedValue.d.ts +0 -1
  359. package/dist/hooks/useScrollPosition.d.ts +0 -2
  360. package/dist/providers/GemUIComponentsProvider.d.ts +0 -4
  361. package/dist/providers/ToasterProvider.d.ts +0 -1
  362. package/dist/theme/theme.d.ts +0 -19
  363. package/dist/types/function.d.ts +0 -1
@@ -0,0 +1 @@
1
+ :root{--main-bg-color: #72797A;--text-color: #000000;--border-color: #808080;--canvas-bg-color: #B2B2B2;--link-color: #19c;--ruler-color: #B2B2B2;--icon-bg-color: #72797A;--icon-bg-color-hover: #2B3C45;--input-color: #B2B2B2;--orange-color: #f9bc01;--global-se-spin-input-width: 82px}.svg_editor *{transform-origin:0 0}.svg_editor{display:grid;grid-template-rows:auto 15px 1fr 40px;grid-template-columns:40px 15px 50px 1fr 15px;grid-template-areas:"main main main top top" "left corner rulerX rulerX side" "left rulerY workarea workarea side" "left bottom bottom bottom bottom";font-size:8pt;background:var(--main-bg-color);font-family:Verdana,Helvetica,Arial;color:var(--text-color);-webkit-user-select:text;user-select:text;width:100%;height:100%}#title_panel>p{color:#fff;padding-left:5px;padding-right:3px;font-weight:700}@media screen and (max-width:1250px){.svg_editor{grid-template-rows:minmax(80px,auto) 15px 1fr 40px}}.svg_editor.open{grid-template-columns:34px 15px 50px 1fr 220px}#svgroot{-webkit-user-select:none;user-select:none;position:absolute;top:0;left:0}#workarea{grid-area:workarea;background-color:#a0a0a0;border:1px solid var(--border-color);overflow:auto;text-align:center}#svgcanvas{line-height:normal;display:inline-block;background:var(--canvas-bg-color);text-align:center;vertical-align:middle;position:relative}#sidepanels{grid-area:side}#sidepanel_handle{writing-mode:vertical-rl;text-orientation:upright;color:#fff;position:absolute;cursor:pointer;top:50%}.svg_editor:not(.open) #sidepanel_content{display:none}a{color:var(--link-color)}hr{border:none;border-bottom:1px solid var(--border-color)}#linkLabel>svg{height:20px;padding-top:4px}#layersLabel{color:#fff}#layerpanel{-webkit-user-select:none;user-select:none;padding-left:15px}#layerbuttons{margin:0;padding:0 2px;width:125px;height:20px;border:0px;overflow:hidden;display:flex;justify-content:center;align-items:center}#layerlist{margin:1px;padding:0;width:132px;border-collapse:collapse;border:1px solid var(--border-color);background-color:#fff}#layerlist tr.layer{background-color:#fff;margin:0;padding:0}#layerlist tr.layersel{border:1px solid var(--border-color);background-color:#ccc}#layerlist td.layervis{width:22px;cursor:pointer}#layerlist td.layerinvis{background-image:none;cursor:pointer}#layerlist td.layervis *{display:block}#layerlist td.layerinvis *{display:none}#layerlist td.layername{cursor:pointer}#layerlist td.layername:hover{color:#00f}#layerlist tr.layersel td.layername{font-weight:700}#selLayerLabel{white-space:nowrap}#selLayerNames{display:block;top:-8px;position:relative}#main_button{grid-area:main;color:#fff;border-radius:3px;padding-block:2px;padding-left:3px;height:34px}#main_icon{position:relative;top:-2px;left:-2px;width:95px;line-height:26px}#main_icon:hover{background:#eee!important}#main_icon.buttondown{background:#eee!important;-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;border-radius:3px 3px 0 0}#logo{margin-top:-2px}#logo img{border:0;width:28px;height:28px}#main_icon>div{float:left}#main_button .dropdown{position:absolute;right:7px;top:4px}#main_icon span{position:absolute;top:0;left:0;bottom:0;right:0;display:block;z-index:2;font-weight:700;padding-left:34px;line-height:32px;font-family:sans-serif}#main_menu{z-index:12;background:#eee;position:relative;width:230px;padding:5px;-moz-box-shadow:#555 1px 1px 4px;-webkit-box-shadow:#555 1px 1px 4px;box-shadow:#555 1px 1px 4px;font-size:1.1em;display:none;overflow:hidden;clear:both;top:-9px}#main_menu ul,#main_menu li{list-style:none;margin:0;padding:0}#main_menu li{line-height:22px;padding-top:7px;padding-left:7px;margin:-5px;overflow:auto;cursor:pointer}#main_menu li:hover{background:#ffc}#main_menu li>div{float:left;padding-right:5px}#main_menu p{margin-top:5px}#tools_top{grid-area:top;display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-start;background-color:var(--main-bg-color)}#tools_top>*{display:flex;flex-direction:row;flex-wrap:wrap;background-color:var(--main-bg-color)}#tools_bottom{grid-area:bottom;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;scrollbar-width:thin}#tools_bottom::-webkit-scrollbar{width:3px;height:3px}#tools_bottom se-list,#tools_bottom se-select{margin-bottom:8px}#zoom{color:var(--text-color);background-color:var(--main-bg-color);border:none}#tools_left{grid-area:left;border-right:none;margin-left:auto;margin-right:auto;overflow-y:scroll;scrollbar-width:none;-webkit-user-select:none;user-select:none}#tools_left::-webkit-scrollbar{width:3px}#tools_left::-webkit-scrollbar-track,#tools_bottom::-webkit-scrollbar-track{background:transparent}#tools_left::-webkit-scrollbar-thumb,#tools_bottom::-webkit-scrollbar-thumb{background-color:#464646}#workarea.wireframe #svgcontent *{fill:none;stroke:#000;stroke-width:1px;stroke-opacity:1;stroke-dasharray:0;opacity:1;pointer-events:stroke;filter:none}#workarea.wireframe #svgcontent text{fill:#000;stroke:none}#workarea.wireframe #canvasBackground>rect{fill:#fff!important}#cur_context_panel{grid-area:rulerX;line-height:22px;overflow:auto;padding-left:5px;font-size:12px;background:#000c;color:#ccc}#cur_context_panel a{float:none;text-decoration:none}#cur_context_panel a:hover{text-decoration:underline}.dropdown button{width:15px;height:21px;margin:6px 0 0 1px;padding:0;border-left:1px solid #FFFFFF;border-top:1px solid #FFFFFF;border-right:1px solid var(--border-color);border-bottom:1px solid var(--border-color);background-color:#e8e8e8}.dropdown button.down{border-left:1px solid var(--border-color);border-top:1px solid var(--border-color);border-right:1px solid #FFFFFF;border-bottom:1px solid #FFFFFF;background-color:#5a6162}.dropdown ul{list-style:none;position:absolute;margin:0;padding:0;left:-85px;top:26px;z-index:4;display:none}.dropup ul{top:auto;bottom:24px}.dropdown li{display:block;width:120px;padding:4px;background:#e8e8e8;border:1px solid #5a6162;margin:0 0 -1px;line-height:16px}.dropdown li:hover{background-color:#ffc}.dropdown li.special{padding:10px 4px}.dropdown li.special:hover{background:#ffc}#font_family_dropdown-list li{font-size:1.4em}#font_family{margin-left:5px;margin-right:0}#main_menu li#tool_open,#main_menu li#tool_import{position:relative;overflow:hidden}#tool_image{overflow:hidden}#tool_open input,#tool_import input,#tool_image input{position:absolute;opacity:0;font-size:10em;top:-5px;right:-5px;margin:0;cursor:pointer}.disabled{opacity:.5;cursor:default}.tool_sep{border-left:1px outset #EEE;margin:5px 1px;height:30px}.width_label{padding-right:5px}#text{position:absolute;left:-9999px}.bottom-icon{width:22px}#palette{margin-left:auto;margin-right:16px;display:flex;align-items:center}#stroke_expand{width:0;overflow:hidden}#toggle_stroke_tools{position:absolute;right:0;top:0;bottom:0;width:25px;text-align:center;border-radius:0 3px 3px 0;margin:0}#toggle_stroke_tools:before{content:">>";letter-spacing:-3px;font-weight:700;color:#666}.expanded #toggle_stroke_tools:before{content:"<<"}#toggle_stroke_tools:hover{background:#fff}#tool_opacity{right:0}#tool_opacity{overflow:visible}ul li.current{background-color:#f4e284}#copyright{text-align:right;padding-right:.3em}.overlay{position:absolute;top:0;right:0;left:0;bottom:0;background-color:#000;opacity:.6;z-index:5}#save_output_btns{display:none;text-align:left}#save_output_btns p{margin:.5em 1.5em;display:inline-block}#bg_blocks{overflow:auto;margin-left:30px}.dropdown li.tool_button{width:24px}@font-face{font-family:roadsign-normal;src:url(/fonts/roadsign-normal.ttf)}@font-face{font-family:roadsign-condensed;src:url(/fonts/roadsign-condensed.ttf)}
@@ -1,4 +1,4 @@
1
- import { D as e } from "../../Drawer-D8kHnT0B.js";
1
+ import { D as e } from "../../Drawer-d8461jqd.js";
2
2
  export {
3
3
  e as Drawer
4
4
  };
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+
3
+ interface SignEditorProps {
4
+ className?: string;
5
+ onRoadSignAdded?: () => void;
6
+ }
7
+ export declare const SignEditor: FC<SignEditorProps>;
8
+ export {};
@@ -0,0 +1,6 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { SignEditor } from './SignEditor';
3
+
4
+ declare const meta: Meta<typeof SignEditor>;
5
+ export default meta;
6
+ export declare const Docs: StoryObj;
@@ -0,0 +1,33 @@
1
+ /// <reference types="react" />
2
+ export declare const SignEditor: import('@emotion/styled').StyledComponent<import('@mui/system').BoxOwnProps<import('@mui/material').Theme> & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
3
+ ref?: ((instance: HTMLDivElement | null) => void) | import('react').RefObject<HTMLDivElement> | null | undefined;
4
+ }, keyof import('@mui/system').BoxOwnProps<import('@mui/material').Theme>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
5
+ export declare const SignEditorPicker: import('@emotion/styled').StyledComponent<import('@mui/system').BoxOwnProps<import('@mui/material').Theme> & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
6
+ ref?: ((instance: HTMLDivElement | null) => void) | import('react').RefObject<HTMLDivElement> | null | undefined;
7
+ }, keyof import('@mui/system').BoxOwnProps<import('@mui/material').Theme>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
8
+ export declare const SignEditorCanvas: import('@emotion/styled').StyledComponent<import('@mui/system').BoxOwnProps<import('@mui/material').Theme> & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
9
+ ref?: ((instance: HTMLDivElement | null) => void) | import('react').RefObject<HTMLDivElement> | null | undefined;
10
+ }, keyof import('@mui/system').BoxOwnProps<import('@mui/material').Theme>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
11
+ export declare const SignEditorCanvasHeader: import('@emotion/styled').StyledComponent<import('@mui/system').BoxOwnProps<import('@mui/material').Theme> & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
12
+ ref?: ((instance: HTMLDivElement | null) => void) | import('react').RefObject<HTMLDivElement> | null | undefined;
13
+ }, keyof import('@mui/system').BoxOwnProps<import('@mui/material').Theme>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
14
+ export declare const SvgEditContainer: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
15
+ export declare const SignEditorCanvasHeaderTitle: import('@emotion/styled').StyledComponent<import('@mui/material').TypographyOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
16
+ ref?: ((instance: HTMLSpanElement | null) => void) | import('react').RefObject<HTMLSpanElement> | null | undefined;
17
+ }, "className" | "style" | "classes" | "children" | "sx" | "p" | "color" | "border" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxSizing" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "left" | "letterSpacing" | "lineHeight" | "marginBlockEnd" | "marginBlockStart" | "marginBottom" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "right" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "top" | "visibility" | "whiteSpace" | "width" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "marginBlock" | "marginInline" | "overflow" | "padding" | "paddingBlock" | "paddingInline" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "align" | "variant" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
18
+ export declare const SignEditorCanvasHeaderActions: import('@emotion/styled').StyledComponent<import('@mui/system').BoxOwnProps<import('@mui/material').Theme> & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
19
+ ref?: ((instance: HTMLDivElement | null) => void) | import('react').RefObject<HTMLDivElement> | null | undefined;
20
+ }, keyof import('@mui/system').BoxOwnProps<import('@mui/material').Theme>> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
21
+ export declare const SvgImageBackground: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
22
+ export declare const SignEditorImageList: import('@emotion/styled').StyledComponent<import('@mui/material').GridOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
23
+ ref?: ((instance: HTMLDivElement | null) => void) | import('react').RefObject<HTMLDivElement> | null | undefined;
24
+ }, "className" | "style" | "classes" | "children" | "sx" | "p" | "color" | "border" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxSizing" | "columnGap" | "direction" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "left" | "letterSpacing" | "lineHeight" | "marginBlockEnd" | "marginBlockStart" | "marginBottom" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "right" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "top" | "visibility" | "whiteSpace" | "width" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "columns" | "container" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "marginBlock" | "marginInline" | "overflow" | "padding" | "paddingBlock" | "paddingInline" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "spacing" | "wrap" | "xs" | "sm" | "md" | "lg" | "xl" | "item" | "columnSpacing" | "rowSpacing" | "zeroMinWidth"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
25
+ export declare const SignEditorImage: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
26
+ export declare const SignEditorImagePanel: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
27
+ export declare const SignEditorImageName: import('@emotion/styled').StyledComponent<import('@mui/material').TypographyOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
28
+ ref?: ((instance: HTMLSpanElement | null) => void) | import('react').RefObject<HTMLSpanElement> | null | undefined;
29
+ }, "className" | "style" | "classes" | "children" | "sx" | "p" | "color" | "border" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxSizing" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "left" | "letterSpacing" | "lineHeight" | "marginBlockEnd" | "marginBlockStart" | "marginBottom" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "right" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "top" | "visibility" | "whiteSpace" | "width" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "marginBlock" | "marginInline" | "overflow" | "padding" | "paddingBlock" | "paddingInline" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "align" | "variant" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, {}, {}>;
30
+ export declare const SignEditorImageListPlaceholder: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
31
+ export declare const TabContent: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
32
+ export declare const Collapse: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
33
+ export declare const CollapseButton: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+
3
+ interface SignEditorCanvasProps {
4
+ onRoadSignAdded?: () => void;
5
+ }
6
+ export declare const SignEditorCanvas: FC<SignEditorCanvasProps>;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+
3
+ interface SignEditorCanvasHeaderProps {
4
+ onRoadSignAdded?: () => void;
5
+ }
6
+ export declare const SignEditorCanvasHeader: FC<SignEditorCanvasHeaderProps>;
7
+ export {};
@@ -0,0 +1,9 @@
1
+ import { RefObject } from 'react';
2
+
3
+ type SvgEdit = any;
4
+ interface Value {
5
+ svgEdit: RefObject<SvgEdit>;
6
+ }
7
+ export declare const SignEditorContext: import('react').Context<Value>;
8
+ export declare const useSignEditor: () => Value;
9
+ export {};
@@ -0,0 +1,7 @@
1
+ import { FC, ReactNode } from 'react';
2
+
3
+ interface SignEditorContextProviderProps {
4
+ children: ReactNode;
5
+ }
6
+ export declare const SignEditorContextProvider: FC<SignEditorContextProviderProps>;
7
+ export {};
@@ -0,0 +1,12 @@
1
+ import { FC } from 'react';
2
+ import { Nilable } from '../../types/generic';
3
+ import { ISignEditorImage } from './SignEditorImage';
4
+
5
+ interface SignEditorEditDialogProps {
6
+ open: boolean;
7
+ onSaved: () => void;
8
+ onClose: () => void;
9
+ item: Nilable<ISignEditorImage>;
10
+ }
11
+ export declare const SignEditorEditDialog: FC<SignEditorEditDialogProps>;
12
+ export {};
@@ -0,0 +1,16 @@
1
+ import { FC } from 'react';
2
+ import { Nilable } from '../../types/generic';
3
+
4
+ export interface ISignEditorImage {
5
+ id: string;
6
+ name: string;
7
+ symbol: string;
8
+ src: Nilable<string>;
9
+ graphic?: Nilable<string>;
10
+ }
11
+ export interface SignEditorImageProps extends ISignEditorImage {
12
+ onEdit?: () => void;
13
+ onDelete?: () => void;
14
+ isEditable?: boolean;
15
+ }
16
+ export declare const SignEditorImage: FC<SignEditorImageProps>;
@@ -0,0 +1,11 @@
1
+ import { FC, ReactNode } from 'react';
2
+ import { ISignEditorImage } from './SignEditorImage';
3
+
4
+ interface SignEditorImageListProps {
5
+ children?: ReactNode | ReactNode[];
6
+ items: ISignEditorImage[];
7
+ isLoading: boolean;
8
+ isEditable?: boolean;
9
+ }
10
+ export declare const SignEditorImageList: FC<SignEditorImageListProps>;
11
+ export {};
@@ -0,0 +1 @@
1
+ export declare const SignEditorPicker: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const SignEditorPickerSigns: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const SignEditorPickerStencils: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+
3
+ interface SignEditorSaveDialog {
4
+ open: boolean;
5
+ svgStringified: string | null;
6
+ onRoadSignAdded: () => void;
7
+ onClose: () => void;
8
+ }
9
+ export declare const SignEditorSaveDialog: FC<SignEditorSaveDialog>;
10
+ export {};
@@ -0,0 +1,3 @@
1
+ import { SignEditor } from './SignEditor';
2
+
3
+ export default SignEditor;
@@ -0,0 +1 @@
1
+ export declare const useIsNameUnique: (name: string) => boolean | undefined;
@@ -0,0 +1,3 @@
1
+ import { ISignEditorImage } from './SignEditorImage';
2
+
3
+ export declare const useOnSvgSelected: () => (svgItem: ISignEditorImage) => Promise<void>;
@@ -0,0 +1,9 @@
1
+ import { Nilable } from '../../types/generic';
2
+
3
+ interface SaveStencilPayload {
4
+ id: Nilable<string>;
5
+ name: string;
6
+ file: File;
7
+ }
8
+ export declare const useSaveStencil: () => (payload: SaveStencilPayload) => Promise<void>;
9
+ export {};
@@ -0,0 +1,2 @@
1
+
2
+ export declare const useSvgEdit: () => import('react').MutableRefObject<any>;
@@ -1,4 +1,4 @@
1
- import { T as o } from "../../Tree-B4Bd33fe.js";
1
+ import { T as o } from "../../Tree-D_Zjc1fk.js";
2
2
  export {
3
3
  o as Tree
4
4
  };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file ext-connector.js
3
+ *
4
+ * @license MIT
5
+ *
6
+ * @copyright 2010 Alexis Deveria
7
+ * @copyright 2023 Optimistik SAS
8
+ *
9
+ */
10
+ const e="connector",loadExtensionTranslation=async function(t){let c;const l=t.configObj.pref("lang");try{c=await function __variableDynamicImportRuntime0__(e){switch(e){case"./locale/en.js":return Promise.resolve().then((function(){return n}));case"./locale/fr.js":return Promise.resolve().then((function(){return o}));case"./locale/pl.js":return Promise.resolve().then((function(){return r}));case"./locale/zh-CN.js":return Promise.resolve().then((function(){return s}));default:return new Promise((function(t,n){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(n.bind(null,new Error("Unknown variable dynamic import: "+e)))}))}}(`./locale/${l}.js`)}catch(t){console.warn(`Missing translation (${l}) for ${e} - using 'en'`),c=await Promise.resolve().then((function(){return n}))}t.i18next.addResourceBundle(l,e,c.default)};var t={name:e,async init(t){const n=this,{svgCanvas:o}=n,{getElement:r,$id:s,$click:c,addSVGElementsFromJson:l}=o,{svgroot:a,selectorManager:i}=t,u=o.getEditorNS();let d,g,m;await loadExtensionTranslation(n);let f=!1,p=[];const _=o.groupSelectedElements;o.groupSelectedElements=function(){o.removeFromSelection(document.querySelectorAll('[id^="conn_"]'));for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return _.apply(this,t)};const b=o.moveSelectedElements;o.moveSelectedElements=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];const r=b.apply(this,t);return updateConnectors(o.getSelectedElements()),r};const getBBintersect=(e,t,n,o)=>{o&&((n={...n}).width+=o,n.height+=o,n.x-=o/2,n.y-=o/2);const r=n.x+n.width/2,s=n.y+n.height/2,c=e-r,l=t-s;let a;return a=Math.abs(l/c)<n.height/n.width?n.width/2/Math.abs(c):l?n.height/2/Math.abs(l):0,{x:r+c*a,y:s+l*a}},getOffset=(e,t)=>{const n=t.getAttribute("marker-"+e),o=5*t.getAttribute("stroke-width");return n?o:0},showPanel=e=>{let t=s("connector_rules");t||(t=document.createElement("style"),t.setAttribute("id","connector_rules"),document.getElementsByTagName("head")[0].appendChild(t)),t.textContent=e?"#tool_clone, #tool_topath, #tool_angle, #xy_panel { display: none !important; }":"",s("connector_rules")&&(s("connector_rules").style.display=e?"block":"none")},setPoint=(e,t,n,o,r)=>{const s=e.points,c=a.createSVGPoint();if(c.x=n,c.y=o,"end"===t&&(t=s.numberOfItems-1),s.replaceItem(c,t),r){const t=s.getItem(0),n=s.getItem(s.numberOfItems-1);setPoint(e,1,(n.x+t.x)/2,(n.y+t.y)/2)}},findConnectors=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=o.getDataStorage(),n=document.querySelectorAll('[id^="conn_"]');p=[];for(const r of n){let n=!1;const s=[];for(const[e,n]of["start","end"].entries()){let c=t.get(r,`c_${n}`);c?c=document.getElementById(c):(c=document.getElementById(r.attributes["se:connector"].value.split(" ")[e]),t.put(r,`c_${n}`,c.id),t.put(r,`${n}_bb`,o.getStrokedBBox([c]))),s.push(c)}for(let t=0;t<2;t++){const c=s[t],l=o.getParents(c?.parentNode);for(const t of l)if(e.includes(t)){n=!0;break}if(c&&c.parentNode){if(e.includes(c)||n){const e=o.getStrokedBBox([c]);p.push({elem:c,connector:r,is_start:0===t,start_x:e.x,start_y:e.y})}}else r.remove()}}},updateConnectors=e=>{const t=o.getDataStorage();if(findConnectors(e),p.length)for(const e of p){const{elem:n,connector:r,is_start:s,start_x:c,start_y:l}=e,a=s?"start":"end",i=o.getStrokedBBox([n]);i.x=c,i.y=l,t.put(r,`${a}_bb`,i);const u=s?"end":"start",d=t.get(r,`${u}_bb`),g=getBBintersect(d?.x+d?.width/2,d?.y+d?.height/2,i,getOffset(a,r));setPoint(r,s?0:"end",g.x,g.y,!0);const m=getBBintersect(g.x,g.y,t.get(r,`${u}_bb`),getOffset(u,r));setPoint(r,s?"end":0,m.x,m.y,!0)}},reset=()=>{const e=o.getDataStorage();o.getSvgContent().querySelectorAll("*").forEach((t=>{const n=t.getAttributeNS(u,"connector");if(n){const s=n.split(" "),c=o.getStrokedBBox([r(s[0])]),l=o.getStrokedBBox([r(s[1])]);e.put(t,"c_start",s[0]),e.put(t,"c_end",s[1]),e.put(t,"start_bb",c),e.put(t,"end_bb",l),o.getEditorNS(!0)}}))};return reset(),{name:n.i18next.t(`${e}:name`),callback(){const t=document.createElement("template"),n=`${e}:buttons.0.title`;t.innerHTML=`\n <se-button id="tool_connect" title="${n}" src="conn.svg"></se-button>\n `,s("tools_left").append(t.content.cloneNode(!0)),c(s("tool_connect"),(()=>{this.leftPanel.updateLeftPanel("tool_connect")&&o.setMode("connector")}))},mouseDown(e){const t=o.getDataStorage(),r=o.getSvgContent(),{event:s,start_x:c,start_y:a}=e,i=o.getMode(),{curConfig:{initStroke:u}}=n.configObj;if("connector"===i){if(f)return;const e=s.target;if(o.getParents(e.parentNode).includes(r)){const n=o.getClosest(e.parentNode,"foreignObject");g=n||e;const r=o.getStrokedBBox([g]),s=r.x+r.width/2,i=r.y+r.height/2;f=!0,d=l({element:"polyline",attr:{id:"conn_"+o.getNextId(),points:`${s},${i} ${s},${i} ${c},${a}`,stroke:`#${u.color}`,"stroke-width":g.stroke_width&&0!==g.stroke_width?g.stroke_width:u.width,fill:"none",opacity:u.opacity,style:"pointer-events:none"}}),t.put(d,"start_bb",r)}return{started:!0}}"select"===i&&findConnectors(e.selectedElements)},mouseMove(e){if(0===p.length)return;o.getDataStorage();o.getZoom();e.mouse_x,e.mouse_y},mouseUp(e){const t=o.getDataStorage(),n=o.getSvgContent(),{event:r}=e;let s=r.target;if("connector"!==o.getMode())return;const c=o.getClosest(s.parentNode,"foreignObject");c&&(s=c);const l=o.getParents(s.parentNode).includes(n);if(s===g)return f=!0,{keep:!0,element:null,started:f};if(!l)return d?.remove(),f=!1,{keep:!1,element:null,started:f};m=s;const a=g?.id||"",p=m?.id||"",_=`${a} ${p}`,b=`${p} ${a}`;if(Array.from(document.querySelectorAll('[id^="conn_"]')).filter((e=>e.getAttributeNS(u,"connector")===_||e.getAttributeNS(u,"connector")===b)).length)return d.remove(),{keep:!1,element:null,started:!1};const h=o.getStrokedBBox([m]),y=getBBintersect(undefined,undefined,h,getOffset("start",d));return setPoint(d,"end",y.x,y.y,!0),t.put(d,"c_start",a),t.put(d,"c_end",p),t.put(d,"end_bb",h),d.setAttributeNS(u,"se:connector",_),d.setAttribute("opacity",1),o.addToSelection([d]),o.moveToBottomSelectedElement(),i.requestSelector(d).showGrips(!1),f=!1,{keep:!0,element:d,started:f}},selectedChanged(e){const t=o.getDataStorage();if(!o.getSvgContent().querySelectorAll('[id^="conn_"]').length)return;"connector"===o.getMode()&&o.setMode("select");const{elems:n}=e;for(const o of n)o&&t.has(o,"c_start")?(i.requestSelector(o).showGrips(!1),showPanel(e.selectedElement&&!e.multiselected)):showPanel(!1);updateConnectors(o.getSelectedElements())},elementChanged(e){const t=o.getDataStorage();let[n]=e.elems;if(!n)return;"svg"===n.tagName&&"svgcontent"===n.id&&reset();const{markerStart:s,markerMid:c,markerEnd:a}=n.attributes;if((s||c||a)&&(d=n,t.put(n,"start_off",Boolean(s)),t.put(n,"end_off",Boolean(a)),"line"===n.tagName&&c)){const{x1:e,x2:t,y1:r,y2:s,id:a}=n.attributes,i=`${(Number(e.value)+Number(t.value))/2},${(Number(r.value)+Number(s.value))/2}`,u=l({element:"polyline",attr:{points:`${e.value},${r.value} ${i} ${t.value},${s.value}`,stroke:n.getAttribute("stroke"),"stroke-width":n.getAttribute("stroke-width"),"marker-mid":c.value,fill:"none",opacity:n.getAttribute("opacity")||1}});n.insertAdjacentElement("afterend",u),n.remove(),o.clearSelection(),u.id=a.value,o.addToSelection([u]),n=u}if(n?.id.startsWith("conn_")){const e=r(t.get(n,"c_start"));updateConnectors([e])}else updateConnectors(o.getSelectedElements())},IDsUpdated(e){const t=[];return e.elems.forEach((function(n){"se:connector"in n.attr&&(n.attr["se:connector"]=n.attr["se:connector"].split(" ").map((function(t){return e.changes[t]})).join(" "),/. ./.test(n.attr["se:connector"])||t.push(n.attr.id))})),{remove:t}},toolButtonStateUpdate(e){const t=document.getElementById("tool_connect");e.nostroke&&!0===t.pressed&&n.clickSelect(),t.disabled=e.nostroke}}}},n=Object.freeze({__proto__:null,default:{name:"Connector",langListTitle:"Connect two objects",langList:[{id:"mode_connect",title:"Connect two objects"}],buttons:[{title:"Connect two objects"}]}}),o=Object.freeze({__proto__:null,default:{name:"Connecteur",langListTitle:"Connecter deux objets",langList:[{id:"mode_connect",title:"Connecter deux objets"}],buttons:[{title:"Connecter deux objets"}]}}),r=Object.freeze({__proto__:null,default:{name:"Łącznik",langListTitle:"Połącz dwa obiekty",langList:[{id:"mode_connect",title:"Połącz dwa obiekty"}],buttons:[{title:"Połącz dwa obiekty"}]}}),s=Object.freeze({__proto__:null,default:{name:"连接器",langListTitle:"连接两个对象",langList:[{id:"mode_connect",title:"连接两个对象"}],buttons:[{title:"连接两个对象"}]}});export{t as default};
11
+ //# sourceMappingURL=ext-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ext-connector.js","sources":["../../../../src/editor/extensions/ext-connector/ext-connector.js","../../../../src/editor/extensions/ext-connector/locale/en.js","../../../../src/editor/extensions/ext-connector/locale/fr.js","../../../../src/editor/extensions/ext-connector/locale/pl.js","../../../../src/editor/extensions/ext-connector/locale/zh-CN.js"],"sourcesContent":["/**\n * @file ext-connector.js\n *\n * @license MIT\n *\n * @copyright 2010 Alexis Deveria\n * @copyright 2023 Optimistik SAS\n *\n */\n\nconst name = 'connector'\n\nconst loadExtensionTranslation = async function (svgEditor) {\n let translationModule\n const lang = svgEditor.configObj.pref('lang')\n try {\n translationModule = await import(`./locale/${lang}.js`)\n } catch (_error) {\n // eslint-disable-next-line no-console\n console.warn(`Missing translation (${lang}) for ${name} - using 'en'`)\n translationModule = await import('./locale/en.js')\n }\n svgEditor.i18next.addResourceBundle(lang, name, translationModule.default)\n}\n\nexport default {\n name,\n async init (S) {\n const svgEditor = this\n const { svgCanvas } = svgEditor\n const { getElement, $id, $click, addSVGElementsFromJson } = svgCanvas\n const { svgroot, selectorManager } = S\n const seNs = svgCanvas.getEditorNS()\n await loadExtensionTranslation(svgEditor)\n\n let startX\n let startY\n let curLine\n let startElem\n let endElem\n\n let started = false\n let connections = []\n\n // Save the original groupSelectedElements method\n const originalGroupSelectedElements = svgCanvas.groupSelectedElements\n\n // Override the original groupSelectedElements to exclude connectors\n svgCanvas.groupSelectedElements = function (...args) {\n // Remove connectors from selection\n svgCanvas.removeFromSelection(document.querySelectorAll('[id^=\"conn_\"]'))\n\n // Call the original method\n return originalGroupSelectedElements.apply(this, args)\n }\n\n // Save the original moveSelectedElements method\n const originalMoveSelectedElements = svgCanvas.moveSelectedElements\n\n // Override the original moveSelectedElements to handle connectors\n svgCanvas.moveSelectedElements = function (...args) {\n // Call the original method and store its result\n const cmd = originalMoveSelectedElements.apply(this, args)\n\n // Update connectors\n updateConnectors(svgCanvas.getSelectedElements())\n\n // Return the result of the original method\n return cmd\n }\n\n /**\n * getBBintersect\n * @param {Float} x\n * @param {Float} y\n * @param {module:utilities.BBoxObject} bb\n * @param {Float} offset\n * @returns {module:math.XYObject}\n */\n const getBBintersect = (x, y, bb, offset) => {\n // Adjust bounding box if offset is provided\n if (offset) {\n bb = { ...bb } // Create a shallow copy\n bb.width += offset\n bb.height += offset\n bb.x -= offset / 2\n bb.y -= offset / 2\n }\n\n // Calculate center of bounding box\n const midX = bb.x + bb.width / 2\n const midY = bb.y + bb.height / 2\n\n // Calculate lengths from (x, y) to center\n const lenX = x - midX\n const lenY = y - midY\n\n // Calculate slope of line from (x, y) to center\n const slope = Math.abs(lenY / lenX)\n\n // Calculate ratio to find intersection point\n let ratio\n if (slope < bb.height / bb.width) {\n ratio = bb.width / 2 / Math.abs(lenX)\n } else {\n ratio = lenY ? bb.height / 2 / Math.abs(lenY) : 0\n }\n\n // Calculate intersection point\n return {\n x: midX + lenX * ratio,\n y: midY + lenY * ratio\n }\n }\n\n /**\n * getOffset\n * @param {\"start\"|\"end\"} side - The side of the line (\"start\" or \"end\") where the marker may be present.\n * @param {Element} line - The line element to check for a marker.\n * @returns {Float} - Returns the calculated offset if a marker is present, otherwise returns 0.\n */\n const getOffset = (side, line) => {\n // Check for marker attribute on the given side (\"marker-start\" or \"marker-end\")\n const hasMarker = line.getAttribute('marker-' + side)\n\n // Calculate size based on stroke-width, multiplied by a constant factor (here, 5)\n // TODO: This factor should ideally be based on the actual size of the marker.\n const size = line.getAttribute('stroke-width') * 5\n\n // Return calculated size if marker is present, otherwise return 0.\n return hasMarker ? size : 0\n }\n\n /**\n * showPanel\n * @param {boolean} on - Determines whether to show or hide the elements.\n * @returns {void}\n */\n const showPanel = on => {\n // Find the 'connector_rules' or create it if it doesn't exist.\n let connRules = $id('connector_rules')\n if (!connRules) {\n connRules = document.createElement('style')\n connRules.setAttribute('id', 'connector_rules')\n document.getElementsByTagName('head')[0].appendChild(connRules)\n }\n\n // Update the content of <style> element to either hide or show certain elements.\n connRules.textContent = !on\n ? ''\n : '#tool_clone, #tool_topath, #tool_angle, #xy_panel { display: none !important; }'\n\n // Update the display property of the <style> element itself based on the 'on' value.\n if ($id('connector_rules')) {\n $id('connector_rules').style.display = on ? 'block' : 'none'\n }\n }\n\n /**\n * setPoint\n * @param {Element} elem - The SVG element.\n * @param {Integer|\"end\"} pos - The position index or \"end\".\n * @param {Float} x - The x-coordinate.\n * @param {Float} y - The y-coordinate.\n * @param {boolean} [setMid] - Whether to set the midpoint.\n * @returns {void}\n */\n const setPoint = (elem, pos, x, y, setMid) => {\n // Create a new SVG point\n const pts = elem.points\n const pt = svgroot.createSVGPoint()\n pt.x = x\n pt.y = y\n\n // If position is \"end\", set it to the last index\n if (pos === 'end') {\n pos = pts.numberOfItems - 1\n }\n\n // Try replacing the point at the specified position\n pts.replaceItem(pt, pos)\n\n // Optionally, set the midpoint\n if (setMid) {\n const ptStart = pts.getItem(0)\n const ptEnd = pts.getItem(pts.numberOfItems - 1)\n setPoint(elem, 1, (ptEnd.x + ptStart.x) / 2, (ptEnd.y + ptStart.y) / 2)\n }\n }\n\n /**\n * @param {Float} diffX\n * @param {Float} diffY\n * @returns {void}\n */\n const updatePoints = (line, conn, bb, altBB, pre, altPre) => {\n const srcX = altBB.x + altBB.width / 2\n const srcY = altBB.y + altBB.height / 2\n\n const pt = getBBintersect(srcX, srcY, bb, getOffset(pre, line))\n setPoint(line, conn.is_start ? 0 : 'end', pt.x, pt.y, true)\n\n const pt2 = getBBintersect(pt.x, pt.y, altBB, getOffset(altPre, line))\n setPoint(line, conn.is_start ? 'end' : 0, pt2.x, pt2.y, true)\n }\n\n const updateLine = (diffX, diffY) => {\n const dataStorage = svgCanvas.getDataStorage()\n\n for (const conn of connections) {\n const {\n connector: line,\n is_start: isStart,\n start_x: startX,\n start_y: startY\n } = conn\n\n const pre = isStart ? 'start' : 'end'\n const altPre = isStart ? 'end' : 'start'\n\n // Update bbox for this element\n const bb = { ...dataStorage.get(line, `${pre}_bb`) }\n bb.x = startX + diffX\n bb.y = startY + diffY\n\n dataStorage.put(line, `${pre}_bb`, bb)\n\n // Get center point of connected element\n const altBB = dataStorage.get(line, `${altPre}_bb`)\n\n updatePoints(line, conn, bb, altBB, pre, altPre)\n }\n }\n\n // Finds connectors associated with selected elements\n const findConnectors = (elems = []) => {\n // Fetch data storage object from svgCanvas\n const dataStorage = svgCanvas.getDataStorage()\n\n // Query all connector elements (id startss with conn_)\n const connectors = document.querySelectorAll('[id^=\"conn_\"]')\n // Reset connections array\n connections = []\n\n // Loop through each connector\n for (const connector of connectors) {\n let addThis = false // Flag to indicate whether to add this connector\n const parts = [] // To hold the starting and ending elements connected by the connector\n\n // Loop through the connector ends (\"start\" and \"end\")\n for (const [i, pos] of ['start', 'end'].entries()) {\n // Fetch connected element and its bounding box\n let part = dataStorage.get(connector, `c_${pos}`)\n\n // If part is null or undefined, fetch it and store it\n if (!part) {\n part = document.getElementById(\n connector.attributes['se:connector'].value.split(' ')[i]\n )\n dataStorage.put(connector, `c_${pos}`, part.id)\n dataStorage.put(\n connector,\n `${pos}_bb`,\n svgCanvas.getStrokedBBox([part])\n )\n } else {\n // If part is already stored, fetch it by ID\n part = document.getElementById(part)\n }\n\n // Add the part to the parts array\n parts.push(part)\n }\n\n // Loop through the starting and ending elements connected by the connector\n for (let i = 0; i < 2; i++) {\n const cElem = parts[i]\n const parents = svgCanvas.getParents(cElem?.parentNode)\n\n // Check if the element is part of a selected group\n for (const el of parents) {\n if (elems.includes(el)) {\n addThis = true\n break\n }\n }\n\n // If element is missing or parent is null, remove the connector\n if (!cElem || !cElem.parentNode) {\n connector.remove()\n continue\n }\n\n // If element is in the selection or part of a selected group\n if (elems.includes(cElem) || addThis) {\n const bb = svgCanvas.getStrokedBBox([cElem])\n\n // Add connection information to the connections array\n connections.push({\n elem: cElem,\n connector,\n is_start: i === 0,\n start_x: bb.x,\n start_y: bb.y\n })\n }\n }\n }\n }\n\n /**\n * Updates the connectors based on selected elements.\n * @param {Element[]} [elems] - Optional array of selected elements.\n * @returns {void}\n */\n const updateConnectors = elems => {\n const dataStorage = svgCanvas.getDataStorage()\n\n // Find connectors associated with selected elements\n findConnectors(elems)\n\n if (connections.length) {\n // Iterate through each connection to update its state\n for (const conn of connections) {\n const {\n elem,\n connector: line,\n is_start: isStart,\n start_x: startX,\n start_y: startY\n } = conn\n\n // Determine whether the connection starts or ends with this element\n const pre = isStart ? 'start' : 'end'\n\n // Update the bounding box for this element\n const bb = svgCanvas.getStrokedBBox([elem])\n bb.x = startX\n bb.y = startY\n dataStorage.put(line, `${pre}_bb`, bb)\n\n // Determine the opposite end ('start' or 'end') of the connection\n const altPre = isStart ? 'end' : 'start'\n\n // Retrieve the bounding box for the connected element at the opposite end\n const bb2 = dataStorage.get(line, `${altPre}_bb`)\n\n // Calculate the center point of the connected element\n const srcX = bb2?.x + bb2?.width / 2\n const srcY = bb2?.y + bb2?.height / 2\n\n // Update the point of the element being moved\n const pt = getBBintersect(srcX, srcY, bb, getOffset(pre, line))\n setPoint(line, isStart ? 0 : 'end', pt.x, pt.y, true)\n\n // Update the point of the connected element at the opposite end\n const pt2 = getBBintersect(\n pt.x,\n pt.y,\n dataStorage.get(line, `${altPre}_bb`),\n getOffset(altPre, line)\n )\n setPoint(line, isStart ? 'end' : 0, pt2.x, pt2.y, true)\n }\n }\n }\n\n /**\n * Do on reset.\n * @returns {void}\n */\n const reset = () => {\n const dataStorage = svgCanvas.getDataStorage()\n // Make sure all connectors have data set\n const svgContent = svgCanvas.getSvgContent()\n const elements = svgContent.querySelectorAll('*')\n elements.forEach(element => {\n const conn = element.getAttributeNS(seNs, 'connector')\n if (conn) {\n const connData = conn.split(' ')\n const sbb = svgCanvas.getStrokedBBox([getElement(connData[0])])\n const ebb = svgCanvas.getStrokedBBox([getElement(connData[1])])\n dataStorage.put(element, 'c_start', connData[0])\n dataStorage.put(element, 'c_end', connData[1])\n dataStorage.put(element, 'start_bb', sbb)\n dataStorage.put(element, 'end_bb', ebb)\n svgCanvas.getEditorNS(true)\n }\n })\n }\n\n reset()\n\n return {\n name: svgEditor.i18next.t(`${name}:name`),\n callback () {\n // Add the button and its handler(s)\n const buttonTemplate = document.createElement('template')\n const title = `${name}:buttons.0.title`\n buttonTemplate.innerHTML = `\n <se-button id=\"tool_connect\" title=\"${title}\" src=\"conn.svg\"></se-button>\n `\n $id('tools_left').append(buttonTemplate.content.cloneNode(true))\n $click($id('tool_connect'), () => {\n if (this.leftPanel.updateLeftPanel('tool_connect')) {\n svgCanvas.setMode('connector')\n }\n })\n },\n mouseDown (opts) {\n // Retrieve necessary data from the SVG canvas and the event object\n const dataStorage = svgCanvas.getDataStorage()\n const svgContent = svgCanvas.getSvgContent()\n const { event: e, start_x: startX, start_y: startY } = opts\n const mode = svgCanvas.getMode()\n const {\n curConfig: { initStroke }\n } = svgEditor.configObj\n\n if (mode === 'connector') {\n // Return if the line is already started\n if (started) return undefined\n\n const mouseTarget = e.target\n const parents = svgCanvas.getParents(mouseTarget.parentNode)\n\n // Check if the target is a child of the main SVG content\n if (parents.includes(svgContent)) {\n // Identify the connectable element, considering foreignObject elements\n const fo = svgCanvas.getClosest(\n mouseTarget.parentNode,\n 'foreignObject'\n )\n startElem = fo || mouseTarget\n\n // Retrieve the bounding box and calculate the center of the start element\n const bb = svgCanvas.getStrokedBBox([startElem])\n const x = bb.x + bb.width / 2\n const y = bb.y + bb.height / 2\n\n // Set the flag to indicate the line has started\n started = true\n\n // Create a new polyline element\n curLine = addSVGElementsFromJson({\n element: 'polyline',\n attr: {\n id: 'conn_' + svgCanvas.getNextId(),\n points: `${x},${y} ${x},${y} ${startX},${startY}`,\n stroke: `#${initStroke.color}`,\n 'stroke-width':\n !startElem.stroke_width || startElem.stroke_width === 0\n ? initStroke.width\n : startElem.stroke_width,\n fill: 'none',\n opacity: initStroke.opacity,\n style: 'pointer-events:none'\n }\n })\n\n // Store the bounding box of the start element\n dataStorage.put(curLine, 'start_bb', bb)\n }\n\n return {\n started: true\n }\n }\n\n if (mode === 'select') {\n // Find connectors if the mode is 'select'\n findConnectors(opts.selectedElements)\n }\n\n return undefined\n },\n mouseMove (opts) {\n // Exit early if there are no connectors\n if (connections.length === 0) return\n\n const dataStorage = svgCanvas.getDataStorage()\n const zoom = svgCanvas.getZoom()\n // const e = opts.event;\n const x = opts.mouse_x / zoom\n const y = opts.mouse_y / zoom\n /** @todo We have a concern if startX or startY are undefined */\n if (!startX || !startY) return\n\n const diffX = x - startX\n const diffY = y - startY\n\n const mode = svgCanvas.getMode()\n if (mode === 'connector' && started) {\n // const sw = curLine.getAttribute('stroke-width') * 3;\n // Set start point (adjusts based on bb)\n const pt = getBBintersect(\n x,\n y,\n dataStorage.get(curLine, 'start_bb'),\n getOffset('start', curLine)\n )\n startX = pt.x\n startY = pt.y\n\n setPoint(curLine, 0, pt.x, pt.y, true)\n\n // Set end point\n setPoint(curLine, 'end', x, y, true)\n } else if (mode === 'select') {\n for (const elem of svgCanvas.getSelectedElements()) {\n if (elem && dataStorage.has(elem, 'c_start')) {\n svgCanvas.removeFromSelection([elem])\n elem.transform.baseVal.clear()\n }\n }\n if (connections.length) {\n updateLine(diffX, diffY)\n }\n }\n },\n mouseUp (opts) {\n // Get necessary data and initial setups\n const dataStorage = svgCanvas.getDataStorage()\n const svgContent = svgCanvas.getSvgContent()\n const { event: e } = opts\n let mouseTarget = e.target\n\n // Early exit if not in connector mode\n if (svgCanvas.getMode() !== 'connector') return undefined\n\n // Check for a foreignObject parent and update mouseTarget if found\n const fo = svgCanvas.getClosest(mouseTarget.parentNode, 'foreignObject')\n if (fo) mouseTarget = fo\n\n // Check if the target is a child of the main SVG content\n const parents = svgCanvas.getParents(mouseTarget.parentNode)\n const isInSvgContent = parents.includes(svgContent)\n\n if (mouseTarget === startElem) {\n // Case: Started drawing line via click\n started = true\n return {\n keep: true,\n element: null,\n started\n }\n }\n\n if (!isInSvgContent) {\n // Case: Invalid target element; remove the line\n curLine?.remove()\n started = false\n return {\n keep: false,\n element: null,\n started\n }\n }\n\n // Valid target element for the end of the line\n endElem = mouseTarget\n\n const startId = startElem?.id || ''\n const endId = endElem?.id || ''\n const connStr = `${startId} ${endId}`\n const altStr = `${endId} ${startId}`\n\n // Prevent duplicate connectors\n const dupe = Array.from(\n document.querySelectorAll('[id^=\"conn_\"]')\n ).filter(\n conn =>\n conn.getAttributeNS(seNs, 'connector') === connStr ||\n conn.getAttributeNS(seNs, 'connector') === altStr\n )\n\n if (dupe.length) {\n curLine.remove()\n return {\n keep: false,\n element: null,\n started: false\n }\n }\n\n // Update the end point of the connector\n const bb = svgCanvas.getStrokedBBox([endElem])\n const pt = getBBintersect(\n startX,\n startY,\n bb,\n getOffset('start', curLine)\n )\n setPoint(curLine, 'end', pt.x, pt.y, true)\n\n // Save metadata to the connector\n dataStorage.put(curLine, 'c_start', startId)\n dataStorage.put(curLine, 'c_end', endId)\n dataStorage.put(curLine, 'end_bb', bb)\n curLine.setAttributeNS(seNs, 'se:connector', connStr)\n curLine.setAttribute('opacity', 1)\n\n // Finalize the connector\n svgCanvas.addToSelection([curLine])\n svgCanvas.moveToBottomSelectedElement()\n selectorManager.requestSelector(curLine).showGrips(false)\n\n started = false\n return {\n keep: true,\n element: curLine,\n started\n }\n },\n selectedChanged (opts) {\n // Get necessary data storage and SVG content\n const dataStorage = svgCanvas.getDataStorage()\n const svgContent = svgCanvas.getSvgContent()\n\n // Exit early if there are no connectors\n if (!svgContent.querySelectorAll('[id^=\"conn_\"]').length) return\n\n // If the current mode is 'connector', switch to 'select'\n if (svgCanvas.getMode() === 'connector') {\n svgCanvas.setMode('select')\n }\n\n // Get currently selected elements\n const { elems: selElems } = opts\n\n // Iterate through selected elements\n for (const elem of selElems) {\n // If the element has a connector start, handle it\n if (elem && dataStorage.has(elem, 'c_start')) {\n selectorManager.requestSelector(elem).showGrips(false)\n\n // Show panel depending on selection state\n showPanel(opts.selectedElement && !opts.multiselected)\n } else {\n // Hide panel if no connector start\n showPanel(false)\n }\n }\n\n // Update connectors based on selected elements\n updateConnectors(svgCanvas.getSelectedElements())\n },\n elementChanged (opts) {\n // Get the necessary data storage\n const dataStorage = svgCanvas.getDataStorage()\n\n // Get the first element from the options; exit early if it's null\n let [elem] = opts.elems\n if (!elem) return\n\n // Reinitialize if it's the main SVG content\n if (elem.tagName === 'svg' && elem.id === 'svgcontent') {\n reset()\n }\n\n // Check for marker attributes and update offsets\n const { markerStart, markerMid, markerEnd } = elem.attributes\n if (markerStart || markerMid || markerEnd) {\n curLine = elem\n dataStorage.put(elem, 'start_off', Boolean(markerStart))\n dataStorage.put(elem, 'end_off', Boolean(markerEnd))\n\n // Convert lines to polyline if there's a mid-marker\n if (elem.tagName === 'line' && markerMid) {\n const { x1, x2, y1, y2, id } = elem.attributes\n\n const midPt = `${(Number(x1.value) + Number(x2.value)) / 2},${\n (Number(y1.value) + Number(y2.value)) / 2\n }`\n const pline = addSVGElementsFromJson({\n element: 'polyline',\n attr: {\n points: `${x1.value},${y1.value} ${midPt} ${x2.value},${y2.value}`,\n stroke: elem.getAttribute('stroke'),\n 'stroke-width': elem.getAttribute('stroke-width'),\n 'marker-mid': markerMid.value,\n fill: 'none',\n opacity: elem.getAttribute('opacity') || 1\n }\n })\n\n elem.insertAdjacentElement('afterend', pline)\n elem.remove()\n svgCanvas.clearSelection()\n pline.id = id.value\n svgCanvas.addToSelection([pline])\n elem = pline\n }\n }\n\n // Update connectors based on the current element\n if (elem?.id.startsWith('conn_')) {\n const start = getElement(dataStorage.get(elem, 'c_start'))\n updateConnectors([start])\n } else {\n updateConnectors(svgCanvas.getSelectedElements())\n }\n },\n IDsUpdated (input) {\n const remove = []\n input.elems.forEach(function (elem) {\n if ('se:connector' in elem.attr) {\n elem.attr['se:connector'] = elem.attr['se:connector']\n .split(' ')\n .map(function (oldID) {\n return input.changes[oldID]\n })\n .join(' ')\n\n // Check validity - the field would be something like 'svg_21 svg_22', but\n // if one end is missing, it would be 'svg_21' and therefore fail this test\n if (!/. ./.test(elem.attr['se:connector'])) {\n remove.push(elem.attr.id)\n }\n }\n })\n return { remove }\n },\n toolButtonStateUpdate (opts) {\n const button = document.getElementById('tool_connect')\n if (opts.nostroke && button.pressed === true) {\n svgEditor.clickSelect()\n }\n button.disabled = opts.nostroke\n }\n }\n }\n}\n","export default {\n name: 'Connector',\n langListTitle: 'Connect two objects',\n langList: [\n { id: 'mode_connect', title: 'Connect two objects' }\n ],\n buttons: [\n {\n title: 'Connect two objects'\n }\n ]\n}\n","export default {\n name: 'Connecteur',\n langListTitle: 'Connecter deux objets',\n langList: [\n { id: 'mode_connect', title: 'Connecter deux objets' }\n ],\n buttons: [\n {\n title: 'Connecter deux objets'\n }\n ]\n}\n","export default {\n name: 'Łącznik',\n langListTitle: 'Połącz dwa obiekty',\n langList: [\n { id: 'mode_connect', title: 'Połącz dwa obiekty' }\n ],\n buttons: [\n {\n title: 'Połącz dwa obiekty'\n }\n ]\n}","export default {\n name: '连接器',\n langListTitle: '连接两个对象',\n langList: [\n { id: 'mode_connect', title: '连接两个对象' }\n ],\n buttons: [\n {\n title: '连接两个对象'\n }\n ]\n}\n"],"names":["name","loadExtensionTranslation","async","svgEditor","translationModule","lang","configObj","pref","__variableDynamicImportRuntime0__","_error","console","warn","Promise","resolve","then","en$1","i18next","addResourceBundle","default","extConnector","init","S","this","svgCanvas","getElement","$id","$click","addSVGElementsFromJson","svgroot","selectorManager","seNs","getEditorNS","curLine","startElem","endElem","started","connections","originalGroupSelectedElements","groupSelectedElements","removeFromSelection","document","querySelectorAll","_len","arguments","length","args","Array","_key","apply","originalMoveSelectedElements","moveSelectedElements","_len2","_key2","cmd","updateConnectors","getSelectedElements","getBBintersect","x","y","bb","offset","width","height","midX","midY","lenX","lenY","ratio","Math","abs","getOffset","side","line","hasMarker","getAttribute","size","showPanel","on","connRules","createElement","setAttribute","getElementsByTagName","appendChild","textContent","style","display","setPoint","elem","pos","setMid","pts","points","pt","createSVGPoint","numberOfItems","replaceItem","ptStart","getItem","ptEnd","findConnectors","elems","undefined","dataStorage","getDataStorage","connectors","connector","addThis","parts","i","entries","part","get","getElementById","attributes","value","split","put","id","getStrokedBBox","push","cElem","parents","getParents","parentNode","el","includes","is_start","start_x","start_y","remove","conn","isStart","startX","startY","pre","altPre","bb2","pt2","reset","getSvgContent","forEach","element","getAttributeNS","connData","sbb","ebb","t","callback","buttonTemplate","title","innerHTML","append","content","cloneNode","leftPanel","updateLeftPanel","setMode","mouseDown","opts","svgContent","event","e","mode","getMode","curConfig","initStroke","mouseTarget","target","fo","getClosest","attr","getNextId","stroke","color","stroke_width","fill","opacity","selectedElements","mouseMove","getZoom","mouse_x","mouse_y","mouseUp","isInSvgContent","keep","startId","endId","connStr","altStr","from","filter","setAttributeNS","addToSelection","moveToBottomSelectedElement","requestSelector","showGrips","selectedChanged","selElems","has","selectedElement","multiselected","elementChanged","tagName","markerStart","markerMid","markerEnd","Boolean","x1","x2","y1","y2","midPt","Number","pline","insertAdjacentElement","clearSelection","startsWith","start","IDsUpdated","input","map","oldID","changes","join","test","toolButtonStateUpdate","button","nostroke","pressed","clickSelect","disabled","langListTitle","langList","buttons"],"mappings":";;;;;;;;;AAUA,MAAMA,EAAO,YAEPC,yBAA2BC,eAAgBC,GAC/C,IAAIC,EACJ,MAAMC,EAAOF,EAAUG,UAAUC,KAAK,QACtC,IACEH,0hBAA0BI,CAAO,YAAYH,OAC9C,CAAC,MAAOI,GAEPC,QAAQC,KAAK,wBAAwBN,UAAaL,kBAClDI,QAA0BQ,QAAwBC,UAAAC,MAAA,WAAA,OAAAC,CAAA,GACpD,CACAZ,EAAUa,QAAQC,kBAAkBZ,EAAML,EAAMI,EAAkBc,QACpE,EAEA,IAAeC,EAAA,CACbnB,OACA,UAAMoB,CAAMC,GACV,MAAMlB,EAAYmB,MACZC,UAAEA,GAAcpB,GAChBqB,WAAEA,EAAUC,IAAEA,EAAGC,OAAEA,EAAMC,uBAAEA,GAA2BJ,GACtDK,QAAEA,EAAOC,gBAAEA,GAAoBR,EAC/BS,EAAOP,EAAUQ,cAGvB,IAEIC,EACAC,EACAC,QANEjC,yBAAyBE,GAQ/B,IAAIgC,GAAU,EACVC,EAAc,GAGlB,MAAMC,EAAgCd,EAAUe,sBAGhDf,EAAUe,sBAAwB,WAEhCf,EAAUgB,oBAAoBC,SAASC,iBAAiB,kBAExD,IAAA,IAAAC,EAAAC,UAAAC,OAJ6CC,EAAIC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,GAAAJ,UAAAI,GAKjD,OAAOV,EAA8BW,MAAM1B,KAAMuB,EAClD,EAGD,MAAMI,EAA+B1B,EAAU2B,qBAG/C3B,EAAU2B,qBAAuB,WAAmB,IAAA,IAAAC,EAAAR,UAAAC,OAANC,EAAIC,IAAAA,MAAAK,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJP,EAAIO,GAAAT,UAAAS,GAEhD,MAAMC,EAAMJ,EAA6BD,MAAM1B,KAAMuB,GAMrD,OAHAS,iBAAiB/B,EAAUgC,uBAGpBF,CACR,EAUD,MAAMG,eAAiBA,CAACC,EAAGC,EAAGC,EAAIC,KAE5BA,KACFD,EAAK,IAAKA,IACPE,OAASD,EACZD,EAAGG,QAAUF,EACbD,EAAGF,GAAKG,EAAS,EACjBD,EAAGD,GAAKE,EAAS,GAInB,MAAMG,EAAOJ,EAAGF,EAAIE,EAAGE,MAAQ,EACzBG,EAAOL,EAAGD,EAAIC,EAAGG,OAAS,EAG1BG,EAAOR,EAAIM,EACXG,EAAOR,EAAIM,EAMjB,IAAIG,EAQJ,OANEA,EALYC,KAAKC,IAAIH,EAAOD,GAIlBN,EAAGG,OAASH,EAAGE,MACjBF,EAAGE,MAAQ,EAAIO,KAAKC,IAAIJ,GAExBC,EAAOP,EAAGG,OAAS,EAAIM,KAAKC,IAAIH,GAAQ,EAI3C,CACLT,EAAGM,EAAOE,EAAOE,EACjBT,EAAGM,EAAOE,EAAOC,EAClB,EASGG,UAAYA,CAACC,EAAMC,KAEvB,MAAMC,EAAYD,EAAKE,aAAa,UAAYH,GAI1CI,EAA2C,EAApCH,EAAKE,aAAa,gBAG/B,OAAOD,EAAYE,EAAO,CAAC,EAQvBC,UAAYC,IAEhB,IAAIC,EAAYrD,EAAI,mBACfqD,IACHA,EAAYtC,SAASuC,cAAc,SACnCD,EAAUE,aAAa,KAAM,mBAC7BxC,SAASyC,qBAAqB,QAAQ,GAAGC,YAAYJ,IAIvDA,EAAUK,YAAeN,EAErB,kFADA,GAIApD,EAAI,qBACNA,EAAI,mBAAmB2D,MAAMC,QAAUR,EAAK,QAAU,OACxD,EAYIS,SAAWA,CAACC,EAAMC,EAAK/B,EAAGC,EAAG+B,KAEjC,MAAMC,EAAMH,EAAKI,OACXC,EAAKhE,EAAQiE,iBAanB,GAZAD,EAAGnC,EAAIA,EACPmC,EAAGlC,EAAIA,EAGK,QAAR8B,IACFA,EAAME,EAAII,cAAgB,GAI5BJ,EAAIK,YAAYH,EAAIJ,GAGhBC,EAAQ,CACV,MAAMO,EAAUN,EAAIO,QAAQ,GACtBC,EAAQR,EAAIO,QAAQP,EAAII,cAAgB,GAC9CR,SAASC,EAAM,GAAIW,EAAMzC,EAAIuC,EAAQvC,GAAK,GAAIyC,EAAMxC,EAAIsC,EAAQtC,GAAK,EACvE,GAgDIyC,eAAiB,WAAgB,IAAfC,EAAKzD,UAAAC,OAAA,QAAAyD,IAAA1D,UAAA,GAAAA,UAAA,GAAG,GAE9B,MAAM2D,EAAc/E,EAAUgF,iBAGxBC,EAAahE,SAASC,iBAAiB,iBAE7CL,EAAc,GAGd,IAAK,MAAMqE,KAAaD,EAAY,CAClC,IAAIE,GAAU,EACd,MAAMC,EAAQ,GAGd,IAAK,MAAOC,EAAGpB,IAAQ,CAAC,QAAS,OAAOqB,UAAW,CAEjD,IAAIC,EAAOR,EAAYS,IAAIN,EAAW,KAAKjB,KAGtCsB,EAYHA,EAAOtE,SAASwE,eAAeF,IAX/BA,EAAOtE,SAASwE,eACdP,EAAUQ,WAAW,gBAAgBC,MAAMC,MAAM,KAAKP,IAExDN,EAAYc,IAAIX,EAAW,KAAKjB,IAAOsB,EAAKO,IAC5Cf,EAAYc,IACVX,EACA,GAAGjB,OACHjE,EAAU+F,eAAe,CAACR,MAQ9BH,EAAMY,KAAKT,EACb,CAGA,IAAK,IAAIF,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMY,EAAQb,EAAMC,GACda,EAAUlG,EAAUmG,WAAWF,GAAOG,YAG5C,IAAK,MAAMC,KAAMH,EACf,GAAIrB,EAAMyB,SAASD,GAAK,CACtBlB,GAAU,EACV,KACF,CAIF,GAAKc,GAAUA,EAAMG,YAMrB,GAAIvB,EAAMyB,SAASL,IAAUd,EAAS,CACpC,MAAM/C,EAAKpC,EAAU+F,eAAe,CAACE,IAGrCpF,EAAYmF,KAAK,CACfhC,KAAMiC,EACNf,YACAqB,SAAgB,IAANlB,EACVmB,QAASpE,EAAGF,EACZuE,QAASrE,EAAGD,GAEhB,OAhBE+C,EAAUwB,QAiBd,CACF,CACD,EAOK3E,iBAAmB8C,IACvB,MAAME,EAAc/E,EAAUgF,iBAK9B,GAFAJ,eAAeC,GAEXhE,EAAYQ,OAEd,IAAK,MAAMsF,KAAQ9F,EAAa,CAC9B,MAAMmD,KACJA,EACAkB,UAAWjC,EACXsD,SAAUK,EACVJ,QAASK,EACTJ,QAASK,GACPH,EAGEI,EAAMH,EAAU,QAAU,MAG1BxE,EAAKpC,EAAU+F,eAAe,CAAC/B,IACrC5B,EAAGF,EAAI2E,EACPzE,EAAGD,EAAI2E,EACP/B,EAAYc,IAAI5C,EAAM,GAAG8D,OAAU3E,GAGnC,MAAM4E,EAASJ,EAAU,MAAQ,QAG3BK,EAAMlC,EAAYS,IAAIvC,EAAM,GAAG+D,QAO/B3C,EAAKpC,eAJEgF,GAAK/E,EAAI+E,GAAK3E,MAAQ,EACtB2E,GAAK9E,EAAI8E,GAAK1E,OAAS,EAGEH,EAAIW,UAAUgE,EAAK9D,IACzDc,SAASd,EAAM2D,EAAU,EAAI,MAAOvC,EAAGnC,EAAGmC,EAAGlC,GAAG,GAGhD,MAAM+E,EAAMjF,eACVoC,EAAGnC,EACHmC,EAAGlC,EACH4C,EAAYS,IAAIvC,EAAM,GAAG+D,QACzBjE,UAAUiE,EAAQ/D,IAEpBc,SAASd,EAAM2D,EAAU,MAAQ,EAAGM,EAAIhF,EAAGgF,EAAI/E,GAAG,EACpD,CACF,EAOIgF,MAAQA,KACZ,MAAMpC,EAAc/E,EAAUgF,iBAEXhF,EAAUoH,gBACDlG,iBAAiB,KACpCmG,SAAQC,IACf,MAAMX,EAAOW,EAAQC,eAAehH,EAAM,aAC1C,GAAIoG,EAAM,CACR,MAAMa,EAAWb,EAAKf,MAAM,KACtB6B,EAAMzH,EAAU+F,eAAe,CAAC9F,EAAWuH,EAAS,MACpDE,EAAM1H,EAAU+F,eAAe,CAAC9F,EAAWuH,EAAS,MAC1DzC,EAAYc,IAAIyB,EAAS,UAAWE,EAAS,IAC7CzC,EAAYc,IAAIyB,EAAS,QAASE,EAAS,IAC3CzC,EAAYc,IAAIyB,EAAS,WAAYG,GACrC1C,EAAYc,IAAIyB,EAAS,SAAUI,GACnC1H,EAAUQ,aAAY,EACxB,IACA,EAKJ,OAFA2G,QAEO,CACL1I,KAAMG,EAAUa,QAAQkI,EAAE,GAAGlJ,UAC7BmJ,QAAAA,GAEE,MAAMC,EAAiB5G,SAASuC,cAAc,YACxCsE,EAAQ,GAAGrJ,oBACjBoJ,EAAeE,UAAY,kDACYD,4CAEvC5H,EAAI,cAAc8H,OAAOH,EAAeI,QAAQC,WAAU,IAC1D/H,EAAOD,EAAI,iBAAiB,KACtBH,KAAKoI,UAAUC,gBAAgB,iBACjCpI,EAAUqI,QAAQ,YACpB,GAEH,EACDC,SAAAA,CAAWC,GAET,MAAMxD,EAAc/E,EAAUgF,iBACxBwD,EAAaxI,EAAUoH,iBACrBqB,MAAOC,EAAGlC,QAASK,EAAQJ,QAASK,GAAWyB,EACjDI,EAAO3I,EAAU4I,WAErBC,WAAWC,WAAEA,IACXlK,EAAUG,UAEd,GAAa,cAAT4J,EAAsB,CAExB,GAAI/H,EAAS,OAEb,MAAMmI,EAAcL,EAAEM,OAItB,GAHgBhJ,EAAUmG,WAAW4C,EAAY3C,YAGrCE,SAASkC,GAAa,CAEhC,MAAMS,EAAKjJ,EAAUkJ,WACnBH,EAAY3C,WACZ,iBAEF1F,EAAYuI,GAAMF,EAGlB,MAAM3G,EAAKpC,EAAU+F,eAAe,CAACrF,IAC/BwB,EAAIE,EAAGF,EAAIE,EAAGE,MAAQ,EACtBH,EAAIC,EAAGD,EAAIC,EAAGG,OAAS,EAG7B3B,GAAU,EAGVH,EAAUL,EAAuB,CAC/BkH,QAAS,WACT6B,KAAM,CACJrD,GAAI,QAAU9F,EAAUoJ,YACxBhF,OAAQ,GAAGlC,KAAKC,KAAKD,KAAKC,KAAK0E,KAAUC,IACzCuC,OAAQ,IAAIP,EAAWQ,QACvB,eACG5I,EAAU6I,cAA2C,IAA3B7I,EAAU6I,aAEjC7I,EAAU6I,aADVT,EAAWxG,MAEjBkH,KAAM,OACNC,QAASX,EAAWW,QACpB5F,MAAO,yBAKXkB,EAAYc,IAAIpF,EAAS,WAAY2B,EACvC,CAEA,MAAO,CACLxB,SAAS,EAEb,CAEa,WAAT+H,GAEF/D,eAAe2D,EAAKmB,iBAIvB,EACDC,SAAAA,CAAWpB,GAET,GAA2B,IAAvB1H,EAAYQ,OAAc,OAEVrB,EAAUgF,iBACjBhF,EAAU4J,UAEbrB,EAAKsB,QACLtB,EAAKuB,OAmChB,EACDC,OAAAA,CAASxB,GAEP,MAAMxD,EAAc/E,EAAUgF,iBACxBwD,EAAaxI,EAAUoH,iBACrBqB,MAAOC,GAAMH,EACrB,IAAIQ,EAAcL,EAAEM,OAGpB,GAA4B,cAAxBhJ,EAAU4I,UAA2B,OAGzC,MAAMK,EAAKjJ,EAAUkJ,WAAWH,EAAY3C,WAAY,iBACpD6C,IAAIF,EAAcE,GAGtB,MACMe,EADUhK,EAAUmG,WAAW4C,EAAY3C,YAClBE,SAASkC,GAExC,GAAIO,IAAgBrI,EAGlB,OADAE,GAAU,EACH,CACLqJ,MAAM,EACN3C,QAAS,KACT1G,WAIJ,IAAKoJ,EAIH,OAFAvJ,GAASiG,SACT9F,GAAU,EACH,CACLqJ,MAAM,EACN3C,QAAS,KACT1G,WAKJD,EAAUoI,EAEV,MAAMmB,EAAUxJ,GAAWoF,IAAM,GAC3BqE,EAAQxJ,GAASmF,IAAM,GACvBsE,EAAU,GAAGF,KAAWC,IACxBE,EAAS,GAAGF,KAASD,IAW3B,GARa3I,MAAM+I,KACjBrJ,SAASC,iBAAiB,kBAC1BqJ,QACA5D,GACEA,EAAKY,eAAehH,EAAM,eAAiB6J,GAC3CzD,EAAKY,eAAehH,EAAM,eAAiB8J,IAGtChJ,OAEP,OADAZ,EAAQiG,SACD,CACLuD,MAAM,EACN3C,QAAS,KACT1G,SAAS,GAKb,MAAMwB,EAAKpC,EAAU+F,eAAe,CAACpF,IAC/B0D,EAAKpC,eAxiBX4E,UACAC,UA0iBE1E,EACAW,UAAU,QAAStC,IAiBrB,OAfAsD,SAAStD,EAAS,MAAO4D,EAAGnC,EAAGmC,EAAGlC,GAAG,GAGrC4C,EAAYc,IAAIpF,EAAS,UAAWyJ,GACpCnF,EAAYc,IAAIpF,EAAS,QAAS0J,GAClCpF,EAAYc,IAAIpF,EAAS,SAAU2B,GACnC3B,EAAQ+J,eAAejK,EAAM,eAAgB6J,GAC7C3J,EAAQgD,aAAa,UAAW,GAGhCzD,EAAUyK,eAAe,CAAChK,IAC1BT,EAAU0K,8BACVpK,EAAgBqK,gBAAgBlK,GAASmK,WAAU,GAEnDhK,GAAU,EACH,CACLqJ,MAAM,EACN3C,QAAS7G,EACTG,UAEH,EACDiK,eAAAA,CAAiBtC,GAEf,MAAMxD,EAAc/E,EAAUgF,iBAI9B,IAHmBhF,EAAUoH,gBAGblG,iBAAiB,iBAAiBG,OAAQ,OAG9B,cAAxBrB,EAAU4I,WACZ5I,EAAUqI,QAAQ,UAIpB,MAAQxD,MAAOiG,GAAavC,EAG5B,IAAK,MAAMvE,KAAQ8G,EAEb9G,GAAQe,EAAYgG,IAAI/G,EAAM,YAChC1D,EAAgBqK,gBAAgB3G,GAAM4G,WAAU,GAGhDvH,UAAUkF,EAAKyC,kBAAoBzC,EAAK0C,gBAGxC5H,WAAU,GAKdtB,iBAAiB/B,EAAUgC,sBAC5B,EACDkJ,cAAAA,CAAgB3C,GAEd,MAAMxD,EAAc/E,EAAUgF,iBAG9B,IAAKhB,GAAQuE,EAAK1D,MAClB,IAAKb,EAAM,OAGU,QAAjBA,EAAKmH,SAAiC,eAAZnH,EAAK8B,IACjCqB,QAIF,MAAMiE,YAAEA,EAAWC,UAAEA,EAASC,UAAEA,GAActH,EAAK0B,WACnD,IAAI0F,GAAeC,GAAaC,KAC9B7K,EAAUuD,EACVe,EAAYc,IAAI7B,EAAM,YAAauH,QAAQH,IAC3CrG,EAAYc,IAAI7B,EAAM,UAAWuH,QAAQD,IAGpB,SAAjBtH,EAAKmH,SAAsBE,GAAW,CACxC,MAAMG,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAEC,GAAEA,EAAE7F,GAAEA,GAAO9B,EAAK0B,WAE9BkG,EAAQ,IAAIC,OAAOL,EAAG7F,OAASkG,OAAOJ,EAAG9F,QAAU,MACtDkG,OAAOH,EAAG/F,OAASkG,OAAOF,EAAGhG,QAAU,IAEpCmG,EAAQ1L,EAAuB,CACnCkH,QAAS,WACT6B,KAAM,CACJ/E,OAAQ,GAAGoH,EAAG7F,SAAS+F,EAAG/F,SAASiG,KAASH,EAAG9F,SAASgG,EAAGhG,QAC3D0D,OAAQrF,EAAKb,aAAa,UAC1B,eAAgBa,EAAKb,aAAa,gBAClC,aAAckI,EAAU1F,MACxB6D,KAAM,OACNC,QAASzF,EAAKb,aAAa,YAAc,KAI7Ca,EAAK+H,sBAAsB,WAAYD,GACvC9H,EAAK0C,SACL1G,EAAUgM,iBACVF,EAAMhG,GAAKA,EAAGH,MACd3F,EAAUyK,eAAe,CAACqB,IAC1B9H,EAAO8H,CACT,CAIF,GAAI9H,GAAM8B,GAAGmG,WAAW,SAAU,CAChC,MAAMC,EAAQjM,EAAW8E,EAAYS,IAAIxB,EAAM,YAC/CjC,iBAAiB,CAACmK,GACpB,MACEnK,iBAAiB/B,EAAUgC,sBAE9B,EACDmK,UAAAA,CAAYC,GACV,MAAM1F,EAAS,GAiBf,OAhBA0F,EAAMvH,MAAMwC,SAAQ,SAAUrD,GACxB,iBAAkBA,EAAKmF,OACzBnF,EAAKmF,KAAK,gBAAkBnF,EAAKmF,KAAK,gBACnCvD,MAAM,KACNyG,KAAI,SAAUC,GACb,OAAOF,EAAMG,QAAQD,EACvB,IACCE,KAAK,KAIH,MAAMC,KAAKzI,EAAKmF,KAAK,kBACxBzC,EAAOV,KAAKhC,EAAKmF,KAAKrD,IAG5B,IACO,CAAEY,SACV,EACDgG,qBAAAA,CAAuBnE,GACrB,MAAMoE,EAAS1L,SAASwE,eAAe,gBACnC8C,EAAKqE,WAA+B,IAAnBD,EAAOE,SAC1BjO,EAAUkO,cAEZH,EAAOI,SAAWxE,EAAKqE,QACzB,EAEJ,2CC3tBa,CACbnO,KAAM,YACNuO,cAAe,sBACfC,SAAU,CACR,CAAEnH,GAAI,eAAgBgC,MAAO,wBAE/BoF,QAAS,CACP,CACEpF,MAAO,mECRE,CACbrJ,KAAM,aACNuO,cAAe,wBACfC,SAAU,CACR,CAAEnH,GAAI,eAAgBgC,MAAO,0BAE/BoF,QAAS,CACP,CACEpF,MAAO,qECRE,CACbrJ,KAAM,UACNuO,cAAe,qBACfC,SAAU,CACR,CAAEnH,GAAI,eAAgBgC,MAAO,uBAE/BoF,QAAS,CACP,CACEpF,MAAO,kECRE,CACbrJ,KAAM,MACNuO,cAAe,SACfC,SAAU,CACR,CAAEnH,GAAI,eAAgBgC,MAAO,WAE/BoF,QAAS,CACP,CACEpF,MAAO"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file ext-eyedropper.js
3
+ *
4
+ * @license MIT
5
+ *
6
+ * @copyright 2010 Jeff Schiller
7
+ * @copyright 2021 OptimistikSAS
8
+ *
9
+ */
10
+ const e="eyedropper",loadExtensionTranslation=async function(t){let c;const u=t.configObj.pref("lang");try{c=await function __variableDynamicImportRuntime0__(e){switch(e){case"./locale/en.js":return Promise.resolve().then((function(){return o}));case"./locale/fr.js":return Promise.resolve().then((function(){return n}));case"./locale/pl.js":return Promise.resolve().then((function(){return r}));case"./locale/sv.js":return Promise.resolve().then((function(){return i}));case"./locale/tr.js":return Promise.resolve().then((function(){return s}));case"./locale/uk.js":return Promise.resolve().then((function(){return l}));case"./locale/zh-CN.js":return Promise.resolve().then((function(){return a}));default:return new Promise((function(t,o){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(o.bind(null,new Error("Unknown variable dynamic import: "+e)))}))}}(`./locale/${u}.js`)}catch(t){console.warn(`Missing translation (${u}) for ${e} - using 'en'`),c=await Promise.resolve().then((function(){return o}))}t.i18next.addResourceBundle(u,e,c.default)};var t={name:e,async init(){const t=this,{svgCanvas:o}=t;await loadExtensionTranslation(t);const{ChangeElementCommand:n}=o.history,r={},{$id:i,$click:s}=o,l=document.createElement("div");l.style.width="14px",l.style.height="14px",l.style.position="absolute",t.workarea.appendChild(l);const styleHelper=()=>{if(o.getMode()===e){l.style.display="block";const e=Number(r.strokeWidth),t="none"!==r.strokeDashArray&&r.strokeDashArray?"dotted":"solid";l.style.background=r.fillPaint??"transparent",l.style.opacity=r.opacity??1,l.style.border=e>0&&r.strokePaint?`2px ${t} ${r.strokePaint}`:"none"}},resetCurrentStyle=()=>{Object.keys(r).forEach((e=>delete r[e]))},getStyle=e=>{let t=null;e.multiselected||!e.elems[0]||["svg","g","use"].includes(e.elems[0].nodeName)||(t=e.elems[0],r.fillPaint=t.getAttribute("fill")||"black",r.fillOpacity=t.getAttribute("fill-opacity")||1,r.strokePaint=t.getAttribute("stroke"),r.strokeOpacity=t.getAttribute("stroke-opacity")||1,r.strokeWidth=t.getAttribute("stroke-width"),r.strokeDashArray=t.getAttribute("stroke-dasharray"),r.strokeLinecap=t.getAttribute("stroke-linecap"),r.strokeLinejoin=t.getAttribute("stroke-linejoin"),r.opacity=t.getAttribute("opacity")||1)};return{name:t.i18next.t(`${e}:name`),callback(){const n=`\n <se-button id="tool_eyedropper" title="${`${e}:buttons.0.title`}" src="eye_dropper.svg" shortcut=ctrl+I></se-button>\n `;o.insertChildAtIndex(i("tools_left"),n,12),s(i("tool_eyedropper"),(()=>{this.leftPanel.updateLeftPanel("tool_eyedropper")&&o.setMode(e)})),document.addEventListener("modeChange",(t=>{o.getMode()===e?styleHelper():l.style.display="none",0===o.getSelectedElements().length&&resetCurrentStyle()})),t.workarea.addEventListener("mousemove",(t=>{const n=t.clientX,r=t.clientY;o.getMode()===e&&(l.style.top=r+"px",l.style.left=n+12+"px",styleHelper())})),t.workarea.addEventListener("mouseleave",(e=>{l.style.display="none"})),document.addEventListener("keydown",(n=>{"Escape"===n.key&&o.getMode()===e&&(Object.keys(r).length>0?(resetCurrentStyle(),styleHelper()):t.leftPanel.clickSelect())}))},selectedChanged:getStyle,mouseDown(t){if(o.getMode()===e){const e=t.event,{target:s}=e;if(!["svg","g","use"].includes(s.nodeName)){const e={};if(Object.keys(r).length>0){const change=function(t,o,n){e[o]=t.getAttribute(o),t.setAttribute(o,n)};r.fillPaint&&change(s,"fill",r.fillPaint),r.fillOpacity&&change(s,"fill-opacity",r.fillOpacity),r.strokePaint&&change(s,"stroke",r.strokePaint),r.strokeOpacity&&change(s,"stroke-opacity",r.strokeOpacity),r.strokeWidth&&change(s,"stroke-width",r.strokeWidth),r.opacity&&change(s,"opacity",r.opacity),r.strokeLinecap&&change(s,"stroke-linecap",r.strokeLinecap),r.strokeLinejoin&&change(s,"stroke-linejoin",r.strokeLinejoin),r.strokeDashArray?change(s,"stroke-dasharray",r.strokeDashArray):s.removeAttribute("stroke-dasharray"),i=new n(s,e),o.undoMgr.addCommandToHistory(i)}else getStyle({elems:[s]})}}var i}}}},o=Object.freeze({__proto__:null,default:{name:"eyedropper",buttons:[{title:"Eye Dropper Tool",key:"I"}]}}),n=Object.freeze({__proto__:null,default:{name:"pipette",buttons:[{title:"Outil pipette",key:"I"}]}}),r=Object.freeze({__proto__:null,default:{name:"pipeta",buttons:[{title:"Narzędzie pipeta",key:"I"}]}}),i=Object.freeze({__proto__:null,default:{name:"pipett",buttons:[{title:"pipettverktyg",key:"I"}]}}),s=Object.freeze({__proto__:null,default:{name:"renkseçici",buttons:[{title:"Renk Seçim Aracı",key:"I"}]}}),l=Object.freeze({__proto__:null,default:{name:"eyedropper",buttons:[{title:"Піпетка",key:"I"}]}}),a=Object.freeze({__proto__:null,default:{name:"滴管",buttons:[{title:"滴管工具",key:"I"}]}});export{t as default};
11
+ //# sourceMappingURL=ext-eyedropper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ext-eyedropper.js","sources":["../../../../src/editor/extensions/ext-eyedropper/ext-eyedropper.js","../../../../src/editor/extensions/ext-eyedropper/locale/en.js","../../../../src/editor/extensions/ext-eyedropper/locale/fr.js","../../../../src/editor/extensions/ext-eyedropper/locale/pl.js","../../../../src/editor/extensions/ext-eyedropper/locale/sv.js","../../../../src/editor/extensions/ext-eyedropper/locale/tr.js","../../../../src/editor/extensions/ext-eyedropper/locale/uk.js","../../../../src/editor/extensions/ext-eyedropper/locale/zh-CN.js"],"sourcesContent":["/**\n * @file ext-eyedropper.js\n *\n * @license MIT\n *\n * @copyright 2010 Jeff Schiller\n * @copyright 2021 OptimistikSAS\n *\n */\n\nconst name = 'eyedropper'\n\nconst loadExtensionTranslation = async function (svgEditor) {\n let translationModule\n const lang = svgEditor.configObj.pref('lang')\n try {\n translationModule = await import(`./locale/${lang}.js`)\n } catch (_error) {\n console.warn(`Missing translation (${lang}) for ${name} - using 'en'`)\n translationModule = await import('./locale/en.js')\n }\n svgEditor.i18next.addResourceBundle(lang, name, translationModule.default)\n}\n\nexport default {\n name,\n async init () {\n const svgEditor = this\n const { svgCanvas } = svgEditor\n await loadExtensionTranslation(svgEditor)\n const { ChangeElementCommand } = svgCanvas.history\n // svgdoc = S.svgroot.parentNode.ownerDocument,\n const addToHistory = (cmd) => { svgCanvas.undoMgr.addCommandToHistory(cmd) }\n const currentStyle = {}\n const { $id, $click } = svgCanvas\n\n // Helper to show what style is currectly picked\n const helperCursor = document.createElement('div')\n helperCursor.style.width = '14px'\n helperCursor.style.height = '14px'\n helperCursor.style.position = 'absolute'\n svgEditor.workarea.appendChild(helperCursor)\n\n const styleHelper = () => {\n const mode = svgCanvas.getMode()\n\n if (mode === name) {\n helperCursor.style.display = 'block'\n\n const strokeWidthNum = Number(currentStyle.strokeWidth)\n const borderStyle = currentStyle.strokeDashArray === 'none' || !currentStyle.strokeDashArray ? 'solid' : 'dotted'\n\n helperCursor.style.background = currentStyle.fillPaint ?? 'transparent'\n helperCursor.style.opacity = currentStyle.opacity ?? 1\n helperCursor.style.border = (strokeWidthNum > 0 && currentStyle.strokePaint) ? `2px ${borderStyle} ${currentStyle.strokePaint}` : 'none'\n }\n }\n\n const resetCurrentStyle = () => {\n const keys = Object.keys(currentStyle)\n\n keys.forEach(key => delete currentStyle[key])\n }\n\n const cancelHandler = () => {\n if (Object.keys(currentStyle).length > 0) {\n resetCurrentStyle()\n styleHelper()\n } else {\n svgEditor.leftPanel.clickSelect()\n }\n }\n\n /**\n *\n * @param {module:svgcanvas.SvgCanvas#event:ext_selectedChanged|module:svgcanvas.SvgCanvas#event:ext_elementChanged} opts\n * @returns {void}\n */\n const getStyle = (opts) => {\n let elem = null\n if (!opts.multiselected && opts.elems[0] &&\n !['svg', 'g', 'use'].includes(opts.elems[0].nodeName)\n ) {\n elem = opts.elems[0]\n // grab the current style\n currentStyle.fillPaint = elem.getAttribute('fill') || 'black'\n currentStyle.fillOpacity = elem.getAttribute('fill-opacity') || 1.0\n currentStyle.strokePaint = elem.getAttribute('stroke')\n currentStyle.strokeOpacity = elem.getAttribute('stroke-opacity') || 1.0\n currentStyle.strokeWidth = elem.getAttribute('stroke-width')\n currentStyle.strokeDashArray = elem.getAttribute('stroke-dasharray')\n currentStyle.strokeLinecap = elem.getAttribute('stroke-linecap')\n currentStyle.strokeLinejoin = elem.getAttribute('stroke-linejoin')\n currentStyle.opacity = elem.getAttribute('opacity') || 1.0\n }\n }\n\n return {\n name: svgEditor.i18next.t(`${name}:name`),\n callback () {\n // Add the button and its handler(s)\n const title = `${name}:buttons.0.title`\n // const key = `${name}:buttons.0.key`\n const key = 'ctrl+I'\n const buttonTemplate = `\n <se-button id=\"tool_eyedropper\" title=\"${title}\" src=\"eye_dropper.svg\" shortcut=${key}></se-button>\n `\n svgCanvas.insertChildAtIndex($id('tools_left'), buttonTemplate, 12)\n $click($id('tool_eyedropper'), () => {\n if (this.leftPanel.updateLeftPanel('tool_eyedropper')) {\n svgCanvas.setMode(name)\n }\n })\n\n // enables helper, resets currently picked style if no element selected\n document.addEventListener('modeChange', e => {\n if (svgCanvas.getMode() === name) {\n styleHelper()\n } else {\n helperCursor.style.display = 'none'\n }\n if (svgCanvas.getSelectedElements().length === 0) {\n resetCurrentStyle()\n }\n })\n\n // Positions helper\n svgEditor.workarea.addEventListener('mousemove', (e) => {\n const x = e.clientX\n const y = e.clientY\n\n if (svgCanvas.getMode() === name) {\n helperCursor.style.top = y + 'px'\n helperCursor.style.left = x + 12 + 'px'\n styleHelper()\n }\n })\n\n svgEditor.workarea.addEventListener('mouseleave', e => {\n helperCursor.style.display = 'none'\n })\n\n // Listens to Esc to reset currently picked style / set Select mode\n document.addEventListener('keydown', e => {\n if (e.key === 'Escape' && svgCanvas.getMode() === name) {\n cancelHandler()\n }\n })\n },\n // if we have selected an element, grab its paint and enable the eye dropper button\n selectedChanged: getStyle,\n mouseDown (opts) {\n const mode = svgCanvas.getMode()\n if (mode === name) {\n const e = opts.event\n const { target } = e\n if (!['svg', 'g', 'use'].includes(target.nodeName)) {\n const changes = {}\n\n // If some style is picked - applies it to the target, if no style - picks it from the target\n if (Object.keys(currentStyle).length > 0) {\n const change = function (elem, attrname, newvalue) {\n changes[attrname] = elem.getAttribute(attrname)\n elem.setAttribute(attrname, newvalue)\n }\n\n if (currentStyle.fillPaint) { change(target, 'fill', currentStyle.fillPaint) }\n if (currentStyle.fillOpacity) { change(target, 'fill-opacity', currentStyle.fillOpacity) }\n if (currentStyle.strokePaint) { change(target, 'stroke', currentStyle.strokePaint) }\n if (currentStyle.strokeOpacity) { change(target, 'stroke-opacity', currentStyle.strokeOpacity) }\n if (currentStyle.strokeWidth) { change(target, 'stroke-width', currentStyle.strokeWidth) }\n if (currentStyle.opacity) { change(target, 'opacity', currentStyle.opacity) }\n if (currentStyle.strokeLinecap) { change(target, 'stroke-linecap', currentStyle.strokeLinecap) }\n if (currentStyle.strokeLinejoin) { change(target, 'stroke-linejoin', currentStyle.strokeLinejoin) }\n\n if (currentStyle.strokeDashArray) {\n change(target, 'stroke-dasharray', currentStyle.strokeDashArray)\n } else {\n target.removeAttribute('stroke-dasharray')\n }\n\n addToHistory(new ChangeElementCommand(target, changes))\n } else {\n getStyle({ elems: [target] })\n }\n }\n }\n }\n }\n }\n}\n","export default {\n name: 'eyedropper',\n buttons: [\n {\n title: 'Eye Dropper Tool',\n key: 'I'\n }\n ]\n}\n","export default {\n name: 'pipette',\n buttons: [\n {\n title: 'Outil pipette',\n key: 'I'\n }\n ]\n}\n","export default {\n name: 'pipeta',\n buttons: [\n {\n title: 'Narzędzie pipeta',\n key: 'I'\n }\n ]\n}","export default {\n name: 'pipett',\n buttons: [\n {\n title: 'pipettverktyg',\n key: 'I'\n }\n ]\n}\n","export default {\n name: 'renkseçici',\n buttons: [\n {\n title: 'Renk Seçim Aracı',\n key: 'I'\n }\n ]\n}\n","export default {\n name: 'eyedropper',\n buttons: [\n {\n title: 'Піпетка',\n key: 'I'\n }\n ]\n}\n","export default {\n name: '滴管',\n buttons: [\n {\n title: '滴管工具',\n key: 'I'\n }\n ]\n}\n"],"names":["name","loadExtensionTranslation","async","svgEditor","translationModule","lang","configObj","pref","__variableDynamicImportRuntime0__","_error","console","warn","Promise","resolve","then","en$1","i18next","addResourceBundle","default","extEyedropper","init","this","svgCanvas","ChangeElementCommand","history","currentStyle","$id","$click","helperCursor","document","createElement","style","width","height","position","workarea","appendChild","styleHelper","getMode","display","strokeWidthNum","Number","strokeWidth","borderStyle","strokeDashArray","background","fillPaint","opacity","border","strokePaint","resetCurrentStyle","Object","keys","forEach","key","getStyle","opts","elem","multiselected","elems","includes","nodeName","getAttribute","fillOpacity","strokeOpacity","strokeLinecap","strokeLinejoin","t","callback","buttonTemplate","insertChildAtIndex","leftPanel","updateLeftPanel","setMode","addEventListener","e","getSelectedElements","length","x","clientX","y","clientY","top","left","clickSelect","selectedChanged","mouseDown","event","target","changes","change","attrname","newvalue","setAttribute","removeAttribute","cmd","undoMgr","addCommandToHistory","buttons","title"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @file ext-grid.js
3
+ *
4
+ * @license Apache-2.0
5
+ *
6
+ * @copyright 2010 Redou Mine, 2010 Alexis Deveria
7
+ *
8
+ */
9
+ const e="grid",loadExtensionTranslation=async function(t){let c;const u=t.configObj.pref("lang");try{c=await function __variableDynamicImportRuntime0__(e){switch(e){case"./locale/en.js":return Promise.resolve().then((function(){return n}));case"./locale/fr.js":return Promise.resolve().then((function(){return o}));case"./locale/pl.js":return Promise.resolve().then((function(){return r}));case"./locale/sv.js":return Promise.resolve().then((function(){return i}));case"./locale/tr.js":return Promise.resolve().then((function(){return a}));case"./locale/uk.js":return Promise.resolve().then((function(){return s}));case"./locale/zh-CN.js":return Promise.resolve().then((function(){return l}));default:return new Promise((function(t,n){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(n.bind(null,new Error("Unknown variable dynamic import: "+e)))}))}}(`./locale/${u}.js`)}catch(t){console.warn(`Missing translation (${u}) for ${e} - using 'en'`),c=await Promise.resolve().then((function(){return n}))}t.i18next.addResourceBundle(u,e,c.default)};var t={name:e,async init(){const t=this;await loadExtensionTranslation(t);const{svgCanvas:n}=t,{$id:o,$click:r,NS:i}=n,a=o("svgcanvas").ownerDocument,{assignAttributes:s}=n,l=document.createElement("canvas"),c=o("canvasBackground"),u=n.getTypeMap(),d=[.01,.1,1,10,100,1e3];let f=t.configObj.curConfig.showGrid||!1;l.style.display="none",t.$svgEditor.appendChild(l);const h=a.createElementNS(i.SVG,"svg");s(h,{id:"canvasGrid",width:"100%",height:"100%",x:0,y:0,overflow:"visible",display:"none"}),c.appendChild(h);const p=a.createElementNS(i.SVG,"defs"),g=a.createElementNS(i.SVG,"pattern");s(g,{id:"gridpattern",patternUnits:"userSpaceOnUse",x:0,y:0,width:100,height:100});const m=a.createElementNS(i.SVG,"image");s(m,{x:0,y:0,width:100,height:100}),g.append(m),p.append(g),o("canvasGrid").appendChild(p);const b=a.createElementNS(i.SVG,"rect");s(b,{width:"100%",height:"100%",x:0,y:0,"stroke-width":0,stroke:"none",fill:"url(#gridpattern)",style:"pointer-events: none; display:visible;"}),o("canvasGrid").appendChild(b);const updateGrid=e=>{const o=u[t.configObj.curConfig.baseUnit]*e,r=100/o;let i=1;d.some((e=>(i=e,r<=e)));const a=i*o;l.width=a,l.height=a;const s=l.getContext("2d"),c=.5,f=a/10;s.globalAlpha=.2,s.strokeStyle=t.configObj.curConfig.gridColor;for(let e=1;e<10;e++){const t=Math.round(f*e)+.5,n=0;s.moveTo(t,a),s.lineTo(t,n),s.moveTo(a,t),s.lineTo(n,t)}s.stroke(),s.beginPath(),s.globalAlpha=.5,s.moveTo(c,a),s.lineTo(c,0),s.moveTo(a,c),s.lineTo(0,c),s.stroke();const h=l.toDataURL("image/png");m.setAttribute("width",a),m.setAttribute("height",a),m.parentNode.setAttribute("width",a),m.parentNode.setAttribute("height",a),n.setHref(m,h)},gridUpdate=()=>{f&&updateGrid(n.getZoom()),o("canvasGrid").style.display=f?"block":"none",o("view_grid").pressed=f};return{name:t.i18next.t(`${e}:name`),zoomChanged(e){f&&updateGrid(e)},callback(){const n=document.createElement("template"),i=`${e}:buttons.0.title`;n.innerHTML=`\n <se-button id="view_grid" title="${i}" src="grid.svg"></se-button>\n `,o("editor_panel").append(n.content.cloneNode(!0)),r(o("view_grid"),(()=>{t.configObj.curConfig.showGrid=f=!f,gridUpdate()})),f&&gridUpdate()}}}},n=Object.freeze({__proto__:null,default:{name:"View Grid",buttons:[{title:"Show/Hide Grid"}]}}),o=Object.freeze({__proto__:null,default:{name:"Grille",buttons:[{title:"Afficher/Cacher Grille"}]}}),r=Object.freeze({__proto__:null,default:{name:"Widok siatki",buttons:[{title:"Pokaż/Ukryj siatkę"}]}}),i=Object.freeze({__proto__:null,default:{name:"Visa rutnät",buttons:[{title:"Visa/dölj rutnät"}]}}),a=Object.freeze({__proto__:null,default:{name:"Izgarayı Görüntüle",buttons:[{title:"Izgara Göster/Gizle"}]}}),s=Object.freeze({__proto__:null,default:{name:"Сітка",buttons:[{title:"Показати/Заковати Сітку"}]}}),l=Object.freeze({__proto__:null,default:{name:"网格视图",buttons:[{title:"显示/隐藏网格"}]}});export{t as default};
10
+ //# sourceMappingURL=ext-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ext-grid.js","sources":["../../../../src/editor/extensions/ext-grid/ext-grid.js","../../../../src/editor/extensions/ext-grid/locale/en.js","../../../../src/editor/extensions/ext-grid/locale/fr.js","../../../../src/editor/extensions/ext-grid/locale/pl.js","../../../../src/editor/extensions/ext-grid/locale/sv.js","../../../../src/editor/extensions/ext-grid/locale/tr.js","../../../../src/editor/extensions/ext-grid/locale/uk.js","../../../../src/editor/extensions/ext-grid/locale/zh-CN.js"],"sourcesContent":["/**\n * @file ext-grid.js\n *\n * @license Apache-2.0\n *\n * @copyright 2010 Redou Mine, 2010 Alexis Deveria\n *\n */\n\nconst name = 'grid'\n\nconst loadExtensionTranslation = async function (svgEditor) {\n let translationModule\n const lang = svgEditor.configObj.pref('lang')\n try {\n translationModule = await import(`./locale/${lang}.js`)\n } catch (_error) {\n console.warn(`Missing translation (${lang}) for ${name} - using 'en'`)\n translationModule = await import('./locale/en.js')\n }\n svgEditor.i18next.addResourceBundle(lang, name, translationModule.default)\n}\n\nexport default {\n name,\n async init () {\n const svgEditor = this\n await loadExtensionTranslation(svgEditor)\n const { svgCanvas } = svgEditor\n const { $id, $click, NS } = svgCanvas\n const svgdoc = $id('svgcanvas').ownerDocument\n const { assignAttributes } = svgCanvas\n const hcanvas = document.createElement('canvas')\n const canvBG = $id('canvasBackground')\n const units = svgCanvas.getTypeMap() // Assumes prior `init()` call on `units.js` module\n const intervals = [0.01, 0.1, 1, 10, 100, 1000]\n let showGrid = svgEditor.configObj.curConfig.showGrid || false\n\n hcanvas.style.display = 'none'\n svgEditor.$svgEditor.appendChild(hcanvas)\n\n const canvasGrid = svgdoc.createElementNS(NS.SVG, 'svg')\n assignAttributes(canvasGrid, {\n id: 'canvasGrid',\n width: '100%',\n height: '100%',\n x: 0,\n y: 0,\n overflow: 'visible',\n display: 'none'\n })\n canvBG.appendChild(canvasGrid)\n const gridDefs = svgdoc.createElementNS(NS.SVG, 'defs')\n // grid-pattern\n const gridPattern = svgdoc.createElementNS(NS.SVG, 'pattern')\n assignAttributes(gridPattern, {\n id: 'gridpattern',\n patternUnits: 'userSpaceOnUse',\n x: 0, // -(value.strokeWidth / 2), // position for strokewidth\n y: 0, // -(value.strokeWidth / 2), // position for strokewidth\n width: 100,\n height: 100\n })\n\n const gridimg = svgdoc.createElementNS(NS.SVG, 'image')\n assignAttributes(gridimg, {\n x: 0,\n y: 0,\n width: 100,\n height: 100\n })\n gridPattern.append(gridimg)\n gridDefs.append(gridPattern)\n $id('canvasGrid').appendChild(gridDefs)\n\n // grid-box\n const gridBox = svgdoc.createElementNS(NS.SVG, 'rect')\n assignAttributes(gridBox, {\n width: '100%',\n height: '100%',\n x: 0,\n y: 0,\n 'stroke-width': 0,\n stroke: 'none',\n fill: 'url(#gridpattern)',\n style: 'pointer-events: none; display:visible;'\n })\n $id('canvasGrid').appendChild(gridBox)\n\n /**\n *\n * @param {Float} zoom\n * @returns {void}\n */\n const updateGrid = (zoom) => {\n // TODO: Try this with <line> elements, then compare performance difference\n const unit = units[svgEditor.configObj.curConfig.baseUnit] // 1 = 1px\n const uMulti = unit * zoom\n // Calculate the main number interval\n const rawM = 100 / uMulti\n let multi = 1\n intervals.some((num) => {\n multi = num\n return rawM <= num\n })\n const bigInt = multi * uMulti\n\n // Set the canvas size to the width of the container\n hcanvas.width = bigInt\n hcanvas.height = bigInt\n const ctx = hcanvas.getContext('2d')\n const curD = 0.5\n const part = bigInt / 10\n\n ctx.globalAlpha = 0.2\n ctx.strokeStyle = svgEditor.configObj.curConfig.gridColor\n for (let i = 1; i < 10; i++) {\n const subD = Math.round(part * i) + 0.5\n // const lineNum = (i % 2)?12:10;\n const lineNum = 0\n ctx.moveTo(subD, bigInt)\n ctx.lineTo(subD, lineNum)\n ctx.moveTo(bigInt, subD)\n ctx.lineTo(lineNum, subD)\n }\n ctx.stroke()\n ctx.beginPath()\n ctx.globalAlpha = 0.5\n ctx.moveTo(curD, bigInt)\n ctx.lineTo(curD, 0)\n\n ctx.moveTo(bigInt, curD)\n ctx.lineTo(0, curD)\n ctx.stroke()\n\n const datauri = hcanvas.toDataURL('image/png')\n gridimg.setAttribute('width', bigInt)\n gridimg.setAttribute('height', bigInt)\n gridimg.parentNode.setAttribute('width', bigInt)\n gridimg.parentNode.setAttribute('height', bigInt)\n svgCanvas.setHref(gridimg, datauri)\n }\n\n /**\n *\n * @returns {void}\n */\n const gridUpdate = () => {\n if (showGrid) {\n updateGrid(svgCanvas.getZoom())\n }\n $id('canvasGrid').style.display = (showGrid) ? 'block' : 'none'\n $id('view_grid').pressed = showGrid\n }\n return {\n name: svgEditor.i18next.t(`${name}:name`),\n zoomChanged (zoom) {\n if (showGrid) { updateGrid(zoom) }\n },\n callback () {\n // Add the button and its handler(s)\n const buttonTemplate = document.createElement('template')\n const title = `${name}:buttons.0.title`\n buttonTemplate.innerHTML = `\n <se-button id=\"view_grid\" title=\"${title}\" src=\"grid.svg\"></se-button>\n `\n $id('editor_panel').append(buttonTemplate.content.cloneNode(true))\n $click($id('view_grid'), () => {\n svgEditor.configObj.curConfig.showGrid = showGrid = !showGrid\n gridUpdate()\n })\n if (showGrid) {\n gridUpdate()\n }\n }\n }\n }\n}\n","export default {\n name: 'View Grid',\n buttons: [\n {\n title: 'Show/Hide Grid'\n }\n ]\n}\n","export default {\n name: 'Grille',\n buttons: [\n {\n title: 'Afficher/Cacher Grille'\n }\n ]\n}\n","export default {\n name: 'Widok siatki',\n buttons: [\n {\n title: 'Pokaż/Ukryj siatkę'\n }\n ]\n}","export default {\n name: 'Visa rutnät',\n buttons: [\n {\n title: 'Visa/dölj rutnät'\n }\n ]\n}\n","export default {\n name: 'Izgarayı Görüntüle',\n buttons: [\n {\n title: 'Izgara Göster/Gizle'\n }\n ]\n}\n","export default {\n name: 'Сітка',\n buttons: [\n {\n title: 'Показати/Заковати Сітку'\n }\n ]\n}\n","export default {\n name: '网格视图',\n buttons: [\n {\n title: '显示/隐藏网格'\n }\n ]\n}\n"],"names":["name","loadExtensionTranslation","async","svgEditor","translationModule","lang","configObj","pref","__variableDynamicImportRuntime0__","_error","console","warn","Promise","resolve","then","en$1","i18next","addResourceBundle","default","extGrid","init","this","svgCanvas","$id","$click","NS","svgdoc","ownerDocument","assignAttributes","hcanvas","document","createElement","canvBG","units","getTypeMap","intervals","showGrid","curConfig","style","display","$svgEditor","appendChild","canvasGrid","createElementNS","SVG","id","width","height","x","y","overflow","gridDefs","gridPattern","patternUnits","gridimg","append","gridBox","stroke","fill","updateGrid","zoom","uMulti","baseUnit","rawM","multi","some","num","bigInt","ctx","getContext","curD","part","globalAlpha","strokeStyle","gridColor","i","subD","Math","round","lineNum","moveTo","lineTo","beginPath","datauri","toDataURL","setAttribute","parentNode","setHref","gridUpdate","getZoom","pressed","t","zoomChanged","callback","buttonTemplate","title","innerHTML","content","cloneNode","buttons"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @file ext-helloworld.js
3
+ *
4
+ * @license MIT
5
+ *
6
+ * @copyright 2010 Alexis Deveria
7
+ *
8
+ */
9
+ const e="helloworld",loadExtensionTranslation=async function(t){let i;const s=t.configObj.pref("lang");try{i=await function __variableDynamicImportRuntime0__(e){switch(e){case"./locale/en.js":return Promise.resolve().then((function(){return n}));case"./locale/fr.js":return Promise.resolve().then((function(){return o}));case"./locale/pl.js":return Promise.resolve().then((function(){return l}));case"./locale/tr.js":return Promise.resolve().then((function(){return r}));case"./locale/uk.js":return Promise.resolve().then((function(){return a}));case"./locale/zh-CN.js":return Promise.resolve().then((function(){return u}));default:return new Promise((function(t,n){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(n.bind(null,new Error("Unknown variable dynamic import: "+e)))}))}}(`./locale/${s}.js`)}catch(t){console.warn(`Missing translation (${s}) for ${e} - using 'en'`),i=await Promise.resolve().then((function(){return n}))}t.i18next.addResourceBundle(s,e,i.default)};var t={name:e,async init(t){const n=this;await loadExtensionTranslation(n);const{svgCanvas:o}=n,{$id:l,$click:r}=o;return{name:n.i18next.t(`${e}:name`),callback(){const t=document.createElement("template"),n=`${e}:buttons.0.title`;t.innerHTML=`\n <se-button id="hello_world" title="${n}" src="hello_world.svg"></se-button>\n `,l("tools_left").append(t.content.cloneNode(!0)),r(l("hello_world"),(()=>{o.setMode("hello_world")}))},mouseDown(){if("hello_world"===o.getMode())return{started:!0}},mouseUp(t){if("hello_world"===o.getMode()){const l=o.getZoom(),r=t.mouse_x/l,a=t.mouse_y/l,u=n.i18next.t(`${e}:text`,{x:r,y:a});alert(u)}}}}},n=Object.freeze({__proto__:null,default:{name:"Hello World",text:"Hello World!\n\nYou clicked here: {{x}}, {{y}}",buttons:[{title:"Say 'Hello World'"}]}}),o=Object.freeze({__proto__:null,default:{name:"Bonjour le Monde",text:"Bonjour le Monde!\n\nVous avez cliqué ici: {{x}}, {{y}}",buttons:[{title:"Dire 'Bonjour le Monde'"}]}}),l=Object.freeze({__proto__:null,default:{name:"Witaj Świecie",text:"Witaj Świecie!\n\nKliknąłeś tutaj: {{x}}, {{y}}",buttons:[{title:"Powiedz 'Witaj Świecie'"}]}}),r=Object.freeze({__proto__:null,default:{name:"Merhaba Dünya",text:"Merhaba Dünya!\n\nBuraya Tıkladınız: {{x}}, {{y}}",buttons:[{title:"'Merhaba Dünya' De"}]}}),a=Object.freeze({__proto__:null,default:{name:"Привіт Світ",text:"Привіт Світ!\n\nВи клацнули тут: {{x}}, {{y}}",buttons:[{title:"Сказати 'Привіт Світ'"}]}}),u=Object.freeze({__proto__:null,default:{name:"Hello World",text:"Hello World!\n\n 请点击: {{x}}, {{y}}",buttons:[{title:"输出 'Hello World'"}]}});export{t as default};
10
+ //# sourceMappingURL=ext-helloworld.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ext-helloworld.js","sources":["../../../../src/editor/extensions/ext-helloworld/ext-helloworld.js","../../../../src/editor/extensions/ext-helloworld/locale/en.js","../../../../src/editor/extensions/ext-helloworld/locale/fr.js","../../../../src/editor/extensions/ext-helloworld/locale/pl.js","../../../../src/editor/extensions/ext-helloworld/locale/tr.js","../../../../src/editor/extensions/ext-helloworld/locale/uk.js","../../../../src/editor/extensions/ext-helloworld/locale/zh-CN.js"],"sourcesContent":["/**\n * @file ext-helloworld.js\n *\n * @license MIT\n *\n * @copyright 2010 Alexis Deveria\n *\n */\n\n/**\n* This is a very basic SVG-Edit extension. It adds a \"Hello World\" button in\n* the left (\"mode\") panel. Clicking on the button, and then the canvas\n* will show the user the point on the canvas that was clicked on.\n*/\n\nconst name = 'helloworld'\n\nconst loadExtensionTranslation = async function (svgEditor) {\n let translationModule\n const lang = svgEditor.configObj.pref('lang')\n try {\n translationModule = await import(`./locale/${lang}.js`)\n } catch (_error) {\n console.warn(`Missing translation (${lang}) for ${name} - using 'en'`)\n translationModule = await import('./locale/en.js')\n }\n svgEditor.i18next.addResourceBundle(lang, name, translationModule.default)\n}\n\nexport default {\n name,\n async init ({ _importLocale }) {\n const svgEditor = this\n await loadExtensionTranslation(svgEditor)\n const { svgCanvas } = svgEditor\n const { $id, $click } = svgCanvas\n return {\n name: svgEditor.i18next.t(`${name}:name`),\n callback () {\n // Add the button and its handler(s)\n const buttonTemplate = document.createElement('template')\n const title = `${name}:buttons.0.title`\n buttonTemplate.innerHTML = `\n <se-button id=\"hello_world\" title=\"${title}\" src=\"hello_world.svg\"></se-button>\n `\n $id('tools_left').append(buttonTemplate.content.cloneNode(true))\n $click($id('hello_world'), () => {\n svgCanvas.setMode('hello_world')\n })\n },\n // This is triggered when the main mouse button is pressed down\n // on the editor canvas (not the tool panels)\n mouseDown () {\n // Check the mode on mousedown\n if (svgCanvas.getMode() === 'hello_world') {\n // The returned object must include \"started\" with\n // a value of true in order for mouseUp to be triggered\n return { started: true }\n }\n return undefined\n },\n\n // This is triggered from anywhere, but \"started\" must have been set\n // to true (see above). Note that \"opts\" is an object with event info\n mouseUp (opts) {\n // Check the mode on mouseup\n if (svgCanvas.getMode() === 'hello_world') {\n const zoom = svgCanvas.getZoom()\n\n // Get the actual coordinate by dividing by the zoom value\n const x = opts.mouse_x / zoom\n const y = opts.mouse_y / zoom\n\n // We do our own formatting\n const text = svgEditor.i18next.t(`${name}:text`, { x, y })\n // Show the text using the custom alert function\n alert(text)\n }\n }\n }\n }\n}\n","export default {\n name: 'Hello World',\n text: 'Hello World!\\n\\nYou clicked here: {{x}}, {{y}}',\n buttons: [\n {\n title: \"Say 'Hello World'\"\n }\n ]\n}\n","export default {\n name: 'Bonjour le Monde',\n text: 'Bonjour le Monde!\\n\\nVous avez cliqué ici: {{x}}, {{y}}',\n buttons: [\n {\n title: \"Dire 'Bonjour le Monde'\"\n }\n ]\n}\n","export default {\n name: 'Witaj Świecie',\n text: 'Witaj Świecie!\\n\\nKliknąłeś tutaj: {{x}}, {{y}}',\n buttons: [\n {\n title: \"Powiedz 'Witaj Świecie'\"\n }\n ]\n}","export default {\n name: 'Merhaba Dünya',\n text: 'Merhaba Dünya!\\n\\nBuraya Tıkladınız: {{x}}, {{y}}',\n buttons: [\n {\n title: \"'Merhaba Dünya' De\"\n }\n ]\n}\n","export default {\n name: 'Привіт Світ',\n text: 'Привіт Світ!\\n\\nВи клацнули тут: {{x}}, {{y}}',\n buttons: [\n {\n title: \"Сказати 'Привіт Світ'\"\n }\n ]\n}\n","export default {\n name: 'Hello World',\n text: 'Hello World!\\n\\n 请点击: {{x}}, {{y}}',\n buttons: [\n {\n title: \"输出 'Hello World'\"\n }\n ]\n}\n"],"names":["name","loadExtensionTranslation","async","svgEditor","translationModule","lang","configObj","pref","__variableDynamicImportRuntime0__","_error","console","warn","Promise","resolve","then","en$1","i18next","addResourceBundle","default","extHelloworld","init","_ref","this","svgCanvas","$id","$click","t","callback","buttonTemplate","document","createElement","title","innerHTML","append","content","cloneNode","setMode","mouseDown","getMode","started","mouseUp","opts","zoom","getZoom","x","mouse_x","y","mouse_y","text","alert","buttons"],"mappings":";;;;;;;;AAeA,MAAMA,EAAO,aAEPC,yBAA2BC,eAAgBC,GAC/C,IAAIC,EACJ,MAAMC,EAAOF,EAAUG,UAAUC,KAAK,QACtC,IACEH,grBAA0BI,CAAO,YAAYH,OAC9C,CAAC,MAAOI,GACPC,QAAQC,KAAK,wBAAwBN,UAAaL,kBAClDI,QAA0BQ,QAAwBC,UAAAC,MAAA,WAAA,OAAAC,CAAA,GACpD,CACAZ,EAAUa,QAAQC,kBAAkBZ,EAAML,EAAMI,EAAkBc,QACpE,EAEA,IAAeC,EAAA,CACbnB,OACA,UAAMoB,CAAIC,GACR,MAAMlB,EAAYmB,WACZrB,yBAAyBE,GAC/B,MAAMoB,UAAEA,GAAcpB,GAChBqB,IAAEA,EAAGC,OAAEA,GAAWF,EACxB,MAAO,CACLvB,KAAMG,EAAUa,QAAQU,EAAE,GAAG1B,UAC7B2B,QAAAA,GAEE,MAAMC,EAAiBC,SAASC,cAAc,YACxCC,EAAQ,GAAG/B,oBACjB4B,EAAeI,UAAY,gDACUD,kDAErCP,EAAI,cAAcS,OAAOL,EAAeM,QAAQC,WAAU,IAC1DV,EAAOD,EAAI,gBAAgB,KACzBD,EAAUa,QAAQ,cAAc,GAEnC,EAGDC,SAAAA,GAEE,GAA4B,gBAAxBd,EAAUe,UAGZ,MAAO,CAAEC,SAAS,EAGrB,EAIDC,OAAAA,CAASC,GAEP,GAA4B,gBAAxBlB,EAAUe,UAA6B,CACzC,MAAMI,EAAOnB,EAAUoB,UAGjBC,EAAIH,EAAKI,QAAUH,EACnBI,EAAIL,EAAKM,QAAUL,EAGnBM,EAAO7C,EAAUa,QAAQU,EAAE,GAAG1B,SAAa,CAAE4C,IAAGE,MAEtDG,MAAMD,EACR,CACF,EAEJ,2CChFa,CACbhD,KAAM,cACNgD,KAAM,iDACNE,QAAS,CACP,CACEnB,MAAO,iECLE,CACb/B,KAAM,mBACNgD,KAAM,0DACNE,QAAS,CACP,CACEnB,MAAO,uECLE,CACb/B,KAAM,gBACNgD,KAAM,kDACNE,QAAS,CACP,CACEnB,MAAO,uECLE,CACb/B,KAAM,gBACNgD,KAAM,oDACNE,QAAS,CACP,CACEnB,MAAO,kECLE,CACb/B,KAAM,cACNgD,KAAM,gDACNE,QAAS,CACP,CACEnB,MAAO,qECLE,CACb/B,KAAM,cACNgD,KAAM,qCACNE,QAAS,CACP,CACEnB,MAAO"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @file ext-layer_view.js
3
+ *
4
+ * @license MIT
5
+ *
6
+ *
7
+ */
8
+ const e="layer_view",loadExtensionTranslation=async function(t){let i;const a=t.configObj.pref("lang");try{i=await function __variableDynamicImportRuntime0__(e){switch(e){case"./locale/en.js":return Promise.resolve().then((function(){return r}));case"./locale/pl.js":return Promise.resolve().then((function(){return n}));default:return new Promise((function(t,r){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(r.bind(null,new Error("Unknown variable dynamic import: "+e)))}))}}(`./locale/${a}.js`)}catch(t){console.warn(`Missing translation (${a}) for ${e} - using 'en'`),i=await Promise.resolve().then((function(){return r}))}t.i18next.addResourceBundle(a,e,i.default)};var t={name:e,async init(t){const r=this,{svgCanvas:n}=r,{$id:i,$click:a}=n;await loadExtensionTranslation(r);const clickLayerView=e=>{i("tool_layerView").pressed=!i("tool_layerView").pressed,updateLayerView()},updateLayerView=e=>{const t=n.getCurrentDrawing(),r=t.getCurrentLayerName();let a=t.getNumLayers();for(;a--;){const e=t.getLayerName(a);e!==r&&i("tool_layerView").pressed?t.setLayerVisibility(e,!1):t.setLayerVisibility(e,!0)}i("layerlist").querySelectorAll("tr.layer").forEach((function(e){const t=e.querySelector("td.layervis"),r=e.classList.contains("layersel")||!i("tool_layerView").pressed?"layervis":"layerinvis layervis";t.setAttribute("class",r)}))};return{name:r.i18next.t(`${e}:name`),layersChanged(){i("tool_layerView").pressed&&updateLayerView(),r.configObj.curConfig.layerView&&(r.configObj.curConfig.layerView=!1,i("tool_layerView").pressed=!0,updateLayerView())},layerVisChanged(){i("tool_layerView").pressed&&(i("tool_layerView").pressed=!i("tool_layerView").pressed)},callback(){const t=document.createElement("template"),r=`${e}:buttons.0.title`,n=`${e}:buttons.0.key`;t.innerHTML=`\n <se-button id="tool_layerView" title="${r}" shortcut="${n}" src="layer_view.svg"></se-button>`,i("editor_panel").append(t.content.cloneNode(!0)),a(i("tool_layerView"),clickLayerView.bind(this))}}}},r=Object.freeze({__proto__:null,default:{name:"layerview",buttons:[{title:"Enable/Disable Layer View",key:"Ctrl+Shift+L"}]}}),n=Object.freeze({__proto__:null,default:{name:"widok warstw",buttons:[{title:"Włącz/Wyłącz widok warstw",key:"Ctrl+Shift+L"}]}});export{t as default};
9
+ //# sourceMappingURL=ext-layer_view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ext-layer_view.js","sources":["../../../../src/editor/extensions/ext-layer_view/ext-layer_view.js","../../../../src/editor/extensions/ext-layer_view/locale/en.js","../../../../src/editor/extensions/ext-layer_view/locale/pl.js"],"sourcesContent":["/**\n * @file ext-layer_view.js\n *\n * @license MIT\n *\n *\n */\n\nconst name = 'layer_view'\n\nconst loadExtensionTranslation = async function (svgEditor) {\n let translationModule\n const lang = svgEditor.configObj.pref('lang')\n try {\n translationModule = await import(`./locale/${lang}.js`)\n } catch (_error) {\n console.warn(`Missing translation (${lang}) for ${name} - using 'en'`)\n translationModule = await import('./locale/en.js')\n }\n svgEditor.i18next.addResourceBundle(lang, name, translationModule.default)\n}\n\nexport default {\n name,\n async init (_S) {\n const svgEditor = this\n const { svgCanvas } = svgEditor\n const { $id, $click } = svgCanvas\n await loadExtensionTranslation(svgEditor)\n\n const clickLayerView = (e) => {\n $id('tool_layerView').pressed = !$id('tool_layerView').pressed\n updateLayerView(e)\n }\n\n const updateLayerView = (e) => {\n const drawing = svgCanvas.getCurrentDrawing()\n const curLayer = drawing.getCurrentLayerName()\n let layer = drawing.getNumLayers()\n while (layer--) {\n const name = drawing.getLayerName(layer)\n if (name !== curLayer && $id('tool_layerView').pressed) {\n drawing.setLayerVisibility(name, false)\n } else {\n drawing.setLayerVisibility(name, true)\n }\n }\n $id('layerlist').querySelectorAll('tr.layer').forEach(\n function (el) {\n const layervis = el.querySelector('td.layervis')\n const vis = el.classList.contains('layersel') || !$id('tool_layerView').pressed ? 'layervis' : 'layerinvis layervis'\n layervis.setAttribute('class', vis)\n }\n )\n }\n\n return {\n name: svgEditor.i18next.t(`${name}:name`),\n // The callback should be used to load the DOM with the appropriate UI items\n layersChanged () {\n if ($id('tool_layerView').pressed) {\n updateLayerView()\n } if (svgEditor.configObj.curConfig.layerView) {\n svgEditor.configObj.curConfig.layerView = false\n $id('tool_layerView').pressed = true\n updateLayerView()\n }\n },\n layerVisChanged () {\n if ($id('tool_layerView').pressed) {\n $id('tool_layerView').pressed = !$id('tool_layerView').pressed\n }\n },\n callback () {\n const buttonTemplate = document.createElement('template')\n const title = `${name}:buttons.0.title`\n const key = `${name}:buttons.0.key`\n buttonTemplate.innerHTML = `\n <se-button id=\"tool_layerView\" title=\"${title}\" shortcut=\"${key}\" src=\"layer_view.svg\"></se-button>`\n $id('editor_panel').append(buttonTemplate.content.cloneNode(true))\n $click($id('tool_layerView'), clickLayerView.bind(this))\n }\n }\n }\n}\n","export default {\n name: 'layerview',\n buttons: [\n {\n title: 'Enable/Disable Layer View',\n key: 'Ctrl+Shift+L'\n }\n ]\n}\n","export default {\n name: 'widok warstw',\n buttons: [\n {\n title: 'Włącz/Wyłącz widok warstw',\n key: 'Ctrl+Shift+L'\n }\n ]\n}"],"names":["name","loadExtensionTranslation","async","svgEditor","translationModule","lang","configObj","pref","__variableDynamicImportRuntime0__","_error","console","warn","Promise","resolve","then","en$1","i18next","addResourceBundle","default","extLayer_view","init","_S","this","svgCanvas","$id","$click","clickLayerView","e","pressed","updateLayerView","drawing","getCurrentDrawing","curLayer","getCurrentLayerName","layer","getNumLayers","getLayerName","setLayerVisibility","querySelectorAll","forEach","el","layervis","querySelector","vis","classList","contains","setAttribute","t","layersChanged","curConfig","layerView","layerVisChanged","callback","buttonTemplate","document","createElement","title","key","innerHTML","append","content","cloneNode","bind","buttons"],"mappings":";;;;;;;AAQA,MAAMA,EAAO,aAEPC,yBAA2BC,eAAgBC,GAC/C,IAAIC,EACJ,MAAMC,EAAOF,EAAUG,UAAUC,KAAK,QACtC,IACEH,iYAA0BI,CAAO,YAAYH,OAC9C,CAAC,MAAOI,GACPC,QAAQC,KAAK,wBAAwBN,UAAaL,kBAClDI,QAA0BQ,QAAwBC,UAAAC,MAAA,WAAA,OAAAC,CAAA,GACpD,CACAZ,EAAUa,QAAQC,kBAAkBZ,EAAML,EAAMI,EAAkBc,QACpE,EAEA,IAAeC,EAAA,CACbnB,OACA,UAAMoB,CAAMC,GACV,MAAMlB,EAAYmB,MACZC,UAAEA,GAAcpB,GAChBqB,IAAEA,EAAGC,OAAEA,GAAWF,QAClBtB,yBAAyBE,GAE/B,MAAMuB,eAAkBC,IACtBH,EAAI,kBAAkBI,SAAWJ,EAAI,kBAAkBI,QACvDC,iBAAkB,EAGdA,gBAAmBF,IACvB,MAAMG,EAAUP,EAAUQ,oBACpBC,EAAWF,EAAQG,sBACzB,IAAIC,EAAQJ,EAAQK,eACpB,KAAOD,KAAS,CACd,MAAMlC,EAAO8B,EAAQM,aAAaF,GAC9BlC,IAASgC,GAAYR,EAAI,kBAAkBI,QAC7CE,EAAQO,mBAAmBrC,GAAM,GAEjC8B,EAAQO,mBAAmBrC,GAAM,EAErC,CACAwB,EAAI,aAAac,iBAAiB,YAAYC,SAC5C,SAAUC,GACR,MAAMC,EAAWD,EAAGE,cAAc,eAC5BC,EAAMH,EAAGI,UAAUC,SAAS,cAAgBrB,EAAI,kBAAkBI,QAAU,WAAa,sBAC/Fa,EAASK,aAAa,QAASH,EACjC,GACD,EAGH,MAAO,CACL3C,KAAMG,EAAUa,QAAQ+B,EAAE,GAAG/C,UAE7BgD,aAAAA,GACMxB,EAAI,kBAAkBI,SACxBC,kBACI1B,EAAUG,UAAU2C,UAAUC,YAClC/C,EAAUG,UAAU2C,UAAUC,WAAY,EAC1C1B,EAAI,kBAAkBI,SAAU,EAChCC,kBAEH,EACDsB,eAAAA,GACM3B,EAAI,kBAAkBI,UACxBJ,EAAI,kBAAkBI,SAAWJ,EAAI,kBAAkBI,QAE1D,EACDwB,QAAAA,GACE,MAAMC,EAAiBC,SAASC,cAAc,YACxCC,EAAQ,GAAGxD,oBACXyD,EAAM,GAAGzD,kBACfqD,EAAeK,UAAY,iDACWF,gBAAoBC,uCAC1DjC,EAAI,gBAAgBmC,OAAON,EAAeO,QAAQC,WAAU,IAC5DpC,EAAOD,EAAI,kBAAmBE,eAAeoC,KAAKxC,MACpD,EAEJ,2CCnFa,CACbtB,KAAM,YACN+D,QAAS,CACP,CACEP,MAAO,4BACPC,IAAK,4DCLI,CACbzD,KAAM,eACN+D,QAAS,CACP,CACEP,MAAO,4BACPC,IAAK"}