@node-projects/web-component-designer 0.2.3 → 0.2.5

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 (211) hide show
  1. package/dist/elements/controls/NumericStyleInput.js +2 -7
  2. package/dist/elements/controls/NumericStyleInput.js.map +1 -1
  3. package/dist/elements/controls/NumericStyleInputValueHelpers.d.ts +1 -0
  4. package/dist/elements/controls/NumericStyleInputValueHelpers.js +8 -0
  5. package/dist/elements/controls/NumericStyleInputValueHelpers.js.map +1 -1
  6. package/dist/elements/helper/LayoutHelper.js +2 -3
  7. package/dist/elements/helper/LayoutHelper.js.map +1 -1
  8. package/dist/elements/helper/getBoxQuads.js +7 -1
  9. package/dist/elements/helper/getBoxQuads.js.map +1 -1
  10. package/dist/elements/services/placementService/AbsolutePlacementService.js +8 -1
  11. package/dist/elements/services/placementService/AbsolutePlacementService.js.map +1 -1
  12. package/dist/elements/services/placementService/DefaultPlacementService.js +8 -1
  13. package/dist/elements/services/placementService/DefaultPlacementService.js.map +1 -1
  14. package/dist/elements/services/propertiesService/DefaultEditorTypesService.js +4 -4
  15. package/dist/elements/services/propertiesService/DefaultEditorTypesService.js.map +1 -1
  16. package/dist/elements/services/propertiesService/PropertyGroupsService.js +1 -2
  17. package/dist/elements/services/propertiesService/PropertyGroupsService.js.map +1 -1
  18. package/dist/elements/services/propertiesService/propertyEditors/{CssNumericPropertyEditor.d.ts → UnitPropertyEditor.d.ts} +1 -1
  19. package/dist/elements/services/propertiesService/propertyEditors/{CssNumericPropertyEditor.js → UnitPropertyEditor.js} +3 -3
  20. package/dist/elements/services/propertiesService/propertyEditors/UnitPropertyEditor.js.map +1 -0
  21. package/dist/elements/services/propertiesService/propertyEditors/UnitPropertyEditorConfig.d.ts +30 -0
  22. package/dist/elements/services/propertiesService/propertyEditors/{CssNumericPropertyEditorConfig.js → UnitPropertyEditorConfig.js} +36 -92
  23. package/dist/elements/services/propertiesService/propertyEditors/UnitPropertyEditorConfig.js.map +1 -0
  24. package/dist/elements/services/propertiesService/services/AbstractCssPropertiesService.js +1 -1
  25. package/dist/elements/services/propertiesService/services/AbstractCssPropertiesService.js.map +1 -1
  26. package/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.d.ts +0 -1
  27. package/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.js +3 -7
  28. package/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.js.map +1 -1
  29. package/dist/elements/services/propertiesService/services/CssProperties.json +107 -33
  30. package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +3 -0
  31. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +12 -2
  32. package/dist/elements/services/propertiesService/services/CssPropertiesService.js.map +1 -1
  33. package/dist/elements/services/propertiesService/services/SVGElementsPropertiesService.d.ts +2 -0
  34. package/dist/elements/services/propertiesService/services/SVGElementsPropertiesService.js +39 -41
  35. package/dist/elements/services/propertiesService/services/SVGElementsPropertiesService.js.map +1 -1
  36. package/dist/elements/widgets/designerView/DomConverter.d.ts +1 -1
  37. package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtension.js +3 -6
  38. package/dist/elements/widgets/designerView/extensions/svg/UnifiedGeometryExtension.js.map +1 -1
  39. package/dist/elements/widgets/designerView/extensions/svg/geometry/GeometryWriteHelper.d.ts +4 -0
  40. package/dist/elements/widgets/designerView/extensions/svg/geometry/GeometryWriteHelper.js +24 -0
  41. package/dist/elements/widgets/designerView/extensions/svg/geometry/GeometryWriteHelper.js.map +1 -0
  42. package/dist/elements/widgets/designerView/extensions/svg/geometry/IGeometry.d.ts +13 -4
  43. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgRectGeometryReader.d.ts +2 -5
  44. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgRectGeometryReader.js +40 -9
  45. package/dist/elements/widgets/designerView/extensions/svg/geometry/SvgRectGeometryReader.js.map +1 -1
  46. package/dist/index-min.js +7 -7
  47. package/dist/index-min.js.map +4 -4
  48. package/dist/index.d.ts +1 -4
  49. package/dist/index.js +1 -4
  50. package/dist/index.js.map +1 -1
  51. package/jest.config.js +3 -0
  52. package/package.json +1 -1
  53. package/dist/basepath.d.ts +0 -2
  54. package/dist/basepath.js +0 -2
  55. package/dist/basepath.js.map +0 -1
  56. package/dist/elements/controls/NumericPopup.d.ts +0 -6
  57. package/dist/elements/controls/NumericPopup.js +0 -40
  58. package/dist/elements/controls/NumericPopup.js.map +0 -1
  59. package/dist/elements/helper/DesignItem.d.ts +0 -11
  60. package/dist/elements/helper/DesignItem.js +0 -67
  61. package/dist/elements/helper/DesignItem.js.map +0 -1
  62. package/dist/elements/helper/Screenshot copy.d.ts +0 -11
  63. package/dist/elements/helper/Screenshot copy.js +0 -67
  64. package/dist/elements/helper/Screenshot copy.js.map +0 -1
  65. package/dist/elements/services/collaborationService/DefaultCollaborationService.d.ts +0 -45
  66. package/dist/elements/services/collaborationService/DefaultCollaborationService.js +0 -298
  67. package/dist/elements/services/collaborationService/DefaultCollaborationService.js.map +0 -1
  68. package/dist/elements/services/collaborationService/WebRtcTabCollaborationTransport.d.ts +0 -95
  69. package/dist/elements/services/collaborationService/WebRtcTabCollaborationTransport.js +0 -571
  70. package/dist/elements/services/collaborationService/WebRtcTabCollaborationTransport.js.map +0 -1
  71. package/dist/elements/services/contentService/ContentService.d.ts +0 -9
  72. package/dist/elements/services/contentService/ContentService.js +0 -9
  73. package/dist/elements/services/contentService/ContentService.js.map +0 -1
  74. package/dist/elements/services/contentService/IContentChanged.d.ts +0 -10
  75. package/dist/elements/services/contentService/IContentChanged.js +0 -12
  76. package/dist/elements/services/contentService/IContentChanged.js.map +0 -1
  77. package/dist/elements/services/contentService/IContentService.d.ts +0 -7
  78. package/dist/elements/services/contentService/IContentService.js +0 -2
  79. package/dist/elements/services/contentService/IContentService.js.map +0 -1
  80. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.d.ts +0 -10
  81. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.js +0 -53
  82. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.js.map +0 -1
  83. package/dist/elements/services/miniatureViewService/IMinatureViewService copy.d.ts +0 -2
  84. package/dist/elements/services/miniatureViewService/IMinatureViewService copy.js +0 -2
  85. package/dist/elements/services/miniatureViewService/IMinatureViewService copy.js.map +0 -1
  86. package/dist/elements/services/miniatureViewService/IMinatureViewService.d.ts +0 -4
  87. package/dist/elements/services/miniatureViewService/IMinatureViewService.js +0 -2
  88. package/dist/elements/services/miniatureViewService/IMinatureViewService.js.map +0 -1
  89. package/dist/elements/services/miniatureViewService/MinatureViewService.d.ts +0 -5
  90. package/dist/elements/services/miniatureViewService/MinatureViewService.js +0 -10
  91. package/dist/elements/services/miniatureViewService/MinatureViewService.js.map +0 -1
  92. package/dist/elements/services/popupService/IPopupService.d.ts +0 -16
  93. package/dist/elements/services/popupService/IPopupService.js +0 -2
  94. package/dist/elements/services/popupService/IPopupService.js.map +0 -1
  95. package/dist/elements/services/popupService/PopupService.d.ts +0 -9
  96. package/dist/elements/services/popupService/PopupService.js +0 -21
  97. package/dist/elements/services/popupService/PopupService.js.map +0 -1
  98. package/dist/elements/services/propertiesService/propertyEditors/CssLengthPropertyEditor.d.ts +0 -1
  99. package/dist/elements/services/propertiesService/propertyEditors/CssLengthPropertyEditor.js +0 -2
  100. package/dist/elements/services/propertiesService/propertyEditors/CssLengthPropertyEditor.js.map +0 -1
  101. package/dist/elements/services/propertiesService/propertyEditors/CssLengthPropertyEditorConfig.d.ts +0 -3
  102. package/dist/elements/services/propertiesService/propertyEditors/CssLengthPropertyEditorConfig.js +0 -4
  103. package/dist/elements/services/propertiesService/propertyEditors/CssLengthPropertyEditorConfig.js.map +0 -1
  104. package/dist/elements/services/propertiesService/propertyEditors/CssNumericPropertyEditor.js.map +0 -1
  105. package/dist/elements/services/propertiesService/propertyEditors/CssNumericPropertyEditorConfig.d.ts +0 -30
  106. package/dist/elements/services/propertiesService/propertyEditors/CssNumericPropertyEditorConfig.js.map +0 -1
  107. package/dist/elements/services/propertiesService/propertyEditors/NumberPropertyEditor copy.d.ts +0 -7
  108. package/dist/elements/services/propertiesService/propertyEditors/NumberPropertyEditor copy.js +0 -19
  109. package/dist/elements/services/propertiesService/propertyEditors/NumberPropertyEditor copy.js.map +0 -1
  110. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction copy.d.ts +0 -15
  111. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction copy.js +0 -75
  112. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction copy.js.map +0 -1
  113. package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtension.d.ts +0 -11
  114. package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtension.js +0 -72
  115. package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtension.js.map +0 -1
  116. package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtensionProvider.d.ts +0 -10
  117. package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtensionProvider.js +0 -22
  118. package/dist/elements/widgets/designerView/extensions/CollaborationCursorOverlayExtensionProvider.js.map +0 -1
  119. package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtension.d.ts +0 -10
  120. package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtension.js +0 -116
  121. package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtension.js.map +0 -1
  122. package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtensionProvider.d.ts +0 -10
  123. package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtensionProvider.js +0 -31
  124. package/dist/elements/widgets/designerView/extensions/CollaborationOverlayExtensionProvider.js.map +0 -1
  125. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.d.ts +0 -11
  126. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.js +0 -20
  127. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.js.map +0 -1
  128. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.d.ts +0 -11
  129. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.js +0 -18
  130. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.js.map +0 -1
  131. package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtension.d.ts +0 -33
  132. package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtension.js +0 -337
  133. package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtension.js.map +0 -1
  134. package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtensionProvider.d.ts +0 -10
  135. package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtensionProvider.js +0 -22
  136. package/dist/elements/widgets/designerView/extensions/ProjectiveTransformExtensionProvider.js.map +0 -1
  137. package/dist/elements/widgets/designerView/extensions/QuadEdgeHandleHelper.d.ts +0 -5
  138. package/dist/elements/widgets/designerView/extensions/QuadEdgeHandleHelper.js +0 -42
  139. package/dist/elements/widgets/designerView/extensions/QuadEdgeHandleHelper.js.map +0 -1
  140. package/dist/elements/widgets/designerView/extensions/RotateExtension.d.ts +0 -16
  141. package/dist/elements/widgets/designerView/extensions/RotateExtension.js +0 -109
  142. package/dist/elements/widgets/designerView/extensions/RotateExtension.js.map +0 -1
  143. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.d.ts +0 -12
  144. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +0 -25
  145. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js.map +0 -1
  146. package/dist/elements/widgets/designerView/extensions/RotateGroupExtension.d.ts +0 -29
  147. package/dist/elements/widgets/designerView/extensions/RotateGroupExtension.js +0 -229
  148. package/dist/elements/widgets/designerView/extensions/RotateGroupExtension.js.map +0 -1
  149. package/dist/elements/widgets/designerView/extensions/RotateGroupExtensionProvider.d.ts +0 -10
  150. package/dist/elements/widgets/designerView/extensions/RotateGroupExtensionProvider.js +0 -20
  151. package/dist/elements/widgets/designerView/extensions/RotateGroupExtensionProvider.js.map +0 -1
  152. package/dist/elements/widgets/designerView/extensions/SkewExtension.d.ts +0 -30
  153. package/dist/elements/widgets/designerView/extensions/SkewExtension.js +0 -291
  154. package/dist/elements/widgets/designerView/extensions/SkewExtension.js.map +0 -1
  155. package/dist/elements/widgets/designerView/extensions/SkewExtensionProvider.d.ts +0 -10
  156. package/dist/elements/widgets/designerView/extensions/SkewExtensionProvider.js +0 -20
  157. package/dist/elements/widgets/designerView/extensions/SkewExtensionProvider.js.map +0 -1
  158. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.d.ts +0 -16
  159. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +0 -120
  160. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js.map +0 -1
  161. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.d.ts +0 -12
  162. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js +0 -34
  163. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js.map +0 -1
  164. package/dist/elements/widgets/designerView/extensions/contextMenu/ChildContextMenu copy.d.ts +0 -11
  165. package/dist/elements/widgets/designerView/extensions/contextMenu/ChildContextMenu copy.js +0 -16
  166. package/dist/elements/widgets/designerView/extensions/contextMenu/ChildContextMenu copy.js.map +0 -1
  167. package/dist/elements/widgets/designerView/extensions/contextMenu/CollaborationCommentsContextMenu.d.ts +0 -9
  168. package/dist/elements/widgets/designerView/extensions/contextMenu/CollaborationCommentsContextMenu.js +0 -72
  169. package/dist/elements/widgets/designerView/extensions/contextMenu/CollaborationCommentsContextMenu.js.map +0 -1
  170. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.d.ts +0 -43
  171. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.js +0 -187
  172. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.js.map +0 -1
  173. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtensionProvider.d.ts +0 -9
  174. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtensionProvider.js +0 -14
  175. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtensionProvider.js.map +0 -1
  176. package/dist/elements/widgets/designerView/extensions/svg/LineExtension.d.ts +0 -32
  177. package/dist/elements/widgets/designerView/extensions/svg/LineExtension.js +0 -148
  178. package/dist/elements/widgets/designerView/extensions/svg/LineExtension.js.map +0 -1
  179. package/dist/elements/widgets/designerView/extensions/svg/LineExtensionProvider.d.ts +0 -9
  180. package/dist/elements/widgets/designerView/extensions/svg/LineExtensionProvider.js +0 -15
  181. package/dist/elements/widgets/designerView/extensions/svg/LineExtensionProvider.js.map +0 -1
  182. package/dist/elements/widgets/designerView/extensions/svg/PathExtension.d.ts +0 -31
  183. package/dist/elements/widgets/designerView/extensions/svg/PathExtension.js +0 -330
  184. package/dist/elements/widgets/designerView/extensions/svg/PathExtension.js.map +0 -1
  185. package/dist/elements/widgets/designerView/extensions/svg/PathExtensionProvider.d.ts +0 -9
  186. package/dist/elements/widgets/designerView/extensions/svg/PathExtensionProvider.js +0 -15
  187. package/dist/elements/widgets/designerView/extensions/svg/PathExtensionProvider.js.map +0 -1
  188. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.d.ts +0 -49
  189. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.js +0 -215
  190. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.js.map +0 -1
  191. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider.d.ts +0 -9
  192. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider.js +0 -15
  193. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider.js.map +0 -1
  194. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtension.d.ts +0 -26
  195. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtension.js +0 -145
  196. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtension.js.map +0 -1
  197. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.d.ts +0 -9
  198. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.js +0 -17
  199. package/dist/elements/widgets/designerView/extensions/svg/SvgElementExtensionProvider.js.map +0 -1
  200. package/dist/elements/widgets/miniatureView/FirefoxElementMiniatiureView.d.ts +0 -9
  201. package/dist/elements/widgets/miniatureView/FirefoxElementMiniatiureView.js +0 -19
  202. package/dist/elements/widgets/miniatureView/FirefoxElementMiniatiureView.js.map +0 -1
  203. package/dist/elements/widgets/miniatureView/miniature-view.d.ts +0 -33
  204. package/dist/elements/widgets/miniatureView/miniature-view.js +0 -178
  205. package/dist/elements/widgets/miniatureView/miniature-view.js.map +0 -1
  206. package/dist/elements/widgets/propertyGrid/PropertyGridMutationHandling.d.ts +0 -5
  207. package/dist/elements/widgets/propertyGrid/PropertyGridMutationHandling.js +0 -13
  208. package/dist/elements/widgets/propertyGrid/PropertyGridMutationHandling.js.map +0 -1
  209. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyStructureSignature.d.ts +0 -4
  210. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyStructureSignature.js +0 -31
  211. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyStructureSignature.js.map +0 -1
package/dist/index-min.js CHANGED
@@ -1,16 +1,16 @@
1
- var Na=Object.defineProperty;var jm=Object.getOwnPropertyDescriptor;var Um=Object.getOwnPropertyNames;var Ym=Object.prototype.hasOwnProperty;var g=(s,e)=>()=>(s&&(e=s(s=0)),e);var Vd=(s,e)=>{for(var t in e)Na(s,t,{get:e[t],enumerable:!0})},Xm=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Um(e))!Ym.call(s,r)&&r!==t&&Na(s,r,{get:()=>e[r],enumerable:!(i=jm(e,r))||i.enumerable});return s};var Rd=s=>Xm(Na({},"__esModule",{value:!0}),s);function ni(s){let e=s?.trim()??"";if(!e)return{kind:"empty"};let t=e.match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:([a-z%]+))?$/i);if(!t)return{kind:"text",text:e};let i=Number(t[1]);return Number.isNaN(i)?{kind:"text",text:e}:{kind:"numeric",numberText:t[1],value:i,unit:t[2]?.toLowerCase()??""}}function Or(s,e=4){if(!Number.isFinite(s))return"0";let t=10**Math.max(0,e),i=Math.round(s*t)/t;return Object.is(i,-0)?"0":`${i}`}function si(s,e){let t=s?.trim()??"";return t?t+(e??""):""}function Fd(s){return s===""?" ":s}function Bd(s){let e=(s??[]).map(t=>t==null?null:t.trim()).filter(t=>t!=null);return[...new Set(e)]}function Hd(s,e,t){return s!=null&&t.includes(s)?s:e??t[0]??null}var La=g(()=>{"use strict"});import{BaseCustomWebComponentConstructorAppend as Qm,css as qm,html as Jm,TypedEvent as Oa}from"@node-projects/base-custom-webcomponent";var Va,eu,$i,Ra=g(()=>{"use strict";La();La();Va="__node-projects-custom-value__",eu="\u22EE",$i=class extends Qm{static style=qm`:host{display:block;width:100%;min-width:0}#container{display:grid;gap:0;grid-template-columns:minmax(0,1fr) auto 16px;width:100%;height:24px;align-items:stretch}#value-wrapper{display:grid;grid-template-columns:14px minmax(0,1fr);min-width:0}#input,#scrubber,#select,#stepper button{border:none;box-sizing:border-box;height:24px;min-height:24px;background:0 0;color:inherit;font:inherit;outline:0;box-shadow:none}#scrubber,#stepper button{padding:0;line-height:1}#scrubber{border-right:0;cursor:ns-resize;font-size:11px;letter-spacing:-1px}#input{border-left:0;border-right:0;min-width:0;text-align:right}#input:focus,#scrubber:focus,#select:focus,#stepper button:focus{outline:0;box-shadow:none;border-color:var(--input-border-color,#596c7a)}#input[disabled],#scrubber[disabled]{cursor:default}#input[disabled]{color:inherit;opacity:1;-webkit-text-fill-color:currentColor}#select{border-left:0;padding:0 15px 0 2px;line-height:1;-webkit-appearance:none;appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4'%3E%3Cpath d='M0 0l4 4 4-4z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 2px center}#measure{position:absolute;visibility:hidden;white-space:nowrap;font:inherit;pointer-events:none}#stepper{display:grid;height:24px;min-height:24px;overflow:hidden;grid-template-rows:repeat(2,minmax(0,1fr))}#stepper button{height:auto;min-height:0;width:16px;min-width:16px;font-size:10px}`;static template=Jm`<div id="container"><div id="value-wrapper"><button id="scrubber" type="button" aria-label="Drag to change value">${eu}</button> <input id="input" type="text" spellcheck="false"></div><select id="select"></select><div id="stepper"><button id="increase" type="button" aria-label="Increase value">+</button> <button id="decrease" type="button" aria-label="Decrease value">-</button></div><span id="measure"></span></div>`;_value="";get value(){return this._value}set value(e){this._setValue(e,!1,!1)}valueChanged=new Oa;valuePreviewChanged=new Oa;valuePreviewFinished=new Oa;_units=["px","%","pt"];get units(){return[...this._units]}set units(e){this._units=this._normalizeOptionValues(e),this._lastNumericUnit=this._units[0]??this._lastNumericUnit,this._updateValue()}_fixedValues=[];get fixedValues(){return[...this._fixedValues]}set fixedValues(e){this._fixedValues=this._normalizeOptionValues(e),this._updateValue()}_step=1;get step(){return this._step}set step(e){this._step=Number.isFinite(e)&&e>0?e:1}_unitSteps={};get unitSteps(){return{...this._unitSteps}}set unitSteps(e){this._unitSteps=e??{}}_min=null;get min(){return this._min}set min(e){this._min=Number.isFinite(e)?e:null}_max=null;get max(){return this._max}set max(e){this._max=Number.isFinite(e)?e:null}_readOnly=!1;get readOnly(){return this._readOnly}set readOnly(e){this._readOnly=e,this._applyReadonlyState()}get isInPreview(){return this._previewStartValue!=null}_allowCustomValue=!0;get allowCustomValue(){return this._allowCustomValue}set allowCustomValue(e){this._allowCustomValue=e,this._updateValue()}_unitValueConverter;get unitValueConverter(){return this._unitValueConverter}set unitValueConverter(e){this._unitValueConverter=e}_input;_select;_measure;_scrubberButton;_increaseButton;_decreaseButton;_lastNumericValue=0;_lastNumericUnit="px";_dragPointerId=null;_dragStartY=0;_dragStartNumericValue=0;_appliedDragSteps=0;_previewStartValue=null;_previewChanged=!1;_displayValueLock=null;_stepperPointerId=null;_stepperDirection=0;_stepperRepeatTimeout=null;_stepperRepeatInterval=null;_windowDragPointerMoveHandler=e=>this._handleWindowDragPointerMove(e);_windowDragPointerUpHandler=e=>this._finishDragInteractionForPointerEvent(e,!1);_windowDragPointerCancelHandler=e=>this._finishDragInteractionForPointerEvent(e,!0);_windowDragBlurHandler=()=>this._finishDragInteraction(!1);_windowPointerUpHandler=e=>this._handleWindowStepperPointerEnd(e);_windowPointerCancelHandler=e=>this._handleWindowStepperPointerEnd(e);_windowBlurHandler=()=>this._finishStepperInteraction(!1);_preferCustomMode=!1;constructor(){super(),this._restoreCachedInititalValues(),this._input=this._getDomElement("input"),this._select=this._getDomElement("select"),this._measure=this._getDomElement("measure"),this._scrubberButton=this._getDomElement("scrubber"),this._increaseButton=this._getDomElement("increase"),this._decreaseButton=this._getDomElement("decrease")}ready(){this._parseAttributesToProperties(),this._wireEvents(),this._updateValue()}_wireEvents(){this._input.addEventListener("change",()=>this._applyTypedValue()),this._input.addEventListener("keydown",e=>{e.key==="Enter"&&(this._applyTypedValue(),this._input.blur())}),this._scrubberButton.addEventListener("pointerdown",e=>this._handlePointerDown(e)),this._select.addEventListener("change",()=>this._applySelectedMode()),this._increaseButton.addEventListener("pointerdown",e=>this._handleStepperPointerDown(e,1)),this._decreaseButton.addEventListener("pointerdown",e=>this._handleStepperPointerDown(e,-1))}_handlePointerDown(e){if(!this._readOnly&&!(!this._isSelectedUnitMode()&&!this._switchToUnitModeForInteraction())){this._dragPointerId=e.pointerId,this._dragStartY=e.clientY,this._dragStartNumericValue=this._readEditableNumericValue(this._select.value),this._appliedDragSteps=0,this._startPreviewSession(),this._attachDragWindowListeners();try{this._scrubberButton.setPointerCapture(e.pointerId)}catch{}e.preventDefault()}}_handleWindowDragPointerMove(e){if(this._dragPointerId!==e.pointerId||!this._isSelectedUnitMode())return;let t=this._calculateDraggedStepCount(this._dragStartY-e.clientY);if(t===this._appliedDragSteps)return;this._appliedDragSteps=t;let i=this._select.value,r=this._getEffectiveStep(i);this._previewNumericValue(this._getInteractiveStepValue(this._dragStartNumericValue,t,r),i,r),e.preventDefault()}_finishDragInteractionForPointerEvent(e,t){this._dragPointerId===e.pointerId&&this._finishDragInteraction(t,e.pointerId)}_finishDragInteraction(e,t){if(this._dragPointerId!=null){if(this._dragPointerId=null,this._appliedDragSteps=0,this._detachDragWindowListeners(),t!=null)try{this._scrubberButton.hasPointerCapture(t)&&this._scrubberButton.releasePointerCapture(t)}catch{}this._finishPreviewSession(e)}}_handleStepperPointerDown(e,t){this._readOnly||!this._isSelectedUnitMode()&&!this._switchToUnitModeForInteraction()||(this._finishStepperInteraction(!0),this._stepperPointerId=e.pointerId,this._stepperDirection=t,this._attachStepperWindowListeners(),this._startPreviewSession(),this._applyStepPreview(t),this._stepperRepeatTimeout=window.setTimeout(()=>{this._stepperRepeatInterval=window.setInterval(()=>this._applyStepPreview(this._stepperDirection),50)},350),e.preventDefault())}_handleWindowStepperPointerEnd(e){this._stepperPointerId===e.pointerId&&this._finishStepperInteraction(!1)}_finishStepperInteraction(e){this._stepperPointerId!=null&&(this._stepperPointerId=null,this._stepperDirection=0,this._detachStepperWindowListeners(),this._stopStepperRepeat(),this._finishPreviewSession(e))}_applySelectedMode(){let e=this._select.selectedOptions.item(0);if(!e)return;let t=e.dataset.kind;if(t==="fixed"){this._commitValue(e.value);return}if(t==="custom"){this._preferCustomMode=!0,this._updateValue(),requestAnimationFrame(()=>{this._input.focus(),this._input.select()});return}let i=e.value;this._lastNumericUnit=i,this._preferCustomMode=!1;let r=ni(this._value);if(r.kind==="numeric"){let a=this._convertNumericValue(r,i);this._commitValue(a);return}let n=this._resolveCurrentValueForUnit(i);if(n!=null){this._commitValue(n);return}if(r.kind==="empty"){this._updateValue(),this._input.focus();return}let o=Number(this._input.value);if(!Number.isNaN(o)){this._applyNumericValue(o,i);return}this._commitValue(""),this._input.focus()}_applyTypedValue(){let e=this._select.selectedOptions.item(0),t=e?.dataset.kind;if(t==="fixed")return;if(t==="custom"){this._commitValue(this._input.value);return}let i=this._input.value?.trim()??"";if(!i){this._commitValue("");return}let r=Number(i);Number.isNaN(r)||(this._lastNumericValue=this._clampNumericValue(r)),this._commitValue(si(i,e?.value??""))}_updateValue(){if(!this._input||!this._select)return;this._previewStartValue==null&&this._renderSelectOptions();let e=this._getDisplayState(this._displayValueLock??this._value);if(this._input.value=e.inputValue,this._input.style.display=e.inputVisible?"":"none",this._input.disabled=this._readOnly||!e.inputEnabled,this._select.value=e.selectValue,this._autoSizeSelect(),e.mode==="unit"&&e.selectedUnit!=null&&(this._lastNumericUnit=e.selectedUnit),e.mode==="unit"&&e.inputValue!==""){let r=Number(e.inputValue);Number.isNaN(r)||(this._lastNumericValue=this._clampNumericValue(r))}let t=this._units.length>0,i=this._readOnly||!t||e.mode==="custom";this._scrubberButton.disabled=i,this._increaseButton.disabled=i,this._decreaseButton.disabled=i,this._applyReadonlyState()}_getDisplayState(e){let t=ni(e);if(t.kind==="numeric"){if(this._preferCustomMode)return this._createCustomDisplayState(t.numberText);if(t.unit&&this._units.length&&!this._units.includes(t.unit))return this._createCustomDisplayState(e);let r=Hd(t.unit,this._lastNumericUnit,this._units)??"";return{mode:"unit",inputValue:t.numberText,inputVisible:!0,inputEnabled:!0,selectValue:this._units.includes(r)?r:this._select.value||Va,selectedUnit:r}}if(t.kind==="text")return!this._preferCustomMode&&this._fixedValues.includes(t.text)?{mode:"fixed",inputValue:"",inputVisible:!0,inputEnabled:!1,selectValue:t.text}:this._createCustomDisplayState(t.text);if(this._preferCustomMode)return this._createCustomDisplayState("");let i=this._lastNumericUnit??this._units[0]??"";return this._units.includes(i)?{mode:"unit",inputValue:"",inputVisible:!0,inputEnabled:!0,selectValue:i,selectedUnit:i}:this._createCustomDisplayState("")}_createCustomDisplayState(e){return!this._allowCustomValue&&this._units.length?{mode:"unit",inputValue:e,inputVisible:!0,inputEnabled:!0,selectValue:this._units[0],selectedUnit:this._units[0]}:{mode:"custom",inputValue:e,inputVisible:!0,inputEnabled:!0,selectValue:Va}}_renderSelectOptions(){let e=this._select.value;if(this._select.replaceChildren(),this._units.length){let t=document.createElement("optgroup");t.label="Units";for(let i of this._units)t.appendChild(this._createOption(Fd(i),i,"unit"));this._select.appendChild(t)}if(this._fixedValues.length){let t=document.createElement("optgroup");t.label="Values";for(let i of this._fixedValues)t.appendChild(this._createOption(i,i,"fixed"));this._select.appendChild(t)}(this._allowCustomValue||this._select.options.length===0)&&this._select.appendChild(this._createOption("custom",Va,"custom")),e!==""?this._select.value=e:this._select.querySelector('option[value=""]')&&(this._select.value="")}_createOption(e,t,i){let r=document.createElement("option");return r.text=e,r.value=t,r.dataset.kind=i,r}_autoSizeSelect(){if(!this._measure||!this._select)return;let e=this._select.selectedOptions.item(0);this._measure.textContent=e?.text??"";let t=this._measure.offsetWidth;t>0?this._select.style.width=t+17+"px":requestAnimationFrame(()=>this._autoSizeSelect())}_applyReadonlyState(){!this._input||!this._select||(this._input.readOnly=this._readOnly,this._select.disabled=this._readOnly)}_convertNumericValue(e,t){if(t==null)return this._value;let i=e.unit;return this._unitValueConverter?.({value:e.value,numberText:e.numberText,rawValue:this._value,fromUnit:i,toUnit:t})??si(e.numberText,t)}_resolveCurrentValueForUnit(e){if(e==null)return null;let t=this._unitValueConverter?.({value:Number.NaN,numberText:"",rawValue:this._value,fromUnit:"",toUnit:e})?.trim();return t||null}_readEditableNumericValue(e){let t=ni(this._value);if(t.kind==="numeric"){let i=this._convertNumericValue(t,e),r=ni(i);return r.kind==="numeric"?r.value:t.value}if(this._input.value?.trim()){let i=Number(this._input.value);if(!Number.isNaN(i))return i}return this._lastNumericValue}_applyNumericValue(e,t){this._lastNumericValue=this._clampNumericValue(e),this._lastNumericUnit=t,this._commitValue(si(Or(this._lastNumericValue),t))}_previewNumericValue(e,t,i){this._lastNumericValue=this._clampNumericValue(e),this._lastNumericUnit=t;let r=i??this._getEffectiveStep(t);this._setValue(si(this._formatInteractiveNumericValue(this._lastNumericValue,r),t),!1,!0)}_commitValue(e){this._setValue(e,!0,!1)}_setValue(e,t,i){let r=e??"";if(!t&&!i&&this._previewStartValue!=null)return;let n=this._value;this._value=r,i?this._displayValueLock=r:this._displayValueLock!=null&&(r===this._displayValueLock||r!==n)&&(this._displayValueLock=null),this._preferCustomMode=!1,this._updateValue(),n!==r&&(i&&(this._previewChanged=!0,this.valuePreviewChanged.emit({newValue:r,oldValue:n})),t&&this.valueChanged.emit({newValue:r,oldValue:n}))}_startPreviewSession(){this._previewStartValue==null&&(this._previewStartValue=this._value,this._previewChanged=!1)}_finishPreviewSession(e){if(this._previewStartValue==null)return;let t=this._previewStartValue,i=this._displayValueLock??this._value,r=this._previewChanged&&t!==i,n=e||!r;this._previewStartValue=null,this._previewChanged=!1,n?(this._displayValueLock=null,this._value=t,this._updateValue()):(this._displayValueLock=i,this._updateValue()),this.valuePreviewFinished.emit({newValue:i,oldValue:t,wasCancelled:n})}_applyStepPreview(e){let t=this._select.value,i=this._getEffectiveStep(t);this._previewNumericValue(this._getInteractiveStepValue(this._readEditableNumericValue(t),e,i),t,i)}_stopStepperRepeat(){this._stepperRepeatTimeout!=null&&(window.clearTimeout(this._stepperRepeatTimeout),this._stepperRepeatTimeout=null),this._stepperRepeatInterval!=null&&(window.clearInterval(this._stepperRepeatInterval),this._stepperRepeatInterval=null)}_attachStepperWindowListeners(){window.addEventListener("pointerup",this._windowPointerUpHandler,!0),window.addEventListener("pointercancel",this._windowPointerCancelHandler,!0),window.addEventListener("blur",this._windowBlurHandler)}_attachDragWindowListeners(){window.addEventListener("pointermove",this._windowDragPointerMoveHandler,!0),window.addEventListener("pointerup",this._windowDragPointerUpHandler,!0),window.addEventListener("pointercancel",this._windowDragPointerCancelHandler,!0),window.addEventListener("blur",this._windowDragBlurHandler)}_detachStepperWindowListeners(){window.removeEventListener("pointerup",this._windowPointerUpHandler,!0),window.removeEventListener("pointercancel",this._windowPointerCancelHandler,!0),window.removeEventListener("blur",this._windowBlurHandler)}_detachDragWindowListeners(){window.removeEventListener("pointermove",this._windowDragPointerMoveHandler,!0),window.removeEventListener("pointerup",this._windowDragPointerUpHandler,!0),window.removeEventListener("pointercancel",this._windowDragPointerCancelHandler,!0),window.removeEventListener("blur",this._windowDragBlurHandler)}_calculateDraggedStepCount(e){let t=Math.abs(e),i=Math.min(t,20)/5,r=Math.max(Math.min(t-20,40),0)/3,n=Math.max(t-60,0)/2,o=Math.trunc(i+r+n);return Math.sign(e)*o}_getEffectiveStep(e){if(e){let t=this._unitSteps[e];if(Number.isFinite(t)&&t>0)return t}return this._step}_getInteractiveStepValue(e,t,i){let r=i??this._step,n=this._clampNumericValue(e);if(!Number.isFinite(n)||!Number.isFinite(t)||t===0)return n;let o=this._min??0,a=(n-o)/r,l=Math.round(a),c=Math.abs(a-l)<1e-9,h;t>0?h=(c?l+1:Math.ceil(a))+t-1:h=(c?l-1:Math.floor(a))+t+1;let d=o+h*r;return this._clampNumericValue(this._roundToStepPrecision(d,r))}_formatInteractiveNumericValue(e,t){let i=t??this._step;return Or(this._roundToStepPrecision(e,i),this._getStepPrecision(i))}_roundToStepPrecision(e,t){let r=10**this._getStepPrecision(t);return Math.round(e*r)/r}_getStepPrecision(e){let t=`${e??this._step}`.toLowerCase();if(t.includes("e-")){let[r,n]=t.split("e-"),o=Number(n),a=r.includes(".")?r.length-r.indexOf(".")-1:0;return o+a}let i=t.indexOf(".");return i>=0?t.length-i-1:0}_switchToUnitModeForInteraction(){let e=this._lastNumericUnit??this._units[0];if(e==null)return!1;this._preferCustomMode=!1;let t=this._resolveCurrentValueForUnit(e);return t!=null?(this._commitValue(t),this._isSelectedUnitMode()):(this._applyNumericValue(this._lastNumericValue,e),this._isSelectedUnitMode())}_isSelectedUnitMode(){return this._select.selectedOptions.item(0)?.dataset.kind==="unit"}_normalizeOptionValues(e){return Bd(e)}_clampNumericValue(e){let t=e;return this._min!=null&&(t=Math.max(this._min,t)),this._max!=null&&(t=Math.min(this._max,t)),t}};customElements.define("node-projects-numeric-style-input",$i)});import{TypedEvent as lu}from"@node-projects/base-custom-webcomponent";var oi,zr=g(()=>{"use strict";oi=class{_services=new Map;servicesChanged=new lu;getLastService(e){let t=this._services.get(e);return t&&t.length?t[t.length-1]:null}getServices(e){return this._services.get(e)}register(e,t){this._services.has(e)||this._services.set(e,[]),this._services.get(e).push(t),this.servicesChanged.emit({serviceName:e})}registerLast(e,t){this._services.has(e)||this._services.set(e,[]),this._services.get(e).unshift(t),this.servicesChanged.emit({serviceName:e})}registerMultiple(e,t){for(let i of e)this._services.has(i)||this._services.set(i,[]),this._services.get(i).push(t),this.servicesChanged.emit({serviceName:i})}forSomeServicesTillResult(e,t){let i=this.getServices(e);if(i==null)return null;for(let r=i.length-1;r>=0;r--){let n=i[r],o=t(n);if(o!=null)return o}return null}getLastServiceWhere(e,t){let i=this.getServices(e);if(i==null)return null;for(let r=i.length-1;r>=0;r--){let n=i[r];if(t(n))return n}return null}getLastServiceResult(e,t){let i=this.getServices(e);if(i==null)return null;for(let r=i.length-1;r>=0;r--){let n=i[r],o=t(n);if(o)return o}return null}async getLastServiceWhereAsync(e,t){let i=this.getServices(e);if(i==null)return null;for(let r=i.length-1;r>=0;r--){let n=i[r];if(await t(n))return n}return null}}});import{BaseCustomWebComponentLazyAppend as cu,css as hu}from"@node-projects/base-custom-webcomponent";var Zi,Ba=g(()=>{"use strict";Zi=class extends cu{_placeholder;_loading;static style=hu`:host{display:block;overflow:hidden;background:#fff;height:100%;width:100%;position:relative}#placeholder{position:absolute;left:24px;height:100%;width:calc(100% - 24px)}#loading{position:absolute;top:60px;left:20px}#left{position:absolute;left:0;top:0;height:100%;width:24px;border-right:solid #fff 1px;box-sizing:border-box;background:#000}span{color:#fff;rotate:270deg;display:block;position:absolute;top:35px;left:-38px;font-weight:600;font-family:monospace;font-size:24px}`;constructor(){super(),this._placeholder=document.createElement("div"),this._placeholder.id="placeholder",this._placeholder.style.transform="scale(1)",this.shadowRoot.appendChild(this._placeholder),this._loading=document.createElement("div"),this._loading.id="loading",this._loading.textContent="\u{1F6C0} Hold on, loading...",this.shadowRoot.appendChild(this._loading);let e=document.createElement("div");e.id="left";let t=document.createElement("span");t.innerText="PREVIEW",e.appendChild(t),this.shadowRoot.appendChild(e)}dispose(){}executeCommand;canExecuteCommand;async display(e,t,i,r){this._loading.hidden=!1,await e.demoProviderService.provideDemo(this._placeholder,e,t,i,r),this._loading.hidden=!0}};customElements.define("node-projects-demo-view",Zi)});import{PropertyChangedArgs as Fr,TypedEvent as Qi}from"@node-projects/base-custom-webcomponent";var Br,Wd=g(()=>{"use strict";Br=class{_serviceContainer;_tool;_strokeColor="black";_strokeThickness="3";_fillBrush="none";constructor(e){this._serviceContainer=e}set tool(e){if(this._tool!==e){let t=this._tool;t&&t.dispose(),this._tool=e;let i=null;for(let r of this._serviceContainer.designerTools)r[1]==e&&(i=r[0]);this.onToolChanged.emit(new Fr({name:i,tool:e},{name:null,tool:t})),this._tool&&this._tool.activated(this._serviceContainer)}}get tool(){return this._tool}onToolChanged=new Qi;finishedWithTool=()=>this.tool=null;set strokeColor(e){if(this._strokeColor!==e){let t=this._strokeColor;this._strokeColor=e,this.onStrokeColorChanged.emit(new Fr(e,t))}}get strokeColor(){return this._strokeColor}onStrokeColorChanged=new Qi;set strokeThickness(e){if(this._strokeThickness!==e){let t=this._strokeThickness;this._strokeThickness=e,this.onStrokeThicknessChanged.emit(new Fr(e,t))}}get strokeThickness(){return this._strokeThickness}onStrokeThicknessChanged=new Qi;set fillBrush(e){if(this._fillBrush=e,this._fillBrush!==e){let t=this._fillBrush;this._fillBrush=e,this.onFillBrushChanged.emit(new Fr(e,t))}}get fillBrush(){return this._fillBrush}onFillBrushChanged=new Qi;showConfigClicked=new Qi}});import{BaseCustomWebComponentConstructorAppend as du,css as pu,html as mu,TypedEvent as uu}from"@node-projects/base-custom-webcomponent";var qi,Ha=g(()=>{"use strict";qi=class extends du{dispose(){}canvasElement;elementsToPackages;onTextChanged=new uu;_text;static style=pu`:host{display:block;height:100%;width:100%}textarea{height:100%;width:100%;resize:none;white-space:nowrap;box-sizing:border-box}`;static template=mu`<div id="container" style="width:100%;height:100%;position:absolute"><textarea id="text"></textarea></div>`;executeCommand(e){}canExecuteCommand(e){return!1}async ready(){this._text=this._getDomElement("text")}focusEditor(){requestAnimationFrame(()=>{this.focus(),this._text.focus()})}activated(){}update(e){this._text.value=e}getText(){return this._text.value}setSelection(e){this._text.setSelectionRange(e.start,e.start+e.length)}};customElements.define("node-projects-code-view-simple",qi)});var fu,Hr,Ga=g(()=>{"use strict";zr();Ba();Wd();Ha();fu=!!(navigator.maxTouchPoints&&navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome")),Hr=class extends oi{config={codeViewWidget:qi,demoViewWidget:Zi};designerExtensions=new Map;removeDesignerExtensionOfType(e,t){let i=this.designerExtensions.get(e);for(let r=0;r<i.length;r++)i[r].constructor===t&&i.splice(r,1)}instanceServiceContainerCreatedCallbacks=[];designViewConfigButtons=[];designViewToolbarButtons=[];designerPointerExtensions=[];designerContextMenuExtensions;overlayLayerViewAdditionalStyles=[];globalContext=new Br(this);options={zoomDesignerBackground:!0,roundPixelsToDecimalPlaces:0,resizerPixelSize:fu?8:3};designerTools=new Map;get bindingService(){return this.getLastService("bindingService")}get bindableObjectsServices(){return this.getServices("bindableObjectsService")}get bindableObjectDragDropService(){return this.getLastService("bindableObjectDragDropService")}get propertyGridDragDropService(){return this.getLastService("propertyGridDragDropService")}get dragDropService(){return this.getLastService("dragDropService")}get elementInteractionServices(){return this.getServices("elementInteractionService")}get propertiesServices(){return this.getServices("propertyService")}get attachedPropertyServices(){return this.getServices("attachedPropertyService")}get propertyGroupService(){return this.getLastService("propertyGroupsService")}get containerServices(){return this.getServices("containerService")}get snaplinesProviderService(){return this.getLastService("snaplinesProviderService")}get elementsServices(){return this.getServices("elementsService")}get eventsService(){return this.getServices("eventsService")}get instanceServices(){return this.getServices("instanceService")}get editorTypesServices(){return this.getServices("editorTypesService")}get htmlWriterService(){return this.getLastService("htmlWriterService")}get htmlParserService(){return this.getLastService("htmlParserService")}get intializationService(){return this.getLastService("intializationService")}get elementAtPointService(){return this.getLastService("elementAtPointService")}get externalDragDropService(){return this.getLastService("externalDragDropService")}get copyPasteService(){return this.getLastService("copyPasteService")}get modelCommandService(){return this.getLastService("modelCommandService")}get demoProviderService(){return this.getLastService("demoProviderService")}get designItemService(){return this.getLastService("designItemService")}get configUiServices(){return this.getServices("configUiService")}get refactorServices(){return this.getServices("refactorService")}get deletionService(){return this.getLastService("deletionService")}get referencesChangedService(){return this.getLastService("referencesChangedService")}get miniatureViewService(){return this.getLastService("miniatureViewService")}get pngCreatorService(){return this.getLastService("pngCreatorService")}get searchService(){return this.getLastService("searchService")}}});var z,_e=g(()=>{"use strict";z=class{static isTypescriptEnum(e){if(e&&typeof e=="object"&&e.constructor==Object){for(let t in e){let i=typeof e[t];if(i!=="string"&&i!=="number")return!1}return!0}return!1}static getTypescriptEnumEntries(e){let t=[];for(let i in e)isNaN(i)&&t.push([i,e[i]]);return t}static camelToDashCase(e){return e.replace(/([A-Z])/g,t=>`-${t[0].toLowerCase()}`)}static dashToCamelCase(e){return e.replace(/-([a-z])/g,t=>t[1].toUpperCase())}}});var H,pt=g(()=>{"use strict";(function(s){s.none="none",s.all="all",s.some="some",s.bound="bound",s.fromStylesheet="fromStylesheet"})(H||(H={}))});var L,Ke=g(()=>{"use strict";(function(s){s.explicitProperty="explicitProperty",s.property="property",s.attribute="attribute",s.class="class",s.css="css",s.cssvar="cssvar",s.event="event",s.content="content",s.visible="visible"})(L||(L={}))});var x,ue=g(()=>{"use strict";(function(s){s.property="property",s.attribute="attribute",s.propertyAndAttribute="propertyAndAttribute",s.cssValue="cssvalue",s.complex="complex",s.add="add"})(x||(x={}))});var k,q=g(()=>{"use strict";(function(s){s[s.Element=1]="Element",s[s.Attribute=2]="Attribute",s[s.TextNode=3]="TextNode",s[s.Comment=8]="Comment",s[s.Document=9]="Document",s[s.DocumentFragment=11]="DocumentFragment"})(k||(k={}))});function bv(s){return s.getRootNode()?.host?.localName=="node-projects-designer-canvas"}function Gr(s,e){return e.createRange().createContextualFragment(s,{includeShadowRoots:!0}).firstChild}function It(s,e){return s instanceof e||s instanceof(s.ownerDocument.defaultView??window)[e.name]}function Ji(s,...e){for(let t of e)if(s instanceof t||s instanceof(s.ownerDocument.defaultView??window)[t.name])return!0;return!1}function Dt(s){return s==null||Ji(s,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement)?!1:(s.ownerDocument.defaultView??window).getComputedStyle(s).display.startsWith("inline")}function Ht(s){return s==null||Ji(s,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement)?!1:(s.ownerDocument.defaultView??window).getComputedStyle(s).display.startsWith("inline")}function Ud(s){if(Ji(s,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement)||It(s,MathMLElement))return Re.block;let e=(s.ownerDocument.defaultView??window).getComputedStyle(s).display;return e=="none"?Re.none:e.startsWith("inline")?Re.inline:Re.block}function Wr(s){return s.textContent.trim()==""&&s.textContent.indexOf("\xA0")<0}function wv(){let s=document.activeElement,e=null;for(;s!=e;)e=s,s.shadowRoot!=null&&s.shadowRoot.activeElement&&(s=s.shadowRoot.activeElement);return s}function jd(s){return s.assignedSlot?s.assignedSlot:s.parentElement==null&&It(s.parentNode,ShadowRoot)?s.parentNode.host:s.parentElement}function Sv(s){let e=jd(s);for(;e;){let t=(s.ownerDocument.defaultView??window).getComputedStyle(s);if(t.position==="absolute"||t.position==="relative"||t.position==="fixed")return e;e=jd(e)}return document.body}function Cv(s){if(It(s,HTMLElement))return{x:s.offsetLeft,y:s.offsetTop};{let e=Y(s),t=Y(s.parentElement);return{x:e.x-t.x,y:e.y-t.y}}}function Y(s){let e=s.getBoundingClientRect();if(e.width==0&&e.height==0&&(s.ownerDocument.defaultView??window).getComputedStyle(s).display=="contents")if(s.shadowRoot)for(let i of s.shadowRoot.children){let r=Y(i);e=new DOMRect(Math.min(e.x,r.x),Math.min(e.y,r.y),Math.max(e.width,r.width),Math.max(e.height,r.height))}else for(let i of s.children){let r=Y(i);e=new DOMRect(Math.min(e.x,r.x),Math.min(e.y,r.y),Math.max(e.width,r.width),Math.max(e.height,r.height))}return e}function jr(s){let e=(s.ownerDocument.defaultView??window).getComputedStyle(s).zoom;if(!e||e==="normal")return 1;if(e.endsWith("%")){let i=parseFloat(e);return Number.isFinite(i)&&i>0?i/100:1}let t=parseFloat(e);return Number.isFinite(t)&&t>0?t:1}function Ev(s,e,t={}){let i=0,r=0,n;t?n=t[gu]??=new Map:n=new Map;let o=[],a=s;for(;a;){let l=n.get(a);if(l){i+=l.offsetLeft,r+=l.offsetTop,o.forEach(f=>{f.offsetLeft+=l.offsetLeft,f.offsetTop+=l.offsetTop});break}let c=a.offsetParent?a.offsetParent:a.getRootNode().host;Ji(a,SVGSVGElement,HTMLBodyElement,HTMLHtmlElement)?c=a.parentElement?a.parentElement:a.getRootNode().host:It(a,SVGGraphicsElement)?c=a.ownerSVGElement:It(a,MathMLElement)&&(c=a.parentElement??c);let h=0,d=0;if(It(a,HTMLElement)){let f=a.parentElement;for(;f!==null&&f!==c;)h+=f.scrollLeft,d+=f.scrollTop,f=f.parentElement}c&&(h+=c.scrollLeft,d+=c.scrollTop);let p=0,m=0;if(Ji(a,SVGSVGElement,MathMLElement)){let f=a.style.transform;a.style.transform="";let y=a.getBoundingClientRect(),v=a.parentElement?a.parentElement.getBoundingClientRect():a.getRootNode().host.getBoundingClientRect();a.style.transform=f,p=(y.left-v.left)/e,m=(y.top-v.top)/e}else if(It(a,SVGGraphicsElement)){let f=a.getBBox();p=f.x,m=f.y}else if(s==a&&(s===s.ownerDocument.body||It(s,HTMLHtmlElement))){let f=(s.ownerDocument.defaultView??window).getComputedStyle(s);p=s.offsetLeft-h+parseInt(f.marginLeft),m=s.offsetTop-d+parseInt(f.marginTop)}else p=a.offsetLeft-h,m=a.offsetTop-d;o.forEach(f=>{f.offsetLeft+=p,f.offsetTop+=m});let u={offsetLeft:p,offsetTop:m};o.push(u),n.set(a,u),i+=p,r+=m,a=c}return{offsetLeft:i,offsetTop:r}}function Yd(s){let e=parseInt(getComputedStyle(s).paddingLeft.replace("px",""))+parseInt(getComputedStyle(s).marginLeft.replace("px",""))+parseInt(getComputedStyle(s).borderLeft.replace("px",""))+parseInt(getComputedStyle(s).paddingRight.replace("px",""))+parseInt(getComputedStyle(s).marginRight.replace("px",""))+parseInt(getComputedStyle(s).borderRight.replace("px","")),t=parseInt(getComputedStyle(s).paddingTop.replace("px",""))+parseInt(getComputedStyle(s).marginTop.replace("px",""))+parseInt(getComputedStyle(s).borderTop.replace("px",""))+parseInt(getComputedStyle(s).paddingBottom.replace("px",""))+parseInt(getComputedStyle(s).marginBottom.replace("px",""))+parseInt(getComputedStyle(s).borderBottom.replace("px",""));return{x:e,y:t}}function Gt(s,e){let t={x:Number.MAX_VALUE,y:Number.MAX_VALUE},i={x:Number.MIN_VALUE,y:Number.MIN_VALUE},r;for(let n of s)n.nodeType==k.TextNode||n.nodeType==k.Comment||(r={x:e.getNormalizedElementCoordinates(n.element).x,y:e.getNormalizedElementCoordinates(n.element).y,width:e.getNormalizedElementCoordinates(n.element).width,height:e.getNormalizedElementCoordinates(n.element).height},r.x<t.x&&(t.x=r.x),r.y<t.y&&(t.y=r.y),r.x+r.width>i.x&&(i.x=r.x+r.width),r.y+r.height>i.y&&(i.y=r.y+r.height));return{x:t.x,y:t.y,width:i.x-t.x,height:i.y-t.y}}var Re,gu,ce=g(()=>{"use strict";q();(function(s){s[s.none=0]="none",s[s.inline=1]="inline",s[s.block=2]="block"})(Re||(Re={}));gu=Symbol("windowOffsetsCacheKey")});var ee,Me=g(()=>{"use strict";pt();_e();Ke();ue();q();ce();ee=class s{constructor(e){this._recreateElementsOnPropertyChange=e}_recreateElementsOnPropertyChange=!1;static _stylesCache=new Map;_cssCacheClearTimer;static _bindingsCache=new Map;static _bindingsCacheClearTimer;_notifyChangedProperty(e,t,i){}async getProperty(e,t){let i=await this.getProperties(e);return"properties"in i[0]?i.flatMap(r=>r.properties).find(r=>r.name==t):i.find(r=>r.name==t)}async setValue(e,t,i){let r=e[0].openGroup("property changed: "+t.name+" to "+i);for(let n of e)if(this.isHandledElement(n)&&this.getProperty(n,t.name)){if(t.propertyType==x.cssValue)await n.updateStyleInSheetOrLocalAsync(t.propertyName??t.name,i),n.element.setAttribute("style",n.element.getAttribute("style"));else{let o=t.attributeName;if(o||(o=z.camelToDashCase(t.name)),t.type==="object"){let a=JSON.stringify(i);t.propertyType==x.propertyAndAttribute?n.setPropertyAndAttribute(t.name,a):t.propertyType==x.attribute?n.setAttribute(o,a):t.propertyType==x.property&&n.setProperty(t.name,i)}else t.type=="boolean"&&(i===!1||i==null)?((t.propertyType==x.attribute||t.propertyType==x.propertyAndAttribute)&&n.removeAttribute(o),(t.propertyType==x.property||t.propertyType==x.propertyAndAttribute)&&n.setProperty(t.name,!1)):t.type=="boolean"&&i===!0?((t.propertyType==x.attribute||t.propertyType==x.propertyAndAttribute)&&n.setAttribute(o,""),(t.propertyType==x.property||t.propertyType==x.propertyAndAttribute)&&n.setProperty(t.name,!0)):t.propertyType==x.propertyAndAttribute?n.setPropertyAndAttribute(t.name,i):t.propertyType==x.attribute?n.setAttribute(o,i.toString()):t.propertyType==x.property&&n.setProperty(t.name,i)}this._notifyChangedProperty(n,t,i)}r.commit(),this._recreateElementsOnPropertyChange&&s.recreateElements(this,e)}getPropertyTarget(e,t){return t.propertyType==x.attribute?L.attribute:t.propertyType==x.cssValue?L.css:L.property}clearValue(e,t,i){let r=e[0].openGroup("property cleared: "+t.name);for(let n of e){if(i!="binding"){if(t.propertyType==x.cssValue)n.removeStyle(t.propertyName??t.name);else if((t.propertyType==x.property||t.propertyType==x.propertyAndAttribute)&&(n.element[t.propertyName??t.name]=null),t.propertyType==x.attribute||t.propertyType==x.propertyAndAttribute){let o=t.attributeName;o||(o=z.camelToDashCase(t.name)),n.removeAttribute(o)}}i!="value"&&n.serviceContainer.forSomeServicesTillResult("bindingService",o=>o.clearBinding(n,t.name,this.getPropertyTarget(n,t))),this._notifyChangedProperty(n,t,void 0)}r.commit(),this._recreateElementsOnPropertyChange&&s.recreateElements(this,e)}isSet(e,t){let i=!0,r=!1;if(e!=null&&e.length!==0){let n=t.attributeName;n||(n=z.camelToDashCase(t.name));for(let a of e){let l=!1;if(t.propertyType==x.cssValue?l=a.hasStyle(t.name):l=a.hasAttribute(n),i=i&&l,r=r||l,!i&&r)break}let o=s.getOrBuildCachedBindings(e[0]);if(t.propertyType==x.cssValue){if(o&&o.find(a=>(a.target==L.css||a.target==L.cssvar)&&a.targetName==t.name))return H.bound}else if(t.propertyType==x.attribute){if(o&&o.find(a=>a.target==L.attribute&&a.targetName==t.name))return H.bound}else if(t.propertyType==x.property){if(o&&o.find(a=>(a.target==L.property||a.target==L.explicitProperty)&&a.targetName==t.name))return H.bound}else if(o&&o.find(a=>(a.target==L.property||a.target==L.explicitProperty||a.target==L.attribute)&&a.targetName==t.name))return H.bound;if(!i&&t.propertyType==x.cssValue){let a=s._stylesCache.get(e[0]);if(a||(a=new Set(e[0].getAllStyles().filter(c=>c.selector!=null).flatMap(c=>c.declarations).map(c=>c.name)),s._stylesCache.set(e[0],a),clearTimeout(this._cssCacheClearTimer),this._cssCacheClearTimer=setTimeout(()=>s._stylesCache.clear(),30)),a.has(t.propertyName??t.name))return H.fromStylesheet}}else return H.none;return i?H.all:r?H.some:H.none}static getOrBuildCachedBindings(e){let t=s._bindingsCache.get(e);if(!t){let i=e.serviceContainer.getServices("bindingService");if(t=[],i)for(let r of i){let n=r.getBindings(e);n&&n.length>0&&t.push(...n)}s._bindingsCache.set(e,t),clearTimeout(this._bindingsCacheClearTimer),this._bindingsCacheClearTimer=setTimeout(()=>s._bindingsCache.clear(),30)}return t}getValue(e,t){if(e!=null&&e.length!==0)if(t.propertyType==x.cssValue){let i=e[0].getStyle(t.propertyName??t.name);for(let r of e)if(r.getStyle(t.name)!=i){i=null;break}return i}else if(t.propertyType==x.property){let i=t.propertyName;return i||(i=z.dashToCamelCase(t.name)),e[0].element[i]}else{let i=t.attributeName;if(i||(i=z.camelToDashCase(t.name)),t.type=="boolean"){if(e[0].hasAttribute(i)){let n=e[0].getAttribute(i);return n==""?!0:n}return!1}return e[0].getAttribute(i)}return null}getBinding(e,t){let i=s.getOrBuildCachedBindings(e[0]);return i!=null?t.propertyType==x.cssValue?i.find(r=>(r.target==L.css||r.target==L.cssvar)&&r.targetName==t.name):t.propertyType==x.attribute?i.find(r=>r.target==L.attribute&&r.targetName==t.name):t.propertyType==x.property?i.find(r=>(r.target==L.property||r.target==L.explicitProperty)&&r.targetName==t.name):i.find(r=>(r.target==L.property||r.target==L.explicitProperty||r.target==L.attribute)&&r.targetName==t.name):null}getUnsetValue(e,t){return t.propertyType==x.cssValue?e!=null&&e.length!==0&&e[0].nodeType==k.Element?window.getComputedStyle(e[0].element)[t.propertyName??t.name]:null:t.defaultValue}static recreateElements(e,t){for(let i of t){if(!e.isHandledElement(i))continue;let r="<"+i.name+" ";for(let o of i.element.attributes)r+=o.name+'="'+o.value.replaceAll('"',"&quot;")+'" ';r+="></"+i.name+">";let n=Gr(r,t[0].document);for(let o of[...i.element.childNodes])n.appendChild(o);n.style.pointerEvents="auto",i.node.insertAdjacentElement("beforebegin",n),i.node.parentNode&&i.node.parentNode.removeChild(i.node),i.replaceNode(n)}}getContextMenu(e,t){let i=[{title:"clear",action:r=>{t.service.clearValue(e,t,"value"),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)}},{title:"edit as text",action:(r,n,o,a)=>{a.close(),setTimeout(async()=>{let l=t.service.getValue(e,t),c=prompt(`edit value of '${t.name}' as string:`,l);c&&c!=l&&await t.service.setValue(e,t,c),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)},10)}}];return e[0].serviceContainer.config.openBindingsEditor&&(i.push({title:"-"},{title:"edit binding",action:()=>{let r=t.service.getPropertyTarget(e[0],t),n=t.service.getBinding(e,t);e[0].serviceContainer.config.openBindingsEditor(t,e,n,r)}}),t.service.isSet(e,t)==H.bound&&i.push({title:"clear binding",action:()=>{t.service.clearValue(e,t,"binding"),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)}})),i}}});var G,fe=g(()=>{"use strict";(function(s){s[s.none=0]="none",s[s.full=1]="full",s[s.fullOnValueChange=2]="fullOnValueChange",s[s.fullOnClassChange=3]="fullOnClassChange"})(G||(G={}))});var it,ai=g(()=>{"use strict";_e();Me();ue();fe();it=class extends ee{getRefreshMode(e){return G.fullOnClassChange}async getProperties(e){return this.isHandledElement(e)&&e.element?.constructor?.properties?this.parseProperties(e.element.constructor.properties):null}parseProperties(e){let t=[],i=Object.keys(e),r=Object.groupBy(i,n=>e[n].group??"");for(let n in r){let o={name:n,properties:[]};for(let a of r[n]){let l=e[a],c=l,h=null,d=null,p=!1,m=x.propertyAndAttribute;if(l.type&&(c=l.type,h=l.description,d=l.example,p=l.readonly,m=l.readonly?x.property:x.propertyAndAttribute),c===String){let u={name:a,type:"string",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(c===Object){let u={name:a,type:"object",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(c===Number){let u={name:a,type:"number",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(c===Date){let u={name:a,type:"date",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(c===Boolean){let u={name:a,type:"boolean",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(z.isTypescriptEnum(c)){let u={name:a,type:"enum",enumValues:z.getTypescriptEnumEntries(c),service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(typeof c=="string"){let u={name:a,type:c,service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else{let u={name:a,type:"string",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}}o.name==""?t.push(...o.properties):t.push(o)}return t}getUnsetValue(e,t){return e[0].element[t.propertyName??t.name]}}});var Ur,Wa=g(()=>{"use strict";ai();Ur=class extends it{name="polymer";isHandledElement(e){return e.element.constructor.polymerElementVersion!=null}_notifyChangedProperty(e,t,i){e.element.set(t.name,i)}}});var Yr,ja=g(()=>{"use strict";ai();Yr=class extends it{name="lit";isHandledElement(e){let t=e.element.constructor.__proto__;for(;t!=null;){if(t.name=="LitElement")return!0;if(t.name==null||t.name=="HTMLElement"||t.name=="Element"||t.name=="Node"||t.name=="HTMLElement")return!1;t=t.__proto__}return!1}_notifyChangedProperty(e,t,i){}}});var Xr,Ua=g(()=>{"use strict";ue();fe();Me();Xr=class extends ee{inputProperties=[{name:"type",type:"list",values:["text","number","button","checkbox","color","date","datetime-local","email","file","hidden","image","month","password","radio","range","reset","search","submit","tel","time","url","week"],service:this,defaultValue:"text",propertyType:x.propertyAndAttribute},{name:"value",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"placeholder",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"checked",type:"boolean",service:this,propertyType:x.propertyAndAttribute},{name:"min",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"max",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"readonly",type:"boolean",service:this,propertyType:x.propertyAndAttribute},{name:"valueAsDate",type:"string",service:this,propertyType:x.property},{name:"valueAsNumber",type:"string",service:this,propertyType:x.property}];textareaProperties=[{name:"value",type:"string",service:this,propertyType:x.property},{name:"placeholder",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"maxlength",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"cols",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"rows",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"readonly",type:"boolean",service:this,propertyType:x.propertyAndAttribute},{name:"resize",type:"list",values:["both","none","horizontal","vertical"],service:this,propertyType:x.cssValue}];selectProperties=[{name:"value",type:"string",service:this,propertyType:x.property},{name:"size",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"multiple",type:"boolean",service:this,propertyType:x.propertyAndAttribute}];buttonProperties=[{name:"type",type:"list",values:["button","submit","reset"],service:this,defaultValue:"button",propertyType:x.propertyAndAttribute},{name:"value",type:"string",service:this,propertyType:x.propertyAndAttribute}];anchorProperties=[{name:"href",type:"string",service:this,propertyType:x.propertyAndAttribute}];divProperties=[{name:"title",type:"string",service:this,propertyType:x.propertyAndAttribute}];imgProperties=[{name:"src",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"alt",type:"string",service:this,propertyType:x.propertyAndAttribute}];iframeProperties=[{name:"src",type:"string",service:this,propertyType:x.propertyAndAttribute}];formElementProperties=[{name:"autofocus",type:"boolean",service:this,propertyType:x.propertyAndAttribute},{name:"disabled",type:"boolean",service:this,propertyType:x.propertyAndAttribute},{name:"required",type:"boolean",service:this,propertyType:x.propertyAndAttribute}];meterProperties=[{name:"value",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"min",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"max",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"low",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"high",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"optimum",type:"number",service:this,propertyType:x.propertyAndAttribute}];name="native";getRefreshMode(e){return G.full}isHandledElement(e){switch(e.element.localName){case"input":case"textarea":case"select":case"button":case"a":case"div":case"span":case"br":case"img":case"iframe":case"meter":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"p":return!0}return!1}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){if(!this.isHandledElement(e))return null;switch(e.element.localName){case"input":return[...this.inputProperties,...this.formElementProperties];case"textarea":return[...this.textareaProperties,...this.formElementProperties];case"select":return[...this.selectProperties,...this.formElementProperties];case"button":return[...this.buttonProperties,...this.formElementProperties];case"a":return this.anchorProperties;case"div":return this.divProperties;case"img":return this.imgProperties;case"iframe":return this.iframeProperties;case"meter":return this.meterProperties;case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"p":return[]}return null}}});var Ge,li=g(()=>{"use strict";ue();Me();fe();Ge=class extends ee{getRefreshMode(e){return G.none}commonProperties=[{name:"class",type:"string",service:this,attributeName:"class",propertyName:"className",propertyType:x.attribute},{name:"title",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"part",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"tabindex",type:"number",service:this,propertyType:x.propertyAndAttribute}];name="common";isHandledElement(e){return!e.isRootItem}async getProperty(e,t){return this.commonProperties.find(i=>i.name==t)}async getProperties(e){return this.commonProperties}}});var Kr,Ya=g(()=>{"use strict";li();ue();Kr=class extends Ge{rectProperties=[{name:"x",type:"number",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"y",type:"number",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"width",type:"number",defaultValue:"auto",service:this,propertyType:x.propertyAndAttribute},{name:"height",type:"number",defaultValue:"auto",service:this,propertyType:x.propertyAndAttribute},{name:"rx",type:"number",defaultValue:"auto",service:this,propertyType:x.propertyAndAttribute},{name:"ry",type:"number",defaultValue:"auto",service:this,propertyType:x.propertyAndAttribute},{name:"pathLength",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"fill",type:"list",values:["transparent","black","white","blue","green","red","yellow","orange","brown","grey"],defaultValue:"transparent",service:this,propertyType:x.propertyAndAttribute},{name:"fill-opacity",type:"list",values:["0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"],defaultValue:"1",service:this,propertyType:x.propertyAndAttribute}];lineProperties=[{name:"x1",type:"number",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"y1",type:"number",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"x2",type:"number",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"y2",type:"number",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"pathLength",type:"number",service:this,propertyType:x.propertyAndAttribute}];ellipseProperties=[{name:"cx",type:"number",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"cy",type:"number",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"rx",type:"number",defaultValue:"auto",service:this,propertyType:x.propertyAndAttribute},{name:"ry",type:"number",defaultValue:"auto",service:this,propertyType:x.propertyAndAttribute},{name:"pathLength",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"fill",type:"list",values:["transparent","black","white","blue","green","red","yellow","orange","brown","grey"],defaultValue:"transparent",service:this,propertyType:x.propertyAndAttribute},{name:"fill-opacity",type:"list",values:["0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"],defaultValue:"1",service:this,propertyType:x.propertyAndAttribute}];pathProperties=[{name:"d",type:"string",defaultValue:"",service:this,propertyType:x.propertyAndAttribute},{name:"pathLength",type:"number",service:this,propertyType:x.propertyAndAttribute}];svgProperties=[{name:"width",type:"number",defaultValue:"auto",service:this,propertyType:x.cssValue},{name:"height",type:"number",defaultValue:"auto",service:this,propertyType:x.cssValue},{name:"viewBox",type:"number",service:this,propertyType:x.cssValue}];defaultProperties=[{name:"stroke",type:"list",values:["black","white","blue","green","red","yellow","orange","brown","grey"],defaultValue:"currentcolor",service:this,propertyType:x.propertyAndAttribute},{name:"stroke-width",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"stroke-opacity",type:"list",values:["0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1"],defaultValue:"1",service:this,propertyType:x.propertyAndAttribute},{name:"visibility",type:"list",values:["visible","hidden"],defaultValue:"visible",service:this,propertyType:x.propertyAndAttribute}];name="svg";isHandledElement(e){switch(e.element.localName){case"rect":case"line":case"ellipse":case"path":case"svg":return!0}return!1}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){if(!this.isHandledElement(e))return null;switch(e.element.localName){case"rect":return[...this.rectProperties,...this.defaultProperties];case"line":return[...this.lineProperties,...this.defaultProperties];case"ellipse":return[...this.ellipseProperties,...this.defaultProperties];case"path":return[...this.pathProperties,...this.defaultProperties];case"svg":return this.svgProperties}return null}}});var ci,Xa=g(()=>{"use strict";ci=class{constructor(e,t,i,r){this.title="Change Css Style "+t+" of &lt;"+e.name+"&gt;",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=r}title;get affectedItems(){return[this.designItem]}undo(){return this.oldValue===""||this.oldValue==null?(this.designItem._withoutUndoRemoveStyle(this.name),this.name.startsWith("--")?this.designItem.element.style.removeProperty(this.name):this.designItem.element.style[this.name]="",[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.newValue,newValue:null}]):(this.designItem._withoutUndoSetStyle(this.name,this.oldValue),this.name.startsWith("--")?this.designItem.element.style.setProperty(this.name,this.oldValue):this.designItem.element.style[this.name]=this.oldValue,[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.newValue,newValue:this.oldValue}])}do(){return this.newValue===""||this.newValue==null?(this.designItem._withoutUndoRemoveStyle(this.name),this.name.startsWith("--")?this.designItem.element.style.removeProperty(this.name):this.designItem.element.style[this.name]="",[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.oldValue,newValue:null}]):(this.designItem._withoutUndoSetStyle(this.name,this.newValue),this.name.startsWith("--")?this.designItem.element.style.setProperty(this.name,this.newValue):this.designItem.element.style[this.name]=this.newValue,[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.oldValue,newValue:this.newValue}])}designItem;name;newValue;oldValue;mergeWith(e){return!1}}});var er,Ka=g(()=>{"use strict";er=class s{constructor(e,t,i,r){this.title="Change Attribute "+t+" of &lt;"+e.name+"&gt;",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=r}title;get affectedItems(){return[this.designItem]}undo(){if(this.oldValue==null)return this.designItem._withoutUndoRemoveAttribute(this.name),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:null}];{let e=this.oldValue;return typeof this.oldValue!="string"&&(e=this.oldValue.toString()),this.designItem._withoutUndoSetAttribute(this.name,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:e}]}}do(){if(this.newValue==null)return this.designItem._withoutUndoRemoveAttribute(this.name),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:null}];{let e=this.newValue;return typeof this.newValue!="string"&&(e=this.newValue.toString()),this.designItem._withoutUndoSetAttribute(this.name,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.oldValue,newValue:e}]}}designItem;name;newValue;oldValue;mergeWith(e){return e instanceof s&&this.designItem===e.designItem&&this.name===e.name?(this.newValue=e.newValue,!0):!1}}});var P,$e=g(()=>{"use strict";(function(s){s[s.Directly=0]="Directly",s[s.Permanent=1]="Permanent",s[s.Selection=2]="Selection",s[s.PrimarySelection=3]="PrimarySelection",s[s.PrimarySelectionContainer=4]="PrimarySelectionContainer",s[s.MouseOver=5]="MouseOver",s[s.OnlyOneItemSelected=6]="OnlyOneItemSelected",s[s.MultipleItemsSelected=7]="MultipleItemsSelected",s[s.ContainerDragOverAndCanBeEntered=8]="ContainerDragOverAndCanBeEntered",s[s.ContainerExternalDragOverAndCanBeEntered=9]="ContainerExternalDragOverAndCanBeEntered",s[s.ContainerDrag=10]="ContainerDrag",s[s.Doubleclick=11]="Doubleclick",s[s.Placement=12]="Placement",s[s.PrimarySelectionAndCanBeEntered=13]="PrimarySelectionAndCanBeEntered",s[s.PrimarySelectionContainerAndCanBeEntered=14]="PrimarySelectionContainerAndCanBeEntered",s[s.PrimarySelectionRefreshed=15]="PrimarySelectionRefreshed",s[s.ManualApplied=16]="ManualApplied"})(P||(P={}))});var rt,$r,Zr,$a=g(()=>{"use strict";(function(s){s[s.Name=0]="Name",s[s.Value=1]="Value",s[s.InQuote=2]="InQuote"})(rt||(rt={}));$r=class{constructor(e,t){this.name=e.trim(),this.value=t.trim()}name;value},Zr=class{entries=[];parse(e,t="'"){this.entries=[];let i="",r="",n=rt.Name;for(let o=0;o<e.length;o++){let a=e[o];n===rt.Name?a===":"?n=rt.Value:a===";"?i="":i+=a:n===rt.Value?a===";"?(this.entries.push(new $r(i,r)),i="",r="",n=rt.Name):(a===t&&(n=rt.InQuote),r+=a):n===rt.InQuote&&(a==="\\"?(r+=a,o++,a=e[o],r+=a):a===t?(r+=a,n=rt.Value):r+=a)}i.trim()!==""&&this.entries.push(new $r(i,r))}}});var Tt,Za=g(()=>{"use strict";Tt=class{constructor(e,t,i){this.title="Move or Insert Item",this.designItem=e,this.newParent=t,this.newIndex=i}title;get affectedItems(){return this.oldParent?[this.designItem,this.newParent,this.oldParent]:[this.designItem,this.newParent]}undo(){return this.oldParent?(this.oldParent._insertChildInternal(this.designItem,this.oldIndex),[{changeType:"moved",designItems:[this.designItem]}]):(this.designItem.parent._removeChildInternal(this.designItem),[{changeType:"removed",designItems:[this.designItem]}])}do(){return this.oldParent=this.designItem.parent,this.oldParent&&(this.oldIndex=this.designItem.parent.indexOf(this.designItem)),this.newParent._insertChildInternal(this.designItem,this.newIndex),[{changeType:this.oldParent?"moved":"added",designItems:[this.designItem]}]}designItem;newParent;newIndex;oldParent;oldIndex;newItem;mergeWith(e){return!1}}});var Qr,Qa=g(()=>{"use strict";Qr=class{_textHolder="";indent=4;level=0;get position(){return this._textHolder.length}isLastCharNewline(){return this._textHolder[this._textHolder.length-1]===`
1
+ var Ma=Object.defineProperty;var Ym=Object.getOwnPropertyDescriptor;var Xm=Object.getOwnPropertyNames;var Km=Object.prototype.hasOwnProperty;var g=(s,e)=>()=>(s&&(e=s(s=0)),e);var Rd=(s,e)=>{for(var t in e)Ma(s,t,{get:e[t],enumerable:!0})},$m=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Xm(e))!Km.call(s,r)&&r!==t&&Ma(s,r,{get:()=>e[r],enumerable:!(i=Ym(e,r))||i.enumerable});return s};var zd=s=>$m(Ma({},"__esModule",{value:!0}),s);function ni(s){let e=s?.trim()??"";if(!e)return{kind:"empty"};let t=e.match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:([a-z%]+))?$/i);if(!t)return{kind:"text",text:e};let i=Number(t[1]);return Number.isNaN(i)?{kind:"text",text:e}:{kind:"numeric",numberText:t[1],value:i,unit:t[2]?.toLowerCase()??""}}function Lr(s,e=4){if(!Number.isFinite(s))return"0";let t=10**Math.max(0,e),i=Math.round(s*t)/t;return Object.is(i,-0)?"0":`${i}`}function si(s,e){let t=s?.trim()??"";return t?t+(e??""):""}function Bd(s){return s===""?" ":s}function Hd(s){let e=(s??[]).map(t=>t==null?null:t.trim()).filter(t=>t!=null);return[...new Set(e)]}function Gd(s,e,t){return s!=null&&t.includes(s)?s:e??t[0]??null}function Wd(s,e,t){if(t!=null){let i=s?.[t];if(Number.isFinite(i)&&i>0)return i}return e}var Na=g(()=>{"use strict"});import{BaseCustomWebComponentConstructorAppend as Jm,css as eu,html as tu,TypedEvent as La}from"@node-projects/base-custom-webcomponent";var Oa,iu,$i,Va=g(()=>{"use strict";Na();Na();Oa="__node-projects-custom-value__",iu="\u22EE",$i=class extends Jm{static style=eu`:host{display:block;width:100%;min-width:0}#container{display:grid;gap:0;grid-template-columns:minmax(0,1fr) auto 16px;width:100%;height:24px;align-items:stretch}#value-wrapper{display:grid;grid-template-columns:14px minmax(0,1fr);min-width:0}#input,#scrubber,#select,#stepper button{border:none;box-sizing:border-box;height:24px;min-height:24px;background:0 0;color:inherit;font:inherit;outline:0;box-shadow:none}#scrubber,#stepper button{padding:0;line-height:1}#scrubber{border-right:0;cursor:ns-resize;font-size:11px;letter-spacing:-1px}#input{border-left:0;border-right:0;min-width:0;text-align:right}#input:focus,#scrubber:focus,#select:focus,#stepper button:focus{outline:0;box-shadow:none;border-color:var(--input-border-color,#596c7a)}#input[disabled],#scrubber[disabled]{cursor:default}#input[disabled]{color:inherit;opacity:1;-webkit-text-fill-color:currentColor}#select{border-left:0;padding:0 15px 0 2px;line-height:1;-webkit-appearance:none;appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4'%3E%3Cpath d='M0 0l4 4 4-4z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 2px center}#measure{position:absolute;visibility:hidden;white-space:nowrap;font:inherit;pointer-events:none}#stepper{display:grid;height:24px;min-height:24px;overflow:hidden;grid-template-rows:repeat(2,minmax(0,1fr))}#stepper button{height:auto;min-height:0;width:16px;min-width:16px;font-size:10px}`;static template=tu`<div id="container"><div id="value-wrapper"><button id="scrubber" type="button" aria-label="Drag to change value">${iu}</button> <input id="input" type="text" spellcheck="false"></div><select id="select"></select><div id="stepper"><button id="increase" type="button" aria-label="Increase value">+</button> <button id="decrease" type="button" aria-label="Decrease value">-</button></div><span id="measure"></span></div>`;_value="";get value(){return this._value}set value(e){this._setValue(e,!1,!1)}valueChanged=new La;valuePreviewChanged=new La;valuePreviewFinished=new La;_units=["px","%","pt"];get units(){return[...this._units]}set units(e){this._units=this._normalizeOptionValues(e),this._lastNumericUnit=this._units[0]??this._lastNumericUnit,this._updateValue()}_fixedValues=[];get fixedValues(){return[...this._fixedValues]}set fixedValues(e){this._fixedValues=this._normalizeOptionValues(e),this._updateValue()}_step=1;get step(){return this._step}set step(e){this._step=Number.isFinite(e)&&e>0?e:1}_unitSteps={};get unitSteps(){return{...this._unitSteps}}set unitSteps(e){this._unitSteps=e??{}}_min=null;get min(){return this._min}set min(e){this._min=Number.isFinite(e)?e:null}_max=null;get max(){return this._max}set max(e){this._max=Number.isFinite(e)?e:null}_readOnly=!1;get readOnly(){return this._readOnly}set readOnly(e){this._readOnly=e,this._applyReadonlyState()}get isInPreview(){return this._previewStartValue!=null}_allowCustomValue=!0;get allowCustomValue(){return this._allowCustomValue}set allowCustomValue(e){this._allowCustomValue=e,this._updateValue()}_unitValueConverter;get unitValueConverter(){return this._unitValueConverter}set unitValueConverter(e){this._unitValueConverter=e}_input;_select;_measure;_scrubberButton;_increaseButton;_decreaseButton;_lastNumericValue=0;_lastNumericUnit="px";_dragPointerId=null;_dragStartY=0;_dragStartNumericValue=0;_appliedDragSteps=0;_previewStartValue=null;_previewChanged=!1;_displayValueLock=null;_stepperPointerId=null;_stepperDirection=0;_stepperRepeatTimeout=null;_stepperRepeatInterval=null;_windowDragPointerMoveHandler=e=>this._handleWindowDragPointerMove(e);_windowDragPointerUpHandler=e=>this._finishDragInteractionForPointerEvent(e,!1);_windowDragPointerCancelHandler=e=>this._finishDragInteractionForPointerEvent(e,!0);_windowDragBlurHandler=()=>this._finishDragInteraction(!1);_windowPointerUpHandler=e=>this._handleWindowStepperPointerEnd(e);_windowPointerCancelHandler=e=>this._handleWindowStepperPointerEnd(e);_windowBlurHandler=()=>this._finishStepperInteraction(!1);_preferCustomMode=!1;constructor(){super(),this._restoreCachedInititalValues(),this._input=this._getDomElement("input"),this._select=this._getDomElement("select"),this._measure=this._getDomElement("measure"),this._scrubberButton=this._getDomElement("scrubber"),this._increaseButton=this._getDomElement("increase"),this._decreaseButton=this._getDomElement("decrease")}ready(){this._parseAttributesToProperties(),this._wireEvents(),this._updateValue()}_wireEvents(){this._input.addEventListener("change",()=>this._applyTypedValue()),this._input.addEventListener("keydown",e=>{e.key==="Enter"&&(this._applyTypedValue(),this._input.blur())}),this._scrubberButton.addEventListener("pointerdown",e=>this._handlePointerDown(e)),this._select.addEventListener("change",()=>this._applySelectedMode()),this._increaseButton.addEventListener("pointerdown",e=>this._handleStepperPointerDown(e,1)),this._decreaseButton.addEventListener("pointerdown",e=>this._handleStepperPointerDown(e,-1))}_handlePointerDown(e){if(!this._readOnly&&!(!this._isSelectedUnitMode()&&!this._switchToUnitModeForInteraction())){this._dragPointerId=e.pointerId,this._dragStartY=e.clientY,this._dragStartNumericValue=this._readEditableNumericValue(this._select.value),this._appliedDragSteps=0,this._startPreviewSession(),this._attachDragWindowListeners();try{this._scrubberButton.setPointerCapture(e.pointerId)}catch{}e.preventDefault()}}_handleWindowDragPointerMove(e){if(this._dragPointerId!==e.pointerId||!this._isSelectedUnitMode())return;let t=this._calculateDraggedStepCount(this._dragStartY-e.clientY);if(t===this._appliedDragSteps)return;this._appliedDragSteps=t;let i=this._select.value,r=this._getEffectiveStep(i);this._previewNumericValue(this._getInteractiveStepValue(this._dragStartNumericValue,t,r),i,r),e.preventDefault()}_finishDragInteractionForPointerEvent(e,t){this._dragPointerId===e.pointerId&&this._finishDragInteraction(t,e.pointerId)}_finishDragInteraction(e,t){if(this._dragPointerId!=null){if(this._dragPointerId=null,this._appliedDragSteps=0,this._detachDragWindowListeners(),t!=null)try{this._scrubberButton.hasPointerCapture(t)&&this._scrubberButton.releasePointerCapture(t)}catch{}this._finishPreviewSession(e)}}_handleStepperPointerDown(e,t){this._readOnly||!this._isSelectedUnitMode()&&!this._switchToUnitModeForInteraction()||(this._finishStepperInteraction(!0),this._stepperPointerId=e.pointerId,this._stepperDirection=t,this._attachStepperWindowListeners(),this._startPreviewSession(),this._applyStepPreview(t),this._stepperRepeatTimeout=window.setTimeout(()=>{this._stepperRepeatInterval=window.setInterval(()=>this._applyStepPreview(this._stepperDirection),50)},350),e.preventDefault())}_handleWindowStepperPointerEnd(e){this._stepperPointerId===e.pointerId&&this._finishStepperInteraction(!1)}_finishStepperInteraction(e){this._stepperPointerId!=null&&(this._stepperPointerId=null,this._stepperDirection=0,this._detachStepperWindowListeners(),this._stopStepperRepeat(),this._finishPreviewSession(e))}_applySelectedMode(){let e=this._select.selectedOptions.item(0);if(!e)return;let t=e.dataset.kind;if(t==="fixed"){this._commitValue(e.value);return}if(t==="custom"){this._preferCustomMode=!0,this._updateValue(),requestAnimationFrame(()=>{this._input.focus(),this._input.select()});return}let i=e.value;this._lastNumericUnit=i,this._preferCustomMode=!1;let r=ni(this._value);if(r.kind==="numeric"){let a=this._convertNumericValue(r,i);this._commitValue(a);return}let n=this._resolveCurrentValueForUnit(i);if(n!=null){this._commitValue(n);return}if(r.kind==="empty"){this._updateValue(),this._input.focus();return}let o=Number(this._input.value);if(!Number.isNaN(o)){this._applyNumericValue(o,i);return}this._commitValue(""),this._input.focus()}_applyTypedValue(){let e=this._select.selectedOptions.item(0),t=e?.dataset.kind;if(t==="fixed")return;if(t==="custom"){this._commitValue(this._input.value);return}let i=this._input.value?.trim()??"";if(!i){this._commitValue("");return}let r=Number(i);Number.isNaN(r)||(this._lastNumericValue=this._clampNumericValue(r)),this._commitValue(si(i,e?.value??""))}_updateValue(){if(!this._input||!this._select)return;this._previewStartValue==null&&this._renderSelectOptions();let e=this._getDisplayState(this._displayValueLock??this._value);if(this._input.value=e.inputValue,this._input.style.display=e.inputVisible?"":"none",this._input.disabled=this._readOnly||!e.inputEnabled,this._select.value=e.selectValue,this._autoSizeSelect(),e.mode==="unit"&&e.selectedUnit!=null&&(this._lastNumericUnit=e.selectedUnit),e.mode==="unit"&&e.inputValue!==""){let r=Number(e.inputValue);Number.isNaN(r)||(this._lastNumericValue=this._clampNumericValue(r))}let t=this._units.length>0,i=this._readOnly||!t||e.mode==="custom";this._scrubberButton.disabled=i,this._increaseButton.disabled=i,this._decreaseButton.disabled=i,this._applyReadonlyState()}_getDisplayState(e){let t=ni(e);if(t.kind==="numeric"){if(this._preferCustomMode)return this._createCustomDisplayState(t.numberText);if(t.unit&&this._units.length&&!this._units.includes(t.unit))return this._createCustomDisplayState(e);let r=Gd(t.unit,this._lastNumericUnit,this._units)??"";return{mode:"unit",inputValue:t.numberText,inputVisible:!0,inputEnabled:!0,selectValue:this._units.includes(r)?r:this._select.value||Oa,selectedUnit:r}}if(t.kind==="text")return!this._preferCustomMode&&this._fixedValues.includes(t.text)?{mode:"fixed",inputValue:"",inputVisible:!0,inputEnabled:!1,selectValue:t.text}:this._createCustomDisplayState(t.text);if(this._preferCustomMode)return this._createCustomDisplayState("");let i=this._lastNumericUnit??this._units[0]??"";return this._units.includes(i)?{mode:"unit",inputValue:"",inputVisible:!0,inputEnabled:!0,selectValue:i,selectedUnit:i}:this._createCustomDisplayState("")}_createCustomDisplayState(e){return!this._allowCustomValue&&this._units.length?{mode:"unit",inputValue:e,inputVisible:!0,inputEnabled:!0,selectValue:this._units[0],selectedUnit:this._units[0]}:{mode:"custom",inputValue:e,inputVisible:!0,inputEnabled:!0,selectValue:Oa}}_renderSelectOptions(){let e=this._select.value;if(this._select.replaceChildren(),this._units.length){let t=document.createElement("optgroup");t.label="Units";for(let i of this._units)t.appendChild(this._createOption(Bd(i),i,"unit"));this._select.appendChild(t)}if(this._fixedValues.length){let t=document.createElement("optgroup");t.label="Values";for(let i of this._fixedValues)t.appendChild(this._createOption(i,i,"fixed"));this._select.appendChild(t)}(this._allowCustomValue||this._select.options.length===0)&&this._select.appendChild(this._createOption("custom",Oa,"custom")),e!==""?this._select.value=e:this._select.querySelector('option[value=""]')&&(this._select.value="")}_createOption(e,t,i){let r=document.createElement("option");return r.text=e,r.value=t,r.dataset.kind=i,r}_autoSizeSelect(){if(!this._measure||!this._select)return;let e=this._select.selectedOptions.item(0);this._measure.textContent=e?.text??"";let t=this._measure.offsetWidth;t>0?this._select.style.width=t+17+"px":requestAnimationFrame(()=>this._autoSizeSelect())}_applyReadonlyState(){!this._input||!this._select||(this._input.readOnly=this._readOnly,this._select.disabled=this._readOnly)}_convertNumericValue(e,t){if(t==null)return this._value;let i=e.unit;return this._unitValueConverter?.({value:e.value,numberText:e.numberText,rawValue:this._value,fromUnit:i,toUnit:t})??si(e.numberText,t)}_resolveCurrentValueForUnit(e){if(e==null)return null;let t=this._unitValueConverter?.({value:Number.NaN,numberText:"",rawValue:this._value,fromUnit:"",toUnit:e})?.trim();return t||null}_readEditableNumericValue(e){let t=ni(this._value);if(t.kind==="numeric"){let i=this._convertNumericValue(t,e),r=ni(i);return r.kind==="numeric"?r.value:t.value}if(this._input.value?.trim()){let i=Number(this._input.value);if(!Number.isNaN(i))return i}return this._lastNumericValue}_applyNumericValue(e,t){this._lastNumericValue=this._clampNumericValue(e),this._lastNumericUnit=t,this._commitValue(si(Lr(this._lastNumericValue),t))}_previewNumericValue(e,t,i){this._lastNumericValue=this._clampNumericValue(e),this._lastNumericUnit=t;let r=i??this._getEffectiveStep(t);this._setValue(si(this._formatInteractiveNumericValue(this._lastNumericValue,r),t),!1,!0)}_commitValue(e){this._setValue(e,!0,!1)}_setValue(e,t,i){let r=e??"";if(!t&&!i&&this._previewStartValue!=null)return;let n=this._value;this._value=r,i?this._displayValueLock=r:this._displayValueLock!=null&&(r===this._displayValueLock||r!==n)&&(this._displayValueLock=null),this._preferCustomMode=!1,this._updateValue(),n!==r&&(i&&(this._previewChanged=!0,this.valuePreviewChanged.emit({newValue:r,oldValue:n})),t&&this.valueChanged.emit({newValue:r,oldValue:n}))}_startPreviewSession(){this._previewStartValue==null&&(this._previewStartValue=this._value,this._previewChanged=!1)}_finishPreviewSession(e){if(this._previewStartValue==null)return;let t=this._previewStartValue,i=this._displayValueLock??this._value,r=this._previewChanged&&t!==i,n=e||!r;this._previewStartValue=null,this._previewChanged=!1,n?(this._displayValueLock=null,this._value=t,this._updateValue()):(this._displayValueLock=i,this._updateValue()),this.valuePreviewFinished.emit({newValue:i,oldValue:t,wasCancelled:n})}_applyStepPreview(e){let t=this._select.value,i=this._getEffectiveStep(t);this._previewNumericValue(this._getInteractiveStepValue(this._readEditableNumericValue(t),e,i),t,i)}_stopStepperRepeat(){this._stepperRepeatTimeout!=null&&(window.clearTimeout(this._stepperRepeatTimeout),this._stepperRepeatTimeout=null),this._stepperRepeatInterval!=null&&(window.clearInterval(this._stepperRepeatInterval),this._stepperRepeatInterval=null)}_attachStepperWindowListeners(){window.addEventListener("pointerup",this._windowPointerUpHandler,!0),window.addEventListener("pointercancel",this._windowPointerCancelHandler,!0),window.addEventListener("blur",this._windowBlurHandler)}_attachDragWindowListeners(){window.addEventListener("pointermove",this._windowDragPointerMoveHandler,!0),window.addEventListener("pointerup",this._windowDragPointerUpHandler,!0),window.addEventListener("pointercancel",this._windowDragPointerCancelHandler,!0),window.addEventListener("blur",this._windowDragBlurHandler)}_detachStepperWindowListeners(){window.removeEventListener("pointerup",this._windowPointerUpHandler,!0),window.removeEventListener("pointercancel",this._windowPointerCancelHandler,!0),window.removeEventListener("blur",this._windowBlurHandler)}_detachDragWindowListeners(){window.removeEventListener("pointermove",this._windowDragPointerMoveHandler,!0),window.removeEventListener("pointerup",this._windowDragPointerUpHandler,!0),window.removeEventListener("pointercancel",this._windowDragPointerCancelHandler,!0),window.removeEventListener("blur",this._windowDragBlurHandler)}_calculateDraggedStepCount(e){let t=Math.abs(e),i=Math.min(t,20)/5,r=Math.max(Math.min(t-20,40),0)/3,n=Math.max(t-60,0)/2,o=Math.trunc(i+r+n);return Math.sign(e)*o}_getEffectiveStep(e){return Wd(this._unitSteps,this._step,e)}_getInteractiveStepValue(e,t,i){let r=i??this._step,n=this._clampNumericValue(e);if(!Number.isFinite(n)||!Number.isFinite(t)||t===0)return n;let o=this._min??0,a=(n-o)/r,l=Math.round(a),c=Math.abs(a-l)<1e-9,h;t>0?h=(c?l+1:Math.ceil(a))+t-1:h=(c?l-1:Math.floor(a))+t+1;let d=o+h*r;return this._clampNumericValue(this._roundToStepPrecision(d,r))}_formatInteractiveNumericValue(e,t){let i=t??this._step;return Lr(this._roundToStepPrecision(e,i),this._getStepPrecision(i))}_roundToStepPrecision(e,t){let r=10**this._getStepPrecision(t);return Math.round(e*r)/r}_getStepPrecision(e){let t=`${e??this._step}`.toLowerCase();if(t.includes("e-")){let[r,n]=t.split("e-"),o=Number(n),a=r.includes(".")?r.length-r.indexOf(".")-1:0;return o+a}let i=t.indexOf(".");return i>=0?t.length-i-1:0}_switchToUnitModeForInteraction(){let e=this._lastNumericUnit??this._units[0];if(e==null)return!1;this._preferCustomMode=!1;let t=this._resolveCurrentValueForUnit(e);return t!=null?(this._commitValue(t),this._isSelectedUnitMode()):(this._applyNumericValue(this._lastNumericValue,e),this._isSelectedUnitMode())}_isSelectedUnitMode(){return this._select.selectedOptions.item(0)?.dataset.kind==="unit"}_normalizeOptionValues(e){return Hd(e)}_clampNumericValue(e){let t=e;return this._min!=null&&(t=Math.max(this._min,t)),this._max!=null&&(t=Math.min(this._max,t)),t}};customElements.define("node-projects-numeric-style-input",$i)});import{TypedEvent as hu}from"@node-projects/base-custom-webcomponent";var oi,Rr=g(()=>{"use strict";oi=class{_services=new Map;servicesChanged=new hu;getLastService(e){let t=this._services.get(e);return t&&t.length?t[t.length-1]:null}getServices(e){return this._services.get(e)}register(e,t){this._services.has(e)||this._services.set(e,[]),this._services.get(e).push(t),this.servicesChanged.emit({serviceName:e})}registerLast(e,t){this._services.has(e)||this._services.set(e,[]),this._services.get(e).unshift(t),this.servicesChanged.emit({serviceName:e})}registerMultiple(e,t){for(let i of e)this._services.has(i)||this._services.set(i,[]),this._services.get(i).push(t),this.servicesChanged.emit({serviceName:i})}forSomeServicesTillResult(e,t){let i=this.getServices(e);if(i==null)return null;for(let r=i.length-1;r>=0;r--){let n=i[r],o=t(n);if(o!=null)return o}return null}getLastServiceWhere(e,t){let i=this.getServices(e);if(i==null)return null;for(let r=i.length-1;r>=0;r--){let n=i[r];if(t(n))return n}return null}getLastServiceResult(e,t){let i=this.getServices(e);if(i==null)return null;for(let r=i.length-1;r>=0;r--){let n=i[r],o=t(n);if(o)return o}return null}async getLastServiceWhereAsync(e,t){let i=this.getServices(e);if(i==null)return null;for(let r=i.length-1;r>=0;r--){let n=i[r];if(await t(n))return n}return null}}});import{BaseCustomWebComponentLazyAppend as du,css as pu}from"@node-projects/base-custom-webcomponent";var Zi,Fa=g(()=>{"use strict";Zi=class extends du{_placeholder;_loading;static style=pu`:host{display:block;overflow:hidden;background:#fff;height:100%;width:100%;position:relative}#placeholder{position:absolute;left:24px;height:100%;width:calc(100% - 24px)}#loading{position:absolute;top:60px;left:20px}#left{position:absolute;left:0;top:0;height:100%;width:24px;border-right:solid #fff 1px;box-sizing:border-box;background:#000}span{color:#fff;rotate:270deg;display:block;position:absolute;top:35px;left:-38px;font-weight:600;font-family:monospace;font-size:24px}`;constructor(){super(),this._placeholder=document.createElement("div"),this._placeholder.id="placeholder",this._placeholder.style.transform="scale(1)",this.shadowRoot.appendChild(this._placeholder),this._loading=document.createElement("div"),this._loading.id="loading",this._loading.textContent="\u{1F6C0} Hold on, loading...",this.shadowRoot.appendChild(this._loading);let e=document.createElement("div");e.id="left";let t=document.createElement("span");t.innerText="PREVIEW",e.appendChild(t),this.shadowRoot.appendChild(e)}dispose(){}executeCommand;canExecuteCommand;async display(e,t,i,r){this._loading.hidden=!1,await e.demoProviderService.provideDemo(this._placeholder,e,t,i,r),this._loading.hidden=!0}};customElements.define("node-projects-demo-view",Zi)});import{PropertyChangedArgs as zr,TypedEvent as Qi}from"@node-projects/base-custom-webcomponent";var Fr,Ud=g(()=>{"use strict";Fr=class{_serviceContainer;_tool;_strokeColor="black";_strokeThickness="3";_fillBrush="none";constructor(e){this._serviceContainer=e}set tool(e){if(this._tool!==e){let t=this._tool;t&&t.dispose(),this._tool=e;let i=null;for(let r of this._serviceContainer.designerTools)r[1]==e&&(i=r[0]);this.onToolChanged.emit(new zr({name:i,tool:e},{name:null,tool:t})),this._tool&&this._tool.activated(this._serviceContainer)}}get tool(){return this._tool}onToolChanged=new Qi;finishedWithTool=()=>this.tool=null;set strokeColor(e){if(this._strokeColor!==e){let t=this._strokeColor;this._strokeColor=e,this.onStrokeColorChanged.emit(new zr(e,t))}}get strokeColor(){return this._strokeColor}onStrokeColorChanged=new Qi;set strokeThickness(e){if(this._strokeThickness!==e){let t=this._strokeThickness;this._strokeThickness=e,this.onStrokeThicknessChanged.emit(new zr(e,t))}}get strokeThickness(){return this._strokeThickness}onStrokeThicknessChanged=new Qi;set fillBrush(e){if(this._fillBrush=e,this._fillBrush!==e){let t=this._fillBrush;this._fillBrush=e,this.onFillBrushChanged.emit(new zr(e,t))}}get fillBrush(){return this._fillBrush}onFillBrushChanged=new Qi;showConfigClicked=new Qi}});import{BaseCustomWebComponentConstructorAppend as mu,css as uu,html as fu,TypedEvent as gu}from"@node-projects/base-custom-webcomponent";var qi,Ba=g(()=>{"use strict";qi=class extends mu{dispose(){}canvasElement;elementsToPackages;onTextChanged=new gu;_text;static style=uu`:host{display:block;height:100%;width:100%}textarea{height:100%;width:100%;resize:none;white-space:nowrap;box-sizing:border-box}`;static template=fu`<div id="container" style="width:100%;height:100%;position:absolute"><textarea id="text"></textarea></div>`;executeCommand(e){}canExecuteCommand(e){return!1}async ready(){this._text=this._getDomElement("text")}focusEditor(){requestAnimationFrame(()=>{this.focus(),this._text.focus()})}activated(){}update(e){this._text.value=e}getText(){return this._text.value}setSelection(e){this._text.setSelectionRange(e.start,e.start+e.length)}};customElements.define("node-projects-code-view-simple",qi)});var yu,Br,Ha=g(()=>{"use strict";Rr();Fa();Ud();Ba();yu=!!(navigator.maxTouchPoints&&navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome")),Br=class extends oi{config={codeViewWidget:qi,demoViewWidget:Zi};designerExtensions=new Map;removeDesignerExtensionOfType(e,t){let i=this.designerExtensions.get(e);for(let r=0;r<i.length;r++)i[r].constructor===t&&i.splice(r,1)}instanceServiceContainerCreatedCallbacks=[];designViewConfigButtons=[];designViewToolbarButtons=[];designerPointerExtensions=[];designerContextMenuExtensions;overlayLayerViewAdditionalStyles=[];globalContext=new Fr(this);options={zoomDesignerBackground:!0,roundPixelsToDecimalPlaces:0,resizerPixelSize:yu?8:3};designerTools=new Map;get bindingService(){return this.getLastService("bindingService")}get bindableObjectsServices(){return this.getServices("bindableObjectsService")}get bindableObjectDragDropService(){return this.getLastService("bindableObjectDragDropService")}get propertyGridDragDropService(){return this.getLastService("propertyGridDragDropService")}get dragDropService(){return this.getLastService("dragDropService")}get elementInteractionServices(){return this.getServices("elementInteractionService")}get propertiesServices(){return this.getServices("propertyService")}get attachedPropertyServices(){return this.getServices("attachedPropertyService")}get propertyGroupService(){return this.getLastService("propertyGroupsService")}get containerServices(){return this.getServices("containerService")}get snaplinesProviderService(){return this.getLastService("snaplinesProviderService")}get elementsServices(){return this.getServices("elementsService")}get eventsService(){return this.getServices("eventsService")}get instanceServices(){return this.getServices("instanceService")}get editorTypesServices(){return this.getServices("editorTypesService")}get htmlWriterService(){return this.getLastService("htmlWriterService")}get htmlParserService(){return this.getLastService("htmlParserService")}get intializationService(){return this.getLastService("intializationService")}get elementAtPointService(){return this.getLastService("elementAtPointService")}get externalDragDropService(){return this.getLastService("externalDragDropService")}get copyPasteService(){return this.getLastService("copyPasteService")}get modelCommandService(){return this.getLastService("modelCommandService")}get demoProviderService(){return this.getLastService("demoProviderService")}get designItemService(){return this.getLastService("designItemService")}get configUiServices(){return this.getServices("configUiService")}get refactorServices(){return this.getServices("refactorService")}get deletionService(){return this.getLastService("deletionService")}get referencesChangedService(){return this.getLastService("referencesChangedService")}get miniatureViewService(){return this.getLastService("miniatureViewService")}get pngCreatorService(){return this.getLastService("pngCreatorService")}get searchService(){return this.getLastService("searchService")}}});var R,_e=g(()=>{"use strict";R=class{static isTypescriptEnum(e){if(e&&typeof e=="object"&&e.constructor==Object){for(let t in e){let i=typeof e[t];if(i!=="string"&&i!=="number")return!1}return!0}return!1}static getTypescriptEnumEntries(e){let t=[];for(let i in e)isNaN(i)&&t.push([i,e[i]]);return t}static camelToDashCase(e){return e.replace(/([A-Z])/g,t=>`-${t[0].toLowerCase()}`)}static dashToCamelCase(e){return e.replace(/-([a-z])/g,t=>t[1].toUpperCase())}}});var G,pt=g(()=>{"use strict";(function(s){s.none="none",s.all="all",s.some="some",s.bound="bound",s.fromStylesheet="fromStylesheet"})(G||(G={}))});var L,Ke=g(()=>{"use strict";(function(s){s.explicitProperty="explicitProperty",s.property="property",s.attribute="attribute",s.class="class",s.css="css",s.cssvar="cssvar",s.event="event",s.content="content",s.visible="visible"})(L||(L={}))});var x,fe=g(()=>{"use strict";(function(s){s.property="property",s.attribute="attribute",s.propertyAndAttribute="propertyAndAttribute",s.cssValue="cssvalue",s.complex="complex",s.add="add"})(x||(x={}))});var I,q=g(()=>{"use strict";(function(s){s[s.Element=1]="Element",s[s.Attribute=2]="Attribute",s[s.TextNode=3]="TextNode",s[s.Comment=8]="Comment",s[s.Document=9]="Document",s[s.DocumentFragment=11]="DocumentFragment"})(I||(I={}))});function kv(s){return s.getRootNode()?.host?.localName=="node-projects-designer-canvas"}function Hr(s,e){return e.createRange().createContextualFragment(s,{includeShadowRoots:!0}).firstChild}function It(s,e){return s instanceof e||s instanceof(s.ownerDocument.defaultView??window)[e.name]}function Ji(s,...e){for(let t of e)if(s instanceof t||s instanceof(s.ownerDocument.defaultView??window)[t.name])return!0;return!1}function kt(s){return s==null||Ji(s,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement)?!1:(s.ownerDocument.defaultView??window).getComputedStyle(s).display.startsWith("inline")}function Ht(s){return s==null||Ji(s,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement)?!1:(s.ownerDocument.defaultView??window).getComputedStyle(s).display.startsWith("inline")}function Xd(s){if(Ji(s,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement)||It(s,MathMLElement))return Re.block;let e=(s.ownerDocument.defaultView??window).getComputedStyle(s).display;return e=="none"?Re.none:e.startsWith("inline")?Re.inline:Re.block}function Gr(s){return s.textContent.trim()==""&&s.textContent.indexOf("\xA0")<0}function Dv(){let s=document.activeElement,e=null;for(;s!=e;)e=s,s.shadowRoot!=null&&s.shadowRoot.activeElement&&(s=s.shadowRoot.activeElement);return s}function Yd(s){return s.assignedSlot?s.assignedSlot:s.parentElement==null&&It(s.parentNode,ShadowRoot)?s.parentNode.host:s.parentElement}function Tv(s){let e=Yd(s);for(;e;){let t=(s.ownerDocument.defaultView??window).getComputedStyle(s);if(t.position==="absolute"||t.position==="relative"||t.position==="fixed")return e;e=Yd(e)}return document.body}function Mv(s){if(It(s,HTMLElement))return{x:s.offsetLeft,y:s.offsetTop};{let e=Y(s),t=Y(s.parentElement);return{x:e.x-t.x,y:e.y-t.y}}}function Y(s){let e=s.getBoundingClientRect();if(e.width==0&&e.height==0&&(s.ownerDocument.defaultView??window).getComputedStyle(s).display=="contents")if(s.shadowRoot)for(let i of s.shadowRoot.children){let r=Y(i);e=new DOMRect(Math.min(e.x,r.x),Math.min(e.y,r.y),Math.max(e.width,r.width),Math.max(e.height,r.height))}else for(let i of s.children){let r=Y(i);e=new DOMRect(Math.min(e.x,r.x),Math.min(e.y,r.y),Math.max(e.width,r.width),Math.max(e.height,r.height))}return e}function Wr(s){let e=(s.ownerDocument.defaultView??window).getComputedStyle(s).zoom;if(!e||e==="normal")return 1;if(e.endsWith("%")){let i=parseFloat(e);return Number.isFinite(i)&&i>0?i/100:1}let t=parseFloat(e);return Number.isFinite(t)&&t>0?t:1}function Nv(s,e,t={}){let i=0,r=0,n;t?n=t[vu]??=new Map:n=new Map;let o=[],a=s;for(;a;){let l=n.get(a);if(l){i+=l.offsetLeft,r+=l.offsetTop,o.forEach(f=>{f.offsetLeft+=l.offsetLeft,f.offsetTop+=l.offsetTop});break}let c=a.offsetParent?a.offsetParent:a.getRootNode().host;Ji(a,SVGSVGElement,HTMLBodyElement,HTMLHtmlElement)?c=a.parentElement?a.parentElement:a.getRootNode().host:It(a,SVGGraphicsElement)?c=a.ownerSVGElement:It(a,MathMLElement)&&(c=a.parentElement??c);let h=0,d=0;if(It(a,HTMLElement)){let f=a.parentElement;for(;f!==null&&f!==c;)h+=f.scrollLeft,d+=f.scrollTop,f=f.parentElement}c&&(h+=c.scrollLeft,d+=c.scrollTop);let p=0,m=0;if(Ji(a,SVGSVGElement,MathMLElement)){let f=a.style.transform;a.style.transform="";let y=a.getBoundingClientRect(),v=a.parentElement?a.parentElement.getBoundingClientRect():a.getRootNode().host.getBoundingClientRect();a.style.transform=f,p=(y.left-v.left)/e,m=(y.top-v.top)/e}else if(It(a,SVGGraphicsElement)){let f=a.getBBox();p=f.x,m=f.y}else if(s==a&&(s===s.ownerDocument.body||It(s,HTMLHtmlElement))){let f=(s.ownerDocument.defaultView??window).getComputedStyle(s);p=s.offsetLeft-h+parseInt(f.marginLeft),m=s.offsetTop-d+parseInt(f.marginTop)}else p=a.offsetLeft-h,m=a.offsetTop-d;o.forEach(f=>{f.offsetLeft+=p,f.offsetTop+=m});let u={offsetLeft:p,offsetTop:m};o.push(u),n.set(a,u),i+=p,r+=m,a=c}return{offsetLeft:i,offsetTop:r}}function Kd(s){let e=parseInt(getComputedStyle(s).paddingLeft.replace("px",""))+parseInt(getComputedStyle(s).marginLeft.replace("px",""))+parseInt(getComputedStyle(s).borderLeft.replace("px",""))+parseInt(getComputedStyle(s).paddingRight.replace("px",""))+parseInt(getComputedStyle(s).marginRight.replace("px",""))+parseInt(getComputedStyle(s).borderRight.replace("px","")),t=parseInt(getComputedStyle(s).paddingTop.replace("px",""))+parseInt(getComputedStyle(s).marginTop.replace("px",""))+parseInt(getComputedStyle(s).borderTop.replace("px",""))+parseInt(getComputedStyle(s).paddingBottom.replace("px",""))+parseInt(getComputedStyle(s).marginBottom.replace("px",""))+parseInt(getComputedStyle(s).borderBottom.replace("px",""));return{x:e,y:t}}function Gt(s,e){let t={x:Number.MAX_VALUE,y:Number.MAX_VALUE},i={x:Number.MIN_VALUE,y:Number.MIN_VALUE},r;for(let n of s)n.nodeType==I.TextNode||n.nodeType==I.Comment||(r={x:e.getNormalizedElementCoordinates(n.element).x,y:e.getNormalizedElementCoordinates(n.element).y,width:e.getNormalizedElementCoordinates(n.element).width,height:e.getNormalizedElementCoordinates(n.element).height},r.x<t.x&&(t.x=r.x),r.y<t.y&&(t.y=r.y),r.x+r.width>i.x&&(i.x=r.x+r.width),r.y+r.height>i.y&&(i.y=r.y+r.height));return{x:t.x,y:t.y,width:i.x-t.x,height:i.y-t.y}}var Re,vu,le=g(()=>{"use strict";q();(function(s){s[s.none=0]="none",s[s.inline=1]="inline",s[s.block=2]="block"})(Re||(Re={}));vu=Symbol("windowOffsetsCacheKey")});var ee,Me=g(()=>{"use strict";pt();_e();Ke();fe();q();le();ee=class s{constructor(e){this._recreateElementsOnPropertyChange=e}_recreateElementsOnPropertyChange=!1;static _stylesCache=new Map;_cssCacheClearTimer;static _bindingsCache=new Map;static _bindingsCacheClearTimer;_notifyChangedProperty(e,t,i){}async getProperty(e,t){let i=await this.getProperties(e);return"properties"in i[0]?i.flatMap(r=>r.properties).find(r=>r.name==t):i.find(r=>r.name==t)}async setValue(e,t,i){let r=e[0].openGroup("property changed: "+t.name+" to "+i);for(let n of e)if(this.isHandledElement(n)&&this.getProperty(n,t.name)){if(t.propertyType==x.cssValue)await n.updateStyleInSheetOrLocalAsync(t.propertyName??t.name,i),n.element.setAttribute("style",n.element.getAttribute("style"));else{let o=t.attributeName;if(o||(o=R.camelToDashCase(t.name)),t.type==="object"){let a=JSON.stringify(i);t.propertyType==x.propertyAndAttribute?n.setPropertyAndAttribute(t.name,a):t.propertyType==x.attribute?n.setAttribute(o,a):t.propertyType==x.property&&n.setProperty(t.name,i)}else t.type=="boolean"&&(i===!1||i==null)?((t.propertyType==x.attribute||t.propertyType==x.propertyAndAttribute)&&n.removeAttribute(o),(t.propertyType==x.property||t.propertyType==x.propertyAndAttribute)&&n.setProperty(t.name,!1)):t.type=="boolean"&&i===!0?((t.propertyType==x.attribute||t.propertyType==x.propertyAndAttribute)&&n.setAttribute(o,""),(t.propertyType==x.property||t.propertyType==x.propertyAndAttribute)&&n.setProperty(t.name,!0)):t.propertyType==x.propertyAndAttribute?n.setPropertyAndAttribute(t.name,i):t.propertyType==x.attribute?n.setAttribute(o,i.toString()):t.propertyType==x.property&&n.setProperty(t.name,i)}this._notifyChangedProperty(n,t,i)}r.commit(),this._recreateElementsOnPropertyChange&&s.recreateElements(this,e)}getPropertyTarget(e,t){return t.propertyType==x.attribute?L.attribute:t.propertyType==x.cssValue?L.css:L.property}clearValue(e,t,i){let r=e[0].openGroup("property cleared: "+t.name);for(let n of e){if(i!="binding"){if(t.propertyType==x.cssValue)n.removeStyle(t.propertyName??t.name);else if((t.propertyType==x.property||t.propertyType==x.propertyAndAttribute)&&(n.element[t.propertyName??t.name]=null),t.propertyType==x.attribute||t.propertyType==x.propertyAndAttribute){let o=t.attributeName;o||(o=R.camelToDashCase(t.name)),n.removeAttribute(o)}}i!="value"&&n.serviceContainer.forSomeServicesTillResult("bindingService",o=>o.clearBinding(n,t.name,this.getPropertyTarget(n,t))),this._notifyChangedProperty(n,t,void 0)}r.commit(),this._recreateElementsOnPropertyChange&&s.recreateElements(this,e)}isSet(e,t){let i=!0,r=!1;if(e!=null&&e.length!==0){let n=t.attributeName;n||(n=R.camelToDashCase(t.name));for(let a of e){let l=!1;if(t.propertyType==x.cssValue?l=a.hasStyle(t.name):l=a.hasAttribute(n),i=i&&l,r=r||l,!i&&r)break}let o=s.getOrBuildCachedBindings(e[0]);if(t.propertyType==x.cssValue){if(o&&o.find(a=>(a.target==L.css||a.target==L.cssvar)&&a.targetName==t.name))return G.bound}else if(t.propertyType==x.attribute){if(o&&o.find(a=>a.target==L.attribute&&a.targetName==t.name))return G.bound}else if(t.propertyType==x.property){if(o&&o.find(a=>(a.target==L.property||a.target==L.explicitProperty)&&a.targetName==t.name))return G.bound}else if(o&&o.find(a=>(a.target==L.property||a.target==L.explicitProperty||a.target==L.attribute)&&a.targetName==t.name))return G.bound;if(!i&&t.propertyType==x.cssValue){let a=s._stylesCache.get(e[0]);if(a||(a=new Set(e[0].getAllStyles().filter(c=>c.selector!=null).flatMap(c=>c.declarations).map(c=>c.name)),s._stylesCache.set(e[0],a),clearTimeout(this._cssCacheClearTimer),this._cssCacheClearTimer=setTimeout(()=>s._stylesCache.clear(),30)),a.has(t.propertyName??t.name))return G.fromStylesheet}}else return G.none;return i?G.all:r?G.some:G.none}static getOrBuildCachedBindings(e){let t=s._bindingsCache.get(e);if(!t){let i=e.serviceContainer.getServices("bindingService");if(t=[],i)for(let r of i){let n=r.getBindings(e);n&&n.length>0&&t.push(...n)}s._bindingsCache.set(e,t),clearTimeout(this._bindingsCacheClearTimer),this._bindingsCacheClearTimer=setTimeout(()=>s._bindingsCache.clear(),30)}return t}getValue(e,t){if(e!=null&&e.length!==0)if(t.propertyType==x.cssValue){let i=e[0].getStyle(t.propertyName??t.name);for(let r of e)if(r.getStyle(t.name)!=i){i=null;break}return i}else if(t.propertyType==x.property){let i=t.propertyName;return i||(i=R.dashToCamelCase(t.name)),e[0].element[i]}else{let i=t.attributeName;if(i||(i=R.camelToDashCase(t.name)),t.type=="boolean"){if(e[0].hasAttribute(i)){let n=e[0].getAttribute(i);return n==""?!0:n}return!1}return e[0].getAttribute(i)}return null}getBinding(e,t){let i=s.getOrBuildCachedBindings(e[0]);return i!=null?t.propertyType==x.cssValue?i.find(r=>(r.target==L.css||r.target==L.cssvar)&&r.targetName==t.name):t.propertyType==x.attribute?i.find(r=>r.target==L.attribute&&r.targetName==t.name):t.propertyType==x.property?i.find(r=>(r.target==L.property||r.target==L.explicitProperty)&&r.targetName==t.name):i.find(r=>(r.target==L.property||r.target==L.explicitProperty||r.target==L.attribute)&&r.targetName==t.name):null}getUnsetValue(e,t){return t.propertyType==x.cssValue?e!=null&&e.length!==0&&e[0].nodeType==I.Element?window.getComputedStyle(e[0].element)[t.propertyName??t.name]:null:t.defaultValue}static recreateElements(e,t){for(let i of t){if(!e.isHandledElement(i))continue;let r="<"+i.name+" ";for(let o of i.element.attributes)r+=o.name+'="'+o.value.replaceAll('"',"&quot;")+'" ';r+="></"+i.name+">";let n=Hr(r,t[0].document);for(let o of[...i.element.childNodes])n.appendChild(o);n.style.pointerEvents="auto",i.node.insertAdjacentElement("beforebegin",n),i.node.parentNode&&i.node.parentNode.removeChild(i.node),i.replaceNode(n)}}getContextMenu(e,t){let i=[{title:"clear",action:r=>{t.service.clearValue(e,t,"value"),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)}},{title:"edit as text",action:(r,n,o,a)=>{a.close(),setTimeout(async()=>{let l=t.service.getValue(e,t),c=prompt(`edit value of '${t.name}' as string:`,l);c&&c!=l&&await t.service.setValue(e,t,c),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)},10)}}];return e[0].serviceContainer.config.openBindingsEditor&&(i.push({title:"-"},{title:"edit binding",action:()=>{let r=t.service.getPropertyTarget(e[0],t),n=t.service.getBinding(e,t);e[0].serviceContainer.config.openBindingsEditor(t,e,n,r)}}),t.service.isSet(e,t)==G.bound&&i.push({title:"clear binding",action:()=>{t.service.clearValue(e,t,"binding"),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)}})),i}}});var B,de=g(()=>{"use strict";(function(s){s[s.none=0]="none",s[s.full=1]="full",s[s.fullOnValueChange=2]="fullOnValueChange",s[s.fullOnClassChange=3]="fullOnClassChange"})(B||(B={}))});var it,ai=g(()=>{"use strict";_e();Me();fe();de();it=class extends ee{getRefreshMode(e){return B.fullOnClassChange}async getProperties(e){return this.isHandledElement(e)&&e.element?.constructor?.properties?this.parseProperties(e.element.constructor.properties):null}parseProperties(e){let t=[],i=Object.keys(e),r=Object.groupBy(i,n=>e[n].group??"");for(let n in r){let o={name:n,properties:[]};for(let a of r[n]){let l=e[a],c=l,h=null,d=null,p=!1,m=x.propertyAndAttribute;if(l.type&&(c=l.type,h=l.description,d=l.example,p=l.readonly,m=l.readonly?x.property:x.propertyAndAttribute),c===String){let u={name:a,type:"string",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(c===Object){let u={name:a,type:"object",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(c===Number){let u={name:a,type:"number",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(c===Date){let u={name:a,type:"date",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(c===Boolean){let u={name:a,type:"boolean",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(R.isTypescriptEnum(c)){let u={name:a,type:"enum",enumValues:R.getTypescriptEnumEntries(c),service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else if(typeof c=="string"){let u={name:a,type:c,service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}else{let u={name:a,type:"string",service:this,propertyType:m,description:h,example:d,readonly:p};o.properties.push(u)}}o.name==""?t.push(...o.properties):t.push(o)}return t}getUnsetValue(e,t){return e[0].element[t.propertyName??t.name]}}});var jr,Ga=g(()=>{"use strict";ai();jr=class extends it{name="polymer";isHandledElement(e){return e.element.constructor.polymerElementVersion!=null}_notifyChangedProperty(e,t,i){e.element.set(t.name,i)}}});var Ur,Wa=g(()=>{"use strict";ai();Ur=class extends it{name="lit";isHandledElement(e){let t=e.element.constructor.__proto__;for(;t!=null;){if(t.name=="LitElement")return!0;if(t.name==null||t.name=="HTMLElement"||t.name=="Element"||t.name=="Node"||t.name=="HTMLElement")return!1;t=t.__proto__}return!1}_notifyChangedProperty(e,t,i){}}});var Yr,ja=g(()=>{"use strict";fe();de();Me();Yr=class extends ee{inputProperties=[{name:"type",type:"list",values:["text","number","button","checkbox","color","date","datetime-local","email","file","hidden","image","month","password","radio","range","reset","search","submit","tel","time","url","week"],service:this,defaultValue:"text",propertyType:x.propertyAndAttribute},{name:"value",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"placeholder",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"checked",type:"boolean",service:this,propertyType:x.propertyAndAttribute},{name:"min",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"max",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"readonly",type:"boolean",service:this,propertyType:x.propertyAndAttribute},{name:"valueAsDate",type:"string",service:this,propertyType:x.property},{name:"valueAsNumber",type:"string",service:this,propertyType:x.property}];textareaProperties=[{name:"value",type:"string",service:this,propertyType:x.property},{name:"placeholder",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"maxlength",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"cols",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"rows",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"readonly",type:"boolean",service:this,propertyType:x.propertyAndAttribute},{name:"resize",type:"list",values:["both","none","horizontal","vertical"],service:this,propertyType:x.cssValue}];selectProperties=[{name:"value",type:"string",service:this,propertyType:x.property},{name:"size",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"multiple",type:"boolean",service:this,propertyType:x.propertyAndAttribute}];buttonProperties=[{name:"type",type:"list",values:["button","submit","reset"],service:this,defaultValue:"button",propertyType:x.propertyAndAttribute},{name:"value",type:"string",service:this,propertyType:x.propertyAndAttribute}];anchorProperties=[{name:"href",type:"string",service:this,propertyType:x.propertyAndAttribute}];divProperties=[{name:"title",type:"string",service:this,propertyType:x.propertyAndAttribute}];imgProperties=[{name:"src",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"alt",type:"string",service:this,propertyType:x.propertyAndAttribute}];iframeProperties=[{name:"src",type:"string",service:this,propertyType:x.propertyAndAttribute}];formElementProperties=[{name:"autofocus",type:"boolean",service:this,propertyType:x.propertyAndAttribute},{name:"disabled",type:"boolean",service:this,propertyType:x.propertyAndAttribute},{name:"required",type:"boolean",service:this,propertyType:x.propertyAndAttribute}];meterProperties=[{name:"value",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"min",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"max",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"low",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"high",type:"number",service:this,propertyType:x.propertyAndAttribute},{name:"optimum",type:"number",service:this,propertyType:x.propertyAndAttribute}];name="native";getRefreshMode(e){return B.full}isHandledElement(e){switch(e.element.localName){case"input":case"textarea":case"select":case"button":case"a":case"div":case"span":case"br":case"img":case"iframe":case"meter":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"p":return!0}return!1}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){if(!this.isHandledElement(e))return null;switch(e.element.localName){case"input":return[...this.inputProperties,...this.formElementProperties];case"textarea":return[...this.textareaProperties,...this.formElementProperties];case"select":return[...this.selectProperties,...this.formElementProperties];case"button":return[...this.buttonProperties,...this.formElementProperties];case"a":return this.anchorProperties;case"div":return this.divProperties;case"img":return this.imgProperties;case"iframe":return this.iframeProperties;case"meter":return this.meterProperties;case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"p":return[]}return null}}});var Ge,li=g(()=>{"use strict";fe();Me();de();Ge=class extends ee{getRefreshMode(e){return B.none}commonProperties=[{name:"class",type:"string",service:this,attributeName:"class",propertyName:"className",propertyType:x.attribute},{name:"title",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"part",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"tabindex",type:"number",service:this,propertyType:x.propertyAndAttribute}];name="common";isHandledElement(e){return!e.isRootItem}async getProperty(e,t){return this.commonProperties.find(i=>i.name==t)}async getProperties(e){return this.commonProperties}}});var Xr,Ua=g(()=>{"use strict";li();fe();de();Xr=class extends Ge{rectProperties=[{name:"x",type:"svg-length",defaultValue:"0",service:this,propertyType:x.attribute},{name:"y",type:"svg-length",defaultValue:"0",service:this,propertyType:x.attribute},{name:"width",type:"svg-length",defaultValue:"auto",service:this,propertyType:x.attribute},{name:"height",type:"svg-length",defaultValue:"auto",service:this,propertyType:x.attribute},{name:"rx",type:"svg-length",defaultValue:"auto",service:this,propertyType:x.attribute},{name:"ry",type:"svg-length",defaultValue:"auto",service:this,propertyType:x.attribute},{name:"pathLength",type:"svg-length",service:this,propertyType:x.attribute},{name:"fill",type:"color",defaultValue:"transparent",service:this,propertyType:x.propertyAndAttribute},{name:"fill-opacity",type:"number",defaultValue:"1",service:this,propertyType:x.propertyAndAttribute}];lineProperties=[{name:"x1",type:"svg-length",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"y1",type:"svg-length",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"x2",type:"svg-length",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"y2",type:"svg-length",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"pathLength",type:"svg-length",service:this,propertyType:x.propertyAndAttribute}];ellipseProperties=[{name:"cx",type:"svg-length",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"cy",type:"svg-length",defaultValue:"0",service:this,propertyType:x.propertyAndAttribute},{name:"rx",type:"svg-length",defaultValue:"auto",service:this,propertyType:x.propertyAndAttribute},{name:"ry",type:"svg-length",defaultValue:"auto",service:this,propertyType:x.propertyAndAttribute},{name:"pathLength",type:"svg-length",service:this,propertyType:x.propertyAndAttribute},{name:"fill",type:"color",defaultValue:"transparent",service:this,propertyType:x.propertyAndAttribute},{name:"fill-opacity",type:"number",defaultValue:"1",service:this,propertyType:x.propertyAndAttribute}];pathProperties=[{name:"d",type:"string",defaultValue:"",service:this,propertyType:x.propertyAndAttribute},{name:"pathLength",type:"svg-length",service:this,propertyType:x.propertyAndAttribute}];svgProperties=[{name:"width",type:"svg-length",defaultValue:"auto",service:this,propertyType:x.cssValue},{name:"height",type:"svg-length",defaultValue:"auto",service:this,propertyType:x.cssValue},{name:"viewBox",type:"string",service:this,propertyType:x.cssValue}];defaultProperties=[{name:"stroke",type:"color",defaultValue:"currentcolor",service:this,propertyType:x.propertyAndAttribute},{name:"stroke-width",type:"svg-length",service:this,propertyType:x.propertyAndAttribute},{name:"stroke-opacity",type:"number",defaultValue:"1",service:this,propertyType:x.propertyAndAttribute},{name:"visibility",type:"list",values:["visible","hidden"],defaultValue:"visible",service:this,propertyType:x.propertyAndAttribute}];name="svg";getRefreshMode(e){return B.fullOnClassChange}isHandledElement(e){switch(e.element.localName){case"rect":case"line":case"ellipse":case"path":case"svg":return!0}return!1}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){if(!this.isHandledElement(e))return null;switch(e.element.localName){case"rect":return[...this.rectProperties,...this.defaultProperties];case"line":return[...this.lineProperties,...this.defaultProperties];case"ellipse":return[...this.ellipseProperties,...this.defaultProperties];case"path":return[...this.pathProperties,...this.defaultProperties];case"svg":return this.svgProperties}return null}}});var ci,Ya=g(()=>{"use strict";ci=class{constructor(e,t,i,r){this.title="Change Css Style "+t+" of &lt;"+e.name+"&gt;",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=r}title;get affectedItems(){return[this.designItem]}undo(){return this.oldValue===""||this.oldValue==null?(this.designItem._withoutUndoRemoveStyle(this.name),this.name.startsWith("--")?this.designItem.element.style.removeProperty(this.name):this.designItem.element.style[this.name]="",[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.newValue,newValue:null}]):(this.designItem._withoutUndoSetStyle(this.name,this.oldValue),this.name.startsWith("--")?this.designItem.element.style.setProperty(this.name,this.oldValue):this.designItem.element.style[this.name]=this.oldValue,[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.newValue,newValue:this.oldValue}])}do(){return this.newValue===""||this.newValue==null?(this.designItem._withoutUndoRemoveStyle(this.name),this.name.startsWith("--")?this.designItem.element.style.removeProperty(this.name):this.designItem.element.style[this.name]="",[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.oldValue,newValue:null}]):(this.designItem._withoutUndoSetStyle(this.name,this.newValue),this.name.startsWith("--")?this.designItem.element.style.setProperty(this.name,this.newValue):this.designItem.element.style[this.name]=this.newValue,[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.oldValue,newValue:this.newValue}])}designItem;name;newValue;oldValue;mergeWith(e){return!1}}});var er,Xa=g(()=>{"use strict";er=class s{constructor(e,t,i,r){this.title="Change Attribute "+t+" of &lt;"+e.name+"&gt;",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=r}title;get affectedItems(){return[this.designItem]}undo(){if(this.oldValue==null)return this.designItem._withoutUndoRemoveAttribute(this.name),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:null}];{let e=this.oldValue;return typeof this.oldValue!="string"&&(e=this.oldValue.toString()),this.designItem._withoutUndoSetAttribute(this.name,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:e}]}}do(){if(this.newValue==null)return this.designItem._withoutUndoRemoveAttribute(this.name),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:null}];{let e=this.newValue;return typeof this.newValue!="string"&&(e=this.newValue.toString()),this.designItem._withoutUndoSetAttribute(this.name,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.oldValue,newValue:e}]}}designItem;name;newValue;oldValue;mergeWith(e){return e instanceof s&&this.designItem===e.designItem&&this.name===e.name?(this.newValue=e.newValue,!0):!1}}});var P,$e=g(()=>{"use strict";(function(s){s[s.Directly=0]="Directly",s[s.Permanent=1]="Permanent",s[s.Selection=2]="Selection",s[s.PrimarySelection=3]="PrimarySelection",s[s.PrimarySelectionContainer=4]="PrimarySelectionContainer",s[s.MouseOver=5]="MouseOver",s[s.OnlyOneItemSelected=6]="OnlyOneItemSelected",s[s.MultipleItemsSelected=7]="MultipleItemsSelected",s[s.ContainerDragOverAndCanBeEntered=8]="ContainerDragOverAndCanBeEntered",s[s.ContainerExternalDragOverAndCanBeEntered=9]="ContainerExternalDragOverAndCanBeEntered",s[s.ContainerDrag=10]="ContainerDrag",s[s.Doubleclick=11]="Doubleclick",s[s.Placement=12]="Placement",s[s.PrimarySelectionAndCanBeEntered=13]="PrimarySelectionAndCanBeEntered",s[s.PrimarySelectionContainerAndCanBeEntered=14]="PrimarySelectionContainerAndCanBeEntered",s[s.PrimarySelectionRefreshed=15]="PrimarySelectionRefreshed",s[s.ManualApplied=16]="ManualApplied"})(P||(P={}))});var rt,Kr,$r,Ka=g(()=>{"use strict";(function(s){s[s.Name=0]="Name",s[s.Value=1]="Value",s[s.InQuote=2]="InQuote"})(rt||(rt={}));Kr=class{constructor(e,t){this.name=e.trim(),this.value=t.trim()}name;value},$r=class{entries=[];parse(e,t="'"){this.entries=[];let i="",r="",n=rt.Name;for(let o=0;o<e.length;o++){let a=e[o];n===rt.Name?a===":"?n=rt.Value:a===";"?i="":i+=a:n===rt.Value?a===";"?(this.entries.push(new Kr(i,r)),i="",r="",n=rt.Name):(a===t&&(n=rt.InQuote),r+=a):n===rt.InQuote&&(a==="\\"?(r+=a,o++,a=e[o],r+=a):a===t?(r+=a,n=rt.Value):r+=a)}i.trim()!==""&&this.entries.push(new Kr(i,r))}}});var Dt,$a=g(()=>{"use strict";Dt=class{constructor(e,t,i){this.title="Move or Insert Item",this.designItem=e,this.newParent=t,this.newIndex=i}title;get affectedItems(){return this.oldParent?[this.designItem,this.newParent,this.oldParent]:[this.designItem,this.newParent]}undo(){return this.oldParent?(this.oldParent._insertChildInternal(this.designItem,this.oldIndex),[{changeType:"moved",designItems:[this.designItem]}]):(this.designItem.parent._removeChildInternal(this.designItem),[{changeType:"removed",designItems:[this.designItem]}])}do(){return this.oldParent=this.designItem.parent,this.oldParent&&(this.oldIndex=this.designItem.parent.indexOf(this.designItem)),this.newParent._insertChildInternal(this.designItem,this.newIndex),[{changeType:this.oldParent?"moved":"added",designItems:[this.designItem]}]}designItem;newParent;newIndex;oldParent;oldIndex;newItem;mergeWith(e){return!1}}});var Zr,Za=g(()=>{"use strict";Zr=class{_textHolder="";indent=4;level=0;get position(){return this._textHolder.length}isLastCharNewline(){return this._textHolder[this._textHolder.length-1]===`
2
2
  `}levelRaise(){this.level++}levelShrink(){this.level--}write(e){this._textHolder+=e}writeLine(e){this.writeIndent(),this._textHolder+=e,this.writeNewline()}writeIndent(){this._textHolder+="".padEnd(this.level*this.indent," ")}writeNewline(){this._textHolder+=`
3
- `}getString(){return this._textHolder}}});var qr,Xd=g(()=>{"use strict";qr=class{_textHolder="";get position(){return this._textHolder.length}isLastCharNewline(){return this._textHolder[this._textHolder.length-1]===`
4
- `}levelRaise(){}levelShrink(){}write(e){this._textHolder+=e}writeLine(e){this._textHolder+=e}writeIndent(){}writeNewline(){}getString(){return this._textHolder}}});var Q,Ze=g(()=>{"use strict";Qa();Xd();Q=class{static normalizeAttributeValue(e,t=!1){return typeof e=="number"&&(e=e.toString()),e?t?e.replaceAll("&","&amp;").replaceAll("'","&#39;").replaceAll("<","&lt;").replaceAll(">","&gt;"):e.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("<","&lt;").replaceAll(">","&gt;"):e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")}static normalizeContentValue(e){return e&&e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll("\xA0","&nbsp;")}static IsSelfClosingElement(e){return e==="area"||e==="base"||e==="br"||e==="col"||e==="embed"||e==="hr"||e==="img"||e==="input"||e==="keygen"||e==="link"||e==="meta"||e==="param"||e==="source"||e==="track"||e==="wbr"}static ConvertToString(e,t,i=!1){let r=t!==!1?new Qr:new qr;return e[0].serviceContainer.htmlWriterService.write(r,e,!0,i),r.getString()}}});import{css as yu}from"@node-projects/base-custom-webcomponent";var be,Mt=g(()=>{"use strict";be=class s{static _contextMenuCss=yu`.context_menu{position:fixed;inset:auto;margin:0;border:none;background:0 0;overflow:visible;opacity:0;transform:scale(0);transition:transform .1s;transform-origin:top left;padding:0;z-index:2147483647;color:#000}.context_menu.context_menu_display{opacity:1;transform:scale(1)}.context_menu,.context_menu *{box-sizing:border-box}.context_menu *{position:relative}.context_menu ul{list-style-type:none;padding:3px;margin:0;border:none;background-color:#f5f7f7;box-shadow:0 0 5px #333;max-inline-size:calc(100vw - 8px);max-block-size:calc(100vh - 8px);overflow:auto;overscroll-behavior:contain;isolation:isolate}.context_menu ul[popover]{inset:auto;margin:0;border:none}.context_menu li{padding:0;padding-right:1.7em;cursor:pointer;white-space:nowrap;display:flex;align-items:center}.context_menu li:hover{background-color:#bbb}.context_menu li .context_menu_icon_span{width:28px;display:inline-flex;align-items:center;justify-content:center}.context_menu li .context_menu_icon_span img{height:18px}.context_menu li .context_menu_text{padding-left:2px;vertical-align:middle}.context_menu li .context_menu_sub_span{width:1em;display:inline-block;text-align:center;position:absolute;top:50%;right:.5em;transform:translateY(-50%)}.context_menu li>ul{position:absolute;inset:auto;top:0;left:100%;opacity:0;transition:opacity .2s;visibility:hidden}.context_menu li>ul.context_menu_submenu_popover{position:fixed}.context_menu li>ul:popover-open{opacity:1;visibility:visible}.context_menu li.context_menu_divider{border-bottom:1px solid #aaa;margin:5px;padding:0;cursor:default}.context_menu li.context_menu_divider:hover{background-color:inherit}.context_menu li[disabled=""]{color:#777;cursor:default}.context_menu li[disabled=""]:hover{background-color:inherit}.context_menu li.context_menu_marked{background-color:#5ebdec}`;static count=0;static _openedContextMenus=new Set;menu;options;context;num;_menuElement;constructor(e,t,i){this.num=s.count++,this.menu=e,this.options=t,this.context=i,this.reload(),this._windowDown=this._windowDown.bind(this),this._windowKeyUp=this._windowKeyUp.bind(this),this._windowResize=this._windowResize.bind(this)}reload(){let e=this.options?.shadowRoot??document;this._menuElement==null&&(this._menuElement=document.createElement("div"),this._menuElement.className="context_menu",this._menuElement.id="context_menu_"+this.num,this._menuElement.setAttribute("popover","manual"),e===document?document.body.appendChild(this._menuElement):e.appendChild(this._menuElement)),this._menuElement.innerHTML="",e.adoptedStyleSheets.indexOf(s._contextMenuCss)<0&&(e.adoptedStyleSheets=[...e.adoptedStyleSheets,s._contextMenuCss]),this._menuElement.appendChild(this.renderLevel(this.menu))}renderLevel(e){let t=document.createElement("ul"),i=!1;return e.forEach(r=>{if(r.title!=="-"){if(i){let c=document.createElement("li");c.className="context_menu_divider",i=!1,t.appendChild(c)}let n=document.createElement("li"),o=document.createElement("span");o.className="context_menu_icon_span",r.checked===!0?o.innerHTML="\u2714":(r.icon??"")!=""?o.innerHTML=r.icon??"":o.innerHTML=this.options?.defaultIcon??"";let a=document.createElement("span");a.className="context_menu_text",a.innerHTML=r.title??"";let l=document.createElement("span");if(l.className="context_menu_sub_span",r.children!=null&&(l.innerHTML=this.options?.subIcon??"&#155;"),n.appendChild(o),n.appendChild(a),n.appendChild(l),r.disabled)n.setAttribute("disabled","");else if(r.checkable?n.addEventListener("click",c=>{c.stopPropagation(),c.preventDefault(),r.checked=!r.checked,o.innerHTML=r.checked?"\u2714":r.icon??this.options?.defaultIcon??"",r.action&&r.action(c,r,this.context,this)}):r.action&&n.addEventListener("click",c=>{c.stopPropagation(),c.preventDefault(),r.action?.(c,r,this.context,this),this.close()}),this.options?.mode=="undo"&&n.addEventListener("mouseup",c=>{c.stopPropagation(),r.action?.(c,r,this.context,this),this.close()}),n.addEventListener("mouseenter",()=>{this.closeSiblingSubmenus(n),this.options?.mode=="undo"&&this.markUndoItems(n)}),r.children!=null){let c=this.renderLevel(r.children);this.configurePopoverSubmenu(c),n.appendChild(c),n.addEventListener("mouseenter",()=>{this.openPopoverSubmenu(n,c)})}t.appendChild(n)}else i=!0}),t}display(e){let t=this._menuElement,i=this.options?.mouseOffset!=null?this.options.mouseOffset:2;this.showPopover(t),this.positionMenu(t,e.clientX,e.clientY,i),t.classList.add("context_menu_display"),e.preventDefault(),s._openedContextMenus.add(this),window.addEventListener("keyup",this._windowKeyUp),window.addEventListener("resize",this._windowResize),window.addEventListener("mousedown",this._windowDown),setTimeout(()=>{s._openedContextMenus.has(this)&&window.addEventListener("contextmenu",this._windowDown)},150)}_windowResize(){this.close()}_windowDown(e){return e.preventDefault(),(!(e.target instanceof Node)||!this._menuElement.contains(e.target))&&this.close(),!1}_windowKeyUp(e){e.key==="Escape"&&this.close()}static show(e,t,i,r){let n=new s(e,i,r);return n.display(t),n}close(){this.hideDescendantSubmenus(this._menuElement),this.hidePopover(this._menuElement),this._menuElement.remove(),window.removeEventListener("mousedown",this._windowDown),window.removeEventListener("resize",this._windowResize),window.removeEventListener("keyup",this._windowKeyUp),setTimeout(()=>window.removeEventListener("contextmenu",this._windowDown),10),s._openedContextMenus.delete(this)}static closeAll(){for(let e of s._openedContextMenus.values())e.close()}configurePopoverSubmenu(e){e.classList.add("context_menu_submenu_popover"),e.setAttribute("popover","manual")}markUndoItems(e){if(e.parentElement==null)return;let t=!0;for(let i of e.parentElement.children)t?i.classList.add("context_menu_marked"):i.classList.remove("context_menu_marked"),i==e&&(t=!1)}closeSiblingSubmenus(e){if(e.parentElement!=null)for(let t of e.parentElement.children)t!==e&&this.hideDescendantSubmenus(t)}hideDescendantSubmenus(e){let t=e.querySelectorAll("ul[popover]");for(let i of t)this.hidePopover(i)}openPopoverSubmenu(e,t){this.showPopover(t),this.positionSubmenuPopover(e,t)}showPopover(e){this.isPopoverOpen(e)||e.showPopover()}hidePopover(e){e==null||!this.isPopoverOpen(e)||e.hidePopover()}isPopoverOpen(e){return e.matches(":popover-open")}positionMenu(e,t,i,r){let n=e.offsetWidth+4,o=e.offsetHeight+4,a=window.innerWidth-t,l=t,c=window.innerHeight-i,h=i,d=t+r;a<n&&l>a&&(d=t-n-r);let p=i+r;c<o&&h>c&&(p=i-o-r),e.style.left=`${Math.max(0,Math.min(d,window.innerWidth-n))}px`,e.style.top=`${Math.max(0,Math.min(p,window.innerHeight-o))}px`}positionSubmenuPopover(e,t){let i=e.getBoundingClientRect(),r=t.getBoundingClientRect(),n=t.offsetWidth||r.width,o=t.offsetHeight||r.height,a=window.innerWidth-i.right,l=i.left,c=i.right;a<n&&l>a&&(c=i.left-n);let h=window.innerHeight-i.top,d=i.bottom,p=i.top;h<o&&d>h&&(p=i.bottom-o),t.style.left=`${Math.max(0,Math.min(c,window.innerWidth-n))}px`,t.style.top=`${Math.max(0,Math.min(p,window.innerHeight-o))}px`,t.style.right="auto",t.style.bottom="auto"}}});var We,Wt=g(()=>{"use strict";Mt();We=class{settingName;content;tooltp;contextmenu;constructor(e,t,i,r){this.settingName=e,this.content=t,this.tooltp=i,this.contextmenu=r}provideButtons(e,t){let i=document.createElement("div");typeof this.content=="string"?i.innerHTML=this.content:i.appendChild(this.content),i.title=this.tooltp,i.className="toolbar-control",t.instanceServiceContainer.designContext.extensionOptionsChanged.on(()=>{r[this.settingName]!==!1?i.classList.add("selected"):i.classList.remove("selected")});let r=t.instanceServiceContainer.designContext.extensionOptions;return r[this.settingName]!==!1&&i.classList.add("selected"),i.onclick=()=>{let n=r[this.settingName];r[this.settingName]=n===!1,r[this.settingName]!==!1?i.classList.add("selected"):i.classList.remove("selected")},i.oncontextmenu=n=>{n.preventDefault(),this.contextmenu&&be.show(this.contextmenu,n)},[i]}}});var en,Jr,tn=g(()=>{"use strict";Wt();en="enableStylesheetService",Jr=class extends We{constructor(){super(en,"ss","modify Stylesheet")}}});var rn,qa=g(()=>{"use strict";rn=class{constructor(e,t,i){this.title="Change TextContent from '"+i+"' to '"+t+"'",this.designItem=e,this.newValue=t,this.oldValue=i}title;get affectedItems(){return[this.designItem]}undo(){return this.designItem.element.textContent=this.oldValue,[{changeType:"changed",designItems:this.affectedItems,type:"property",name:"textContent",oldValue:this.newValue,newValue:this.oldValue}]}do(){return this.designItem.element.textContent=this.newValue,[{changeType:"changed",designItems:this.affectedItems,type:"property",name:"textContent",oldValue:this.oldValue,newValue:this.newValue}]}designItem;newValue;oldValue;mergeWith(e){return!1}}});function Kd(s,...e){return s.reduce((t,i,r)=>t+i+(e[r]??""),"")}function $d(){return window.navigator.platform?.startsWith("Mac")||window.navigator.platform==="iPhone"||window.navigator.platform==="iPad"||window.navigator.platform==="iPod"}function mt(s){return new Promise(e=>setTimeout(e,s))}async function Zd(s,e){let t=URL.createObjectURL(s),i=document.createElement("a");i.href=t,i.style.display="none",i.download=e,document.body.appendChild(i),i.click(),document.body.removeChild(i),await mt(300)}function vx(s){for(var e=s.split(",")[0].split(":")[1].split(";")[0],t=atob(s.split(",")[1]),i=[],r=0;r<t.length;r++)i.push(t.charCodeAt(r));return new Blob([new Uint8Array(i)],{type:e})}function xx(s,e){return s.x>=e.x&&s.x<=e.x+e.width&&s.y>=e.y&&s.y<=e.y+e.height}function jt(s,e){return s.endsWith(e??"/")?s.substring(0,s.length-1):s}function we(s,e){return s.startsWith(e??"/")?s.substring(1):s}function tr(){return new Promise(s=>requestAnimationFrame(s))}function _x(s,e){if(s===e)return!0;if(s==null||e==null||s.length!==e.length)return!1;for(var t=0;t<s.length;++t)if(s[t]!==e[t])return!1;return!0}function Qd(s,e,t=!1,i="."){if(e==null)return s;let r=e.split(i);for(let n=0;n<r.length;n++)if(s!=null)s=s[r[n]];else return t?vu:null;return s}function Ja(s,e,t,i="."){if(e==null)return;let r=e.split(i);for(let n=0;n<r.length-1;n++)if(s!=null){let o=s[r[n]];o==null&&(o={},s[r[n]]=o),s=o}s!=null&&(s[r[r.length-1]]=t)}var vu,Ne=g(()=>{"use strict"});var nn,el=g(()=>{"use strict";Ne();nn=class s{constructor(e,t,i,r){this.title="Change Property "+t+" of &lt;"+e.name+"&gt;",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=r}title;get affectedItems(){return[this.designItem]}undo(){return Ja(this.designItem.node,this.name,this.oldValue),[{changeType:"changed",type:"property",name:this.name,designItems:[this.designItem]}]}do(){return Ja(this.designItem.node,this.name,this.newValue),[{changeType:"changed",type:"property",name:this.name,designItems:[this.designItem]}]}designItem;name;newValue;oldValue;mergeWith(e){return e instanceof s&&this.designItem===e.designItem&&this.name===e.name?(this.newValue=e.newValue,!0):!1}}});var ir,tl=g(()=>{"use strict";ir=class s{constructor(e,t,i,r,n){this.title="Change Attribute & Property"+t+" of &lt;"+e.name+"&gt;",this.designItem=e,this.attributeName=t,this.propertyName=i,this.newValue=r,this.oldValue=n}title;get affectedItems(){return[this.designItem]}undo(){if(this.designItem.element[this.propertyName]=this.oldValue,this.oldValue==null)return this.designItem._withoutUndoRemoveAttribute(this.attributeName),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:null}];{let e=this.oldValue;return typeof this.oldValue!="string"&&(e=this.oldValue.toString()),this.designItem._withoutUndoSetAttribute(this.attributeName,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:e}]}}do(){if(this.designItem.element[this.propertyName]=this.newValue,this.newValue==null)return this.designItem._withoutUndoRemoveAttribute(this.attributeName),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:null}];{let e=this.newValue;return typeof this.newValue!="string"&&(e=this.newValue.toString()),this.designItem._withoutUndoSetAttribute(this.attributeName,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.oldValue,newValue:e}]}}designItem;attributeName;propertyName;newValue;oldValue;mergeWith(e){return e instanceof s&&this.designItem===e.designItem&&this.attributeName===e.attributeName&&this.propertyName===e.propertyName?(this.newValue=e.newValue,!0):!1}}});import{TypedEvent as xu}from"@node-projects/base-custom-webcomponent";var fi,gi,Ut,ut,hi,di,pi,mi,ui,M,ne=g(()=>{"use strict";Xa();q();Ka();$e();$a();_e();Za();Ze();tn();qa();el();Ne();tl();fi="node-projects-hide-at-design-time",gi="node-projects-hide-at-run-time",Ut="node-projects-lock-at-design-time",ut="node-projects-force-hover",hi="node-projects-force-active",di="node-projects-force-visited",pi="node-projects-force-focus",mi="node-projects-force-focus-within",ui="node-projects-force-focus-visible",M=class s{lastContainerSize;parsedNode;node;view;serviceContainer;instanceServiceContainer;nodeReplaced=new xu;get window(){return this.isRootItem&&this.node instanceof HTMLIFrameElement?this.node.contentDocument.defaultView:this.node.ownerDocument.defaultView??window}get document(){return this.isRootItem&&this.node instanceof HTMLIFrameElement?this.node.contentDocument:this.node.ownerDocument}get usableContainer(){return this.isRootItem&&this.element instanceof(this.element.ownerDocument.defaultView??window).HTMLIFrameElement?this.element.contentWindow.document:this.isRootItem?this.node.shadowRoot:this.element}async clone(){try{let e=Q.ConvertToString([this],!1);return(await this.serviceContainer.htmlParserService.parse(e,this.serviceContainer,this.instanceServiceContainer,!0))[0]}catch{console.warn("could not clone design item.",this)}return null}*allMatching(e){if(this.hasChildren)for(let t of this.children())t.nodeType==k.Element&&t.element.matches(e)&&(yield t),yield*t.allMatching(e)}replaceNode(e){s._designItemMap.delete(this.node),s._designItemMap.set(e,this),this.view==this.node&&(this.view=e),this.node=e,this.nodeReplaced.emit()}get nodeType(){return this.node instanceof(this.node.ownerDocument.defaultView??window).Comment?k.Comment:this.node instanceof(this.node.ownerDocument.defaultView??window).Text?k.TextNode:k.Element}_attributes;get hasAttributes(){return this._attributes.size>0}hasAttribute(e){return this._attributes.has(e)}getAttribute(e){return this._attributes.get(e)}*attributes(){for(let e of this._attributes)yield e}_withoutUndoSetAttribute(e,t){try{this.element.setAttribute(e,t)}catch(i){i?.code!==5&&console.warn(i)}this._attributes.set(e,t),this.serviceContainer.designItemService.handleSpecialAttributes(e,this)}_withoutUndoRemoveAttribute(e){try{this.element.removeAttribute(e)}catch(t){t?.code!==5&&console.warn(t)}this._attributes.delete(e),this.serviceContainer.designItemService.handleSpecialAttributes(e,this)}_styles;get hasStyles(){return this._styles.size>0}hasStyle(e){let t=e;return t.startsWith("--")||(t=z.camelToDashCase(e)),this._styles.has(t)}getStyle(e){let t=e;return t.startsWith("--")||(t=z.camelToDashCase(e)),this._styles.get(t)}*styles(){for(let e of this._styles)yield e}_withoutUndoSetStyle(e,t){let i=e;i.startsWith("--")||(i=z.camelToDashCase(e)),this._styles.set(i,t)}_withoutUndoRemoveStyle(e){let t=e;t.startsWith("--")||(t=z.camelToDashCase(e)),this._styles.delete(t)}static _designItemMap=new WeakMap;get element(){return this.view}get name(){return this.node.localName}get id(){return this.element.id}set id(e){let t=this.element.id;this.element.id=e,this.id?this.setAttribute("id",e):this.removeAttribute("id"),this.serviceContainer.referencesChangedService&&this.serviceContainer.referencesChangedService.notifyReferencesChanged([{designItem:this,oldValue:t,type:"idChanged"}])}get isRootItem(){return this.instanceServiceContainer.designerCanvas.rootDesignItem===this}*childrenRect(e){if(this.hasChildren)for(let t of this.children())t.nodeType==k.Element&&t.element.matches(e)&&(yield t),yield*t.allMatching(e)}_childArray=[];get hasChildren(){return this._childArray.length>0}*children(e=!1){for(let t of this._childArray)if(yield t,e)for(let i of t.children(e))yield i}get childCount(){return this._childArray.length}get firstChild(){return this._childArray[0]}_parent;get parent(){return this._parent}indexOf(e){return this._childArray.indexOf(e)}insertAdjacentElement(e,t){let i;t=="afterbegin"?i=new Tt(e,this,0):t=="beforeend"?i=new Tt(e,this,this._childArray.length):t=="beforebegin"?i=new Tt(e,this.parent,this.parent.indexOf(this)):t=="afterend"&&(i=new Tt(e,this.parent,this.parent.indexOf(this)+1)),this.instanceServiceContainer.undoService.execute(i)}insertChild(e,t){let i=new Tt(e,this,t);this.instanceServiceContainer.undoService.execute(i)}removeChild(e){this.serviceContainer.deletionService.removeItems([e])}remove(){this.serviceContainer.deletionService.removeItems([this])}clearChildren(){for(let e=this._childArray.length-1;e>=0;e--)this._childArray[e].remove()}get hasContent(){return(this.nodeType==k.TextNode||this.nodeType==k.Comment)&&this.element.textContent!=""||this._childArray.length===0}get content(){return this.nodeType==k.TextNode||this.nodeType==k.Comment?this.node.textContent:this._childArray.map(e=>e.content).join()}set content(e){let t=this.openGroup("set content");this.clearChildren();let i=document.createTextNode(e),r=s.GetOrCreateDesignItem(i,i,this.serviceContainer,this.instanceServiceContainer);if(this.nodeType==k.TextNode){let n=this.parent.indexOf(this),o=this.parent;this.remove(),o.insertChild(r,n)}else if(this.nodeType==k.Comment){let n=new rn(this,e,this.content);this.instanceServiceContainer.undoService.execute(n)}else this.insertChild(r);t.commit()}get innerHTML(){return Q.ConvertToString([...this.children()],!1)}set innerHTML(e){if(this.nodeType!=k.TextNode){let t=this.openGroup("set innerHTML");this.clearChildren();let i=document.createRange();i.selectNode(document.body);let r=i.createContextualFragment(e);for(let n of[...r.childNodes]){let o=s.createDesignItemFromInstance(n,this.serviceContainer,this.instanceServiceContainer);this.insertChild(o)}t.commit()}}get isEmptyTextNode(){return this.nodeType===k.TextNode&&this.content?.trim()==""}get hideAtDesignTime(){return this.hasAttribute(fi)}set hideAtDesignTime(e){e?this.setAttribute(fi,""):this.removeAttribute(fi)}get hideAtRunTime(){return this.hasAttribute(gi)}set hideAtRunTime(e){e?this.setAttribute(gi,""):this.removeAttribute(gi)}get lockAtDesignTime(){return this.hasAttribute(Ut)}set lockAtDesignTime(e){e?this.setAttribute(Ut,""):this.removeAttribute(Ut)}static createDesignItemFromInstance(e,t,i){let r=t.designItemService.createDesignItem(e,e,t,i);if(e instanceof(e.ownerDocument.defaultView??window).HTMLTemplateElement&&e.getAttribute("shadowrootmode")=="open")try{e.parentNode.attachShadow({mode:"open"}).appendChild(e.content.cloneNode(!0))}catch(n){console.error("error attaching shadowdom",n)}if(r.nodeType==k.Element){for(let n of r.element.attributes)n.name!=="style"&&r._attributes.set(n.name,n.value);if(e instanceof(e.ownerDocument.defaultView??window).HTMLElement||e instanceof(e.ownerDocument.defaultView??window).SVGElement){let n=new Zr,o=e.getAttribute("style");if(o){n.parse(o);for(let a of n.entries)r._styles.set(a.name,a.value)}t.designItemService.handleSpecialAttributes(Ut,r)}e.draggable=!1}r._childArray=r._internalUpdateChildrenFromNodesChildren();for(let n of r._childArray)n._parent=r;return r}querySelectorAll(e){return this.usableContainer.querySelectorAll(e)}removeDesignerAttributesAndStylesFromChildren(){let e=this.querySelectorAll("*");for(let t of e){let i=s.GetDesignItem(t);i.hasAttribute("draggable")||t.removeAttribute("draggable"),i.hasStyle("pointer-events")||(t.style.pointerEvents="")}}updateChildrenFromNodesChildren(){this._childArray=this._internalUpdateChildrenFromNodesChildren();for(let e of this._childArray)e._parent=this}_internalUpdateChildrenFromNodesChildren(){let e=[];if(this.nodeType==k.Element)if(this.element instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement)for(let t of this.element.content.childNodes){let i=s.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}else if(this.isRootItem&&this.element instanceof(this.node.ownerDocument.defaultView??window).HTMLIFrameElement)for(let t of this.element.contentWindow.document.childNodes){let i=s.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}else for(let t of this.element.childNodes){let i=s.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}return e}_backupWhenEditContent;_inEditContent=!1;editContent(){this._inEditContent=!0,this._backupWhenEditContent=[...this.element.childNodes];let e=this.element.innerHTML;this.element.innerHTML="",this.element.innerHTML=e,this.element.setAttribute("contenteditable","")}editContentFinish(){if(this._inEditContent){this._inEditContent=!1,this.element.removeAttribute("contenteditable"),this.element.innerHTML="";for(let e of this._backupWhenEditContent)this.element.appendChild(e);this._backupWhenEditContent=null}}constructor(e,t,i,r){this.node=e,this.view=e,this.parsedNode=t,this.serviceContainer=i,this.instanceServiceContainer=r,this._attributes=new Map,this._styles=new Map,s._designItemMap.set(e,this)}setView(e){this.view=e,s._designItemMap.set(e,this)}openGroup(e){return this.instanceServiceContainer.undoService.openGroup(e)}getOrCreateDesignItem(e){return s.GetOrCreateDesignItem(e,e,this.serviceContainer,this.instanceServiceContainer)}static GetOrCreateDesignItem(e,t,i,r){if(!e)return null;let n=s._designItemMap.get(e);return n||(n=i.designItemService.createDesignItem(e,t,i,r)),n}static GetDesignItem(e){return e?s._designItemMap.get(e):null}setStyle(e,t,i){let r=e;if(r.startsWith("--")||(r=z.camelToDashCase(e)),this.isRootItem)throw"not allowed to set style on root item or use async setStyle";{let n=new ci(this,r,t,this._styles.get(r));this.instanceServiceContainer.undoService.execute(n)}}async setStyleAsync(e,t,i){let r=e;if(r.startsWith("--")||(r=z.camelToDashCase(e)),this.isRootItem)if(this.instanceServiceContainer.stylesheetService){let n=this.instanceServiceContainer.stylesheetService.getDeclarationsSortedBySpecificity(this,e);if(n!==null&&n.length>0)this.instanceServiceContainer.stylesheetService.updateDeclarationValue(n[0],t,i);else{let o=this.instanceServiceContainer.stylesheetService.getRules(":host").filter(a=>!a.stylesheet?.readOnly);if(n===null||o.length===0){let a=this.openGroup("add rule and set style: "+e),l=this.instanceServiceContainer.stylesheetService.getStylesheets(),c=await this.instanceServiceContainer.stylesheetService.addRule(l[0],":host");this.instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(c,e,t,i),a.commit()}else this.instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(o[0],e,t,i)}}else throw"not allowed to set style on root item";else{let n=new ci(this,r,t,this._styles.get(r));this.instanceServiceContainer.undoService.execute(n)}}removeStyle(e){let t=e;t.startsWith("--")||(t=z.camelToDashCase(e));let i=new ci(this,t,"",this._styles.get(t));this.instanceServiceContainer.undoService.execute(i)}updateStyleInSheetOrLocal(e,t,i,r){let n=e;n.startsWith("--")||(n=z.camelToDashCase(e));let o=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,n).filter(a=>!a.stylesheet?.readOnly);this.hasStyle(e)||this.instanceServiceContainer.designContext.extensionOptions[en]===!1||!o?.length?this.getStyle(n)!=t||r?this.setStyle(n,t):t==null&&this.removeStyle(n):this.instanceServiceContainer.stylesheetService.updateDeclarationValue(o[0],t,!1)}async updateStyleInSheetOrLocalAsync(e,t,i,r){let n=e;n.startsWith("--")||(n=z.camelToDashCase(e));let o=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,n).filter(a=>!a.stylesheet?.readOnly);this.hasStyle(e)||this.instanceServiceContainer.designContext.extensionOptions[en]===!1||!o?.length?this.getStyle(n)!=t||r?await this.setStyleAsync(n,t):t==null&&this.removeStyle(n):this.instanceServiceContainer.stylesheetService.updateDeclarationValue(o[0],t,!1)}getStyleFromSheetOrLocal(e,t=null){let i=e;if(i.startsWith("--")||(i=z.camelToDashCase(e)),this.hasStyle(e))return this.getStyle(i);let r=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,i);return r&&r.length>0?r[0].value:null}getStyleFromSheetOrLocalOrComputed(e,t=null){let i=e;i.startsWith("--")||(i=z.camelToDashCase(e));let r=this.getStyleFromSheetOrLocal(i);return r||(r=getComputedStyle(this.element).getPropertyValue(i)),r??t}getComputedStyleProperty(e,t=null){let i=e;i.startsWith("--")||(i=z.camelToDashCase(e));let r=this.getStyleFromSheetOrLocal(i);return r||(r=getComputedStyle(this.element).getPropertyValue(i)),r??t}getComputedStyle(){return this.nodeType==k.Element?this.window.getComputedStyle(this.element):null}_stylesCache=null;_cacheClearTimer;getAllStyles(){let e=this._stylesCache;if(e)return e;if(this.nodeType!=k.Element)return[];let t=[...this._styles.entries()].map(i=>({name:i[0],value:i[1],important:!1,parent:null}));if(this.instanceServiceContainer.stylesheetService)try{let i=this.instanceServiceContainer.stylesheetService?.getAppliedRules(this);if(i)return[{selector:null,declarations:t,specificity:null,stylesheet:null},...i]}catch(i){console.warn("getAppliedRules",i)}return e=[{selector:null,declarations:t,specificity:null,stylesheet:null}],this._stylesCache=e,clearTimeout(this._cacheClearTimer),this._cacheClearTimer=setTimeout(()=>this._stylesCache=null,30),e}setAttribute(e,t){if(this.isRootItem)throw"not allowed to set attribute on root item";let i=new er(this,e,t,this._attributes.get(e));this.instanceServiceContainer.undoService.execute(i)}removeAttribute(e){let t=new er(this,e,null,this._attributes.get(e));this.instanceServiceContainer.undoService.execute(t)}setPropertyAndAttribute(e,t){let i=z.camelToDashCase(e),r=z.dashToCamelCase(e);if(this.isRootItem)throw"not allowed to set attribute on root item";let n=new ir(this,i,r,t,this.element[r]);this.instanceServiceContainer.undoService.execute(n)}removePropertyAndAttribute(e){let t=z.camelToDashCase(e),i=z.dashToCamelCase(e),r=new ir(this,t,i,null,this.element[i]);this.instanceServiceContainer.undoService.execute(r)}setProperty(e,t){if(this.isRootItem)throw"not allowed to set attribute on root item";let i=Qd(this.node,e),r=new nn(this,e,t,i);this.instanceServiceContainer.undoService.execute(r)}_insertChildInternal(e,t){this._insertChildsInternal([e],t)}_insertChildsInternal(e,t){let i=this.document.createDocumentFragment(),r=null;for(let n of e)n.parent&&this.instanceServiceContainer.selectionService.primarySelection==n&&(n.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(n.parent,P.PrimarySelectionContainer),n.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(n.parent,P.PrimarySelectionContainerAndCanBeEntered)),n.parent&&n.parent._removeChildInternal(n),i.appendChild(n.view),n._parent=this,t==null||this._childArray.length==0||t>=this._childArray.length?this._childArray.push(n):(r=this._childArray[t],this._childArray.splice(t,0,n),t++);r==null?this.isRootItem?(this.usableContainer?.children[0]instanceof this.window.HTMLHtmlElement&&this.usableContainer.children[0].remove(),this.usableContainer.appendChild(i)):this.view instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement?this.view.content.appendChild(i):this.view.appendChild(i):this.isRootItem?(this.usableContainer?.children[0]instanceof this.window.HTMLHtmlElement&&this.usableContainer.children[0].remove(),this.usableContainer.insertBefore(i,r.element)):this.view instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement?this.view.content.insertBefore(i,r.element):this.view.insertBefore(i,r.element),this._refreshIfStyleSheet()}_removeChildInternal(e){e.parent&&this.instanceServiceContainer.selectionService.primarySelection==e&&(e.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(e.parent,P.PrimarySelectionContainer),e.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(e.parent,P.PrimarySelectionAndCanBeEntered)),e.instanceServiceContainer.designerCanvas.extensionManager.removeExtensions([e],!0);let t=this._childArray.indexOf(e);t>-1&&(this._childArray.splice(t,1),e.element.remove(),e._parent=null),this._refreshIfStyleSheet()}_refreshIfStyleSheet(){this.name=="style"||this.parent?.name=="style"||this.name=="link"}getPlacementService(e){return this.nodeType!=k.Element?null:(e??=getComputedStyle(this.element),this.serviceContainer.getLastServiceWhere("containerService",t=>t.serviceForContainer(this,e)))}static createDesignItemFromImageBlob(e,t,i){return new Promise(r=>{let n=new FileReader;n.onloadend=()=>{let o=document.createElement("img");o.src=n.result;let a=s.createDesignItemFromInstance(o,e,t);return r(a)},n.readAsDataURL(i)})}get hasForcedCss(){return this.cssForceHover||this.cssForceActive||this.cssForceVisited||this.cssForceFocus||this.cssForceFocusWithin||this.cssForceFocusVisible}get cssForceHover(){return this.element.hasAttribute(ut)}set cssForceHover(e){e?this.element.setAttribute(ut,""):this.element.removeAttribute(ut),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:ut,designItems:[this]}])}get cssForceActive(){return this.element.hasAttribute(hi)}set cssForceActive(e){e?this.element.setAttribute(hi,""):this.element.removeAttribute(hi),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:hi,designItems:[this]}])}get cssForceVisited(){return this.element.hasAttribute(di)}set cssForceVisited(e){e?this.element.setAttribute(di,""):this.element.removeAttribute(di),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:di,designItems:[this]}])}get cssForceFocus(){return this.element.hasAttribute(pi)}set cssForceFocus(e){e?this.element.setAttribute(pi,""):this.element.removeAttribute(pi),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:pi,designItems:[this]}])}get cssForceFocusWithin(){return this.element.hasAttribute(mi)}set cssForceFocusWithin(e){e?this.element.setAttribute(mi,""):this.element.removeAttribute(mi),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:mi,designItems:[this]}])}get cssForceFocusVisible(){return this.element.hasAttribute(ui)}set cssForceFocusVisible(e){e?this.element.setAttribute(ui,""):this.element.removeAttribute(ui),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:ui,designItems:[this]}])}}});function il(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}var qd=g(()=>{"use strict"});var sn,on=g(()=>{"use strict";sn=navigator.userAgent.toLowerCase().includes("firefox")});var an,rl=g(()=>{"use strict";ne();qd();ce();on();an=class{async getElement(e,t,i){if(e.import){let l=e.import;l[0]==="."&&(l=(window.location.origin+window.location.pathname).split("/").slice(0,-1).join("/")+"/"+l),window.importShim?importShim(l).then(c=>{!customElements.get(e.tag)&&e.className&&c[e.className]&&customElements.define(e.tag,c[e.className])}):import(l).then(c=>{!customElements.get(e.tag)&&e.className&&c[e.className]&&customElements.define(e.tag,c[e.className])}),i.designContext.imports.indexOf(l)<=0&&i.designContext.imports.push(l)}let r="";if(e.defaultAttributes)for(let l in e.defaultAttributes){let c=e.defaultAttributes[l];try{typeof c=="object"?r+=" "+l+'="'+il(JSON.stringify(e.defaultAttributes[l]))+'"':r+=" "+l+'="'+il(e.defaultAttributes[l])+'"'}catch(h){console.warn(h)}}let n="<"+e.tag+r+"></"+e.tag+">",o=Gr(n,i.designerCanvas.rootDesignItem.document);if(o._inNodeProjectsDesignerView=!0,e.defaultWidth&&(o.style.width=e.defaultWidth),e.defaultHeight&&(o.style.height=e.defaultHeight),o.style.position="absolute",e.defaultStyles)for(let l in e.defaultStyles)o.style[l]=e.defaultStyles[l];if(e.defaultContent)if(typeof e.defaultContent=="string"){let l;i.designerCanvas.rootDesignItem.window.Document.parseHTMLUnsafe&&!sn?l=i.designerCanvas.rootDesignItem.window.Document.parseHTMLUnsafe(e.defaultContent):l=new i.designerCanvas.rootDesignItem.window.DOMParser().parseFromString(e.defaultContent,"text/html",{includeShadowRoots:!0}),o.append(...l.head.childNodes),o.append(...l.body.childNodes)}else o.appendChild(e.defaultContent);return M.createDesignItemFromInstance(o,t,i)}}});var re,Ee=g(()=>{"use strict";pt();re=class{element;property;designItems;disableChangeNotification=!1;constructor(e){this.property=e}async _previewValueChanged(e){this.disableChangeNotification||this.designItems&&this.designItems.length&&await this.property.service.previewValue?.(this.designItems,this.property,e)}async _removePreviewValue(){this.disableChangeNotification||this.designItems&&this.designItems.length&&await this.property.service.removePreviewValue?.(this.designItems,this.property)}async _valueChanged(e){if(!this.disableChangeNotification&&this.designItems&&this.designItems.length){let t=this.designItems[0].openGroup("set property: "+this.property.name);e==null?this.property.service.clearValue(this.designItems,this.property,"value"):await this.property.service.setValue(this.designItems,this.property,e),t.commit()}}designItemsChanged(e){this.designItems=e}refreshValueWithoutNotification(e,t){e==H.none?this.element.classList.add("unset-value"):this.element.classList.remove("unset-value"),this.disableChangeNotification=!0;try{this.refreshValue(e,t)}catch(i){console.error(i)}this.disableChangeNotification=!1}}});var yi,nl=g(()=>{"use strict";yi=class s{red=0;green=0;blue=0;hue=0;sat=0;lightness=0;whiteness=0;blackness=0;cyan=0;magenta=0;yellow=0;black=0;ncol="R";opacity=1;valid=!1;toRgbString(){return"rgb("+this.red+", "+this.green+", "+this.blue+")"}toRgbaString(){return"rgba("+this.red+", "+this.green+", "+this.blue+", "+this.opacity+")"}toHwbString(){return"hwb("+this.hue+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%)"}toHwbStringDecimal(){return"hwb("+this.hue+", "+this.whiteness+", "+this.blackness+")"}toHwbaString(){return"hwba("+this.hue+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%, "+this.opacity+")"}toHslString(){return"hsl("+this.hue+", "+Math.round(this.sat*100)+"%, "+Math.round(this.lightness*100)+"%)"}toHslStringDecimal(){return"hsl("+this.hue+", "+this.sat+", "+this.lightness+")"}toHslaString(){return"hsla("+this.hue+", "+Math.round(this.sat*100)+"%, "+Math.round(this.lightness*100)+"%, "+this.opacity+")"}toCmykString(){return"cmyk("+Math.round(this.cyan*100)+"%, "+Math.round(this.magenta*100)+"%, "+Math.round(this.yellow*100)+"%, "+Math.round(this.black*100)+"%)"}toCmykStringDecimal(){return"cmyk("+this.cyan+", "+this.magenta+", "+this.yellow+", "+this.black+")"}toNcolString(){return this.ncol+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%"}toNcolStringDecimal(){return this.ncol+", "+this.whiteness+", "+this.blackness}toNcolaString(){return this.ncol+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%, "+this.opacity}toName(){let e,t,i,r=s.getColorArr("hexs");for(let n=0;n<r.length;n++)if(e=parseInt(r[n].substr(0,2),16),t=parseInt(r[n].substr(2,2),16),i=parseInt(r[n].substr(4,2),16),this.red==e&&this.green==t&&this.blue==i)return s.getColorArr("names")[n];return null}toHexString(){let e=s.toHex(this.red),t=s.toHex(this.green),i=s.toHex(this.blue);return"#"+e+t+i}toNameOrHexString(){let e=this.toName();return e||(e=this.toHexString()),e}toRgb(){return{r:this.red,g:this.green,b:this.blue,a:this.opacity}}toHsl(){return{h:this.hue,s:this.sat,l:this.lightness,a:this.opacity}}toHwb(){return{h:this.hue,w:this.whiteness,b:this.blackness,a:this.opacity}}toCmyk(){return{c:this.cyan,m:this.magenta,y:this.yellow,k:this.black,a:this.opacity}}toNcol(){return{ncol:this.ncol,w:this.whiteness,b:this.blackness,a:this.opacity}}isDark(e){let t=e||128;return(this.red*299+this.green*587+this.blue*114)/1e3<t}saturate(e){let t,i,r;t=e/100||.1,this.sat+=t,this.sat>1&&(this.sat=1),i=s.hslToRgb(this.hue,this.sat,this.lightness),r=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(r)}desaturate(e){let t,i,r;t=e/100||.1,this.sat-=t,this.sat<0&&(this.sat=0),i=s.hslToRgb(this.hue,this.sat,this.lightness),r=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(r)}lighter(e){let t,i,r;t=e/100||.1,this.lightness+=t,this.lightness>1&&(this.lightness=1),i=s.hslToRgb(this.hue,this.sat,this.lightness),r=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(r)}darker(e){let t,i,r;t=e/100||.1,this.lightness-=t,this.lightness<0&&(this.lightness=0),i=s.hslToRgb(this.hue,this.sat,this.lightness),r=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(r)}attachValues(e){this.red=e.red,this.green=e.green,this.blue=e.blue,this.hue=e.hue,this.sat=e.sat,this.lightness=e.lightness,this.whiteness=e.whiteness,this.blackness=e.blackness,this.cyan=e.cyan,this.magenta=e.magenta,this.yellow=e.yellow,this.black=e.black,this.ncol=e.ncol,this.opacity=e.opacity,this.valid=e.valid}static toColorObject(e){let t,i,r,n=[],o,a,l,c,h,d,p,m,u=[],f=[];if(e=s.w3trim(e.toLowerCase()),t=e.substr(0,1).toUpperCase(),i=e.substr(1),h=1,(t=="R"||t=="Y"||t=="G"||t=="C"||t=="B"||t=="M"||t=="W")&&!isNaN(i)&&(e.length==6&&e.indexOf(",")==-1||(e="ncol("+e+")")),e.length!=3&&e.length!=6&&!isNaN(e)&&(e="ncol("+e+")"),e.indexOf(",")>0&&e.indexOf("(")==-1&&(e="ncol("+e+")"),e.substr(0,3)=="rgb"||e.substr(0,3)=="hsl"||e.substr(0,3)=="hwb"||e.substr(0,4)=="ncol"||e.substr(0,4)=="cmyk"){if(e.substr(0,4)=="ncol"?(e.split(",").length==4&&e.indexOf("ncola")==-1&&(e=e.replace("ncol","ncola")),r="ncol",e=e.substr(4)):e.substr(0,4)=="cmyk"?(r="cmyk",e=e.substr(4)):(r=e.substr(0,3),e=e.substr(3)),o=3,l=!1,e.substr(0,1).toLowerCase()=="a"?(o=4,l=!0,e=e.substr(1)):r=="cmyk"&&(o=4,e.split(",").length==5&&(o=5,l=!0)),e=e.replace("(",""),e=e.replace(")",""),n=e.split(","),r=="rgb"){if(n.length!=o)return new s;for(a=0;a<o;a++){if((n[a]==""||n[a]==" ")&&(n[a]="0"),n[a].indexOf("%")>-1&&(n[a]=n[a].replace("%",""),n[a]=Number(n[a]/100),a<3&&(n[a]=Math.round(n[a]*255))),isNaN(n[a]))return new s;parseInt(n[a])>255&&(n[a]=255),a<3&&(n[a]=parseInt(n[a])),a==3&&Number(n[a])>1&&(n[a]=1)}m={r:n[0],g:n[1],b:n[2]},l==!0&&(h=Number(n[3]))}if(r=="hsl"||r=="hwb"||r=="ncol"){for(;n.length<o;)n.push("0");for((r=="hsl"||r=="hwb")&&parseInt(n[0])>=360&&(n[0]=0),a=1;a<o;a++){if(n[a].indexOf("%")>-1){if(n[a]=n[a].replace("%",""),n[a]=Number(n[a]),isNaN(n[a]))return new s;n[a]=n[a]/100}else n[a]=Number(n[a]);Number(n[a])>1&&(n[a]=1),Number(n[a])<0&&(n[a]=0)}r=="hsl"&&(m=s.hslToRgb(n[0],n[1],n[2]),d=Number(n[0]),p=Number(n[1])),r=="hwb"&&(m=s.hwbToRgb(n[0],n[1],n[2])),r=="ncol"&&(m=s.ncolToRgb(n[0],n[1],n[2])),l==!0&&(h=Number(n[3]))}if(r=="cmyk"){for(;n.length<o;)n.push("0");for(a=0;a<o;a++){if(n[a].indexOf("%")>-1){if(n[a]=n[a].replace("%",""),n[a]=Number(n[a]),isNaN(n[a]))return new s;n[a]=n[a]/100}else n[a]=Number(n[a]);Number(n[a])>1&&(n[a]=1),Number(n[a])<0&&(n[a]=0)}m=s.cmykToRgb(n[0],n[1],n[2],n[3]),l==!0&&(h=Number(n[4]))}}else if(e.substr(0,3)=="ncs")m=s.ncsToRgb(e);else{for(c=!1,u=s.getColorArr("names"),a=0;a<u.length;a++)if(e.toLowerCase()==u[a].toLowerCase()){f=s.getColorArr("hexs"),c=!0,m={r:parseInt(f[a].substr(0,2),16),g:parseInt(f[a].substr(2,2),16),b:parseInt(f[a].substr(4,2),16)};break}if(c==!1){for(e=e.replace("#",""),e.length==3&&(e=e.substr(0,1)+e.substr(0,1)+e.substr(1,1)+e.substr(1,1)+e.substr(2,1)+e.substr(2,1)),a=0;a<e.length;a++)if(!s.isHex(e.substr(a,1)))return new s;for(n[0]=parseInt(e.substr(0,2),16),n[1]=parseInt(e.substr(2,2),16),n[2]=parseInt(e.substr(4,2),16),a=0;a<3;a++)if(isNaN(n[a]))return new s;m={r:n[0],g:n[1],b:n[2]}}}return s.colorObject(m,h,d,p)}static colorObject(e,t,i,r){let n,o,a,l,c,h,d;return e?(t===null&&(t=1),n=s.rgbToHsl(e.r,e.g,e.b),o=s.rgbToHwb(e.r,e.g,e.b),a=s.rgbToCmyk(e.r,e.g,e.b),h=i||n.h,d=r||n.s,l=s.hueToNcol(h),c={red:e.r,green:e.g,blue:e.b,hue:h,sat:d,lightness:n.l,whiteness:o.w,blackness:o.b,cyan:a.c,magenta:a.m,yellow:a.y,black:a.k,ncol:l,opacity:t,valid:!0},c=s.roundDecimals(c),Object.assign(new s,c)):new s}static getColorArr(e){return e=="names"?["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","RebeccaPurple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen"]:e=="hexs"?["f0f8ff","faebd7","00ffff","7fffd4","f0ffff","f5f5dc","ffe4c4","000000","ffebcd","0000ff","8a2be2","a52a2a","deb887","5f9ea0","7fff00","d2691e","ff7f50","6495ed","fff8dc","dc143c","00ffff","00008b","008b8b","b8860b","a9a9a9","a9a9a9","006400","bdb76b","8b008b","556b2f","ff8c00","9932cc","8b0000","e9967a","8fbc8f","483d8b","2f4f4f","2f4f4f","00ced1","9400d3","ff1493","00bfff","696969","696969","1e90ff","b22222","fffaf0","228b22","ff00ff","dcdcdc","f8f8ff","ffd700","daa520","808080","808080","008000","adff2f","f0fff0","ff69b4","cd5c5c","4b0082","fffff0","f0e68c","e6e6fa","fff0f5","7cfc00","fffacd","add8e6","f08080","e0ffff","fafad2","d3d3d3","d3d3d3","90ee90","ffb6c1","ffa07a","20b2aa","87cefa","778899","778899","b0c4de","ffffe0","00ff00","32cd32","faf0e6","ff00ff","800000","66cdaa","0000cd","ba55d3","9370db","3cb371","7b68ee","00fa9a","48d1cc","c71585","191970","f5fffa","ffe4e1","ffe4b5","ffdead","000080","fdf5e6","808000","6b8e23","ffa500","ff4500","da70d6","eee8aa","98fb98","afeeee","db7093","ffefd5","ffdab9","cd853f","ffc0cb","dda0dd","b0e0e6","800080","663399","ff0000","bc8f8f","4169e1","8b4513","fa8072","f4a460","2e8b57","fff5ee","a0522d","c0c0c0","87ceeb","6a5acd","708090","708090","fffafa","00ff7f","4682b4","d2b48c","008080","d8bfd8","ff6347","40e0d0","ee82ee","f5deb3","ffffff","f5f5f5","ffff00","9acd32"]:null}static roundDecimals(e){return e.red=Number(e.red.toFixed(0)),e.green=Number(e.green.toFixed(0)),e.blue=Number(e.blue.toFixed(0)),e.hue=Number(e.hue.toFixed(0)),e.sat=Number(e.sat.toFixed(2)),e.lightness=Number(e.lightness.toFixed(2)),e.whiteness=Number(e.whiteness.toFixed(2)),e.blackness=Number(e.blackness.toFixed(2)),e.cyan=Number(e.cyan.toFixed(2)),e.magenta=Number(e.magenta.toFixed(2)),e.yellow=Number(e.yellow.toFixed(2)),e.black=Number(e.black.toFixed(2)),e.ncol=e.ncol.substr(0,1)+Math.round(Number(e.ncol.substr(1))),e.opacity=Number(e.opacity.toFixed(2)),e}static hslToRgb(e,t,i){let r,n,o,a,l;return e=e/60,i<=.5?n=i*(t+1):n=i+t-i*t,r=i*2-n,o=s.hueToRgb(r,n,e+2)*255,a=s.hueToRgb(r,n,e)*255,l=s.hueToRgb(r,n,e-2)*255,{r:o,g:a,b:l}}static hueToRgb(e,t,i){return i<0&&(i+=6),i>=6&&(i-=6),i<1?(t-e)*i+e:i<3?t:i<4?(t-e)*(4-i)+e:e}static hwbToRgb(e,t,i){let r,n,o=[],a;for(n=s.hslToRgb(e,1,.5),o[0]=n.r/255,o[1]=n.g/255,o[2]=n.b/255,a=t+i,a>1&&(t=Number((t/a).toFixed(2)),i=Number((i/a).toFixed(2))),r=0;r<3;r++)o[r]*=1-t-i,o[r]+=t,o[r]=Number(o[r]*255);return{r:o[0],g:o[1],b:o[2]}}static cmykToRgb(e,t,i,r){let n,o,a;return n=255-Math.min(1,e*(1-r)+r)*255,o=255-Math.min(1,t*(1-r)+r)*255,a=255-Math.min(1,i*(1-r)+r)*255,{r:n,g:o,b:a}}static ncolToRgb(e,t,i){let r,n,o;if(o=e,isNaN(e.substr(0,1))){if(r=e.substr(0,1).toUpperCase(),n=e.substr(1),n==""&&(n=0),n=Number(n),isNaN(n))return!1;r=="R"&&(o=0+n*.6),r=="Y"&&(o=60+n*.6),r=="G"&&(o=120+n*.6),r=="C"&&(o=180+n*.6),r=="B"&&(o=240+n*.6),r=="M"&&(o=300+n*.6),r=="W"&&(o=0,t=1-n/100,i=n/100)}return s.hwbToRgb(o,t,i)}static hueToNcol(e){for(;e>=360;)e=e-360;return e<60?"R"+e/.6:e<120?"Y"+(e-60)/.6:e<180?"G"+(e-120)/.6:e<240?"C"+(e-180)/.6:e<300?"B"+(e-240)/.6:e<360?"M"+(e-300)/.6:null}static ncsToRgb(e){let t,i,r,n,o,a,l,c,h,d,p,m,u,f,y,v,b,E,S;return e=s.w3trim(e).toUpperCase(),e=e.replace("(",""),e=e.replace(")",""),e=e.replace("NCS","NCS "),e=e.replace(/ /g," "),e.indexOf("NCS")==-1&&(e="NCS "+e),e=e.match(/^(?:NCS|NCS\sS)\s(\d{2})(\d{2})-(N|[A-Z])(\d{2})?([A-Z])?$/),e===null||(t=parseInt(e[1],10),i=parseInt(e[2],10),r=e[3],r!="N"&&r!="Y"&&r!="R"&&r!="B"&&r!="G")?null:(n=parseInt(e[4],10)||0,r!=="N"?(o=1.05*t-5.25,a=i,r==="Y"&&n<=60?h=1:r==="Y"&&n>60||r==="R"&&n<=80?(r==="Y"?l=n-60:l=n+40,h=(Math.sqrt(14884-Math.pow(l,2))-22)/100):r==="R"&&n>80||r==="B"?h=0:r==="G"&&(l=n-170,h=(Math.sqrt(33800-Math.pow(l,2))-70)/100),r==="Y"&&n<=80?c=0:r==="Y"&&n>80||r==="R"&&n<=60?(r==="Y"?l=n-80+20.5:l=n+20+20.5,c=(104-Math.sqrt(11236-Math.pow(l,2)))/100):r==="R"&&n>60||r==="B"&&n<=80?(r==="R"?l=n-60-60:l=n+40-60,c=(Math.sqrt(1e4-Math.pow(l,2))-10)/100):r==="B"&&n>80||r==="G"&&n<=40?(r==="B"?l=n-80-131:l=n+20-131,c=(122-Math.sqrt(19881-Math.pow(l,2)))/100):r==="G"&&n>40&&(c=0),r==="Y"?p=(85-17/20*n)/100:r==="R"&&n<=60?p=0:r==="R"&&n>60?(l=n-60+35,p=(67.5-Math.sqrt(5776-Math.pow(l,2)))/100):r==="B"&&n<=60?(l=1*n-68.5,p=(6.5+Math.sqrt(7044.5-Math.pow(l,2)))/100):r==="B"&&n>60||r==="G"&&n<=60?p=.9:r==="G"&&n>60&&(l=n-60,p=(90-1/8*l)/100),l=(h+p+c)/3,d=(l-h)*(100-a)/100+h,m=(l-p)*(100-a)/100+p,u=(l-c)*(100-a)/100+c,d>m&&d>u?f=d:m>d&&m>u?f=m:u>d&&u>m?f=u:f=(d+m+u)/3,y=1/f,b=parseInt(d*y*(100-o)/100*255,10),E=parseInt(m*y*(100-o)/100*255,10),S=parseInt(u*y*(100-o)/100*255,10),b>255&&(b=255),E>255&&(E=255),S>255&&(S=255),b<0&&(b=0),E<0&&(E=0),S<0&&(S=0)):(v=parseInt((1-t/100)*255,10),v>255&&(v=255),v<0&&(v=0),b=v,E=v,S=v),{r:b,g:E,b:S})}static rgbToHsl(e,t,i){let r,n,o,a,l,c,h,d=[];for(d[0]=e/255,d[1]=t/255,d[2]=i/255,r=d[0],n=d[0],c=0,o=0;o<d.length-1;o++)d[o+1]<=r&&(r=d[o+1]),d[o+1]>=n&&(n=d[o+1],c=o+1);return c==0&&(h=(d[1]-d[2])/(n-r)),c==1&&(h=2+(d[2]-d[0])/(n-r)),c==2&&(h=4+(d[0]-d[1])/(n-r)),isNaN(h)&&(h=0),h=h*60,h<0&&(h=h+360),a=(r+n)/2,r==n?l=0:a<.5?l=(n-r)/(n+r):l=(n-r)/(2-n-r),l=l,{h,s:l,l:a}}static rgbToHwb(e,t,i){let r,n,o;e=e/255,t=t/255,i=i/255;let a=Math.max(e,t,i),l=Math.min(e,t,i),c=a-l;return c==0?r=0:e==a?r=(t-i)/c%6*360:t==a?r=((i-e)/c+2)%6*360:r=((e-t)/c+4)%6*360,n=l,o=1-a,{h:r,w:n,b:o}}static rgbToCmyk(e,t,i){let r,n,o,a;return e=e/255,t=t/255,i=i/255,a=1-Math.max(e,t,i),a==1?(r=0,n=0,o=0):(r=(1-e-a)/(1-a),n=(1-t-a)/(1-a),o=(1-i-a)/(1-a)),{c:r,m:n,y:o,k:a}}static toHex(e){let t=e.toString(16);for(;t.length<2;)t="0"+t;return t}static w3trim(e){return e.replace(/^\s+|\s+$/g,"")}static isHex(e){return"0123456789ABCDEFabcdef".indexOf(e)>-1}}});var ln,sl=g(()=>{"use strict";Ee();nl();ln=class extends re{constructor(e){super(e);let t=document.createElement("input");t.type="color",e.readonly&&(t.readOnly=!0),t.onchange=async i=>{let r=yi.toColorObject(t.value);await this.property.service.removePreviewValue?.(this.designItems,this.property),this._valueChanged(r.toNameOrHexString())},t.oninput=async i=>{let r=yi.toColorObject(t.value);await this.property.service.previewValue?.(this.designItems,this.property,r.toNameOrHexString())},this.element=t}refreshValue(e,t){if(!t)this.element.value="#000000";else{let i=yi.toColorObject(t);this.element.value=i.toHexString()}}}});var cn,ol=g(()=>{"use strict";Ee();cn=class extends re{constructor(e){super(e);let t=document.createElement("input");t.type="datetime-local",e.readonly&&(t.readOnly=!0),t.onchange=i=>this._valueChanged(t.value),this.element=t}refreshValue(e,t){t?this.element.value=t:this.element.value=null}}});import{html as _u}from"@node-projects/base-custom-webcomponent";var hn,al=g(()=>{"use strict";Ee();hn=class s extends re{static template=_u`<div style="display:flex"><input id="input" type="text"> <button style="width:30px">...</button></div>`;_input;constructor(e){super(e);let t=s.template.content.cloneNode(!0);this._input=t.getElementById("input"),e.readonly&&(this._input.readOnly=!0),this._input.onchange=i=>this._valueChanged(this._input.value),this.element=t}refreshValue(e,t){this._input.value=t}}});var dn,ll=g(()=>{"use strict";Ee();dn=class extends re{constructor(e){super(e);let t=document.createElement("input");t.type="number",e.readonly&&(t.readOnly=!0),t.min=e.min,t.max=e.max,t.step=e.step,t.onchange=i=>this._valueChanged(t.value==""?null:t.valueAsNumber),this.element=t}refreshValue(e,t){this.element.value=t===void 0?null:t}}});var rr,cl=g(()=>{"use strict";Ee();rr=class extends re{elementSelect;elementInput;constructor(e){super(e);let t=document.createElement("div"),i=document.createElement("select");if(e.type=="enum")for(let n of e.enumValues){let o=document.createElement("option");o.value=n[1],o.text=n[0],i.appendChild(o)}else for(let n of e.values){let o=document.createElement("option");o.value=n,o.text=n,i.appendChild(o)}e.readonly&&(i.disabled=!0),i.onchange=n=>this._valueChanged(i.value);let r=document.createElement("input");r.style.display="none",r.onchange=n=>this._valueChanged(r.value),this.elementSelect=i,this.elementInput=r,t.appendChild(this.elementSelect),t.appendChild(this.elementInput),this.element=t}refreshValue(e,t){this.elementSelect.style.display="block",this.elementInput.style.display="none",this.elementSelect.value=t,this.elementSelect.value!=t&&t&&(this.elementInput.value=t,this.elementSelect.style.display="none",this.elementInput.style.display="block")}}});var pn,hl=g(()=>{"use strict";Ee();pn=class extends re{constructor(e){super(e);let t=document.createElement("input");t.type="text",e.readonly&&(t.readOnly=!0),t.onchange=i=>this._valueChanged(t.value),t.onfocus=i=>{t.selectionStart=0,t.selectionEnd=t.value?.length},this.element=t}refreshValue(e,t){t==null?this.element.value="":this.element.value=t}}});var mn,dl=g(()=>{"use strict";Ee();mn=class extends re{constructor(e){super(e);let t=document.createElement("input");t.type="checkbox",e.readonly&&(t.readOnly=!0),t.onchange=i=>this._valueChanged(t.checked),this.element=t}refreshValue(e,t){this.element.checked=t}}});import{BaseCustomWebComponentConstructorAppend as bu,css as wu,html as Su}from"@node-projects/base-custom-webcomponent";var nr,Jd=g(()=>{"use strict";nr=class extends bu{static style=wu`div{font-size:10px;color:#fff}#property{color:#00aff0}#value{color:#d3d3d3}#value.value-set{color:wheat}.container{display:flex;flex-direction:row}::slotted(button){min-width:24px;height:24px;padding:1px;background:#fff;border:1px solid #d3d3d3}`;static template=Su`<div><div id="header" style="display:none"><span id="property"></span><span id="vhd">: <span id="value"></span></span></div><div part="container" class="container"><slot id="slot"></slot></div></div>`;static properties={value:String,property:String,unsetValue:String,noValueInHeader:Boolean};constructor(){super(),this._restoreCachedInititalValues()}_value;get value(){return this._value}set value(e){this._value=e,this._updateValue()}property;unsetValue;noValueInHeader;_updateValue(){this.value?(this._getDomElement("value").innerText=this.value,this._getDomElement("value").classList.add("value-set")):this._getDomElement("value").classList.remove("value-set");let e=this._getDomElement("slot");for(let t of e.assignedElements())t.dataset.value==this.value?t.style.background="cornflowerblue":t.style.background=""}ready(){this._parseAttributesToProperties(),this.property&&(this._getDomElement("header").style.display="block"),this.noValueInHeader&&(this._getDomElement("vhd").style.display="none");let e=this._getDomElement("slot");e.onclick=t=>{let i=t.composedPath();for(let r of e.assignedElements())if(i.indexOf(r)>=0){let n=this._value;this.value=r.dataset.value;let o=new CustomEvent("value-changed",{detail:{newValue:this._value,oldValue:n}});this.dispatchEvent(o)}},this._getDomElement("property").innerText=this.property??"",this._getDomElement("value").innerText=this.unsetValue??"",this._updateValue()}};customElements.define("node-projects-image-button-list-selector",nr)});var vi,Yt,pl,ep,C,se=g(()=>{"use strict";vi="text/json/elementdefintion",Yt="text/json/bindingobject",pl="text/json/propertydrop",ep=new URL(import.meta.url),C=ep.origin+ep.pathname.split("/").slice(0,-1).join("/")+"/../assets/"});var un,ml=g(()=>{"use strict";Ee();Jd();_e();se();un=class extends re{constructor(e){super(e);let t=new nr;t.property=e.name,t.unsetValue=e.defaultValue;let i=z.camelToDashCase(e.name);if(e.type=="enum")for(let r of e.enumValues){let n=document.createElement("button");n.dataset.value=r[1];let o=document.createElement("img");o.title=r[1],o.src=C+"images/chromeDevtools/"+i+"-"+r[1]+"-icon.svg",n.appendChild(o),t.appendChild(n)}else for(let r of e.values){let n=document.createElement("button");n.dataset.value=r;let o=document.createElement("img");o.title=r,o.src=C+"images/chromeDevtools/"+i+"-"+r+"-icon.svg",n.appendChild(o),t.appendChild(n)}t.addEventListener("value-changed",r=>this._valueChanged(t.value)),this.element=t}refreshValue(e,t){this.element.value=t}}});import{BaseCustomWebComponentConstructorAppend as Cu,css as Eu,html as Pu,TypedEvent as fn}from"@node-projects/base-custom-webcomponent";var sr,tp=g(()=>{"use strict";sr=class extends Cu{static style=Eu`:host{margin:4px;margin-left:auto;margin-right:auto}#container{display:grid;grid-template-columns:minmax(30px,40px) minmax(30px,60px) minmax(30px,40px);grid-template-rows:auto;grid-template-areas:" . top ." "left middle right" " . bottom .";column-gap:2px;row-gap:2px}input{width:20px;text-align:center;font-size:10px;height:20px;padding:0}#left{grid-area:left;justify-self:end}#top{grid-area:top;align-self:end;justify-self:center}#right{grid-area:right;justify-self:start}#bottom{grid-area:bottom;align-self:start;justify-self:center}#rect{grid-area:middle;border:1px solid #000;background:#d3d3d3}`;static template=Pu`<div id="container"><input id="left"> <input id="top"> <input id="right"> <input id="bottom"><div id="rect"></div></div>`;_leftInput;_topInput;_rightInput;_bottomInput;_valueLeft;get valueLeft(){return this._valueLeft}set valueLeft(e){let t=this._valueLeft;this._valueLeft=e,t!==e&&(this._updateValue(),this.valueLeftChanged.emit({newValue:e,oldValue:t}))}valueLeftChanged=new fn;_valueTop;get valueTop(){return this._valueTop}set valueTop(e){let t=this._valueTop;this._valueTop=e,t!==e&&(this._updateValue(),this.valueTopChanged.emit({newValue:e,oldValue:t}))}valueTopChanged=new fn;_valueRight;get valueRight(){return this._valueRight}set valueRight(e){let t=this._valueRight;this._valueRight=e,t!==e&&(this._updateValue(),this.valueRightChanged.emit({newValue:e,oldValue:t}))}valueRightChanged=new fn;_valueBottom;get valueBottom(){return this._valueBottom}set valueBottom(e){let t=this._valueBottom;this._valueBottom=e,t!==e&&(this._updateValue(),this.valueBottomChanged.emit({newValue:e,oldValue:t}))}valueBottomChanged=new fn;property;unsetValue;_updateValue(){this._leftInput.value=this.valueLeft,this._topInput.value=this.valueTop,this._rightInput.value=this.valueRight,this._bottomInput.value=this._valueBottom}ready(){this._parseAttributesToProperties(),this._leftInput=this._getDomElement("left"),this._topInput=this._getDomElement("top"),this._rightInput=this._getDomElement("right"),this._bottomInput=this._getDomElement("bottom"),this._leftInput.onkeyup=e=>{e.key==="Enter"&&(this._valueLeft=this._leftInput.value)},this._topInput.onkeyup=e=>{e.key==="Enter"&&(this._valueTop=this._topInput.value)},this._rightInput.onkeyup=e=>{e.key==="Enter"&&(this._valueRight=this._rightInput.value)},this._bottomInput.onkeyup=e=>{e.key==="Enter"&&(this._valueBottom=this._bottomInput.value)},this._leftInput.onblur=e=>this._valueLeft=this._leftInput.value,this._topInput.onblur=e=>this._valueTop=this._topInput.value,this._rightInput.onblur=e=>this._valueRight=this._rightInput.value,this._bottomInput.onblur=e=>this._valueBottom=this._bottomInput.value,this._updateValue()}};customElements.define("node-projects-thickness-editor",sr)});var gn,ul=g(()=>{"use strict";Ee();tp();gn=class extends re{constructor(e){super(e);let t=new sr;t.property=e.name,t.valueLeftChanged.on(i=>this._valueChanged(i.newValue)),this.element=t}refreshValue(e,t){this.element.valueLeft=t}}});var xi,fl=g(()=>{"use strict";Ee();xi=class s extends re{static fontList;constructor(e){super(e);let t=document.createElement("select");e.readonly&&(t.disabled=!0),this.element=t,s.addFontsToSelect(t),this.element.onchange=i=>this._valueChanged(this.element.value)}static addFontsToSelect(e){s.fontList?s.parseFontList(e):window.queryLocalFonts?window.queryLocalFonts().then(t=>{s.fontList=[...new Set(t.map(i=>i.family))],s.parseFontList(e)}):(s.fontList=["Verdana","Arial","Tahoma","Trebuchet MS","Times New Roman","Georgia","Garamond","Courier New","Brush Script MT"],s.parseFontList(e))}static parseFontList(e){for(let t of s.fontList){let i=document.createElement("option");i.value=t,i.text=t,e.appendChild(i)}}refreshValue(e,t){this.element.value=t}}});function yl(s,e=4){if(!Number.isFinite(s))return"0";let t=10**Math.max(0,e),i=Math.round(s*t)/t;return Object.is(i,-0)?"0":`${i}`}function Xt(s,e){let t=s?.trim()??"";return t?t+(e??""):""}function rp(s){let e=s?.trim()??"";if(!e)return{kind:"empty"};let t=e.match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:([a-z%]+))?$/i);if(!t)return{kind:"text",text:e};let i=Number(t[1]);return Number.isNaN(i)?{kind:"text",text:e}:{kind:"numeric",numberText:t[1],value:i,unit:t[2]?.toLowerCase()??""}}function ar(s){return s?.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())??""}function Ru(s){return s?.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)??""}function op(s){return s.property.numericValueDecimalPlaces??(s.fromUnit==="%"||s.toUnit==="%"?2:4)}function zu(s,e,t){return s==null?null:typeof s=="number"?Xt(yl(s,t),e):s}function vn(s){return s.designItems?.[0]?.element??null}function Fu(s){return s?typeof HTMLElement<"u"&&s instanceof HTMLElement?!0:typeof s.getBoundingClientRect=="function":!1}function ap(s){if(!s)return null;if(s.parentElement)return s.parentElement;if(s.assignedSlot)return s.assignedSlot;let t=s.getRootNode?.()?.host;if(Fu(t))return t;let i=s.ownerDocument;return i?.body??i?.documentElement??null}function lp(s){let e=parseFloat(s??"");return Number.isNaN(e)?null:e}function Bu(s){if(typeof getComputedStyle!="function")return null;let e=vn(s);if(!e)return null;let t=getComputedStyle(e),i=s.property.propertyName??s.property.name;if(!i)return null;let r=typeof t.getPropertyValue=="function"?l=>t.getPropertyValue(l):l=>"";if(i.startsWith("--"))return r(i)?.trim()??null;let n=i.includes("-")?i:Ru(i),o=r(n)?.trim();if(o)return o;let a=ar(i);return t[a]?.trim()??null}function Hu(s){let e=rp(s.rawValue);if(e.kind==="numeric")return{...s,value:e.value,numberText:e.numberText,fromUnit:e.unit||s.fromUnit,rawValue:Xt(e.numberText,e.unit)};let t=Bu(s),i=rp(t);if(i.kind!=="numeric"){if(s.numericType!=="length")return null;let r=cp(s);if(r==null)return null;let n=yl(r);return{...s,value:r,numberText:n,fromUnit:"px",rawValue:Xt(n,"px")}}return{...s,value:i.value,numberText:i.numberText,fromUnit:i.unit,rawValue:Xt(i.numberText,i.unit)}}function Gu(s){if(typeof window>"u")return null;switch(s){case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;default:return null}}function or(s,e){if(typeof getComputedStyle!="function")return null;let t=vn(s);if(!t)return null;let i=e?ap(t)??t:t;return lp(getComputedStyle(i).fontSize)}function Wu(){return typeof getComputedStyle!="function"||typeof document>"u"?null:lp(getComputedStyle(document.documentElement).fontSize)}function ju(s){if(typeof getComputedStyle!="function")return null;let e=vn(s);if(!e)return null;let t=ar(s.property.propertyName??s.property.name);if(t==="fontSize")return or(s,!0);if(t==="lineHeight")return or(s,!1);let r=(ap(e)??e).getBoundingClientRect?.();return r?Lu.has(t)?r.height:(Nu.has(t),r.width):null}function cp(s){let e=vn(s);if(!e)return null;let t=e.getBoundingClientRect?.();if(!t)return null;let i=ar(s.property.propertyName??s.property.name);return Ou.has(i)?t.width:Vu.has(i)?t.height:null}function gl(s,e){let t=e?.toLowerCase()??"";if(!t)return null;let i=ku.get(t);if(i!=null)return i;if(t==="%"){let r=ju(s);return r==null?null:r/100}if(t==="em")return or(s,ar(s.property.propertyName??s.property.name)==="fontSize");if(t==="rem")return Wu();if(t==="ex"){let r=or(s,!1);return r==null?null:r/2}if(t==="ch"){let r=or(s,!1);return r==null?null:r/2}return Gu(t)}function hp(s){let e=Hu(s);if(!e)return Xt(s.numberText,s.toUnit);let t=op(s),i;switch(e.numericType){case"length":i=Uu(e.value,e.fromUnit,e.toUnit,e);break;case"angle":i=yn(e.value,e.fromUnit,e.toUnit,Iu);break;case"time":i=yn(e.value,e.fromUnit,e.toUnit,Du);break;case"frequency":i=yn(e.value,e.fromUnit,e.toUnit,Tu);break;case"resolution":i=yn(e.value,e.fromUnit,e.toUnit,Mu);break;case"flex":i=e.value;break;case"scale":i=Yu(e.value,e.fromUnit,e.toUnit);break}return i==null?Xt(e.numberText,e.toUnit):Xt(yl(i,t),e.toUnit)}function Uu(s,e,t,i){let r=e?.toLowerCase()??"",n=t?.toLowerCase()??"";if(r!=="%"&&n==="%"){let l=cp(i),c=gl(i,n);if(l!=null&&c!=null)return l/c}let o=gl(i,e),a=gl(i,t);return o==null||a==null?null:s*o/a}function Yu(s,e,t){let i=e?.toLowerCase()??"",r=t?.toLowerCase()??"";if(i===r)return s;let n=i==="%"?.01:i===""?1:null,o=r==="%"?.01:r===""?1:null;return n==null||o==null?null:s*n/o}function yn(s,e,t,i){let r=e?.toLowerCase()??"",n=t?.toLowerCase()??"";if(!r||!n||r===n)return s;if(!i)return null;let o=i.get(r),a=i.get(n);return o==null||a==null?null:s*o/a}function vl(s,e){if(s==="css-length")return"length";if(s==="length"||s==="angle"||s==="time"||s==="frequency"||s==="flex"||s==="resolution"||s==="scale")return s;let t=ar(e);if(!t)return null;for(let i of Object.keys(ip))if(ip[i].has(t))return i;return null}function dp(s,e){return vl(s,e)!=null}function Xu(s){let e=op(s),t=zu(s.property.numericValueConverter?.(s.value,s.fromUnit,s.toUnit,s.property,s.numericType,s.numberText,s.rawValue,s.designItems),s.toUnit,e);return t??hp(s)}function pp(s){return[...new Set([...s??[],...Au].filter(Boolean))]}function mp(s){let e=vl(s.type,s.propertyName??s.name);return s.values=pp(s.values),e&&(s.units??=[...np[e]],s.unitSteps??={...sp[e]},s.numericValueConverter??=(t,i,r,n,o,a,l,c)=>hp({property:n,numericType:o,designItems:c,value:t,numberText:a??`${t}`,rawValue:l??`${t}${i}`,fromUnit:i,toUnit:r})),s}function up(s){let e=vl(s.type,s.name);return e?{numericType:e,units:s.units?.length?s.units:np[e],fixedValues:pp(s.values),unitSteps:s.unitSteps??sp[e]??{},convertValue:t=>Xu({...t,property:s,numericType:e})}:null}var Au,np,sp,ip,ku,Iu,Du,Tu,Mu,Nu,Lu,Ou,Vu,xn=g(()=>{"use strict";Au=["initial","inherit","unset"],np={length:["px","%","em","rem","vw","vh","vmin","vmax","pt","pc","in","cm","mm","q","ch","ex"],angle:["deg","grad","rad","turn"],time:["ms","s"],frequency:["hz","khz"],flex:["fr"],resolution:["dpi","dpcm","dppx","x"],scale:["","%"]},sp={length:{em:.1,rem:.1,in:.01,cm:.1,ch:.1,ex:.1},angle:{rad:.01,turn:.1},time:{ms:10,s:.1},frequency:{khz:.1},flex:{fr:.1},resolution:{dppx:.1,x:.1},scale:{"":.1,"%":10}},ip={length:new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","blockSize","inlineSize","minBlockSize","minInlineSize","maxBlockSize","maxInlineSize","top","left","right","bottom","fontSize","lineHeight","columnGap","rowGap","gap","flexBasis","letterSpacing","wordSpacing","textIndent","outlineWidth","outlineOffset","perspective"]),angle:new Set(["rotate","offsetRotate"]),time:new Set(["animationDelay","animationDuration","transitionDelay","transitionDuration"]),frequency:new Set,flex:new Set,resolution:new Set(["imageResolution"]),scale:new Set(["zoom","scale"])},ku=new Map([["px",1],["in",96],["cm",96/2.54],["mm",96/25.4],["q",96/101.6],["pt",96/72],["pc",16]]),Iu=new Map([["deg",1],["grad",.9],["rad",180/Math.PI],["turn",360]]),Du=new Map([["ms",1],["s",1e3]]),Tu=new Map([["hz",1],["khz",1e3]]),Mu=new Map([["dpi",1],["dpcm",2.54],["dppx",96],["x",96]]),Nu=new Set(["width","minWidth","maxWidth","inlineSize","minInlineSize","maxInlineSize","left","right","columnGap","gap","flexBasis","perspective"]),Lu=new Set(["height","minHeight","maxHeight","top","bottom","blockSize","minBlockSize","maxBlockSize","rowGap"]),Ou=new Set(["width","minWidth","maxWidth","inlineSize","minInlineSize","maxInlineSize"]),Vu=new Set(["height","minHeight","maxHeight","blockSize","minBlockSize","maxBlockSize"])});var lr,_n=g(()=>{"use strict";Ra();Ee();xn();lr=class extends re{constructor(e){super(e);let t=up(e),i=new $i;i.units=t?.units??e.units??[],i.fixedValues=t?.fixedValues??e.values,i.unitValueConverter=r=>t?.convertValue({...r,designItems:this.designItems}),i.unitSteps=t?.unitSteps??e.unitSteps??{},i.step=e.step,i.min=e.min,i.max=e.max,i.readOnly=e.readonly,i.valueChanged.on(async r=>this._valueChanged(r.newValue===""?null:r.newValue)),i.valuePreviewChanged.on(async r=>this._previewValueChanged(r.newValue===""?null:r.newValue)),i.valuePreviewFinished.on(async r=>{await this._removePreviewValue(),!r.wasCancelled&&await this._valueChanged(r.newValue===""?null:r.newValue)}),this.element=i}designItemsChanged(e){super.designItemsChanged(e)}refreshValue(e,t){this.element.value=t==null?"":String(t)}}});var bn,xl=g(()=>{"use strict";sl();ol();al();ll();cl();hl();dl();ml();ul();fl();_n();xn();bn=class{getEditorForProperty(e){if(e.createEditor)return e.createEditor(e);if(dp(e.type,e.name))return new lr(e);switch(e.type){case"json":return new hn(e);case"color":return new ln(e);case"font":return new xi(e);case"date":return new cn(e);case"number":return new dn(e);case"list":return new rr(e);case"enum":return new rr(e);case"boolean":return new mn(e);case"img-list":return new un(e);case"thickness":return new gn(e);case"string":default:return new pn(e)}}}});import{BaseCustomWebComponentLazyAppend as Ku,BaseCustomWebComponentConstructorAppend as $u,BaseCustomWebComponentNoAttachedTemplate as Zu,BaseCustomWebComponentConstructorAppendLazyReady as Qu}from"@node-projects/base-custom-webcomponent";var wn,_l=g(()=>{"use strict";ai();wn=class extends it{name="baseCustomWebComponent";isHandledElement(e){return e.element instanceof Ku||e.element instanceof Qu||e.element instanceof $u||e.element instanceof Zu}_notifyChangedProperty(e,t,i){e.element._parseAttributesToProperties()}}});function Sn(s,e,t){if(e==null||e==""){s.style.transform=t;return}let i=new DOMMatrix(e),n=new DOMMatrix(t).multiply(i);s.style.transform=n.toString()}function _i(s){return new DOMPoint(s.m41,s.m42,0,0)}var bl=g(()=>{"use strict"});var _,ze=g(()=>{"use strict";(function(s){s.Move="M",s.Line="L",s.CubicBezier="C",s.QuadraticBezier="Q",s.Arc="A",s.Close="Z",s.HorizontalLine="H",s.VerticalLine="V",s.SmoothCubic="S",s.SmoothQuadratic="T"})(_||(_={}))});function ft(s,e,t=45){let i=fp(s,e),o=(Math.round(i/t)*t+360)%360*Math.PI/180,a=e.x-s.x,l=e.y-s.y,c=Math.sqrt(a*a+l*l),h=s.x+Math.cos(o)*c,d=s.y-Math.sin(o)*c;return{x:h,y:d}}function bi(s,e){let t,i=Math.sqrt(Math.pow(e.x-s.x,2)+Math.pow(e.y-s.y,2)),r=fp(s,e),n=r-(Math.floor(r/90)*90+45);return t=i*Math.cos(n*(Math.PI/180))/Math.sqrt(2),t}function fp(s,e){let t=-1*Math.atan2(e.y-s.y,e.x-s.x)*180/Math.PI;return t<0&&(t+=360),t}function gp(s,e,t){let i="",r=s.getPathData({normalize:!0});for(let n of r)switch(n.type){case"M":case"m":case"L":case"l":case"T":case"t":i+=n.type+" "+(n.values[0]-e)+" "+(n.values[1]-t)+" ";break;case"Z":case"z":i+=n.type+" ";break;case"C":case"c":i+=n.type+" "+(n.values[0]-e)+" "+(n.values[1]-t)+" "+(n.values[2]-e)+" "+(n.values[3]-t)+" "+(n.values[4]-e)+" "+(n.values[5]-t)+" ";break;case"S":case"s":case"Q":case"q":i+=n.type+" "+(n.values[0]-e)+" "+(n.values[1]-t)+" "+(n.values[2]-e)+" "+(n.values[3]-t)+" ";break;case"A":case"a":i+=n.type+" "+(n.values[0]-e)+" "+(n.values[1]-t)+" "+n.values[2]+" "+n.values[3]+" "+n.values[4]+" "+(n.values[5]-e)+" "+(n.values[6]-t)+" ";break}return i}function cr(s){let e="";for(let i of s){e+=i.type+" ";for(var t=0;t<i.values.length;t++)i.values[t]!=null&&!isNaN(i.values[t])&&(e+=i.values[t]+" ")}return e}var Qe=g(()=>{"use strict";(!SVGPathElement.prototype.getPathData||!SVGPathElement.prototype.setPathData)&&(function(){var s={Z:"Z",M:"M",L:"L",C:"C",Q:"Q",A:"A",H:"H",V:"V",S:"S",T:"T",z:"Z",m:"m",l:"l",c:"c",q:"q",a:"a",h:"h",v:"v",s:"s",t:"t"},e=function(o){this._string=o,this._currentIndex=0,this._endIndex=this._string.length,this._prevCommand=null,this._skipOptionalSpaces()};e.prototype={parseSegment:function(){var o=this._string[this._currentIndex],a=s[o]?s[o]:null;if(a===null){if(this._prevCommand===null||((o==="+"||o==="-"||o==="."||o>="0"&&o<="9")&&this._prevCommand!=="Z"?this._prevCommand==="M"?a="L":this._prevCommand==="m"?a="l":a=this._prevCommand:a=null,a===null))return null}else this._currentIndex+=1;this._prevCommand=a;var l=null,c=a.toUpperCase();return c==="H"||c==="V"?l=[this._parseNumber()]:c==="M"||c==="L"||c==="T"?l=[this._parseNumber(),this._parseNumber()]:c==="S"||c==="Q"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber()]:c==="C"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber()]:c==="A"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseArcFlag(),this._parseArcFlag(),this._parseNumber(),this._parseNumber()]:c==="Z"&&(this._skipOptionalSpaces(),l=[]),l===null||l.indexOf(null)>=0?null:{type:a,values:l}},hasMoreData:function(){return this._currentIndex<this._endIndex},peekSegmentType:function(){var o=this._string[this._currentIndex];return s[o]?s[o]:null},initialCommandIsMoveTo:function(){if(!this.hasMoreData())return!0;var o=this.peekSegmentType();return o==="M"||o==="m"},_isCurrentSpace:function(){var o=this._string[this._currentIndex];return o<=" "&&(o===" "||o===`
5
- `||o===" "||o==="\r"||o==="\f")},_skipOptionalSpaces:function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex+=1;return this._currentIndex<this._endIndex},_skipOptionalSpacesOrDelimiter:function(){return this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&this._string[this._currentIndex]!==","?!1:(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&this._string[this._currentIndex]===","&&(this._currentIndex+=1,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},_parseNumber:function(){var o=0,a=0,l=1,c=0,h=1,d=1,p=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="+"?this._currentIndex+=1:this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="-"&&(this._currentIndex+=1,h=-1),this._currentIndex===this._endIndex||(this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")&&this._string[this._currentIndex]!==".")return null;for(var m=this._currentIndex;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)this._currentIndex+=1;if(this._currentIndex!==m)for(var u=this._currentIndex-1,f=1;u>=m;)a+=f*(this._string[u]-"0"),u-=1,f*=10;if(this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="."){if(this._currentIndex+=1,this._currentIndex>=this._endIndex||this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")return null;for(;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)l*=10,c+=(this._string.charAt(this._currentIndex)-"0")/l,this._currentIndex+=1}if(this._currentIndex!==p&&this._currentIndex+1<this._endIndex&&(this._string[this._currentIndex]==="e"||this._string[this._currentIndex]==="E")&&this._string[this._currentIndex+1]!=="x"&&this._string[this._currentIndex+1]!=="m"){if(this._currentIndex+=1,this._string[this._currentIndex]==="+"?this._currentIndex+=1:this._string[this._currentIndex]==="-"&&(this._currentIndex+=1,d=-1),this._currentIndex>=this._endIndex||this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")return null;for(;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)o*=10,o+=this._string[this._currentIndex]-"0",this._currentIndex+=1}var y=a+c;return y*=h,o&&(y*=Math.pow(10,d*o)),p===this._currentIndex?null:(this._skipOptionalSpacesOrDelimiter(),y)},_parseArcFlag:function(){if(this._currentIndex>=this._endIndex)return null;var o=null,a=this._string[this._currentIndex];if(this._currentIndex+=1,a==="0")o=0;else if(a==="1")o=1;else return null;return this._skipOptionalSpacesOrDelimiter(),o}};var t=function(o){if(!o||o.length===0)return[];var a=new e(o),l=[];if(a.initialCommandIsMoveTo())for(;a.hasMoreData();){var c=a.parseSegment();if(c===null)break;l.push(c)}return l},i=function(o,a,l,c,h,d,p,m,u,f){var y=function(Ft){return Math.PI*Ft/180},v=function(Ft,Ki,Bt){var Gm=Ft*Math.cos(Bt)-Ki*Math.sin(Bt),Wm=Ft*Math.sin(Bt)+Ki*Math.cos(Bt);return{x:Gm,y:Wm}},b=y(p),E=[],S,T,O,I;if(f)S=f[0],T=f[1],O=f[2],I=f[3];else{var U=v(o,a,-b);o=U.x,a=U.y;var $=v(l,c,-b);l=$.x,c=$.y;var V=(o-l)/2,j=(a-c)/2,X=V*V/(h*h)+j*j/(d*d);X>1&&(X=Math.sqrt(X),h=X*h,d=X*d);var Z;m===u?Z=-1:Z=1;var oe=h*h,ye=d*d,De=oe*ye-oe*j*j-ye*V*V,me=oe*j*j+ye*V*V,J=Z*Math.sqrt(Math.abs(De/me));O=J*h*j/d+(o+l)/2,I=J*-d*V/h+(a+c)/2,S=Math.asin(parseFloat(((a-I)/d).toFixed(9))),T=Math.asin(parseFloat(((c-I)/d).toFixed(9))),o<O&&(S=Math.PI-S),l<O&&(T=Math.PI-T),S<0&&(S=Math.PI*2+S),T<0&&(T=Math.PI*2+T),u&&S>T&&(S=S-Math.PI*2),!u&&T>S&&(T=T-Math.PI*2)}var ae=T-S;if(Math.abs(ae)>Math.PI*120/180){var Ye=T,Ce=l,ct=c;u&&T>S?T=S+Math.PI*120/180*1:T=S+Math.PI*120/180*-1,l=O+h*Math.cos(T),c=I+d*Math.sin(T),E=i(l,c,Ce,ct,h,d,p,0,u,[T,Ye,O,I])}ae=T-S;var tt=Math.cos(S),Te=Math.sin(S),ji=Math.cos(T),Ui=Math.sin(T),ii=Math.tan(ae/4),ri=4/3*h*ii,Pt=4/3*d*ii,ht=[o,a],Xe=[o+ri*Te,a-Pt*tt],zt=[l+ri*Ui,c-Pt*ji],Yi=[l,c];if(Xe[0]=2*ht[0]-Xe[0],Xe[1]=2*ht[1]-Xe[1],f)return[Xe,zt,Yi].concat(E);E=[Xe,zt,Yi].concat(E);for(var Xi=[],At=0;At<E.length;At+=3){let Ft=v(E[At][0],E[At][1],b),Ki=v(E[At+1][0],E[At+1][1],b),Bt=v(E[At+2][0],E[At+2][1],b);Xi.push([Ft.x,Ft.y,Ki.x,Ki.y,Bt.x,Bt.y])}return Xi},r=function(o){var a=[],l=null,c=null,h=null,d=null;return o.forEach(function(p){var m=p.type;if(m==="M"){var u=p.values[0],f=p.values[1];a.push({type:"M",values:[u,f]}),h=u,d=f,l=u,c=f}else if(m==="m"){var u=l+p.values[0],f=c+p.values[1];a.push({type:"M",values:[u,f]}),h=u,d=f,l=u,c=f}else if(m==="L"){var u=p.values[0],f=p.values[1];a.push({type:"L",values:[u,f]}),l=u,c=f}else if(m==="l"){var u=l+p.values[0],f=c+p.values[1];a.push({type:"L",values:[u,f]}),l=u,c=f}else if(m==="C"){var y=p.values[0],v=p.values[1],b=p.values[2],E=p.values[3],u=p.values[4],f=p.values[5];a.push({type:"C",values:[y,v,b,E,u,f]}),l=u,c=f}else if(m==="c"){var y=l+p.values[0],v=c+p.values[1],b=l+p.values[2],E=c+p.values[3],u=l+p.values[4],f=c+p.values[5];a.push({type:"C",values:[y,v,b,E,u,f]}),l=u,c=f}else if(m==="Q"){var y=p.values[0],v=p.values[1],u=p.values[2],f=p.values[3];a.push({type:"Q",values:[y,v,u,f]}),l=u,c=f}else if(m==="q"){var y=l+p.values[0],v=c+p.values[1],u=l+p.values[2],f=c+p.values[3];a.push({type:"Q",values:[y,v,u,f]}),l=u,c=f}else if(m==="A"){var u=p.values[5],f=p.values[6];a.push({type:"A",values:[p.values[0],p.values[1],p.values[2],p.values[3],p.values[4],u,f]}),l=u,c=f}else if(m==="a"){var u=l+p.values[5],f=c+p.values[6];a.push({type:"A",values:[p.values[0],p.values[1],p.values[2],p.values[3],p.values[4],u,f]}),l=u,c=f}else if(m==="H"){var u=p.values[0];a.push({type:"H",values:[u]}),l=u}else if(m==="h"){var u=l+p.values[0];a.push({type:"H",values:[u]}),l=u}else if(m==="V"){var f=p.values[0];a.push({type:"V",values:[f]}),c=f}else if(m==="v"){var f=c+p.values[0];a.push({type:"V",values:[f]}),c=f}else if(m==="S"){var b=p.values[0],E=p.values[1],u=p.values[2],f=p.values[3];a.push({type:"S",values:[b,E,u,f]}),l=u,c=f}else if(m==="s"){var b=l+p.values[0],E=c+p.values[1],u=l+p.values[2],f=c+p.values[3];a.push({type:"S",values:[b,E,u,f]}),l=u,c=f}else if(m==="T"){var u=p.values[0],f=p.values[1];a.push({type:"T",values:[u,f]}),l=u,c=f}else if(m==="t"){var u=l+p.values[0],f=c+p.values[1];a.push({type:"T",values:[u,f]}),l=u,c=f}else(m==="Z"||m==="z")&&(a.push({type:"Z",values:[]}),l=h,c=d)}),a},n=function(o){var a=[],l=null,c=null,h=null,d=null,p=null,m=null,u=null;return o.forEach(function(f){if(f.type==="M"){var y=f.values[0],v=f.values[1];a.push({type:"M",values:[y,v]}),m=y,u=v,d=y,p=v}else if(f.type==="C"){var b=f.values[0],E=f.values[1],S=f.values[2],T=f.values[3],y=f.values[4],v=f.values[5];a.push({type:"C",values:[b,E,S,T,y,v]}),c=S,h=T,d=y,p=v}else if(f.type==="L"){var y=f.values[0],v=f.values[1];a.push({type:"L",values:[y,v]}),d=y,p=v}else if(f.type==="H"){var y=f.values[0];a.push({type:"L",values:[y,p]}),d=y}else if(f.type==="V"){var v=f.values[0];a.push({type:"L",values:[d,v]}),p=v}else if(f.type==="S"){var S=f.values[0],T=f.values[1],y=f.values[2],v=f.values[3],O,I;l==="C"||l==="S"?(O=d+(d-c),I=p+(p-h)):(O=d,I=p),a.push({type:"C",values:[O,I,S,T,y,v]}),c=S,h=T,d=y,p=v}else if(f.type==="T"){var y=f.values[0],v=f.values[1],b,E;l==="Q"||l==="T"?(b=d+(d-c),E=p+(p-h)):(b=d,E=p);var O=d+2*(b-d)/3,I=p+2*(E-p)/3,U=y+2*(b-y)/3,$=v+2*(E-v)/3;a.push({type:"C",values:[O,I,U,$,y,v]}),c=b,h=E,d=y,p=v}else if(f.type==="Q"){var b=f.values[0],E=f.values[1],y=f.values[2],v=f.values[3],O=d+2*(b-d)/3,I=p+2*(E-p)/3,U=y+2*(b-y)/3,$=v+2*(E-v)/3;a.push({type:"C",values:[O,I,U,$,y,v]}),c=b,h=E,d=y,p=v}else if(f.type==="A"){let oe=Math.abs(f.values[0]),ye=Math.abs(f.values[1]);var V=f.values[2],j=f.values[3],X=f.values[4],y=f.values[5],v=f.values[6];if(oe===0||ye===0)a.push({type:"C",values:[d,p,y,v,y,v]}),d=y,p=v;else if(d!==y||p!==v){var Z=i(d,p,y,v,oe,ye,V,j,X);Z.forEach(function(J){a.push({type:"C",values:J})}),d=y,p=v}}else f.type==="Z"&&(a.push(f),d=m,p=u);l=f.type}),a};SVGPathElement.prototype.getPathData=function(o){if(o&&o.normalize){let a;return a=t(this.getAttribute("d")||""),n(r(a))}else return t(this.getAttribute("d")||"")},SVGPathElement.prototype.setPathData=function(o){if(o.length===0)this.removeAttribute("d");else{let a="";for(let l=0,c=o.length;l<c;l+=1){let h=o[l];l>0&&(a+=" "),a+=h.type,h.values&&h.values.length>0&&(a+=" "+h.values.join(" "))}this.setAttribute("d",a)}},SVGRectElement.prototype.getPathData=function(o){var a=this.x.baseVal.value,l=this.y.baseVal.value,c=this.width.baseVal.value,h=this.height.baseVal.value,d=this.hasAttribute("rx")?this.rx.baseVal.value:this.ry.baseVal.value,p=this.hasAttribute("ry")?this.ry.baseVal.value:this.rx.baseVal.value;d>c/2&&(d=c/2),p>h/2&&(p=h/2);var m=[{type:"M",values:[a+d,l]},{type:"H",values:[a+c-d]},{type:"A",values:[d,p,0,0,1,a+c,l+p]},{type:"V",values:[l+h-p]},{type:"A",values:[d,p,0,0,1,a+c-d,l+h]},{type:"H",values:[a+d]},{type:"A",values:[d,p,0,0,1,a,l+h-p]},{type:"V",values:[l+p]},{type:"A",values:[d,p,0,0,1,a+d,l]},{type:"Z",values:[]}];return m=m.filter(function(u){return!(u.type==="A"&&(u.values[0]===0||u.values[1]===0))}),o&&o.normalize===!0&&(m=n(m)),m},SVGCircleElement.prototype.getPathData=function(o){var a=this.cx.baseVal.value,l=this.cy.baseVal.value,c=this.r.baseVal.value,h=[{type:"M",values:[a+c,l]},{type:"A",values:[c,c,0,0,1,a,l+c]},{type:"A",values:[c,c,0,0,1,a-c,l]},{type:"A",values:[c,c,0,0,1,a,l-c]},{type:"A",values:[c,c,0,0,1,a+c,l]},{type:"Z",values:[]}];return o&&o.normalize===!0&&(h=n(h)),h},SVGEllipseElement.prototype.getPathData=function(o){var a=this.cx.baseVal.value,l=this.cy.baseVal.value,c=this.rx.baseVal.value,h=this.ry.baseVal.value,d=[{type:"M",values:[a+c,l]},{type:"A",values:[c,h,0,0,1,a,l+h]},{type:"A",values:[c,h,0,0,1,a-c,l]},{type:"A",values:[c,h,0,0,1,a,l-h]},{type:"A",values:[c,h,0,0,1,a+c,l]},{type:"Z",values:[]}];return o&&o.normalize===!0&&(d=n(d)),d},SVGLineElement.prototype.getPathData=function(){return[{type:"M",values:[this.x1.baseVal.value,this.y1.baseVal.value]},{type:"L",values:[this.x2.baseVal.value,this.y2.baseVal.value]}]},SVGPolylineElement.prototype.getPathData=function(){for(var o=[],a=0;a<this.points.numberOfItems;a+=1){var l=this.points.getItem(a);o.push({type:a===0?"M":"L",values:[l.x,l.y]})}return o},SVGPolygonElement.prototype.getPathData=function(){for(var o=[],a=0;a<this.points.numberOfItems;a+=1){var l=this.points.getItem(a);o.push({type:a===0?"M":"L",values:[l.x,l.y]})}return o.push({type:"Z",values:[]}),o}})()});var wl={};Vd(wl,{SvgPathGeometryReader:()=>hr});var hr,dr=g(()=>{"use strict";ze();Qe();Qe();hr=class{read(e){let i=e.getPathData({normalize:!1}),r=[],n={x:0,y:0},o={x:0,y:0},a=!1;for(let l of i){let c=l.type===l.type.toLowerCase();switch(l.type.toUpperCase()){case"M":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1];r.push({type:_.Move,relative:c,point:{x:d,y:p}}),n={x:d,y:p},o={x:d,y:p};break}case"L":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1];r.push({type:_.Line,relative:c,point:{x:d,y:p}}),n={x:d,y:p};break}case"H":{let d=c?n.x+l.values[0]:l.values[0];r.push({type:_.HorizontalLine,relative:c,point:{x:d,y:n.y}}),n={x:d,y:n.y};break}case"V":{let d=c?n.y+l.values[0]:l.values[0];r.push({type:_.VerticalLine,relative:c,point:{x:n.x,y:d}}),n={x:n.x,y:d};break}case"C":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1],m=c?n.x+l.values[2]:l.values[2],u=c?n.y+l.values[3]:l.values[3],f=c?n.x+l.values[4]:l.values[4],y=c?n.y+l.values[5]:l.values[5];r.push({type:_.CubicBezier,relative:c,point:{x:f,y},cp1:{x:d,y:p},cp2:{x:m,y:u}}),n={x:f,y};break}case"S":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1],m=c?n.x+l.values[2]:l.values[2],u=c?n.y+l.values[3]:l.values[3];r.push({type:_.SmoothCubic,relative:c,point:{x:m,y:u},cp2:{x:d,y:p}}),n={x:m,y:u};break}case"Q":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1],m=c?n.x+l.values[2]:l.values[2],u=c?n.y+l.values[3]:l.values[3];r.push({type:_.QuadraticBezier,relative:c,point:{x:m,y:u},cp1:{x:d,y:p}}),n={x:m,y:u};break}case"T":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1];r.push({type:_.SmoothQuadratic,relative:c,point:{x:d,y:p}}),n={x:d,y:p};break}case"A":{let d=c?n.x+l.values[5]:l.values[5],p=c?n.y+l.values[6]:l.values[6];r.push({type:_.Arc,relative:c,point:{x:d,y:p},arc:{rx:l.values[0],ry:l.values[1],rotation:l.values[2],largeArc:l.values[3]===1,sweep:l.values[4]===1}}),n={x:d,y:p};break}case"Z":{a=!0,r.push({type:_.Close,relative:c,point:{...o}}),n={...o};break}}}return{segments:r,closed:a}}serialize(e){let t=[],i={x:0,y:0};for(let r of e.segments){let n=r.relative;switch(r.type){case _.Move:{let o=n?r.point.x-i.x:r.point.x,a=n?r.point.y-i.y:r.point.y;t.push({type:n?"m":"M",values:[o,a]}),i={...r.point};break}case _.Line:{let o=n?r.point.x-i.x:r.point.x,a=n?r.point.y-i.y:r.point.y;t.push({type:n?"l":"L",values:[o,a]}),i={...r.point};break}case _.HorizontalLine:{let o=n?r.point.x-i.x:r.point.x;t.push({type:n?"h":"H",values:[o]}),i={...r.point};break}case _.VerticalLine:{let o=n?r.point.y-i.y:r.point.y;t.push({type:n?"v":"V",values:[o]}),i={...r.point};break}case _.CubicBezier:{let o=n?r.cp1.x-i.x:r.cp1.x,a=n?r.cp1.y-i.y:r.cp1.y,l=n?r.cp2.x-i.x:r.cp2.x,c=n?r.cp2.y-i.y:r.cp2.y,h=n?r.point.x-i.x:r.point.x,d=n?r.point.y-i.y:r.point.y;t.push({type:n?"c":"C",values:[o,a,l,c,h,d]}),i={...r.point};break}case _.SmoothCubic:{let o=n?r.cp2.x-i.x:r.cp2.x,a=n?r.cp2.y-i.y:r.cp2.y,l=n?r.point.x-i.x:r.point.x,c=n?r.point.y-i.y:r.point.y;t.push({type:n?"s":"S",values:[o,a,l,c]}),i={...r.point};break}case _.QuadraticBezier:{let o=n?r.cp1.x-i.x:r.cp1.x,a=n?r.cp1.y-i.y:r.cp1.y,l=n?r.point.x-i.x:r.point.x,c=n?r.point.y-i.y:r.point.y;t.push({type:n?"q":"Q",values:[o,a,l,c]}),i={...r.point};break}case _.SmoothQuadratic:{let o=n?r.point.x-i.x:r.point.x,a=n?r.point.y-i.y:r.point.y;t.push({type:n?"t":"T",values:[o,a]}),i={...r.point};break}case _.Arc:{let o=n?r.point.x-i.x:r.point.x,a=n?r.point.y-i.y:r.point.y;t.push({type:n?"a":"A",values:[r.arc.rx,r.arc.ry,r.arc.rotation,r.arc.largeArc?1:0,r.arc.sweep?1:0,o,a]}),i={...r.point};break}case _.Close:{t.push({type:n?"z":"Z",values:[]});break}}}return[{attribute:"d",value:cr(t)}]}}});var Cn,Sl=g(()=>{"use strict";ze();Cn=class{read(e){let t=e,i=t.x.baseVal.value,r=t.y.baseVal.value,n=t.width.baseVal.value,o=t.height.baseVal.value;return{segments:[{type:_.Move,relative:!1,point:{x:i,y:r}},{type:_.Line,relative:!1,point:{x:i+n,y:r}},{type:_.Line,relative:!1,point:{x:i+n,y:r+o}},{type:_.Line,relative:!1,point:{x:i,y:r+o}},{type:_.Close,relative:!1,point:{x:i,y:r}}],closed:!0}}serialize(e){let t=e.segments.filter(c=>c.type!==_.Close);if(t.length<2)return[];let i=t.map(c=>c.point.x),r=t.map(c=>c.point.y),n=Math.min(...i),o=Math.min(...r),a=Math.max(...i),l=Math.max(...r);return[{attribute:"x",value:n.toString()},{attribute:"y",value:o.toString()},{attribute:"width",value:(a-n).toString()},{attribute:"height",value:(l-o).toString()}]}}});var En,Cl=g(()=>{"use strict";ze();En=class{read(e){let t=e,i=t.x1.baseVal.value,r=t.y1.baseVal.value,n=t.x2.baseVal.value,o=t.y2.baseVal.value;return{segments:[{type:_.Move,relative:!1,point:{x:i,y:r}},{type:_.Line,relative:!1,point:{x:n,y:o}}],closed:!1}}serialize(e){let t=e.segments.filter(i=>i.type!==_.Close);return t.length<2?[]:[{attribute:"x1",value:t[0].point.x.toString()},{attribute:"y1",value:t[0].point.y.toString()},{attribute:"x2",value:t[1].point.x.toString()},{attribute:"y2",value:t[1].point.y.toString()}]}}});var Pn,El=g(()=>{"use strict";ze();Pn=class{read(e){let t=e,i=t.cx.baseVal.value,r=t.cy.baseVal.value,n=t.rx.baseVal.value,o=t.ry.baseVal.value;return{segments:[{type:_.Move,relative:!1,point:{x:i,y:r-o}},{type:_.Arc,relative:!1,point:{x:i+n,y:r},arc:{rx:n,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i,y:r+o},arc:{rx:n,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i-n,y:r},arc:{rx:n,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i,y:r-o},arc:{rx:n,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:i,y:r-o}}],closed:!0}}serialize(e){let t=e.segments.filter(d=>d.type!==_.Close);if(t.length<4)return[];let i=t[0].point,r=t[1].point,n=t[2].point,o=t[3].point,a=(r.x+o.x)/2,l=(i.y+n.y)/2,c=Math.abs(r.x-o.x)/2,h=Math.abs(n.y-i.y)/2;return[{attribute:"cx",value:a.toString()},{attribute:"cy",value:l.toString()},{attribute:"rx",value:c.toString()},{attribute:"ry",value:h.toString()}]}}});var An,Pl=g(()=>{"use strict";ze();An=class{read(e){let t=e,i=t.cx.baseVal.value,r=t.cy.baseVal.value,n=t.r.baseVal.value;return{segments:[{type:_.Move,relative:!1,point:{x:i,y:r-n}},{type:_.Arc,relative:!1,point:{x:i+n,y:r},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i,y:r+n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i-n,y:r},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i,y:r-n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:i,y:r-n}}],closed:!0}}serialize(e){let t=e.segments.filter(h=>h.type!==_.Close);if(t.length<4)return[];let i=t[0].point,r=t[1].point,n=t[2].point,o=t[3].point,a=(r.x+o.x)/2,l=(i.y+n.y)/2,c=Math.max(Math.abs(r.x-o.x)/2,Math.abs(n.y-i.y)/2);return[{attribute:"cx",value:a.toString()},{attribute:"cy",value:l.toString()},{attribute:"r",value:c.toString()}]}}});var kn,Al=g(()=>{"use strict";ze();kn=class{read(e){let i=e.points,r=[];for(let n=0;n<i.numberOfItems;n++){let o=i.getItem(n);n===0?r.push({type:_.Move,relative:!1,point:{x:o.x,y:o.y}}):r.push({type:_.Line,relative:!1,point:{x:o.x,y:o.y}})}return r.length>0&&r.push({type:_.Close,relative:!1,point:{...r[0].point}}),{segments:r,closed:!0}}serialize(e){return[{attribute:"points",value:e.segments.filter(r=>r.type!==_.Close).map(r=>`${r.point.x},${r.point.y}`).join(" ")}]}}});var In,kl=g(()=>{"use strict";ze();In=class{read(e){let i=e.points,r=[];for(let n=0;n<i.numberOfItems;n++){let o=i.getItem(n);n===0?r.push({type:_.Move,relative:!1,point:{x:o.x,y:o.y}}):r.push({type:_.Line,relative:!1,point:{x:o.x,y:o.y}})}return{segments:r,closed:!1}}serialize(e){return[{attribute:"points",value:e.segments.filter(r=>r.type!==_.Close).map(r=>`${r.point.x},${r.point.y}`).join(" ")}]}}});function Dn(s){if(s instanceof SVGPathElement)return de.has(SVGPathElement)||de.set(SVGPathElement,new hr),de.get(SVGPathElement);if(s instanceof SVGRectElement)return de.has(SVGRectElement)||de.set(SVGRectElement,new Cn),de.get(SVGRectElement);if(s instanceof SVGLineElement)return de.has(SVGLineElement)||de.set(SVGLineElement,new En),de.get(SVGLineElement);if(s instanceof SVGEllipseElement)return de.has(SVGEllipseElement)||de.set(SVGEllipseElement,new Pn),de.get(SVGEllipseElement);if(s instanceof SVGCircleElement)return de.has(SVGCircleElement)||de.set(SVGCircleElement,new An),de.get(SVGCircleElement);if(s instanceof SVGPolygonElement)return de.has(SVGPolygonElement)||de.set(SVGPolygonElement,new kn),de.get(SVGPolygonElement);if(s instanceof SVGPolylineElement)return de.has(SVGPolylineElement)||de.set(SVGPolylineElement,new In),de.get(SVGPolylineElement)}function xb(s,e){yp.set(s,e)}function _b(s){return yp.get(s)??null}var de,yp,Tn=g(()=>{"use strict";dr();Sl();Cl();El();Pl();Al();kl();de=new Map;yp=new Map});function he(s){let e=[];e:for(let t of s){let i=t.parent;for(;i!=null&&!i.isRootItem;){if(s.indexOf(i)>=0)continue e;i=i.parent}e.push(t)}return e}function Mn(s,e){if(e==="position"){let t=getComputedStyle(s.element),i=parseFloat(t.left);i=Number.isNaN(i)?null:i;let r=parseFloat(t.top);return r=Number.isNaN(r)?null:r,{x:i??0,y:r??0}}return{x:0,y:0}}function Nn(s,e,t,i){let r=e.element,n=getComputedStyle(r);if(i==="position"){if(qu(e,t))return;let o=s.element,a=s.getComputedStyle();a.position!=="relative"&&a.position!=="absolute"&&o&&o.offsetParent&&(o=o.offsetParent,o&&(a=s.window.getComputedStyle(o)));let l=null,c=null,h=null,d=null,p=0,m=0,u=0,f=0,y=!1;if(n.position==="relative"||n.position==="absolute")l=parseFloat(r.style.left),l=Number.isNaN(l)?null:l,h=parseFloat(r.style.top),h=Number.isNaN(h)?null:h,c=parseFloat(r.style.right),c=Number.isNaN(c)?null:c,d=parseFloat(r.style.bottom),d=Number.isNaN(d)?null:d,y=!0;else if(o&&o!==s.element){let v=Y(o),b=Y(e.element);p=b.left-v.left,m=b.right-v.right,u=b.top-v.top,f=b.bottom-v.bottom}y||e.setStyle("position","absolute"),(l||c==null)&&e.setStyle("left",N(e,t.x+(l??0)+p)+"px"),(h||d==null)&&e.setStyle("top",N(e,t.y+(h??0)+u)+"px"),c!=null&&e.setStyle("right",N(e,(c??0)-t.x+m)+"px"),d!=null&&e.setStyle("bottom",N(e,(d??0)-t.y+f)+"px")}}function qu(s,e){let t=s.element;if(!(t instanceof SVGGraphicsElement)||t instanceof SVGSVGElement)return!1;let i=Dn(t);if(!i)return!1;let r=i.read(t);for(let a of r.segments)a.point&&(a.point.x+=e.x,a.point.y+=e.y),a.cp1&&(a.cp1.x+=e.x,a.cp1.y+=e.y),a.cp2&&(a.cp2.x+=e.x,a.cp2.y+=e.y);let n=i.serialize(r);if(!n.length)return!1;let o=s.openGroup("place svg geometry");for(let a of n)s.setAttribute(a.attribute,a.value);return o.commit(),!0}function N(s,e){return s.serviceContainer.options.roundPixelsToDecimalPlaces>=0?e.toFixed(s.serviceContainer.options.roundPixelsToDecimalPlaces):e.toString()}var Pe=g(()=>{"use strict";ce();Tn()});function W(s){return $d()?s.metaKey:s.ctrlKey}var Fe=g(()=>{"use strict";Ne()});function Il(s){let e=[];for(let t of s)t.nodeType===k.TextNode||t.nodeType===k.Comment||e.push(t);return e}var nt,wi=g(()=>{"use strict";Ze();bl();Pe();$e();Qe();Fe();q();ce();nt=class{serviceForContainer(e,t,i){return i!=null&&i.getComputedStyle()?.position=="absolute"?!0:!(t.display==="grid"||t.display==="inline-grid"||t.display==="flex"||t.display==="inline-flex")}isEnterableContainer(e){return!(Q.IsSelfClosingElement(e.element.localName)||!e.isRootItem&&e.element.shadowRoot&&e.element.shadowRoot.querySelector("slot")==null)}canEnter(e,t){return!(e.instanceServiceContainer.designerCanvas.readOnly||!this.isEnterableContainer(e)||!t.every(i=>!i.element.contains(e.element)&&i!==e))}canLeave(e,t){return!0}getElementOffset(e,t){return e.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(e.element)}calculateTrack(e,t,i,r,n,o){let a=n.x-i.x,l=n.y-i.y;if(!W(e)){if(t.alignOnGrid){let c=Mn(o,"position");c.x=c.x%t.gridSize,c.y=c.y%t.gridSize,a=Math.round(a/t.gridSize)*t.gridSize-c.x,l=Math.round(l/t.gridSize)*t.gridSize-c.y}else if(t.alignOnSnap){let c=Y(o.element),h=t.snapLines.snapToPosition({x:n.x-r.x,y:n.y-r.y},{width:c.width/t.scaleFactor,height:c.height/t.scaleFactor},{x:a>0?1:-1,y:l>0?1:-1});h.x!==null?a=h.x-Math.round(i.x)+Math.round(r.x):a=Math.round(a),h.y!==null?l=h.y-Math.round(i.y)+Math.round(r.y):l=Math.round(l)}}return{x:a,y:l}}placePoint(e,t,i,r,n,o,a){let l=o.x,c=o.y;if(!W(e)){if(t.alignOnGrid)l=Math.round(l/t.gridSize)*t.gridSize,c=Math.round(c/t.gridSize)*t.gridSize;else if(t.alignOnSnap){let h=t.snapLines.snapToPosition({x:o.x-n.x,y:o.y-n.y},null,{x:l>0?1:-1,y:c>0?1:-1});h.x!==null?l=h.x:l=Math.round(l),h.y!==null?c=h.y:c=Math.round(c)}}return{x:l,y:c}}startPlace(e,t,i,r,n,o,a){}place(e,t,i,r,n,o,a){let l=this.calculateTrack(e,t,r,n,o,a[0]);e.shiftKey&&(l=ft({x:0,y:0},l,90));let c=he(Il(a));for(let h of c){let d=h.instanceServiceContainer.designerCanvas.canvas,p=h.parent.element.getBoxQuads({relativeTo:d,iframes:h.instanceServiceContainer.designerCanvas.iframes})[0],m=h.parent.element.convertPointFromNode(new DOMPoint(l.x+p.p1.x,l.y+p.p1.y),d,{iframes:h.instanceServiceContainer.designerCanvas.iframes}),u=getComputedStyle(h.element),f=new DOMMatrix;u.rotate!="none"&&u.rotate&&(f=f.multiply(new DOMMatrix("rotate("+u.rotate.replace(" ",",")+")"))),u.scale!="none"&&u.scale&&(f=f.multiply(new DOMMatrix("scale("+u.scale.replace(" ",",")+")"))),m=f.inverse().transformPoint(m);let y=jr(h.element);y!==1&&(m=new DOMPoint(m.x/y,m.y/y));let v=new DOMMatrix().translate(m.x,m.y);Sn(h.element,h.getStyle("transform"),v.toString())}a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(c,"place",!1)}moveElements(e,t,i){for(let r of e)t.x&&r.setStyle("left",parseInt(r.element.style.left)-t.x+"px"),t.y&&r.setStyle("top",parseInt(r.element.style.top)-t.y+"px");e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshExtensions(e),e[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(e,"place",!0)}enterContainer(e,t,i){let r=he(t);for(let n of r)i=="drop"&&n.setStyle("position","absolute"),e.insertChild(n),n.lastContainerSize&&(n.hasStyle("width")||n.setStyle("width",n.lastContainerSize.width+"px"),n.hasStyle("height")||n.setStyle("height",n.lastContainerSize.height+"px"));t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(r,"place",!0)}leaveContainer(e,t){let i=he(t);t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(i,"place",!0)}finishPlace(e,t,i,r,n,o,a){let l=he(a);for(let c of l){let h=_i(new DOMMatrix(c.element.style.transform)),d=_i(new DOMMatrix(c.getStyle("transform")??""));c.element.style.transform=c.getStyle("transform")??"";let p={x:h.x,y:h.y},m=getComputedStyle(c.element),u=new DOMMatrix;m.rotate!="none"&&m.rotate&&(u=u.multiply(new DOMMatrix("rotate("+m.rotate.replace(" ",",")+")"))),m.scale!="none"&&m.scale&&(u=u.multiply(new DOMMatrix("scale("+m.scale.replace(" ",",")+")"))),p=u.transformPoint(p),Nn(i,c,{x:p.x-d.x,y:p.y-d.y},"position")}for(let c of a)t.extensionManager.removeExtension(c,P.Placement);a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(l,"place",!0)}}});var Nt,pr=g(()=>{"use strict";ne();on();Nt=class{async parse(e,t,i,r){let n;Document.parseHTMLUnsafe&&!sn?n=Document.parseHTMLUnsafe(e):n=new DOMParser().parseFromString(e,"text/html",{includeShadowRoots:!0});let o=this.createDesignItems(n.head.childNodes,t,i),a=this.createDesignItems(n.body.childNodes,t,i);return[...o,...a]}createDesignItems(e,t,i){let r=[];for(let n of e)r.push(this._createDesignItemsRecursive(n,t,i));return r}_createDesignItemsRecursive(e,t,i){return M.createDesignItemFromInstance(e,t,i)}}});var Ln,Dl=g(()=>{"use strict";ai();_e();ue();Ln=class extends it{name="lit2";isHandledElement(e){return!!e.element.constructor.elementProperties}async getProperties(e){if(!this.isHandledElement(e))return null;let t=[];for(let i of e.element.constructor.elementProperties.entries()){let r=i[0],n=i[1],o=n;if(n.type&&(o=n.type),o===String){let a={name:r,type:"string",service:this,propertyType:x.propertyAndAttribute};t.push(a)}else if(o===Object){let a={name:r,type:"string",service:this,propertyType:x.propertyAndAttribute};t.push(a)}else if(o===Number){let a={name:r,type:"number",service:this,propertyType:x.propertyAndAttribute};t.push(a)}else if(o===Date){let a={name:r,type:"date",service:this,propertyType:x.propertyAndAttribute};t.push(a)}else if(o===Boolean){let a={name:r,type:"boolean",service:this,propertyType:x.propertyAndAttribute};t.push(a)}else if(z.isTypescriptEnum(o)){let a={name:r,type:"enum",enumValues:z.getTypescriptEnumEntries(o),service:this,propertyType:x.propertyAndAttribute};t.push(a)}}return t}_notifyChangedProperty(e,t,i){}}});function vp(s,e){Tl||(Tl=document.createElement("canvas"));let t=Tl.getContext("2d");return t.font=e,t.measureText(s).width}var Tl,xp=g(()=>{"use strict"});var K,gt=g(()=>{"use strict";(function(s){s.Pointer="Pointer",s.DrawSelection="DrawSelection",s.DrawPath="DrawPath",s.DrawRect="DrawRect",s.DrawEllipsis="DrawEllipsis",s.DrawLine="DrawLine",s.Zoom="Zoom",s.Pan="Pan",s.MagicWandSelector="MagicWandSelector",s.RectangleSelector="RectangleSelector",s.PickColor="PickColor",s.Text="Text",s.DrawElementTool="DrawElementTool",s.Guides="Guides",s.Inspect="Inspect",s.Accessibility="Accessibility",s.Position="Position",s.Padding="Padding",s.Margin="Margin",s.Flexbox="Flexbox",s.Move="Move",s.HueShift="HueShift",s.BoxShadows="BoxShadows",s.FontStyles="FontStyles"})(K||(K={}))});var D,te=g(()=>{"use strict";(function(s){s[s.Background=10]="Background",s[s.Normal=20]="Normal",s[s.Foreground=30]="Foreground"})(D||(D={}))});var Si,Ml=g(()=>{"use strict";te();Si=class{overlays=[];overlayLayerView;extensionManager;designerCanvas;constructor(e,t){this.extensionManager=e,this.designerCanvas=t,this.overlayLayerView=t.overlayLayer}_backup;_valuesHaveChanges(...e){if(this._backup==null)return this._backup=e,!0;for(let t=0;t<e.length;t++)if(e[t]!==this._backup[t])return this._backup=e,!0;return!1}_removeAllOverlays(){for(let e of this.overlays)try{this.overlayLayerView.removeOverlay(e)}catch(t){console.error(t)}this.overlays=[]}_addOverlay(e,t=D.Normal){this.overlayLayerView.addOverlay(this.constructor.name,e,t),this.overlays.push(e)}_drawGroup(e,t,i){let r=this.overlayLayerView.drawGroup(this.constructor.name,e,t,i);return t||this.overlays.push(r),r}_drawLine(e,t,i,r,n,o,a){let l=this.overlayLayerView.drawLine(this.constructor.name,e,t,i,r,n,o,a);return o||this.overlays.push(l),l}_drawCircle(e,t,i,r,n,o){let a=this.overlayLayerView.drawCircle(this.constructor.name,e,t,i,r,n,o);return n||this.overlays.push(a),a}_drawRect(e,t,i,r,n,o,a){let l=this.overlayLayerView.drawRect(this.constructor.name,e,t,i,r,n,o,a);return o||this.overlays.push(l),l}_drawComplexRect(e,t,i,r){let n="M"+e.map(a=>a.x+","+a.y).join(" ")+"Z",o=this.overlayLayerView.drawPath(this.constructor.name,n,t,i,r);return i||this.overlays.push(o),o}_drawPath(e,t,i,r){let n=this.overlayLayerView.drawPath(this.constructor.name,e,t,i,r);return i||this.overlays.push(n),n}_drawText(e,t,i,r,n,o){let a=this.overlayLayerView.drawText(this.constructor.name,e,t,i,r,n,o);return n||this.overlays.push(a),a}_drawHTML(e,t,i,r,n,o,a,l){let c=this.overlayLayerView.drawHTML(this.constructor.name,e,t,i,r,n,o,a,l);return a||this.overlays.push(c),c}_drawTextWithBackground(e,t,i,r,n,o,a){let l=this.overlayLayerView.drawTextWithBackground(this.constructor.name,e,t,i,r,n,o,a);return o||this.overlays.push(...l),l}_drawTransformedRect(e,t,i,r){let n="M"+e.p1.x+" "+e.p1.y+" L"+e.p2.x+" "+e.p2.y+" L"+e.p3.x+" "+e.p3.y+" L"+e.p4.x+" "+e.p4.y+"Z",o=this.overlayLayerView.drawPath(this.constructor.name,n,t,i,r);return i||this.overlays.push(o),o}}});var R,ie=g(()=>{"use strict";Ml();te();R=class extends Si{extendedItem;constructor(e,t,i){super(e,t),this.extendedItem=i}remove(){this.extensionManager.removeExtensionInstance(this.extendedItem,this)}createToolbar(e,t,i,r=D.Foreground){let n=e.content.cloneNode(!0);n.querySelectorAll("*").forEach(a=>{a.onpointerdown=l=>{this.designerCanvas.ignoreEvent(l)},a instanceof HTMLInputElement&&(a.addEventListener("keydown",l=>{this.designerCanvas.ignoreEvent(l)},{capture:!0}),a.addEventListener("keyup",l=>{this.designerCanvas.ignoreEvent(l)},{capture:!0}))});let o=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");return o.classList.add("svg-toolbar-container"),o.setAttribute("width",""+t),o.setAttribute("height",""+i),o.appendChild(n),o.style.scale=""+1/this.designerCanvas.zoomFactor,o.style.transformBox="fill-box",this._addOverlay(o,r),o.updatePosition=a=>{o.style.scale=""+1/this.designerCanvas.zoomFactor;let l=this.overlayLayerView.getBoundingClientRect(),c=o.children[0].getBoundingClientRect(),h=this.designerCanvas.scaleFactor,d=l.width/h-this.designerCanvas.canvasOffset.x*h;c.width+a.x*h>d&&(a.x=(d-c.width)/h),a.x<-this.designerCanvas.canvasOffset.x&&(a.x=-this.designerCanvas.canvasOffset.x),o.setAttribute("x",""+a.x),o.setAttribute("y",""+a.y)},o.getById=a=>o.querySelector("#"+a),o}}});var Ju,On,Nl=g(()=>{"use strict";ce();xp();gt();ie();Ju=60,On=class extends R{_rect;_clickRect;_text;_width;_createTitleText;constructor(e,t,i,r){super(e,t,i),this._createTitleText=r}extend(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(i&&!isNaN(i.p1.x)){let r=Y(this.extendedItem.element),n=vp(this.extendedItem.name,"10px monospace"),o=Math.sqrt(Math.pow(i.p2.x-i.p1.x,2)+Math.pow(i.p2.y-i.p1.y,2)),a=this.extendedItem.name;this.extendedItem.id&&(a="#"+this.extendedItem.id),this._createTitleText&&(a=this._createTitleText(this.extendedItem)),this._width=Math.max(Math.min(o,n),Ju),this._rect=this._drawRect(i.p1.x,i.p1.y,this._width,15,"svg-primary-selection-move",this._rect),this._clickRect=this._drawRect(i.p1.x,i.p1.y,this._width,18,"svg-invisible",this._clickRect),this._clickRect.style.background="transparent",this._text=this._drawHTML('<div style="position:relative; pointer-events: none;"><span style="width: 100%; position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transform-origin: 0 0; padding-left: 2px;">'+a+"</span></div>",(r.x-this.designerCanvas.containerBoundingRect.x)/this.designerCanvas.scaleFactor,i.p1.y-16,this._width,15,"svg-text-primary",this._text),this._text.style.overflow="visible",this._clickRect.addEventListener("pointerdown",l=>this._pointerEvent(l)),this._clickRect.addEventListener("pointermove",l=>this._pointerEvent(l)),this._clickRect.addEventListener("pointerup",l=>this._pointerEvent(l)),this._clickRect.addEventListener("contextmenu",l=>{l.preventDefault(),this.designerCanvas.showDesignItemContextMenu(this.extendedItem,l)}),this.refresh(e,t)}}_drawMoveOverlay(e){}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(i.p1.x)){let r=Math.atan2(i.p2.y-i.p1.y,i.p2.x-i.p1.x)*180/Math.PI;if(this._valuesHaveChanges(i.p1.x,i.p1.y,r,this.designerCanvas.scaleFactor)){let n=15/this.designerCanvas.scaleFactor,o=-(16/this.designerCanvas.scaleFactor),a=this._width/this.designerCanvas.scaleFactor;this._rect.setAttribute("x",""+i.p1.x),this._rect.setAttribute("y",""+i.p1.y),this._rect.style.rotate=r+"deg",this._rect.style.translate="0 "+o+"px",this._rect.style.transformOrigin="0 100%",this._rect.style.transformBox="fill-box",this._rect.setAttribute("height",""+n),this._rect.setAttribute("width",""+a),this._rect.style.strokeWidth=(1/this.designerCanvas.scaleFactor).toString(),this._clickRect.setAttribute("x",""+i.p1.x),this._clickRect.setAttribute("y",""+i.p1.y),this._clickRect.style.rotate=r+"deg",this._clickRect.style.translate="0 "+o+"px",this._clickRect.style.transformOrigin="0 100%",this._clickRect.style.transformBox="fill-box",this._clickRect.setAttribute("height",""+(n+3)),this._clickRect.setAttribute("width",""+a),this._clickRect.style.strokeWidth=(1/this.designerCanvas.scaleFactor).toString(),this._text.setAttribute("x",""+i.p1.x),this._text.setAttribute("y",""+i.p1.y),this._text.style.fontSize=10/this.designerCanvas.scaleFactor+"px",this._text.setAttribute("height",""+n),this._text.setAttribute("width",""+a),this._text.children[0].children[0].style.rotate=r+"deg",this._text.children[0].children[0].style.translate="0 "+o+"px",this._text.children[0].children[0].style.transformOrigin="0 100%"}}}_pointerEvent(e){e.preventDefault(),e.stopPropagation(),e.button!=2&&this.designerCanvas.serviceContainer.designerTools.get(K.Pointer).pointerEventHandler(this.designerCanvas,e,this.extendedItem.element)}dispose(){this._removeAllOverlays()}}});import{css as ef}from"@node-projects/base-custom-webcomponent";var Vn,Ll=g(()=>{"use strict";Nl();Vn=class{_createTitleText;constructor(e){this._createTitleText=e}shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new On(e,t,i,this._createTitleText)}static style=ef`.svg-text-primary{stroke:none;color:#fff;font-family:monospace}`}});var w,le=g(()=>{"use strict";(function(s){s.PointerDown="pointerdown",s.PointerMove="pointermove",s.PointerUp="pointerup",s.DragEnter="dragenter",s.DragEnd="dragend",s.DragLeave="dragleave",s.DragOver="dragover",s.Drop="drop",s.Scroll="scroll",s.Wheel="wheel",s.ContextMenu="contextmenu",s.KeyDown="keydown",s.KeyUp="keyup",s.DblClick="dblclick"})(w||(w={}))});function Ol(s,e,t){if(!s)return null;let i={px:n=>n,cm:n=>n*38,mm:n=>n*3.8,q:n=>n*.95,in:n=>n*96,pc:n=>n*16,pt:n=>n*1.333333,rem:n=>n*parseFloat(getComputedStyle(document.documentElement).fontSize),em:n=>n*parseFloat(getComputedStyle(e).fontSize),vw:n=>n/100*window.innerWidth,vh:n=>n/100*window.innerHeight,vmin:n=>n/100*(window.innerHeight<window.innerWidth?window.innerHeight:window.innerWidth),vmax:n=>n/100*(window.innerHeight>window.innerWidth?window.innerHeight:window.innerWidth),lh:n=>n*parseFloat(getComputedStyle(e).lineHeight),rlh:n=>n*parseFloat(getComputedStyle(document.documentElement).lineHeight),"%":n=>n/100*(t=="height"?Rn(e).height:Rn(e).width),ms:n=>n,s:n=>n*1e3,deg:n=>n,rad:n=>n*(180/Math.PI),grad:n=>n*(180/200),turn:n=>n*360},r=s.trim().match(_p);if(r){let n=Number(r[1]),o=r[2].toLowerCase();if(o in i)return i[o](n)}return s}function Kt(s){let e=s.trim().match(_p);return e?e[2].toLowerCase():null}function Ci(s,e,t,i,r){if(!s)return null;let n={px:o=>o,cm:o=>o/38,mm:o=>o/3.8,q:o=>o/.95,in:o=>o/96,pc:o=>o/16,pt:o=>o/1.333333,rem:o=>o/parseFloat(getComputedStyle(document.documentElement).fontSize),em:o=>o/parseFloat(getComputedStyle(e).fontSize),vw:o=>o*100/window.innerWidth,vh:o=>o*100/window.innerHeight,vmin:o=>o*100/(window.innerHeight<window.innerWidth?window.innerHeight:window.innerWidth),vmax:o=>o*100/(window.innerHeight>window.innerWidth?window.innerHeight:window.innerWidth),lh:o=>o/parseFloat(getComputedStyle(e).lineHeight),rlh:o=>o/parseFloat(getComputedStyle(document.documentElement).lineHeight),"%":o=>o*100/(t=="height"?Rn(e).height:Rn(e).width),ms:o=>o,s:o=>o/1e3,deg:o=>o,rad:o=>o/(180/Math.PI),grad:o=>o/(180/200),turn:o=>o/360};if(typeof s=="string"&&(s=Ol(s,e,t)),i in n){let o=n[i](s);return r?r(o)+i:o+i}return r?r(s):s}function Rn(s){return{width:s.offsetWidth,height:s.offsetHeight}}function rf(s){let e=s.split(" "),t=[];for(let i=0;i<e.length;i++){let r=e[i];if(r.startsWith("repeat("))for(;!r.includes(")");)i++,e[i]&&(r+=e[i]);t.push(r)}return t}function bp(s){let e=rf(s),t=[];for(let i of e)if(i.startsWith("repeat(")){let r=i.split(",");for(let n=0;n<parseInt(r[0].substring(7));n++)t.push(r[1].substring(0,r[1].length-1))}else t.push(i);return t.map(i=>Kt(i))}var tf,_p,Vl=g(()=>{"use strict";tf=["px","cm","mm","q","in","pc","pt","rem","em","vw","vh","vmin","vmax","lh","rlh","%","ms","s","deg","rad","grad","turn","cqw","cqh","cqi","cqb","cqmin","cqmax","fr"],_p=new RegExp(`^([-+]?(?:\\d+(?:\\.\\d+)?))(${tf.join("|")})$`,"i")});function Gl(s=window,e=!1){s.__getBoxQuadsPolyfillFns??={},s.__getBoxQuadsPolyfillFns.getBoxQuads=af,s.__getBoxQuadsPolyfillFns.convertQuadFromNode=nf,s.__getBoxQuadsPolyfillFns.convertRectFromNode=sf,s.__getBoxQuadsPolyfillFns.convertPointFromNode=of,(e||!s.Node.prototype.getBoxQuads)&&(s.Node.prototype.getBoxQuads=function(t){return s.__getBoxQuadsPolyfillFns.getBoxQuads(this,t)}),(e||!s.Node.prototype.convertQuadFromNode)&&(s.Node.prototype.convertQuadFromNode=function(t,i,r){return s.__getBoxQuadsPolyfillFns.convertQuadFromNode(this,t,i,r)}),(e||!s.Node.prototype.convertRectFromNode)&&(s.Node.prototype.convertRectFromNode=function(t,i,r){return s.__getBoxQuadsPolyfillFns.convertRectFromNode(this,t,i,r)}),(e||!s.Node.prototype.convertPointFromNode)&&(s.Node.prototype.convertPointFromNode=function(t,i,r){return s.__getBoxQuadsPolyfillFns.convertPointFromNode(this,t,i,r)})}function nf(s,e,t,i){let r=(s.ownerDocument.defaultView??window).document.body,n=Ue(t,r,i?.iframes,!0),o=Ue(s,r,i?.iframes,!0).inverse();if(i?.fromBox&&i?.fromBox!=="border"){let l=pe(t);e=new DOMQuad(Ae(e.p1,i.fromBox,l,-1),Ae(e.p2,i.fromBox,l,-1),Ae(e.p3,i.fromBox,l,-1),Ae(e.p4,i.fromBox,l,-1))}let a=new DOMQuad(o.transformPoint(n.transformPoint(e.p1)),o.transformPoint(n.transformPoint(e.p2)),o.transformPoint(n.transformPoint(e.p3)),o.transformPoint(n.transformPoint(e.p4)));if(i?.toBox&&i?.toBox!=="border"&&(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)){let l=pe(s);a=new DOMQuad(Ae(a.p1,i.toBox,l,-1),Ae(a.p2,i.toBox,l,-1),Ae(a.p3,i.toBox,l,-1),Ae(a.p4,i.toBox,l,-1))}return a}function sf(s,e,t,i){let r=(s.ownerDocument.defaultView??window).document.body.parentElement,n=Ue(t,r,i?.iframes,!0),o=Ue(s,r,i?.iframes,!0).inverse();if(i?.fromBox&&i?.fromBox!=="border"){let l=Ae(new DOMPoint(e.x,e.y),i.fromBox,pe(t),1);e=new DOMRect(l.x,l.y,e.width,e.height)}let a=new DOMQuad(o.transformPoint(n.transformPoint(new DOMPoint(e.x,e.y))),o.transformPoint(n.transformPoint(new DOMPoint(e.x+e.width,e.y))),o.transformPoint(n.transformPoint(new DOMPoint(e.x+e.width,e.y+e.height))),o.transformPoint(n.transformPoint(new DOMPoint(e.x,e.y+e.height))));if(i?.toBox&&i?.toBox!=="border"&&(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)){let l=pe(s);a=new DOMQuad(Ae(a.p1,i.toBox,l,-1),Ae(a.p2,i.toBox,l,-1),Ae(a.p3,i.toBox,l,-1),Ae(a.p4,i.toBox,l,-1))}return a}function of(s,e,t,i){let r=(s.ownerDocument.defaultView??window).document.body.parentElement,n=Ue(t,r,i?.iframes,!0),o=Ue(s,r,i?.iframes,!0).inverse();i?.fromBox&&i?.fromBox!=="border"&&(e=Ae(e,i.fromBox,pe(t),1));let a=o.transformPoint(n.transformPoint(e));return i?.toBox&&i?.toBox!=="border"&&(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)&&(a=Ae(a,i.toBox,pe(s),-1)),a}function Ae(s,e,t,i){if(e==="margin"){let r=parseFloat(t.marginLeft),n=parseFloat(t.marginTop);return new DOMPoint(s.x-i*r,s.y-i*n)}else if(e==="padding"){let r=parseFloat(t.borderLeftWidth),n=parseFloat(t.borderTopWidth);return new DOMPoint(s.x+i*r,s.y+i*n)}else if(e==="content"){let r=parseFloat(t.borderLeftWidth),n=parseFloat(t.borderTopWidth),o=parseFloat(t.paddingLeft),a=parseFloat(t.paddingTop);return new DOMPoint(s.x+i*(r+o),s.y+i*(n+a))}return s}function xt(){je.clear(),Lt.clear(),mr=new WeakMap}function Ap(){yt=new WeakMap,je=new Map,Lt=new Map,mr=new WeakMap}function pe(s){if(!mr)return(s.ownerDocument.defaultView??window).getComputedStyle(s);let e=mr.get(s);return e||(e=(s.ownerDocument.defaultView??window).getComputedStyle(s),mr.set(s,e)),e}function Wl(s){return!!s&&s.nodeType===Node.ELEMENT_NODE}function kp(s){if(!Wl(s))return 1;let t=pe(s).zoom;if(!t||t==="normal")return 1;if(t.endsWith("%")){let r=parseFloat(t);return Number.isFinite(r)&&r>0?r/100:1}let i=parseFloat(t);return Number.isFinite(i)&&i>0?i:1}function Ip(s){if(!Wl(s))return new DOMMatrix;let e=kp(s);return e===1?new DOMMatrix:new DOMMatrix().scaleSelf(e)}function wp(s,e,t=!0){let i=jl(s,e);if(!t||!Wl(s))return i;let r=Ip(s);return r.isIdentity?i:r.multiply(i)}function af(s,e){let t;if(je){let m=yt.get(s);m===void 0&&yt.set(s,m=Hn++);let u=yt.get(e?.relativeTo??document.body);u===void 0&&yt.set(e?.relativeTo??document.body,u=Hn++),t=m+"_"+u+"_"+(e?.box??"border");let f=je.get(t);if(f)return f}let i=Ue(s,e?.relativeTo??document.body,e?.iframes),r=s.ownerDocument.defaultView??window,n=r.Text;if(s instanceof Text||s instanceof n){let m=s.ownerDocument.createRange();m.selectNodeContents(s);let u=m.getClientRects();if(u.length>1){let O=e?.relativeTo??document.body,I=vt(s,e?.iframes),U=Ue(I,O,e?.iframes),$=jl(I,e?.iframes),V=I.getBoundingClientRect(),j=$.a,X=$.b,Z=$.c,oe=$.d,ye=I.offsetWidth,De=I.offsetHeight,me=V.x+V.width/2-(j*ye/2+Z*De/2),J=V.y+V.height/2-(X*ye/2+oe*De/2),ae=j*oe-X*Z,Ye=Math.abs(j),Ce=Math.abs(X),ct=Ye*Ye-Ce*Ce,tt=[];for(let Te of u){if(Te.width<1&&Te.height<1)continue;let ji=Te.x+Te.width/2-me,Ui=Te.y+Te.height/2-J,ii,ri;Math.abs(ae)>1e-10?(ii=(oe*ji-Z*Ui)/ae,ri=(j*Ui-X*ji)/ae):(ii=ji,ri=Ui);let Pt,ht;if(Math.abs(ct)>1e-6)Pt=Math.max(0,(Ye*Te.width-Ce*Te.height)/ct),ht=Math.max(0,(Ye*Te.height-Ce*Te.width)/ct);else{let Yi=pe(I);ht=Math.max(0,parseFloat(Yi.lineHeight)||parseFloat(Yi.fontSize)*1.2||16);let Xi=Math.max(Ye,Ce);Pt=Xi>1e-6?Math.max(0,(Te.width-ht*Ce)/Xi):Te.width}let Xe=ii-Pt/2,zt=ri-ht/2;tt.push(new DOMQuad(U.transformPoint(new DOMPoint(Xe,zt)),U.transformPoint(new DOMPoint(Xe+Pt,zt)),U.transformPoint(new DOMPoint(Xe+Pt,zt+ht)),U.transformPoint(new DOMPoint(Xe,zt+ht))))}if(tt.length>0)return je&&je.set(t,tt),tt}let f=m.getBoundingClientRect(),{width:y,height:v}=Dp(i,f,s),b=i.is2D,E=[new DOMPoint(0,0),new DOMPoint(y,0),new DOMPoint(y,v),new DOMPoint(0,v)],S=Array(4);if(b)for(let O=0;O<4;O++)S[O]=E[O].matrixTransform(i);else for(let O=0;O<4;O++)S[O]=Rl(E[O],i).matrixTransform(i),S[O]=zl(S[O]);let T=[new DOMQuad(S[0],S[1],S[2],S[3])];return je&&je.set(t,T),T}let{width:o,height:a}=Le(s,i),l=r.Element,c=i.is2D;if(s instanceof Element||s instanceof l){let m=e?.box;if(m==="margin"||m==="padding"||m==="content"){let u=pe(s),f,y,v,b,E,S,T,O;if(m==="margin"){let V=parseFloat(u.marginLeft),j=parseFloat(u.marginTop),X=parseFloat(u.marginRight),Z=parseFloat(u.marginBottom);f=-V,y=-j,v=o+X,b=-j,E=o+X,S=a+Z,T=-V,O=a+Z}else if(m==="padding"){let V=parseFloat(u.borderLeftWidth),j=parseFloat(u.borderTopWidth),X=parseFloat(u.borderRightWidth),Z=parseFloat(u.borderBottomWidth);f=V,y=j,v=o-X,b=j,E=o-X,S=a-Z,T=V,O=a-Z}else{let V=parseFloat(u.borderLeftWidth),j=parseFloat(u.borderTopWidth),X=parseFloat(u.borderRightWidth),Z=parseFloat(u.borderBottomWidth),oe=parseFloat(u.paddingLeft),ye=parseFloat(u.paddingTop),De=parseFloat(u.paddingRight),me=parseFloat(u.paddingBottom);f=V+oe,y=j+ye,v=o-X-De,b=j+ye,E=o-X-De,S=a-Z-me,T=V+oe,O=a-Z-me}let I=[new DOMPoint(f,y),new DOMPoint(v,b),new DOMPoint(E,S),new DOMPoint(T,O)],U=Array(4);if(c)for(let V=0;V<4;V++)U[V]=I[V].matrixTransform(i);else for(let V=0;V<4;V++)U[V]=Rl(I[V],i).matrixTransform(i),U[V]=zl(U[V]);let $=[new DOMQuad(U[0],U[1],U[2],U[3])];return je&&je.set(t,$),$}}let h=[new DOMPoint(0,0),new DOMPoint(o,0),new DOMPoint(o,a),new DOMPoint(0,a)],d=Array(4);if(c)for(let m=0;m<4;m++)d[m]=h[m].matrixTransform(i);else for(let m=0;m<4;m++)d[m]=Rl(h[m],i).matrixTransform(i),d[m]=zl(d[m]);let p=[new DOMQuad(d[0],d[1],d[2],d[3])];return je&&je.set(t,p),p}function Dp(s,e,t){let i=Math.abs(s?.a??1),r=Math.abs(s?.b??0),n=i*i-r*r,o,a;if(Math.abs(n)>1e-6)o=Math.max(0,(i*e.width-r*e.height)/n),a=Math.max(0,(i*e.height-r*e.width)/n);else{let l=t.parentElement,c=16;if(l){let d=pe(l);c=parseFloat(d.lineHeight)||parseFloat(d.fontSize)*1.2||16}a=Math.max(0,c);let h=Math.max(i,r);o=h>1e-6?Math.max(0,(e.width-a*r)/h):e.width}return{width:o,height:a}}function Rl(s,e){let t=-(s.x*e.m13+s.y*e.m23+e.m43)/e.m33;return new DOMPoint(s.x,s.y,t,1)}function zl(s){return new DOMPoint(s.x/s.w,s.y/s.w)}function Le(s,e){let t=0,i=0,r=s.ownerDocument.defaultView??window;if(s instanceof HTMLElement||s instanceof r.HTMLElement)t=s.offsetWidth,i=s.offsetHeight;else if(s instanceof SVGSVGElement||s instanceof r.SVGSVGElement)t=s.width.baseVal.value,i=s.height.baseVal.value;else if(s instanceof SVGGraphicsElement||s instanceof r.SVGGraphicsElement){let n=s.getBBox();t=n.width,i=n.height}else if(s instanceof MathMLElement||s instanceof r.MathMLElement){let n=s.getBoundingClientRect();t=n.width/(e?.a??1),i=n.height/(e?.d??1)}else if(s instanceof Text||s instanceof r.Text){let n=s.ownerDocument.createRange();n.selectNodeContents(s);let o=n.getBoundingClientRect(),a=Dp(e,o,s);t=a.width,i=a.height}return{width:t,height:i}}function zn(s,e,t){if(s instanceof HTMLElement||s instanceof(s.ownerDocument.defaultView??window).HTMLElement){let i=pe(s);if(i.position==="fixed"){let r=vt(s,t);if(!r)return new DOMPoint(s.offsetLeft,s.offsetTop);let n=Ue(r,s.ownerDocument.body,t,!0).inverse(),o=s.getBoundingClientRect(),a=n.transformPoint(o),l=r.getBoundingClientRect(),c=n.transformPoint(l);return new DOMPoint(a.x-c.x,a.y-c.y)}return e?new DOMPoint(s.offsetLeft-(s.scrollLeft-parseFloat(i.borderLeftWidth)),s.offsetTop-(s.scrollTop-parseFloat(i.borderTopWidth))):new DOMPoint(s.offsetLeft,s.offsetTop)}else if(s instanceof Text||s instanceof(s.ownerDocument.defaultView??window).Text){let i=s.ownerDocument.createRange();i.selectNodeContents(s);let r=i.getBoundingClientRect(),n=vt(s,t),o=n.getBoundingClientRect(),a=jl(n,t),l=a.a,c=a.b,h=a.c,d=a.d,p=n.offsetWidth,m=n.offsetHeight,u=o.x+o.width/2-(l*p/2+h*m/2),f=o.y+o.height/2-(c*p/2+d*m/2),y=r.x+r.width/2-u,v=r.y+r.height/2-f,b=l*d-c*h,E,S;Math.abs(b)>1e-10?(E=(d*y-h*v)/b,S=(l*v-c*y)/b):(E=y,S=v);let T=Math.abs(l),O=Math.abs(c),I=T*T-O*O,U,$;if(Math.abs(I)>1e-6)U=Math.max(0,(T*r.width-O*r.height)/I),$=Math.max(0,(T*r.height-O*r.width)/I);else{let V=pe(n);$=parseFloat(V.lineHeight)||parseFloat(V.fontSize)*1.2||16,$=Math.max(0,$);let j=Math.max(T,O);U=j>1e-6?Math.max(0,(r.width-$*O)/j):r.width}return new DOMPoint(E-U/2,S-$/2)}else if(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element){if((s instanceof SVGGraphicsElement||s instanceof(s.ownerDocument.defaultView??window).SVGGraphicsElement)&&!(s instanceof SVGSVGElement||s instanceof(s.ownerDocument.defaultView??window).SVGSVGElement)){let h=s.getBBox();return new DOMPoint(h.x,h.y)}let i=pe(s);if(i.position==="absolute")return new DOMPoint(parseFloat(i.left),parseFloat(i.top));let r=vt(s,t),n=Ue(r,document.body,t,!0).inverse(),o=s.getBoundingClientRect(),a=n.transformPoint(o),l=r.getBoundingClientRect(),c=n.transformPoint(l);return new DOMPoint(a.x-c.x,a.y-c.y)}}function Ue(s,e,t,i=!1){let r;if(Lt){let d=yt.get(s);d===void 0&&yt.set(s,d=Hn++);let p=yt.get(e);p===void 0&&yt.set(e,p=Hn++),r=d+"_"+p+"_"+(i?"no-self-zoom":"full");let m=Lt.get(r);if(m)return m}let n=s,o,a=wp(n,t,!i),l=a.isIdentity?new DOMMatrix:a,c=vt(n,t);c&&(l.is2D||pe(c).transformStyle!=="preserve-3d"&&Sp(l));let h=null;for(;n!=e&&n!=null;){let d=vt(n,t);if(n.assignedSlot!=null){if(n.nodeType===Node.ELEMENT_NODE){let p=Hl(n);if(h!==p&&(h===null||n===h||!Ep(h,n))){let u=Pp(n,"offsetLeft"),f=Pp(n,"offsetTop");(u!==0||f!==0)&&(l=new DOMMatrix().translateSelf(u,f).multiplySelf(l)),h=p}h===null&&(h=p)}else if(n.nodeType===Node.TEXT_NODE){let p=zn(n,n!==s,t);(p.x!==0||p.y!==0)&&(l=new DOMMatrix().translateSelf(p.x,p.y).multiplySelf(l))}}else if(!(n instanceof SVGSVGElement)&&!(n instanceof(n.ownerDocument.defaultView??window).SVGSVGElement)&&(n instanceof SVGGraphicsElement||n instanceof(n.ownerDocument.defaultView??window).SVGGraphicsElement)){let p=n.getCTM(),m=n.getBBox();(m.x!==0||m.y!==0)&&(l=new DOMMatrix().translateSelf(m.x,m.y).multiplySelf(l)),l=new DOMMatrix([p.a,p.b,p.c,p.d,p.e,p.f]).multiplySelf(l),d=n.ownerSVGElement}else if(n instanceof HTMLElement||n instanceof(n.ownerDocument.defaultView??window).HTMLElement){if(h!==n.offsetParent&&!(n instanceof HTMLSlotElement||n instanceof(n.ownerDocument.defaultView??window).HTMLSlotElement)&&(h===null||n===h||!Ep(h,n))){let p=zn(n,n!==s,t),m=kp(n);h=n.offsetParent,(p.x!==0||p.y!==0)&&(l=new DOMMatrix().translateSelf(p.x*m,p.y*m).multiplySelf(l))}}else{let p=zn(n,n!==s,t);h=null,(p.x!==0||p.y!==0)&&(l=new DOMMatrix().translateSelf(p.x,p.y).multiplySelf(l))}if(d){if(d===e){if(h!==null&&(d instanceof HTMLElement||d instanceof(d.ownerDocument.defaultView??window).HTMLElement)&&d.offsetParent===h){let m=zn(d,!1,t);(m.x!==0||m.y!==0)&&(l=new DOMMatrix().translate(-m.x,-m.y).multiply(l))}(d.scrollTop||d.scrollLeft)&&(l=new DOMMatrix().translate(-d.scrollLeft,-d.scrollTop).multiply(l));let p=Ip(d);return p.isIdentity||(l=p.multiply(l)),Lt&&Lt.set(r,l),l}o=wp(d,t),o.isIdentity||(l=o.multiply(l)),c=vt(d,t),c&&(l.is2D||pe(c).transformStyle!=="preserve-3d"&&Sp(l))}n=d}return Lt&&Lt.set(r,l),l}function vt(s,e){if((s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)&&s.assignedSlot)return s.assignedSlot;if(s.parentElement==null&&(s.parentNode instanceof ShadowRoot||s.parentNode instanceof(s.ownerDocument.defaultView??window).ShadowRoot))return s.parentNode.host;if((s instanceof HTMLHtmlElement||s instanceof(s.ownerDocument.defaultView??window).HTMLHtmlElement)&&e){for(let t of e)if(t?.contentDocument==s.ownerDocument)return t}return s.parentElement}function jl(s,e){if(s instanceof Text||s instanceof(s.ownerDocument.defaultView??window).Text)return new DOMMatrix;let t=s,i=pe(t),r=i.transform!=="none"&&!!i.transform,n=i.translate!=="none"&&!!i.translate,o=i.rotate!=="none"&&!!i.rotate,a=i.scale!=="none"&&!!i.scale,l=!!i.offsetPath&&i.offsetPath!=="none";if(!r&&!n&&!o&&!a&&!l){let v=vt(t,e);if(!v)return new DOMMatrix;let b=pe(v);if(!b.perspective||b.perspective==="none")return new DOMMatrix;let E=Cp(t,e);return E??new DOMMatrix}let c=new DOMMatrix,h=i.transformOrigin.split(" "),d=parseFloat(h[0]),p=parseFloat(h[1]),m=h[2]?parseFloat(h[2]):0,u=d!==0||p!==0||m!==0,f=u?new DOMMatrix().translateSelf(d,p,m):null;if(n){let v=i.translate;if(v.includes("%")){let b=v.split(" "),E=t.getBoundingClientRect();b[0].endsWith("%")&&(b[0]=parseFloat(b[0])*E.width/100+"px"),b[1]?.endsWith("%")&&(b[1]=parseFloat(b[1])*E.height/100+"px"),v=b.join(",")}c.multiplySelf(new DOMMatrix("translate("+v.replaceAll(" ",",")+")"))}o&&c.multiplySelf(new DOMMatrix("rotate("+i.rotate.replaceAll(" ",",")+")")),a&&c.multiplySelf(new DOMMatrix("scale("+i.scale.replaceAll(" ",",")+")")),l&&c.multiplySelf(lf(s)),r&&c.multiplySelf(new DOMMatrix(i.transform)),u&&(c=f.multiply(c.multiplySelf(f.inverse())));let y=Cp(s,e);return y!=null&&(c=y.multiplySelf(c)),c}function Sp(s){if(s.m31=0,s.m32=0,s.m13=0,s.m23=0,s.m33=1,s.m43=0,s.m34=0,s.m14==0&&s.m24==0&&s.m44!=1&&s.m44!=0){let e=1/s.m44;s.m11*=e,s.m12*=e,s.m21*=e,s.m22*=e,s.m41*=e,s.m42*=e,s.m44=1}}function Cp(s,e){let t=vt(s,e);if(t){let i=pe(t);if(i.perspective!=="none"){let r=new DOMMatrix,n=parseFloat(i.perspective);if(r.m34=-1/n,i.perspectiveOrigin){let o=i.perspectiveOrigin.split(" "),a=parseFloat(o[0])-s.offsetLeft,l=parseFloat(o[1])-s.offsetTop,c=new DOMMatrix().translateSelf(a,l),h=new DOMMatrix().translateSelf(-a,-l);return c.multiplySelf(r.multiplySelf(h))}}}return null}function lf(s){let e=pe(s),t=e.offsetPath,i=e.offsetDistance,r=e.offsetRotate,n=e.offsetAnchor,o=e.transformOrigin,a=hf(i),{x:l,y:c,angle:h}=pf(s,t,a),d=s.parentElement;(d instanceof HTMLElement||d instanceof(d.ownerDocument.defaultView??window).HTMLElement)&&(s.offsetParent===d?(l-=s.offsetLeft,c-=s.offsetTop):s.offsetParent===d.offsetParent&&(l-=s.offsetLeft-d.offsetLeft,c-=s.offsetTop-d.offsetTop));let p=0;if(r.startsWith("auto")){let y=r.split(/\s+/),v=y.length===2?parseFloat(y[1]):0;p=h+v}else p=parseFloat(r);let m=cf(n,o,s),u=new DOMMatrix().translateSelf(-m.x,-m.y),f=u.translate(l,c);return f.multiplySelf(u.invertSelf()),f.rotateSelf(p),f.translateSelf(-m.x,-m.y),f}function cf(s,e,t){let i=t.offsetWidth,r=t.offsetHeight;(!s||s==="auto")&&(s=e);let n=s.split(/\s+/);if(n.length===1)return{x:Fl(n[0],i),y:r/2};let o=Fl(n[0],i),a=Fl(n[1],r);return{x:o,y:a}}function Fl(s,e){if(s=s.trim(),s.endsWith("%"))return parseFloat(s)/100*e;if(s.endsWith("px"))return parseFloat(s);switch(s){case"left":return 0;case"top":return 0;case"center":return e/2;case"right":return e;case"bottom":return e}return parseFloat(s)}function hf(s){return s=s.trim(),s.endsWith("%")?parseFloat(s)/100:parseFloat(s)}function df(s){return s?(s=s.trim(),s.endsWith("deg")?parseFloat(s):s.endsWith("rad")?parseFloat(s)*(180/Math.PI):s.endsWith("grad")?parseFloat(s)*.9:parseFloat(s)):0}function pf(s,e,t){if(!e||e==="none")return{x:0,y:0,angle:0};let i=e.trim(),r=i.match(/path\(["'](.+)["']\)/);return r?mf(r[1],t):i.startsWith("circle(")?ff(i,t):i.startsWith("ellipse(")?gf(i,t):i.startsWith("inset(")?Sf(i,s,t):i.startsWith("rect(")?yf(i,t):i.startsWith("xywh(")?vf(i,t):i.startsWith("ray(")?uf(i,t):i.startsWith("polygon(")?xf(i,t):(console.warn("Unsupported offset-path:",e),{x:0,y:0,angle:0})}function mf(s,e){let t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttribute("d",s);let i=t.getTotalLength(),r=e<=1?e*i:e,n=t.getPointAtLength(r),o=t.getPointAtLength(Math.min(i,r+.01)),a=Math.atan2(o.y-n.y,o.x-n.x)*180/Math.PI;return{x:n.x,y:n.y,angle:a}}function uf(s,e){let i=s.match(/ray\(([^)]+)\)/)[1].trim(),[r,n]=i.split("at").map(u=>u&&u.trim()),o=r.split(/\s+/),a=df(o[0]),l=a*Math.PI/180,c=0,h=0;if(n){let u=n.split(/\s+/);c=parseFloat(u[0]),h=parseFloat(u[1])}let d=(e<=1,e),p=c+Math.cos(l)*d,m=h+Math.sin(l)*d;return{x:p,y:m,angle:a}}function ff(s,e){let i=s.match(/circle\(([^)]+)\)/)[1],[r,n]=i.split("at").map(m=>m.trim()),o=parseFloat(r),[a,l]=n.split(/\s+/).map(parseFloat),c=e*2*Math.PI,h=a+Math.cos(c)*o,d=l+Math.sin(c)*o,p=c*180/Math.PI+90;return{x:h,y:d,angle:p}}function gf(s,e){let i=s.match(/ellipse\(([^)]+)\)/)[1].split("at"),r=i[0].trim().split(/\s+/).map(parseFloat),n=i[1].trim().split(/\s+/).map(parseFloat),o=r[0],a=r[1],l=n[0],c=n[1],h=e*2*Math.PI,d=l+Math.cos(h)*o,p=c+Math.sin(h)*a,m=-Math.sin(h)*o,u=Math.cos(h)*a,f=Math.atan2(u,m)*180/Math.PI;return{x:d,y:p,angle:f}}function yf(s,e){let i=s.match(/rect\(([^)]+)\)/)[1].split(/\s+/).map(l=>parseFloat(l)),r=i[0],n=i[1],o=i[2],a=i[3];return Tp(r,a,n,o,e)}function vf(s,e){let i=s.match(/xywh\(([^)]+)\)/)[1].split(/\s+/).map(parseFloat),r=i[0],n=i[1],o=i[2],a=i[3];return Tp(n,r,r+o,n+a,e)}function xf(s,e){let r=s.match(/polygon\(([^)]+)\)/)[1].split(",").map(E=>E.trim().split(/\s+/).map(parseFloat)),n=[0];for(let E=1;E<r.length;E++){let S=r[E][0]-r[E-1][0],T=r[E][1]-r[E-1][1];n.push(Math.hypot(S,T)+n[E-1])}let o=r[0][0]-r[r.length-1][0],a=r[0][1]-r[r.length-1][1];n.push(Math.hypot(o,a)+n[n.length-1]);let l=n[n.length-1],c=e*l,h=n.findIndex(E=>E>=c);h<=0&&(h=1);let d=n[h-1],p=n[h],m=(c-d)/(p-d),u=r[(h-1)%r.length],f=r[h%r.length],y=u[0]+(f[0]-u[0])*m,v=u[1]+(f[1]-u[1])*m,b=Math.atan2(f[1]-u[1],f[0]-u[0])*180/Math.PI;return{x:y,y:v,angle:b}}function Tp(s,e,t,i,r){let n=t-e,o=i-s,a=2*(n+o),l=r*a;if(l<n)return{x:e+l,y:s,angle:0};if(l-=n,l<o){let h=s+l;return{x:t,y:h,angle:90}}if(l-=o,l<n)return{x:t-l,y:i,angle:180};l-=n;let c=i-l;return{x:e,y:c,angle:270}}function _f(s){let e=[],t=0;for(;t<s.length;){let i=s[t];if(/\s/.test(i)){t++;continue}if("+-*/()".includes(i)){e.push({type:i,value:i}),t++;continue}if(/[0-9.]/.test(i)){let r=t;for(;/[0-9.]/.test(s[t]);)t++;let n=s.slice(r,t);if(s[t]==="%"){t++,e.push({type:"percentage",value:parseFloat(n)});continue}if(s.slice(t,t+2)==="px"){t+=2,e.push({type:"dimension",value:parseFloat(n),unit:"px"});continue}e.push({type:"number",value:parseFloat(n)});continue}if(/[a-zA-Z]/.test(i)){let r=t;for(;/[a-zA-Z]/.test(s[t]);)t++;let n=s.slice(r,t);if(n==="calc"&&s[t]==="("){e.push({type:"func",value:"calc"});continue}throw new Error("Unsupported function: "+n)}throw new Error("Unexpected character in calc(): "+i)}return e}function bf(s){let e=0;function t(){return s[e]}function i(){return s[e++]}function r(){let l=n();for(;t()&&(t().type==="+"||t().type==="-");){let c=i().type,h=n();l={type:"binary",op:c,left:l,right:h}}return l}function n(){let l=o();for(;t()&&(t().type==="*"||t().type==="/");){let c=i().type,h=o();l={type:"binary",op:c,left:l,right:h}}return l}function o(){let l=t();if(!l)throw"Unexpected end in calc()";if(l.type==="number")return i(),{type:"number",value:l.value};if(l.type==="dimension")return i(),{type:"dimension",value:l.value,unit:l.unit};if(l.type==="percentage")return i(),{type:"percentage",value:l.value};if(l.type==="func"){if(i(),t().type!=="(")throw"Expected '(' after calc";i();let c=r();if(!t()||t().type!==")")throw"Expected ')'";return i(),c}if(l.type==="("){i();let c=r();if(!t()||t().type!==")")throw"Expected ')'";return i(),c}throw new Error("Unexpected calc token "+JSON.stringify(l))}let a=r();if(e!==s.length)throw"Extra tokens after calc";return a}function Bl(s,e){switch(s.type){case"number":return s.value;case"dimension":return s.value;case"percentage":return e.percentBase*(s.value/100);case"binary":{let t=Bl(s.left,e),i=Bl(s.right,e);switch(s.op){case"+":return t+i;case"-":return t-i;case"*":return t*i;case"/":return t/i}}}throw"Invalid AST node "+s.type}function Fn(s,e,t=!1){if(s=s.trim(),/^[0-9.]+px$/.test(s))return parseFloat(s);let i=t?e.offsetHeight:e.offsetWidth;if(/^[0-9.]+%$/.test(s)){let n=parseFloat(s);return i*(n/100)}let r=bf(_f(s));return Bl(r,{percentBase:i})}function wf(s){let e=s.trim().replace(/^inset\s*\(/,"").replace(/\)\s*$/,""),t=[],i="",r=0;for(let n=0;n<e.length;n++){let o=e[n];o==="("?(r++,i+=o):o===")"?(r--,i+=o):/\s/.test(o)&&r===0?i.trim()!==""&&(t.push(i.trim()),i=""):i+=o}return i.trim()!==""&&t.push(i.trim()),t}function Sf(s,e,t){let i=wf(s);if(i.length!==4)throw new Error("inset() must have 4 arguments");let r=Fn(i[0],e,!0),n=Fn(i[1],e,!1),o=Fn(i[2],e,!0),a=Fn(i[3],e,!1),l=e.offsetWidth,c=e.offsetHeight,h=a,d=r,p=l-n,m=c-o,f=2*(p-h+(m-d))*t,y=p-h;return f<=y?{x:h+f,y:d,angle:0}:(f-=y,y=m-d,f<=y?{x:p,y:d+f,angle:90}:(f-=y,y=p-h,f<=y?{x:p-f,y:m,angle:180}:(f-=y,{x:h,y:m-f,angle:270})))}function Af(s){return Cf.some(e=>s[e]?s[e]!=="none":!1)||(s.containerType?s.containerType!=="normal":!1)||(s.backdropFilter?s.backdropFilter!=="none":!1)||(s.filter?s.filter!=="none":!1)||Ef.some(e=>(s.willChange||"").includes(e))||Pf.some(e=>(s.contain||"").includes(e))}function Bn(s){return s.assignedSlot?s.assignedSlot:s.parentNode instanceof ShadowRoot?s.parentNode.host:s.parentNode}function Ep(s,e){for(let t=e;t;t=Bn(t))if(t===s)return!0;return!1}function kf(s){let e=new Set,t=s.getRootNode();for(;t;)e.add(t),t=t.parentNode?t.parentNode.getRootNode():null;return e}function Hl(s){for(let e=s;e;e=Bn(e))if(e instanceof Element&&pe(e).display==="none")return null;for(let e=Bn(s);e;e=Bn(e)){if(!(e instanceof Element))continue;let t=pe(e);if(t.display!=="contents"&&(t.position!=="static"||Af(t)||e.tagName==="BODY"))return e}return null}function Pp(s,e){let t=s[e],i=Hl(s),r=kf(s);for(;i&&!r.has(i.getRootNode());)t-=i[e],i=Hl(i);return t}var yt,je,Lt,mr,Hn,Cf,Ef,Pf,_t=g(()=>{"use strict";Hn=0;Cf=["transform","translate","scale","rotate","perspective"],Ef=["transform","translate","scale","rotate","perspective","filter"],Pf=["paint","layout","strict","content"]});var Gn,Ul=g(()=>{"use strict";le();Vl();ce();_t();Pe();ie();Gn=class extends R{_startPos;_circle;_circle2;_oldValue;_offsetInControl;constructor(e,t,i){super(e,t,i)}_getTransformOriginCanvasPoint(){let t=getComputedStyle(this.extendedItem.element).transformOrigin.split(" ");return Ue(this.extendedItem.element,this.designerCanvas.canvas,this.designerCanvas.iframes).transformPoint(new DOMPoint(parseFloat(t[0]),parseFloat(t[1])))}refresh(e,t){let i=this._getTransformOriginCanvasPoint();this._valuesHaveChanges(i.x,i.y,this.designerCanvas.zoomFactor)&&(this._removeAllOverlays(),this._circle=this._drawCircle(i.x,i.y,5/this.designerCanvas.zoomFactor,"svg-transform-origin"),this._circle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._circle.style.cursor="pointer",this._circle2=this._drawCircle(i.x,i.y,1/this.designerCanvas.zoomFactor,"svg-transform-origin"),this._circle2.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._circle2.style.pointerEvents="none",this._circle.addEventListener(w.PointerDown,r=>this.pointerEvent(r)),this._circle.addEventListener(w.PointerMove,r=>this.pointerEvent(r)),this._circle.addEventListener(w.PointerUp,r=>this.pointerEvent(r)))}extend(e,t){let i=this._getTransformOriginCanvasPoint();if(isNaN(i.x)||isNaN(i.y)){this.remove();return}else{let r=this.extendedItem.getStyleFromSheetOrLocal("transform-origin");r&&(this._oldValue=r),this.refresh(e,t)}}pointerEvent(e){e.stopPropagation();let t=getComputedStyle(this.extendedItem.element),i=t.transformOrigin.split(" "),r=[];r[0]=parseFloat(i[0])/parseFloat(this.extendedItem.element.style.width),r[1]=parseFloat(i[1])/parseFloat(this.extendedItem.element.style.height);let n=this._getTransformOriginCanvasPoint(),o=this.designerCanvas.getNormalizedEventCoordinates(e),a=this.extendedItem.element.convertPointFromNode(o,this.designerCanvas.canvas),l=this.designerCanvas.getNormalizedEventCoordinates(e);switch(e.type){case w.PointerDown:e.target.setPointerCapture(e.pointerId);let c=Y(e.target);this._offsetInControl={x:c.width/2+(c.x-e.x),y:c.height/2+(c.y-e.y)},this._startPos={x:l.x,y:l.y};break;case w.PointerMove:if(this._startPos&&e.buttons>0){let h=l.x-this._startPos.x,d=l.y-this._startPos.y;this._circle.setAttribute("cx",n.x+h),this._circle.setAttribute("cy",n.y+d),this._circle2.setAttribute("cx",n.x+h),this._circle2.setAttribute("cy",n.y+d)}break;case w.PointerUp:if(e.target.releasePointerCapture(e.pointerId),this._startPos){a.x+=this._offsetInControl.x,a.y+=this._offsetInControl.y;let h=this.extendedItem.openGroup("change transform-origin"),d=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.rootDesignItem.element})[0];if(this._oldValue)try{let u=this._oldValue.split(" "),f=Ci(a.x,this.extendedItem.element,"width",Kt(u[0]),v=>N(this.extendedItem,v)),y=Ci(a.x,this.extendedItem.element,"width",Kt(u[0]),v=>N(this.extendedItem,v));u.length>1&&(y=Ci(a.y,this.extendedItem.element,"height",Kt(u[1]),v=>N(this.extendedItem,v))),this.extendedItem.updateStyleInSheetOrLocal("transform-origin",f+" "+y)}catch{this.extendedItem.updateStyleInSheetOrLocal("transform-origin",N(this.extendedItem,a.x)+"px "+N(this.extendedItem,a.y)+"px")}else this.extendedItem.updateStyleInSheetOrLocal("transform-origin",N(this.extendedItem,a.x)+"px "+N(this.extendedItem,a.y)+"px");xt();let p=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.rootDesignItem.element})[0],m={x:d.p1.x-p.p1.x,y:d.p1.y-p.p1.y};t.translate&&t.translate!=="none"&&(m.x+=parseFloat(t.translate.split(" ")[0]),t.translate.split(" ").length===1?m.y+=parseFloat(t.translate.split(" ")[0]):m.y+=parseFloat(t.translate.split(" ")[1])),this.extendedItem.updateStyleInSheetOrLocal("translate",N(this.extendedItem,m.x)+"px "+N(this.extendedItem,m.y)+"px"),h.commit(),this.refresh(null,null),this._startPos=null}break}}dispose(){this._removeAllOverlays()}}});import{css as If}from"@node-projects/base-custom-webcomponent";var Wn,Yl=g(()=>{"use strict";Ul();ce();Wn=class{showOnlyWhenSet;constructor(e=!0){this.showOnlyWhenSet=e}shouldExtend(e,t,i){if(!i.isRootItem&&i.node instanceof HTMLElement||i.node instanceof SVGElement&&i.node.localName==="svg"){if(!this.showOnlyWhenSet||i.hasStyle("transformOrigin"))return!0;let r=getComputedStyle(i.element);if(r.display!="inline"&&i.element.getBoundingClientRect){let n=Y(i.element),o=r.transformOrigin.split(" "),a=parseFloat(o[0])-n.width/2,l=parseFloat(o[1])-n.height/2;if(a>.5||a<-.5||l>.5||l<-.5)return!0}}return!1}getExtension(e,t,i){return new Gn(e,t,i)}static style=If`.svg-transform-origin{stroke:#3899ec;fill:#000;pointer-events:auto}`}});var jn,Xl=g(()=>{"use strict";ie();te();jn=class extends R{constructor(e,t,i){super(e,t,i)}_path;_path2;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=getComputedStyle(this.extendedItem.element);if(i.margin!=="0px"){let r=Number.parseFloat(i.marginLeft.replace("px","")),n=Number.parseFloat(i.marginTop.replace("px","")),o=Number.parseFloat(i.marginRight.replace("px","")),a=Number.parseFloat(i.marginBottom.replace("px",""));if(!isNaN(r)&&!isNaN(n)&&!isNaN(o)&&!isNaN(a)){let l=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(l.p1.x)&&this._valuesHaveChanges(r,n,o,a,l.p1.x,l.p1.y,l.p2.x,l.p2.y,l.p3.x,l.p3.y,l.p4.x,l.p4.y)){let c=this.extendedItem.element.getBoxQuads({box:"margin",relativeTo:this.designerCanvas.canvas})[0],h="M"+[l.p1,l.p2,l.p3,l.p4].map(d=>d.x+","+d.y).join(" ")+"Z ";h+="M"+[c.p1,c.p2,c.p3,c.p4].map(d=>d.x+","+d.y).join(" ")+"Z ",this._path=this._drawPath(h,"svg-margin-fill",this._path,D.Background),this._path2=this._drawPath(h,"svg-margin",this._path2,D.Background)}}}}dispose(){this._removeAllOverlays()}}});function Un(s){let e=s;for(;e;){if(e instanceof(e.ownerDocument.defaultView??window).SVGSVGElement)return!0;if(e instanceof(e.ownerDocument.defaultView??window).SVGDefsElement||e instanceof(e.ownerDocument.defaultView??window).SVGMetadataElement)return!1;e=e.parentElement}return!0}function Ei(s,...e){return s[0]}var Pi=g(()=>{"use strict"});import{css as Df}from"@node-projects/base-custom-webcomponent";var Yn,Kl=g(()=>{"use strict";Xl();q();Pi();Yn=class{shouldExtend(e,t,i){return i.nodeType==k.Element}getExtension(e,t,i){return new jn(e,t,i)}style=Df`.svg-margin-fill{fill:color(display-p3 1 0 1 / 15%);fill-rule:evenodd}.svg-margin{fill:color(display-p3 1 0 1 / 80%);fill-rule:evenodd;mask:url(#mask-stripe-margin)}`;static svgDefs=Ei`<pattern id="pattern-stripe-margin" patternUnits="userSpaceOnUse" width="10" height="10" patternTransform="rotate(45)" class="pattern"><line x1="0" y="0" x2="0" y2="10" stroke="color(display-p3 1 0 1 / 80%)" stroke-width="1"></line></pattern><mask id="mask-stripe-margin"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-margin)"></mask>`}});var Xn,$l=g(()=>{"use strict";ie();Xn=class extends R{_line1;_line2;_line3;_line4;_textX;_textY;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}_oldValues=[];refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element),t=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.parent.element);if(this._valuesHaveChanges(this.designerCanvas.scaleFactor,e.x,e.y,t.x,t.y,e.height,e.width,t.height,t.width)){this._line1=this._drawLine(t.x,e.y+e.height/2,e.x,e.y+e.height/2,"svg-position",this._line1),this._line2=this._drawLine(t.x+t.width,e.y+e.height/2,e.x+e.width,e.y+e.height/2,"svg-position",this._line2),this._line3=this._drawLine(e.x+e.width/2,t.y,e.x+e.width/2,e.y,"svg-position",this._line3),this._line4=this._drawLine(e.x+e.width/2,t.y+t.height,e.x+e.width/2,e.y+e.height,"svg-position",this._line4),this._line1.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line2.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line3.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line4.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line1.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line2.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line3.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line4.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor;let i,r;if(this.extendedItem.element.computedStyleMap){let n=this.extendedItem.element.computedStyleMap();i=n.get("right")instanceof CSSUnitValue,r=n.get("bottom")instanceof CSSUnitValue}else i=!!this.extendedItem.element?.style?.right,r=!!this.extendedItem.element?.style?.bottom;if(i){let n=Math.round(t.x+t.width-(e.x+e.width));this._textX=this._drawTextWithBackground(""+n,t.x+t.width-n/2,e.y+e.height/2,"white","svg-position-text",this._textX),this._textX[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textX[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}else{let n=Math.round(e.x-t.x);this._textX=this._drawTextWithBackground(""+n,t.x+n/2,e.y+e.height/2,"white","svg-position-text",this._textX),this._textX[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textX[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}if(r){let n=Math.round(t.y+t.height-(e.y+e.height));this._textY=this._drawTextWithBackground(""+n,e.x+e.width/2,t.y+t.height-n/2,"white","svg-position-text",this._textY),this._textY[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textY[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}else{let n=Math.round(e.y-t.y);this._textY=this._drawTextWithBackground(""+n,e.x+e.width/2,t.y+n/2,"white","svg-position-text",this._textY),this._textY[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textY[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}}}dispose(){this._removeAllOverlays()}}});import{css as Tf}from"@node-projects/base-custom-webcomponent";var Kn,Zl=g(()=>{"use strict";$l();Kn=class{shouldExtend(e,t,i){if(!i?.parent||i.element instanceof HTMLTemplateElement)return!1;let r=getComputedStyle(i.element);return r.position==="relative"||r.position==="absolute"}getExtension(e,t,i){return new Xn(e,t,i)}static style=Tf`.svg-position-text{text-anchor:middle;alignment-baseline:central}`}});var $n,Ql=g(()=>{"use strict";ie();te();$n=class extends R{_rect;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];isNaN(e.p1.x)||(this._rect=this._drawTransformedRect(e,"svg-hover",this._rect,D.Background),this._rect.style.strokeWidth=(3/this.designerCanvas.scaleFactor).toString())}dispose(){this._removeAllOverlays()}}});import{css as Mf}from"@node-projects/base-custom-webcomponent";var Zn,ql=g(()=>{"use strict";Ql();Zn=class{shouldExtend(e,t,i){return!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new $n(e,t,i)}static style=Mf`.svg-hover{stroke:#90caf966;fill:none}`}});var xe,Jl=g(()=>{"use strict";(function(s){s.DragOrSelect="DragOrSelect",s.Drag="Drag",s.Resize="Resize",s.Rotate="Rotate",s.DrawSelection="DrawSelection",s.DrawingSelection="DrawingSelection"})(xe||(xe={}))});var Qn,ec=g(()=>{"use strict";le();Jl();ne();$e();gt();Fe();Qn=class s{cursor="default";_minMoveOffset=5;_movedSinceStartedAction=!1;_initialPoint;_actionType;_actionStartedDesignItem;_actionStartedClickDesignItem;_actionStartedDesignItems;_clonedItems;_copiedItemsInserted=!1;_previousEventName;_dragOverExtensionItem;_dragParentExtensionItem;_moveItemsOffset={x:0,y:0};_initialOffset;_started=!1;_holdTimeout;_firstTimeInMove;_secondTimeInMove;_changeGroup;constructor(){}activated(e){}dispose(){}_showContextMenu(e,t){if(e.preventDefault(),!W(e)){let i=t.elementsFromPoint(e.x,e.y);for(let o of t.instanceServiceContainer.selectionService.selectedElements)if(i.indexOf(o.element)>=0){t.showDesignItemContextMenu(t.instanceServiceContainer.selectionService.primarySelection,e);return}let r=t.serviceContainer.elementAtPointService.getElementAtPoint(t,{x:e.x,y:e.y}),n=M.GetOrCreateDesignItem(r,r,t.serviceContainer,t.instanceServiceContainer);t.instanceServiceContainer.selectionService.isSelected(n)||t.instanceServiceContainer.selectionService.setSelectedElements([n],e),t.showDesignItemContextMenu(n,e)}}pointerEventHandler(e,t,i){W(t)?this.cursor="copy":this.cursor="default";let r=e.serviceContainer.elementInteractionServices;if(r){for(let a of r)if(a.stopEventHandling(e,t,i))return}if(t.button==2&&t.type==w.PointerDown){this._showContextMenu(t,e);return}if(W(t)&&t.shiftKey||t.buttons==4){let a=e.serviceContainer.designerTools.get(K.Pan);if(a){a.pointerEventHandler(e,t,i);return}}switch(t.type){case w.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._movedSinceStartedAction=!1,this._copiedItemsInserted=!1,this._clonedItems=null,this._firstTimeInMove=!1,this._secondTimeInMove=!1;break;case w.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool(),this._copiedItemsInserted=!1,this._clonedItems=null,this._firstTimeInMove=!1,this._secondTimeInMove=!1;break;case w.PointerMove:this._firstTimeInMove&&(this._secondTimeInMove=!0),this._secondTimeInMove?this._firstTimeInMove=!1:this._firstTimeInMove=!0;break}if(!i)return;let n=e.getNormalizedEventCoordinates(t),o=M.GetOrCreateDesignItem(i,i,e.serviceContainer,e.instanceServiceContainer);this._actionType==null&&(this._initialPoint=n,t.shiftKey?(t.preventDefault(),this._actionType=xe.DrawSelection):t.type==w.PointerDown&&(this._actionStartedDesignItem=o,this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.snapLines.clearSnaplines(),o!==e.rootDesignItem?this._actionType=xe.Drag:i===e||i===e.rootDesignItem.element||i==null?this._actionType=xe.DrawSelection:this._actionType=xe.DragOrSelect)),t.type===w.PointerMove&&(this._movedSinceStartedAction=this._movedSinceStartedAction||Math.abs(n.x-this._initialPoint.x)>this._minMoveOffset||Math.abs(n.y-this._initialPoint.y)>this._minMoveOffset,this._actionType==xe.DrawSelection&&(this._actionType=xe.DrawingSelection)),this._actionType==xe.DrawSelection||this._actionType==xe.DrawingSelection?this._pointerActionTypeDrawSelection(e,t,i):(this._actionType==xe.DragOrSelect||this._actionType==xe.Drag)&&this._pointerActionTypeDragOrSelect(e,t,o,n),t.type==w.PointerUp&&(e.snapLines.clearSnaplines(),this._actionType==xe.DrawSelection&&o!==e.rootDesignItem&&e.instanceServiceContainer.selectionService.setSelectedElements([o],t),this._resetTool()),this._previousEventName=t.type}_resetTool(){this._actionType=null,this._actionStartedDesignItem=null,this._actionStartedClickDesignItem=null,this._actionStartedDesignItems=null,this._movedSinceStartedAction=!1,this._initialPoint=null,this._initialOffset=null}_pointerActionTypeDrawSelection(e,t,i){let r=e.serviceContainer.designerTools.get(K.DrawSelection);r&&(this._resetTool(),r.pointerEventHandler(e,t,i))}async _pointerActionTypeDragOrSelect(e,t,i,r,n=!1){this._holdTimeout&&(clearTimeout(this._holdTimeout),this._holdTimeout=null);let o=i;if(t.altKey){if(t.type==w.PointerDown){let a=e.instanceServiceContainer.selectionService.primarySelection;if(a){let l=e.elementsFromPoint(t.x,t.y),c=l.indexOf(a.element);c>=0&&c++;let h=l[c];h&&(i=M.GetOrCreateDesignItem(h,h,e.serviceContainer,e.instanceServiceContainer))}}o=i}else t.type==w.PointerDown&&(i=this._getDesignItemToStartDrag(e,i,r));switch(t.type){case w.PointerDown:{this._actionStartedClickDesignItem=o,this._actionStartedDesignItem=i,this._initialOffset=e.getNormalizedOffsetInElement(t,this._actionStartedDesignItem.element),this._moveItemsOffset={x:0,y:0},this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.alignOnSnap&&e.snapLines.calculateSnaplines(e.instanceServiceContainer.selectionService.selectedElements);break}case w.PointerMove:{if(t.buttons==0)return;if(this._firstTimeInMove){let l=this._actionStartedDesignItem??i;l.instanceServiceContainer.selectionService.selectedElements.includes(l)||(W(t)?l.instanceServiceContainer.selectionService.setSelectedElements([...l.instanceServiceContainer.selectionService.selectedElements,l],t):l.instanceServiceContainer.selectionService.setSelectedElements([l],t),this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.alignOnSnap&&e.snapLines.calculateSnaplines(e.instanceServiceContainer.selectionService.selectedElements))}if(e.readOnly)return;if(!this._clonedItems){this._clonedItems=[];for(let l of this._actionStartedDesignItems){let c=await l.clone();this._clonedItems&&c&&this._clonedItems.push(c)}}if(!this._actionStartedDesignItem)return;if(this._changeGroup||(this._changeGroup=e.rootDesignItem.openGroup("Move Elements"),window.addEventListener("pointerup",()=>{this._changeGroup?.abort(),this._changeGroup=null},{once:!0})),W(t)&&!this._copiedItemsInserted){this._changeGroup.title="Copy Elements",this._copiedItemsInserted=!0;for(let l=0;l<this._clonedItems.length;l++)this._actionStartedDesignItems[l].insertAdjacentElement(this._clonedItems[l],"beforebegin")}else if(!W(t)&&this._copiedItemsInserted){this._changeGroup.title="Move Elements";for(let l of this._clonedItems)l.remove();this._copiedItemsInserted=!1}let a=r.x!=this._initialPoint.x||r.y!=this._initialPoint.y;if(this._actionType!=xe.Drag&&a&&(this._actionType=xe.Drag),this._movedSinceStartedAction){let l=getComputedStyle(this._actionStartedDesignItem.parent.element),c=e.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(this._actionStartedDesignItem.parent,l,this._actionStartedDesignItem));if(c){let h=this._actionStartedDesignItem.parent;this._dragParentExtensionItem!=h?(e.extensionManager.removeExtension(this._dragParentExtensionItem,P.ContainerDrag),e.extensionManager.applyExtension(h,P.ContainerDrag,t),this._dragParentExtensionItem=h):e.extensionManager.refreshExtension(h,P.ContainerDrag);let d=c.canLeave(this._actionStartedDesignItem.parent,this._actionStartedDesignItems),p=null,m=null;if(d&&([p,m]=s.FindPossibleContainer(this._actionStartedDesignItem,this._actionStartedDesignItems,t),p!=null?this._dragOverExtensionItem!=p?(e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerDragOverAndCanBeEntered),e.extensionManager.applyExtension(p,P.ContainerDragOverAndCanBeEntered,t),this._dragOverExtensionItem=p):e.extensionManager.refreshExtension(p,P.ContainerDragOverAndCanBeEntered,t):this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null)),m&&(this._holdTimeout=setTimeout(()=>{this._pointerActionTypeDragOrSelect(e,t,i,r,!0)},1e3)),m&&(t.altKey||n)){let u=c.getElementOffset(this._actionStartedDesignItem.parent,this._actionStartedDesignItem),f=m.getElementOffset(p,this._actionStartedDesignItem);this._moveItemsOffset={x:f.x-u.x+this._moveItemsOffset.x,y:f.y-u.y+this._moveItemsOffset.y},c.leaveContainer(this._actionStartedDesignItem.parent,this._actionStartedDesignItems);let y={x:r.x-this._moveItemsOffset.x,y:r.y-this._moveItemsOffset.y};m.enterContainer(p,this._actionStartedDesignItems,"normal"),m.place(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,y,this._actionStartedDesignItems),e.extensionManager.removeExtension(this._dragParentExtensionItem,P.ContainerDrag),e.extensionManager.applyExtension(p,P.ContainerDrag,t),this._dragParentExtensionItem=p,e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null,e.extensionManager.refreshAllAppliedExtentions()}else{let u={x:r.x-this._moveItemsOffset.x,y:r.y-this._moveItemsOffset.y};if(this._started)c.place(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,u,this._actionStartedDesignItems);else if(!c.startPlacementAllowed||c.startPlacementAllowed(t,e,this._actionStartedDesignItem.parent,this._actionStartedDesignItems)){for(let f of this._actionStartedDesignItems)e.extensionManager.removeExtension(f,P.Placement),e.extensionManager.removeExtension(f,P.MouseOver),e.extensionManager.applyExtension(f,P.Placement,t);c.startPlace(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,u,this._actionStartedDesignItems),this._started=!0}}e.extensionManager.refreshExtensions(this._actionStartedDesignItems,null,t,null,20)}}break}case w.PointerUp:{if(this._started=!1,!this._movedSinceStartedAction||this._actionType==xe.DragOrSelect){this._previousEventName==w.PointerDown&&!W(t)?e.instanceServiceContainer.selectionService.setSelectedElements([this._actionStartedClickDesignItem??this._actionStartedDesignItem],t):this.checkSelectElement(t,e,i);return}if(this._movedSinceStartedAction){let a=getComputedStyle(this._actionStartedDesignItem.parent.element),l=e.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(this._actionStartedDesignItem.parent,a,this._actionStartedDesignItem)),c={x:r.x-this._moveItemsOffset.x,y:r.y-this._moveItemsOffset.y};if(l){this._changeGroup||(this._changeGroup=e.rootDesignItem.openGroup("Move Elements"));try{l.finishPlace(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,c,e.instanceServiceContainer.selectionService.selectedElements),this._changeGroup.commit(),this._changeGroup=null}catch(d){console.error(d),this._changeGroup.abort()}this._changeGroup=null;let h=e.elementsFromPoint(t.x,t.y);for(let d of this._actionStartedDesignItems)h.includes(d.element)&&e.extensionManager.applyExtension(d,P.MouseOver,t),e.extensionManager.removeExtension(d,P.Placement)}else this._changeGroup&&this._changeGroup.abort(),this._changeGroup=null;e.extensionManager.removeExtension(this._dragParentExtensionItem,P.ContainerDrag),this._dragParentExtensionItem=null,e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null,this._moveItemsOffset={x:0,y:0}}e.extensionManager.refreshExtensions(e.instanceServiceContainer.selectionService.selectedElements,null,t,null,20),this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null);break}}}_getDesignItemToStartDrag(e,t,i){let r=e.instanceServiceContainer.selectionService.selectedElements;if(!r?.length||t.isRootItem||r.includes(t))return t;for(let n of r)if(!(!n||n.isRootItem||n===t)&&this._isPointInsideDesignItemQuad(e,n,i))return n;return t}_isPointInsideDesignItemQuad(e,t,i){let r=t.element.getBoxQuads({box:"border",relativeTo:e.canvas,iframes:e.iframes})[0];return r?this._isPointInsideQuad(i,r):!1}_isPointInsideQuad(e,t){let i=[t.p1,t.p2,t.p3,t.p4];for(let n=0;n<i.length;n++){let o=i[n],a=i[(n+1)%i.length];if(this._isPointOnSegment(e,o,a))return!0}let r=!1;for(let n=0,o=i.length-1;n<i.length;o=n++){let a=i[n],l=i[o];a.y>e.y!=l.y>e.y&&e.x<(l.x-a.x)*(e.y-a.y)/(l.y-a.y||Number.EPSILON)+a.x&&(r=!r)}return r}_isPointOnSegment(e,t,i){let n=(e.y-t.y)*(i.x-t.x)-(e.x-t.x)*(i.y-t.y);if(Math.abs(n)>1e-4)return!1;let o=(e.x-t.x)*(i.x-t.x)+(e.y-t.y)*(i.y-t.y);if(o<-1e-4)return!1;let a=(i.x-t.x)*(i.x-t.x)+(i.y-t.y)*(i.y-t.y);return o<=a+1e-4}checkSelectElement(e,t,i){if(W(e)){let r=t.instanceServiceContainer.selectionService.selectedElements.indexOf(i);if(r>=0){let n=t.instanceServiceContainer.selectionService.selectedElements.slice(0);n.splice(r,1),t.instanceServiceContainer.selectionService.setSelectedElements(n,e)}else{let n=t.instanceServiceContainer.selectionService.selectedElements.slice(0);n.push(i),t.instanceServiceContainer.selectionService.setSelectedElements(n,e)}}else t.instanceServiceContainer.selectionService.selectedElements.indexOf(i)<0&&t.instanceServiceContainer.selectionService.setSelectedElements([i],e)}static FindPossibleContainer(e,t,i){let r=null,n=null,o=e.instanceServiceContainer.designerCanvas,a=o.elementsFromPoint(i.x,i.y);a.push(o.rootDesignItem.element);for(let l of a)if(l!=e.element){if(l==e.parent.element)break;if(l==o.rootDesignItem.element){r=o.rootDesignItem;let c=getComputedStyle(r.element);if(n=o.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(r,c,e)),n){if(n.canEnter(r,t))break;r=null,n=null;break}break}else{r=M.GetOrCreateDesignItem(l,l,o.serviceContainer,o.instanceServiceContainer);let c=getComputedStyle(r.element);if(n=o.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(r,c,e)),n){if(n.canEnter(r,t))break;r=null,n=null;continue}}}return[r,n]}keyboardEventHandler(e,t,i){}}});var ve,st=g(()=>{"use strict";ve=class{constructor(e,t,i){this.title="Insert Item",this.containerItem=e,this.index=t,this.newItem=i}title;get affectedItems(){return[this.containerItem,this.newItem]}undo(){return this.newItem.parent._removeChildInternal(this.newItem),[{changeType:"removed",designItems:[this.newItem]}]}do(){return this.containerItem._insertChildInternal(this.newItem,this.index),[{changeType:"added",designItems:[this.newItem]}]}containerItem;index;newItem;mergeWith(e){return!1}}});var qn,Jn,tc=g(()=>{"use strict";le();Qe();st();ne();te();qn=10,Jn=class{cursor="crosshair";_pathD;_path;_samePoint=!1;_p2pMode=!1;_dragMode=!1;_pointerMoved=!1;_eventStarted=!1;_lastPoint;_startPoint;_captureElement;_pointerId;_angleStep;constructor(e){e?.angleStep!==void 0&&(this._angleStep=e.angleStep)}activated(e){}dispose(){}pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t);switch(t.type){case w.PointerDown:e.clickOverlay.focus(),this._eventStarted=!0,this._p2pMode||(this._captureElement=t.target,this._pointerId=t.pointerId,this._captureElement.setPointerCapture(this._pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._pathD="M "+r.x+" "+r.y+" ",this._path.setAttribute("d",this._pathD),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),e.overlayLayer.addOverlay(this.constructor.name,this._path,D.Foreground),this._startPoint=r),this._lastPoint!=null&&this._lastPoint.x===r.x&&this._lastPoint.y===r.y&&!this._samePoint&&(this._samePoint=!0),this._lastPoint==null&&(this._lastPoint=r),this._startPoint==null&&(this._startPoint=r);break;case w.PointerMove:if(this._eventStarted&&(this._pointerMoved=!0),!this._p2pMode)this._dragMode=!0,this._path&&(this._pathD+="L "+r.x+" "+r.y+" ",this._path.setAttribute("d",this._pathD));else if(this._path){let n=r;t.shiftKey&&(n=ft(this._lastPoint,r)),this._path.setAttribute("d",this._pathD+"L "+n.x+" "+n.y)+""}break;case w.PointerUp:if(this._eventStarted&&!this._pointerMoved&&(this._p2pMode=!0),this._p2pMode&&!this._samePoint&&this._startPoint.x!=r.x&&this._startPoint.y!=r.y&&this._path)if(t.shiftKey||this._angleStep){let n=ft(this._lastPoint,r,this._angleStep??45);this._pathD+="L "+n.x+" "+n.y+" ",this._path.setAttribute("d",this._pathD),this._lastPoint=n}else this._pathD+="L "+r.x+" "+r.y+" ",this._path.setAttribute("d",this._pathD),this._lastPoint=r;(this._samePoint&&this._p2pMode||this._dragMode&&!this._p2pMode)&&this._finalizePath(e);break}t.preventDefault(),t.stopPropagation()}keyboardEventHandler(e,t,i){t.key==="Escape"&&this._finalizePath(e)}_finalizePath(e){this._captureElement?.releasePointerCapture(this._pointerId),this._captureElement=void 0,e.releaseActiveTool(),this._eventStarted=!1,this._p2pMode=!1,this._pointerMoved=!1,this._samePoint=!1,this._dragMode=!1;let t=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let i=document.createElementNS("http://www.w3.org/2000/svg","svg"),r=t.x-qn,n=t.y-qn;this._path.setAttribute("d",this._pathD);let o=gp(this._path,r,n);this._path.setAttribute("d",o),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),i.appendChild(this._path),i.style.left=r+"px",i.style.top=n+"px",i.style.position="absolute",i.style.width=Math.round(t.width+2*qn)+"px",i.style.height=Math.round(t.height+2*qn)+"px",i.style.overflow="visible",i.style.stroke=e.serviceContainer.globalContext.strokeColor,i.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=void 0,this._pathD=void 0,this._lastPoint=void 0;let a=M.createDesignItemFromInstance(i,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,a)),e.serviceContainer.globalContext.finishedWithTool(this)}}});var es,ic=g(()=>{"use strict";ie();es=class extends R{_line1;_line2;_line3;_line4;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i){if(isNaN(i.p1.x)||isNaN(i.p2.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._line1=this._drawLine(i.p1.x,i.p1.y,i.p2.x,i.p2.y,"svg-selection",this._line1),this._line2=this._drawLine(i.p1.x,i.p1.y,i.p4.x,i.p4.y,"svg-selection",this._line2),this._line3=this._drawLine(i.p2.x,i.p2.y,i.p3.x,i.p3.y,"svg-selection",this._line3),this._line4=this._drawLine(i.p4.x,i.p4.y,i.p3.x,i.p3.y,"svg-selection",this._line4),this._line1.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line2.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line3.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line4.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString())}}dispose(){this._removeAllOverlays()}}});import{css as Nf}from"@node-projects/base-custom-webcomponent";var ts,rc=g(()=>{"use strict";ic();q();ts=class{shouldExtend(e,t,i){return!i.isRootItem&&i.nodeType!=k.Comment&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new es(e,t,i)}static style=Nf`.svg-selection{stroke:#3899ec;fill:transparent;stroke-width:2}`}});function Ai(s){let e=getComputedStyle(s),t=1,i=1;return e.gridRowEnd=="auto"?t=1:e.gridRowEnd.startsWith("span")?t=parseInt(e.gridRowEnd.substring(4)):t=parseInt(e.gridRowEnd)-parseInt(e.gridRowStart),e.gridColumnEnd=="auto"?i=1:e.gridColumnEnd.startsWith("span")?i=parseInt(e.gridColumnEnd.substring(4)):i=parseInt(e.gridColumnEnd)-parseInt(e.gridColumnStart),{colSpan:i,rowSpan:t}}function ur(s,e){let t=s.instanceServiceContainer.designerCanvas,i=s.element.convertPointFromNode(new DOMPoint(e.x,e.y),t.canvas,{iframes:t.iframes});return{x:i.x,y:i.y}}function ki(s){let e=s.instanceServiceContainer.designerCanvas,t=e.canvas.convertPointFromNode(new DOMPoint(0,0),s.element,{iframes:e.iframes}),i=e.canvas.convertPointFromNode(new DOMPoint(1,0),s.element,{iframes:e.iframes}),r=e.canvas.convertPointFromNode(new DOMPoint(0,1),s.element,{iframes:e.iframes});return new DOMMatrix([i.x-t.x,i.y-t.y,r.x-t.x,r.y-t.y,t.x,t.y])}function Mp(s,e){let t=s.cells[0];if(!t?.length||!Number.isFinite(e))return 0;let i=0;for(let r=0;r<t.length;r++){let n=t[r];e>n.localX+n.width/2&&(i=r)}return i}function Np(s,e){let t=s.cells[0];if(!t?.length||!Number.isFinite(e))return 1;let i=1;for(let r=0;r<t.length;r++){let n=t[r];e>n.localX+n.width/2&&(i=r+2)}return i}function Lp(s,e){if(!s.cells.length||!Number.isFinite(e))return 0;let t=0;for(let i=0;i<s.cells.length;i++){let r=s.cells[i][0];e>r.localY+r.height/2&&(t=i)}return t}function Op(s,e){if(!s.cells.length||!Number.isFinite(e))return 1;let t=1;for(let i=0;i<s.cells.length;i++){let r=s.cells[i][0];e>r.localY+r.height/2&&(t=i+2)}return t}function fr(s,e,t=qe(s)){let i=ur(s,e);if(!Number.isFinite(i.x)||!Number.isFinite(i.y))return null;for(let r=0;r<t.cells.length;r++)for(let n=0;n<t.cells[r].length;n++){let o=t.cells[r][n];if(i.x>=o.localX&&i.x<=o.localX+o.width&&i.y>=o.localY&&i.y<=o.localY+o.height)return{row:r,column:n,cell:o,localPoint:i}}return null}function qe(s){let e=s.instanceServiceContainer.designerCanvas,t=s.element.getBoxQuads({relativeTo:e.canvas,iframes:e.iframes})[0],i=Le(s.element),r=getComputedStyle(s.element),n=r.gridTemplateRows.split(" "),o=r.gridTemplateColumns.split(" "),a=Number.parseFloat(r.paddingLeft),l=Number.parseFloat(r.paddingTop),c=Number.parseFloat(r.borderLeftWidth),h=Number.parseFloat(r.borderTopWidth),d=0,p=0,m=0,u=0,f=t.p1.x+c,y=t.p1.y+h,v=c,b=h,E=null;r.gridTemplateAreas&&r.gridTemplateAreas!=="none"&&(E=r.gridTemplateAreas.split('"')),r.columnGap&&r.columnGap!="normal"&&(p=Number.parseFloat(r.columnGap.replace("px",""))),r.rowGap&&r.rowGap!="normal"&&(m=Number.parseFloat(r.rowGap.replace("px","")));let S=0,T=0;for(let I of o){let U=Number.parseFloat(I.replace("px",""));S+=U+p}S-=p;for(let I of n){let U=Number.parseFloat(I.replace("px",""));T+=U+m}if(T-=m,r.justifyContent=="center"){let I=(i.width-S)/2;f+=I,v+=I}else if(r.justifyContent=="end"){let I=i.width-S;f+=I,v+=I}else if(r.justifyContent=="space-between")p+=(i.width-S)/(o.length-1);else if(r.justifyContent=="space-around"){let I=(i.width-S)/(o.length*2);p+=I*2,f+=I,v+=I}else if(r.justifyContent=="space-evenly"){let I=(i.width-S)/(o.length+1);p+=I,f+=I,v+=I}if(r.alignContent=="center"){let I=(i.height-T)/2;y+=I,b+=I}else if(r.alignContent=="end"){let I=i.height-T;y+=I,b+=I}else if(r.alignContent=="space-between")m+=(i.height-T)/(n.length-1);else if(r.alignContent=="space-around"){let I=(i.height-T)/(n.length*2);m+=I*2,y+=I,b+=I}else if(r.alignContent=="space-evenly"){let I=(i.height-T)/(n.length+1);m+=I,y+=I,b+=I}let O={cells:[],gaps:[],xGap:p,yGap:m};for(let I=0;I<n.length;I++){let U=n[I],$=null;E&&E[u+1]&&($=E[u+1].split(" "));let V=0,j=0,X=Number.parseFloat(U.replace("px","")),Z=[];O.cells.push(Z);for(let oe=0;oe<o.length;oe++){let ye=o[oe];oe>0&&(O.gaps.push({x:V+f+a,y:d+y+l,width:p,height:X,localX:V+v+a,localY:d+b+l,column:oe,row:I,type:"v"}),V+=p);let De=Number.parseFloat(ye.replace("px",""));I>0&&O.gaps.push({x:V+f+a,y:d+y-m+l,width:De,height:m,localX:V+v+a,localY:d+b-m+l,column:oe,row:I,type:"h"});let me=null;if($&&$[j]){let ae=$[j].trim();ae!="."&&(me=ae)}let J={x:V+f+a,y:d+y+l,width:De,height:X,name:me,localX:V+v+a,localY:d+b+l};Z.push(J),V+=De,j++}d+=X+m,u+=2}return O}var $t=g(()=>{"use strict";_t()});function Ii(s,e){switch(e){case"left":let t=getComputedStyle(s).left;return s.style.removeProperty("right"),s.style.left=t,t;case"top":let i=getComputedStyle(s).top;return s.style.removeProperty("bottom"),s.style.top=i,i}}var is,nc=g(()=>{"use strict";le();ce();$t();Pe();_t();ie();is=class extends R{resizeAllSelected;_initialSizes=null;_actionModeStarted;_initialPoint=null;_offsetPoint;_circle1;_circle2;_circle3;_circle4;_circle5;_circle6;_circle7;_circle8;_initialHandleCanvasPoint=null;_initialLocalToCanvasMatrix=null;_initialBorderBoxSize=null;_initialFixedResizeAnchor=null;constructor(e,t,i,r){super(e,t,i),this.resizeAllSelected=r}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i){if(isNaN(i.p1.x)||isNaN(i.p1.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._circle1=this._drawResizerOverlay(i.p1.x,i.p1.y,"nw-resize",this._circle1),this._circle2=this._drawResizerOverlay(i.p1.x+(i.p2.x-i.p1.x)/2,i.p1.y+(i.p2.y-i.p1.y)/2,"n-resize",this._circle2),this._circle3=this._drawResizerOverlay(i.p2.x,i.p2.y,"ne-resize",this._circle3),this._circle4=this._drawResizerOverlay(i.p1.x+(i.p4.x-i.p1.x)/2,i.p1.y+(i.p4.y-i.p1.y)/2,"w-resize",this._circle4),this._circle5=this._drawResizerOverlay(i.p4.x,i.p4.y,"sw-resize",this._circle5),this._circle6=this._drawResizerOverlay(i.p4.x+(i.p3.x-i.p4.x)/2,i.p4.y+(i.p3.y-i.p4.y)/2,"s-resize",this._circle6),this._circle8=this._drawResizerOverlay(i.p2.x+(i.p3.x-i.p2.x)/2,i.p2.y+(i.p3.y-i.p2.y)/2,"e-resize",this._circle8),this._circle7=this._drawResizerOverlay(i.p3.x,i.p3.y,"se-resize",this._circle7))}}_drawResizerOverlay(e,t,i,r){let n=this._drawCircle(e,t,this.designerCanvas.serviceContainer.options.resizerPixelSize/this.designerCanvas.zoomFactor,"svg-primary-resizer",r);return n.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),r||(n.addEventListener(w.PointerDown,o=>this._pointerActionTypeResize(n,o,i)),n.addEventListener(w.PointerMove,o=>this._pointerActionTypeResize(n,o,i)),n.addEventListener(w.PointerUp,o=>this._pointerActionTypeResize(n,o,i))),n.style.cursor=i,n}_pointerActionTypeResize(e,t,i){t.stopPropagation();let r=this.designerCanvas.getNormalizedEventCoordinates(t);switch(t.type){case w.PointerDown:let n=parseFloat(e.getAttribute("cx")??"0"),o=parseFloat(e.getAttribute("cy")??"0");if(this._offsetPoint={x:n-r.x,y:o-r.y},t.target.setPointerCapture(t.pointerId),this._initialPoint=r,this._initialHandleCanvasPoint=new DOMPoint(n,o),this._initialLocalToCanvasMatrix=ki(this.extendedItem),this._initialBorderBoxSize=Le(this.extendedItem.element),this._initialFixedResizeAnchor=this._getFixedResizeAnchor(this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas,iframes:this.designerCanvas.iframes})[0],i),this._initialSizes=[],this._actionModeStarted=i,this._initialSizes.push(this._getInitialSize(this.extendedItem.element)),this.resizeAllSelected)for(let l of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)this._initialSizes.push(this._getInitialSize(l.element));if(this.designerCanvas.alignOnSnap&&this.designerCanvas.snapLines.calculateSnaplines(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),this.prepareResize(this.extendedItem,this._actionModeStarted),this.resizeAllSelected)for(let l of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)l!==this.extendedItem&&this.prepareResize(l,this._actionModeStarted);break;case w.PointerMove:if(this._initialPoint){if(!this._initialSizes||!this._initialHandleCanvasPoint||!this._initialLocalToCanvasMatrix||!this._initialBorderBoxSize)return;let l=getComputedStyle(this.extendedItem.parent.element),h=this.designerCanvas.serviceContainer.getLastServiceWhere("containerService",S=>S.serviceForContainer(this.extendedItem.parent,l)).placePoint(t,this.designerCanvas,this.extendedItem.parent,this._initialPoint,{x:0,y:0},r,this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),d=new DOMPoint(h.x+this._offsetPoint.x,h.y+this._offsetPoint.y),p=this._getLocalHandleDelta(d);if(!p)return;let m=p.x,u=p.y;t.shiftKey&&(m=m<u?m:u,u=m);let f=0,y=null,v=null;switch(this._actionModeStarted){case"e-resize":if(y=this._initialSizes[f].width+m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width+m)+"px")}break;case"se-resize":if(y=this._initialSizes[f].width+m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height+u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width+m)+"px",S.element.style.height=N(this.extendedItem,this._initialSizes[f].height+u)+"px")}break;case"s-resize":if(v=this._initialSizes[f].height+u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.height=N(this.extendedItem,this._initialSizes[f].height+u)+"px")}break;case"sw-resize":if(y=this._initialSizes[f].width-m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height+u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width-m)+"px",S.element.style.height=N(this.extendedItem,this._initialSizes[f].height+u)+"px")}break;case"w-resize":if(y=this._initialSizes[f].width-m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width-m)+"px")}break;case"nw-resize":if(y=this._initialSizes[f].width-m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height-u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width-m)+"px",S.element.style.height=N(this.extendedItem,this._initialSizes[f].height-u)+"px")}break;case"n-resize":if(v=this._initialSizes[f].height-u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.height=N(this.extendedItem,this._initialSizes[f].height-u)+"px")}break;case"ne-resize":if(y=this._initialSizes[f].width+m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height-u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width+m)+"px",S.element.style.height=N(this.extendedItem,this._initialSizes[f].height-u)+"px")}break}let b=this._getCurrentBorderBoxSize(m,u);if(!b)return;this._applyAnchorCorrection(b);let E=[this.extendedItem,this.extendedItem.parent];this.resizeAllSelected&&E.push(...this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),this.extensionManager.refreshExtensions(E),this.designerCanvas?.raiseDesignItemsChanged(E,"resize",!1)}break;case w.PointerUp:if(t.target.releasePointerCapture(t.pointerId),!this._initialPoint)return;let a=this.extendedItem.openGroup(this.resizeAllSelected&&this.designerCanvas.instanceServiceContainer.selectionService.selectedElements.length>1?"Resize Elements":"Resize &lt;"+this.extendedItem.name+"&gt;");try{let l=this.extendedItem.element;this.extendedItem.setStyle("width",this.extendedItem.element.style.width),this.extendedItem.setStyle("height",this.extendedItem.element.style.height);let c=parseFloat(Ii(l,"left")),h=parseFloat(Ii(l,"top")),d=this._getAnchorCorrectionInParent(Le(this.extendedItem.element));if(d&&(c+=d.x,h+=d.y,l.style.left=N(this.extendedItem,c)+"px",l.style.top=N(this.extendedItem,h)+"px"),this.extendedItem.setStyle("left",N(this.extendedItem,c)+"px"),this.extendedItem.setStyle("top",N(this.extendedItem,h)+"px"),this.resizeAllSelected){for(let p of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)p!==this.extendedItem&&(p.setStyle("width",p.element.style.width),p.setStyle("height",p.element.style.height),p.setStyle("left",N(this.extendedItem,parseFloat(Ii(p.element,"left")))+"px"),p.setStyle("top",N(this.extendedItem,parseFloat(Ii(p.element,"top")))+"px"));this.designerCanvas?.raiseDesignItemsChanged(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements,"resize",!0)}else this.designerCanvas?.raiseDesignItemsChanged([this.extendedItem],"resize",!0);a.commit()}catch(l){a.abort(),console.error(l)}this._initialSizes=null,this._initialPoint=null,this._initialHandleCanvasPoint=null,this._initialLocalToCanvasMatrix=null,this._initialBorderBoxSize=null,this._initialFixedResizeAnchor=null;break}}_getLocalHandleDelta(e){if(!this._initialHandleCanvasPoint||!this._initialLocalToCanvasMatrix)return null;let t=new DOMMatrix([this._initialLocalToCanvasMatrix.a,this._initialLocalToCanvasMatrix.b,this._initialLocalToCanvasMatrix.c,this._initialLocalToCanvasMatrix.d,0,0]);if(!t.is2D)return null;let i=new DOMPoint(e.x-this._initialHandleCanvasPoint.x,e.y-this._initialHandleCanvasPoint.y);return t.inverse().transformPoint(i)}_getCurrentBorderBoxSize(e,t){if(!this._initialBorderBoxSize)return null;let i=this._initialBorderBoxSize.width,r=this._initialBorderBoxSize.height;switch(this._actionModeStarted){case"e-resize":case"se-resize":case"ne-resize":i+=e;break;case"w-resize":case"sw-resize":case"nw-resize":i-=e;break}switch(this._actionModeStarted){case"s-resize":case"se-resize":case"sw-resize":r+=t;break;case"n-resize":case"ne-resize":case"nw-resize":r-=t;break}return{width:i,height:r}}_getInitialSize(e){let t=Le(e),i={x:0,y:0};return getComputedStyle(e).boxSizing=="content-box"&&(i=Yd(e)),{width:t.width-i.x,height:t.height-i.y}}_getFixedResizeAnchor(e,t){if(!e)return null;switch(t){case"e-resize":return new DOMPoint((e.p1.x+e.p4.x)/2,(e.p1.y+e.p4.y)/2);case"se-resize":return new DOMPoint(e.p1.x,e.p1.y);case"s-resize":return new DOMPoint((e.p1.x+e.p2.x)/2,(e.p1.y+e.p2.y)/2);case"sw-resize":return new DOMPoint(e.p2.x,e.p2.y);case"w-resize":return new DOMPoint((e.p2.x+e.p3.x)/2,(e.p2.y+e.p3.y)/2);case"nw-resize":return new DOMPoint(e.p3.x,e.p3.y);case"n-resize":return new DOMPoint((e.p4.x+e.p3.x)/2,(e.p4.y+e.p3.y)/2);case"ne-resize":return new DOMPoint(e.p4.x,e.p4.y);default:return null}}_getFixedResizeAnchorLocal(e,t){switch(t){case"e-resize":return new DOMPoint(0,e.height/2);case"se-resize":return new DOMPoint(0,0);case"s-resize":return new DOMPoint(e.width/2,0);case"sw-resize":return new DOMPoint(e.width,0);case"w-resize":return new DOMPoint(e.width,e.height/2);case"nw-resize":return new DOMPoint(e.width,e.height);case"n-resize":return new DOMPoint(e.width/2,e.height);case"ne-resize":return new DOMPoint(0,e.height);default:return null}}_getAnchorCorrectionInParent(e){if(!this._initialFixedResizeAnchor)return null;let t=this._getFixedResizeAnchorLocal(e,this._actionModeStarted);if(!t)return null;let i=this.extendedItem.parent.element.convertPointFromNode(this._initialFixedResizeAnchor,this.designerCanvas.canvas,{iframes:this.designerCanvas.iframes}),r=this.designerCanvas.canvas.convertPointFromNode(t,this.extendedItem.element,{iframes:this.designerCanvas.iframes}),n=this.extendedItem.parent.element.convertPointFromNode(r,this.designerCanvas.canvas,{iframes:this.designerCanvas.iframes});return{x:i.x-n.x,y:i.y-n.y}}_applyAnchorCorrection(e){let t=this._getAnchorCorrectionInParent(e);if(!t)return;let i=this.extendedItem.element,r=parseFloat(Ii(i,"left"))+t.x,n=parseFloat(Ii(i,"top"))+t.y;i.style.left=N(this.extendedItem,r)+"px",i.style.top=N(this.extendedItem,n)+"px"}prepareResize(e,t){let i=null,r=null,n=null,o=null;switch(this._actionModeStarted){case"e-resize":n=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=n;break;case"se-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i,n=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=n;break;case"s-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i;break;case"sw-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i,o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"w-resize":o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"nw-resize":r=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=r,o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"n-resize":r=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=r;break;case"ne-resize":r=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=r,n=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=n;break}}dispose(){this._removeAllOverlays()}}});import{css as Lf}from"@node-projects/base-custom-webcomponent";var rs,sc=g(()=>{"use strict";nc();q();rs=class{resizeAllSelected;constructor(e=!1){this.resizeAllSelected=e}shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem&&i.nodeType==k.Element}getExtension(e,t,i){return new is(e,t,i,this.resizeAllSelected)}static style=Lf`.svg-primary-resizer{stroke:#3899ec;fill:#fff;pointer-events:auto}`}});function Vp(s){let e=Math.hypot(s.x,s.y);return e<1e-8?{x:0,y:0}:{x:s.x/e,y:s.y/e}}function Di(s){return{x:(s.p1.x+s.p2.x+s.p3.x+s.p4.x)/4,y:(s.p1.y+s.p2.y+s.p3.y+s.p4.y)/4}}function Rp(s,e){return{x:(s.x+e.x)/2,y:(s.y+e.y)/2}}function Of(s,e,t,i){let r=e.x-s.x,n=e.y-s.y,o=Vp({x:-n,y:r});o.x===0&&o.y===0&&(o=Vp(i));let a=Rp(s,e),l={x:t.x-a.x,y:t.y-a.y};return o.x*l.x+o.y*l.y>0&&(o={x:-o.x,y:-o.y}),o}function Oe(s,e,t,i,r){let n=Rp(s,e),o=Of(s,e,t,r);return{x:n.x+o.x*i,y:n.y+o.y*i}}var ns=g(()=>{"use strict"});var ss,oc=g(()=>{"use strict";Fe();Pe();_t();ie();ns();ss=class extends R{_rotateLine;_rotateCircle;_startPoint=null;_rotateCirclePosition={x:0,y:0};constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let r=[i.p1,i.p2,i.p3,i.p4];if(r.some(c=>!Number.isFinite(c.x)||!Number.isFinite(c.y))){this.remove();return}if(!this._valuesHaveChanges(this.designerCanvas.zoomFactor,...r.flatMap(c=>[c.x,c.y])))return;let n=Di(i),o=Oe(i.p1,i.p2,n,30/this.designerCanvas.zoomFactor,{x:0,y:-1}),a=Oe(i.p1,i.p2,n,22/this.designerCanvas.zoomFactor,{x:0,y:-1}),l=Oe(i.p1,i.p2,n,6/this.designerCanvas.zoomFactor,{x:0,y:-1});this._rotateLine=this._drawLine(a.x,a.y,l.x,l.y,"svg-primary-rotate-line",this._rotateLine),this._rotateLine.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle?(this._rotateCircle=this._drawCircle(o.x,o.y,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString()):(this._rotateCircle=this._drawCircle(o.x,o.y,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle.addEventListener("pointerdown",c=>{c.stopPropagation(),this._rotateCirclePosition=this._getRotateReferencePoint(),c.target.setPointerCapture(c.pointerId);let h=this.designerCanvas.getNormalizedEventCoordinates(c);this._startPoint=this.extendedItem.element.convertPointFromNode({x:h.x,y:h.y},this.designerCanvas.canvas)}),this._rotateCircle.addEventListener("pointermove",c=>{c.stopPropagation(),this._startPoint&&(this.extendedItem.element.style.rotate="none",this.extendedItem.element.style.rotate=this.getAngle(c)+"deg")}),this._rotateCircle.addEventListener("pointerup",c=>{c.stopPropagation(),c.target.releasePointerCapture(c.pointerId),this._startPoint=null,this.extendedItem.element.style.rotate="none",this.extendedItem.setStyle("rotate",this.getAngle(c)+"deg")}))}_getRotateReferencePoint(){let e=this.extendedItem.element,i={x:Le(this.extendedItem.element).width/2,y:-30/this.designerCanvas.zoomFactor},r=e.style.rotate;try{e.style.rotate="none";let n=e.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!n)return i;let o=Di(n),a=Oe(n.p1,n.p2,o,30/this.designerCanvas.zoomFactor,{x:0,y:-1}),l=e.convertPointFromNode(a,this.designerCanvas.canvas);return!Number.isFinite(l.x)||!Number.isFinite(l.y)?i:{x:l.x,y:l.y}}finally{e.style.rotate=r}}getAngle(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e),i={x:t.x,y:t.y},r=this.extendedItem.element.convertPointFromNode(i,this.designerCanvas.canvas),o=getComputedStyle(this.extendedItem.element).transformOrigin.split(" "),a={x:parseFloat(o[0]),y:parseFloat(o[1])},l=Math.atan2(this._rotateCirclePosition.y-a.y,this._rotateCirclePosition.x-a.x)*180/Math.PI+90,c=Math.atan2(r.y-a.y,r.x-a.x)*180/Math.PI+90-l;return W(e)||(c=Math.round(c/15)*15),N(this.extendedItem,c)}dispose(){this._removeAllOverlays()}}});import{css as Vf}from"@node-projects/base-custom-webcomponent";var os,ac=g(()=>{"use strict";oc();os=class{type;constructor(e="center-top"){this.type=e}shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new ss(e,t,i)}static style=Vf`.svg-primary-rotate{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto;cursor:alias}.svg-primary-rotate-transparent{fill:transparent;pointer-events:auto;cursor:alias}.svg-primary-rotate-line{stroke:#3899ec;fill:#3899ec;stroke-width:1}`}});var as,lc=g(()=>{"use strict";Fe();Pe();ce();ie();as=class extends R{_rotateLine;_rotateCircle;_rectLine1;_rectLine2;_rectLine3;_rectLine4;_initialCorners;_startAngle;_groupCenter;_initialHandleX;_initialHandleY;_initialLineX1;_initialLineY1;_initialLineX2;_initialLineY2;_currentDelta=0;_elementStartStates;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=he(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);if(i.length<2)return;let r,n,o,a,l,c;if(this._elementStartStates){let h=this._currentDelta*Math.PI/180,d=Math.cos(h),p=Math.sin(h),m=(b,E)=>this._groupCenter.x+(b-this._groupCenter.x)*d-(E-this._groupCenter.y)*p,u=(b,E)=>this._groupCenter.y+(b-this._groupCenter.x)*p+(E-this._groupCenter.y)*d;r=m(this._initialHandleX,this._initialHandleY),n=u(this._initialHandleX,this._initialHandleY),o=m(this._initialLineX1,this._initialLineY1),a=u(this._initialLineX1,this._initialLineY1),l=m(this._initialLineX2,this._initialLineY2),c=u(this._initialLineX2,this._initialLineY2);let y=this._initialCorners.map(b=>({x:m(b.x,b.y),y:u(b.x,b.y)})),v=(2/this.designerCanvas.zoomFactor).toString();this._rectLine1=this._drawLine(y[0].x,y[0].y,y[1].x,y[1].y,"svg-rotate-group-rect",this._rectLine1),this._rectLine2=this._drawLine(y[1].x,y[1].y,y[2].x,y[2].y,"svg-rotate-group-rect",this._rectLine2),this._rectLine3=this._drawLine(y[2].x,y[2].y,y[3].x,y[3].y,"svg-rotate-group-rect",this._rectLine3),this._rectLine4=this._drawLine(y[3].x,y[3].y,y[0].x,y[0].y,"svg-rotate-group-rect",this._rectLine4),this._rectLine1.style.strokeWidth=v,this._rectLine2.style.strokeWidth=v,this._rectLine3.style.strokeWidth=v,this._rectLine4.style.strokeWidth=v}else{this._rectLine1&&(this._rectLine1.style.display="none",this._rectLine2.style.display="none",this._rectLine3.style.display="none",this._rectLine4.style.display="none");let h=Gt(i,this.designerCanvas),d=h.x+h.width/2,p=h.y;r=d,n=p-30/this.designerCanvas.zoomFactor,o=d,a=p-22/this.designerCanvas.zoomFactor,l=d,c=p-6/this.designerCanvas.zoomFactor}this._rotateLine=this._drawLine(o,a,l,c,"svg-primary-rotate-line",this._rotateLine),this._rotateLine.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle?(this._rotateCircle=this._drawCircle(r,n,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString()):(this._rotateCircle=this._drawCircle(r,n,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle.addEventListener("pointerdown",h=>{h.stopPropagation(),h.target.setPointerCapture(h.pointerId);let d=he(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),p=Gt(d,this.designerCanvas),m=p.x+p.width/2,u=p.y;this._groupCenter={x:m,y:p.y+p.height/2},this._initialHandleX=m,this._initialHandleY=u-30/this.designerCanvas.zoomFactor,this._initialLineX1=m,this._initialLineY1=u-22/this.designerCanvas.zoomFactor,this._initialLineX2=m,this._initialLineY2=u-6/this.designerCanvas.zoomFactor,this._initialCorners=[{x:p.x,y:p.y},{x:p.x+p.width,y:p.y},{x:p.x+p.width,y:p.y+p.height},{x:p.x,y:p.y+p.height}],this._rectLine1&&(this._rectLine1.style.display="",this._rectLine2.style.display="",this._rectLine3.style.display="",this._rectLine4.style.display="");let f=this.designerCanvas.getNormalizedEventCoordinates(h);this._startAngle=Math.atan2(f.y-this._groupCenter.y,f.x-this._groupCenter.x),this._currentDelta=0,this._elementStartStates=d.map(y=>{let v=this.designerCanvas.getNormalizedElementCoordinates(y.element),b=this.designerCanvas.getNormalizedElementCoordinates(y.parent.element),E=y.getStyle("rotate")??"0deg",S=parseFloat(E)||0,T=getComputedStyle(y.element),O=parseFloat(T.width)/2,I=parseFloat(T.height)/2;return{item:y,rotation:S,centerX:v.x+v.width/2,centerY:v.y+v.height/2,cssHalfWidth:O,cssHalfHeight:I,parentX:b.x,parentY:b.y,parentWidth:b.width,parentHeight:b.height,usesRight:y.hasStyle("right")&&!y.hasStyle("left"),usesBottom:y.hasStyle("bottom")&&!y.hasStyle("top")}})}),this._rotateCircle.addEventListener("pointermove",h=>{if(h.stopPropagation(),!!this._elementStartStates){this._currentDelta=this._getDelta(h);for(let d of this._elementStartStates)this._applyRotation(d,this._currentDelta,!1)}}),this._rotateCircle.addEventListener("pointerup",h=>{if(h.stopPropagation(),h.target.releasePointerCapture(h.pointerId),!this._elementStartStates)return;let d=this._getDelta(h),p=this.designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup("rotateGroup");for(let m of this._elementStartStates)this._applyRotation(m,d,!0);p.commit(),this._elementStartStates=null,this._currentDelta=0}))}_getDelta(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e),r=(Math.atan2(t.y-this._groupCenter.y,t.x-this._groupCenter.x)-this._startAngle)*180/Math.PI;return r=((r+180)%360+360)%360-180,W(e)||(r=Math.round(r/15)*15),r}_applyRotation(e,t,i){let r=t*Math.PI/180,n=Math.cos(r),o=Math.sin(r),a=e.centerX-this._groupCenter.x,l=e.centerY-this._groupCenter.y,c=this._groupCenter.x+a*n-l*o,h=this._groupCenter.y+a*o+l*n,d=N(e.item,e.rotation+t),p=c-e.cssHalfWidth-e.parentX,m=h-e.cssHalfHeight-e.parentY,u=e.parentX+e.parentWidth-c-e.cssHalfWidth,f=e.parentY+e.parentHeight-h-e.cssHalfHeight;if(i)e.usesRight?e.item.setStyle("right",u+"px"):e.item.setStyle("left",p+"px"),e.usesBottom?e.item.setStyle("bottom",f+"px"):e.item.setStyle("top",m+"px"),e.item.setStyle("rotate",d+"deg");else{let y=e.item.element;e.usesRight?y.style.right=u+"px":y.style.left=p+"px",e.usesBottom?y.style.bottom=f+"px":y.style.top=m+"px",y.style.rotate=d+"deg"}}dispose(){this._removeAllOverlays()}}});import{css as Rf}from"@node-projects/base-custom-webcomponent";var ls,cc=g(()=>{"use strict";lc();ls=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new as(e,t,i)}static style=Rf`.svg-primary-rotate{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto;cursor:alias}.svg-primary-rotate-line{stroke:#3899ec;fill:#3899ec;stroke-width:1}.svg-rotate-group-rect{stroke:#3899ec;fill:transparent;stroke-width:2;stroke-dasharray:5 3}`}});var cs,hc=g(()=>{"use strict";le();te();cs=class{cursor="zoom-in";_rect;_startPoint;_endPoint;_pointerMovementTolerance=5;_zoomStepSize=.2;activated(e){}pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t);switch(t.type){case w.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._startPoint=r,this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect")),this._rect.setAttribute("class","svg-selector"),this._rect.setAttribute("x",this._startPoint.x*e.zoomFactor),this._rect.setAttribute("y",this._startPoint.y*e.zoomFactor),this._rect.setAttribute("width",0),this._rect.setAttribute("height",0),this._rect.style.strokeWidth=""+1/e.scaleFactor,this._rect.style.strokeDasharray=""+2/e.scaleFactor,e.overlayLayer.addOverlay(this.constructor.name,this._rect,D.Foreground);break;case w.PointerMove:if(this._startPoint){let o=r.x-this._startPoint.x,a=r.y-this._startPoint.y;o>=0?(this._rect.setAttribute("x",this._startPoint.x),this._rect.setAttribute("width",o)):(this._rect.setAttribute("x",r.x),this._rect.setAttribute("width",-1*o)),a>=0?(this._rect.setAttribute("y",this._startPoint.y),this._rect.setAttribute("height",a)):(this._rect.setAttribute("y",r.y),this._rect.setAttribute("height",-1*a))}break;case w.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool(),this._endPoint=r;let n=t.button==0;switch(t.button){case 0:case 2:this._zoomOnto(n,this._startPoint,this._endPoint,e);break}e.overlayLayer.removeOverlay(this._rect),this._rect=null,this._startPoint=null;break}}_zoomOnto(e,t,i,r){if(this._isPositionEqual(t,i)){let n=r.zoomFactor,o=e?n+this._zoomStepSize:n-this._zoomStepSize;r.zoomTowardsPoint(i,o)}else r.zoomOntoRectangle(t,i)}_isPositionEqual(e,t){let i=this._pointerMovementTolerance;return Math.abs(e.x-t.x)<=i&&Math.abs(e.y-t.y)<=i}keyboardEventHandler(e,t,i){}dispose(){}}});var hs,dc=g(()=>{"use strict";le();hs=class{cursor="grab";pointerEventHandler(e,t,i){switch(t.type){case w.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this);break;case w.PointerMove:(t.buttons==1||t.buttons==4)&&(e.canvasOffset={x:e.canvasOffset.x+t.movementX/e.zoomFactor,y:e.canvasOffset.y+t.movementY/e.zoomFactor});break;case w.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();break}}keyboardEventHandler(e,t,i){}activated(e){}dispose(){}}});var A,bt=g(()=>{"use strict";(function(s){s.copy="copy",s.paste="paste",s.cut="cut",s.delete="delete",s.undo="undo",s.redo="redo",s.holdUndo="holdUndo",s.holdRedo="holdRedo",s.rotateCounterClockwise="rotateCounterClockwise",s.rotateClockwise="rotateClockwise",s.mirrorHorizontal="mirrorHorizontal",s.mirrorVertical="mirrorVertical",s.selectAll="selectAll",s.moveToFront="moveToFront",s.moveForward="moveForward",s.moveBackward="moveBackward",s.moveToBack="moveToBack",s.arrangeLeft="arrangeLeft",s.arrangeCenter="arrangeCenter",s.arrangeRight="arrangeRight",s.arrangeTop="arrangeTop",s.arrangeMiddle="arrangeMiddle",s.arrangeBottom="arrangeBottom",s.unifyWidth="unifyWidth",s.unifyHeight="unifyHeight",s.distributeHorizontal="distributeHorizontaly",s.distributeVertical="distributeVertical",s.setTool="setTool",s.setStrokeColor="setStrokeColor",s.setFillBrush="setFillBrush",s.setStrokeThickness="setStrokeThickness",s.screenshot="screenshot"})(A||(A={}))});var ds,pc=g(()=>{"use strict";bt();se();ds=class{shouldProvideContextmenu(e,t,i,r){return!0}provideContextMenuItems(e,t,i){return t.readOnly?[{title:"copy",icon:`<img src="${C+"icons/copy.svg"}">`,action:()=>{t.executeCommand({type:A.copy})},shortCut:"Ctrl + C",disabled:i===null}]:[{title:"copy",icon:`<img src="${C+"icons/copy.svg"}">`,action:()=>{t.executeCommand({type:A.copy})},shortCut:"Ctrl + C",disabled:i===null},{title:"cut",icon:`<img src="${C+"icons/cut.svg"}">`,action:()=>{t.executeCommand({type:A.cut})},shortCut:"Ctrl + X",disabled:i===null},{title:"paste",icon:`<img src="${C+"icons/paste.svg"}">`,action:()=>{t.executeCommand({type:A.paste})},shortCut:"Ctrl + V"},{title:"delete",icon:`<img src="${C+"icons/delete.svg"}">`,action:()=>{t.executeCommand({type:A.delete})},shortCut:"Del",disabled:i===null}]}}});function Bf(s){return s.startsWith("border")}function Hf(s){return s.startsWith("background")}function Gf(s){return s==="transform"||s.startsWith("transform-")||Ff.has(s)}function Wf(s){return s.startsWith("font")||s.startsWith("text")||zf.has(s)}function jf(s,e){let t=[],i=new Set;for(let r=0;r<s.length;r++){let n=z.camelToDashCase(s[r]);if(!n||i.has(n)||!e(n))continue;let o=s.getPropertyValue(n)?.trim();o&&(i.add(n),t.push({name:n,value:o}))}return t}function zp(s){let e=s.filter(a=>Bf(a.name)),t=s.filter(a=>Hf(a.name)),i=s.filter(a=>Gf(a.name)),r=s.filter(a=>Wf(a.name)),n=[],o=new Set;for(let a of[e,t,i,r])for(let l of a)o.has(l.name)||(o.add(l.name),n.push(l));return{all:n,border:e,background:t,transform:i,text:r}}function KS(s){let e=jf(s,()=>!0);return zp(e)}function Fp(s){let e=[],t=new Set;for(let[i,r]of s){let n=i?.trim().toLowerCase(),o=r?.trim();!n||!o||t.has(n)||(t.add(n),e.push({name:n,value:o}))}return e.length?zp(e):null}function Bp(s,e){return s[e]}var XS,zf,Ff,mc=g(()=>{"use strict";_e();XS=["all","border","background","transform","text"],zf=new Set(["color","caret-color","line-height","letter-spacing","word-spacing","white-space","word-break","overflow-wrap","hyphens","tab-size","direction","writing-mode","unicode-bidi"]),Ff=new Set(["translate","rotate","scale"])});var ps,uc=g(()=>{"use strict";q();mc();ps=class{shouldProvideContextmenu(e,t,i,r){return!t.readOnly&&this._getTargetDesignItems(t).length>0}provideContextMenuItems(e,t,i){return[{title:"paste format",children:[this._createPasteFormatItem(t,"all"),{title:"-"},this._createPasteFormatItem(t,"border"),this._createPasteFormatItem(t,"background"),this._createPasteFormatItem(t,"transform"),this._createPasteFormatItem(t,"text")]}]}_createPasteFormatItem(e,t){return{title:t,action:()=>{this._pasteFormat(e,t)}}}_getTargetDesignItems(e){return e.instanceServiceContainer.selectionService.selectedElements?.filter(t=>t?.nodeType===k.Element&&!t.isRootItem)??[]}async _pasteFormat(e,t){let[i]=await e.serviceContainer.copyPasteService.getPasteItems(e.serviceContainer,e.instanceServiceContainer),r=i?.find(h=>h?.nodeType===k.Element&&h.hasStyles&&!h.isRootItem),n=r?Fp(r.styles()):null;if(!n)return;let o=Bp(n,t),a=this._getTargetDesignItems(e);if(!o.length||!a.length)return;let l=a[0].openGroup(`paste format: ${t}`),c=!1;for(let h of a)for(let d of o)h.getStyle(d.name)!==d.value&&(h.setStyle(d.name,d.value),c=!0);c?l.commit():l.abort()}}});var ms,fc=g(()=>{"use strict";bt();q();se();ms=class{shouldProvideContextmenu(e,t,i,r){return t.readOnly?!1:!i?.isRootItem&&i?.nodeType==k.Element}provideContextMenuItems(e,t,i){return[{title:"to front",icon:`<img style="rotate: 90deg" src="${C+"icons/moveFirst.svg"}">`,action:()=>{t.executeCommand({type:A.moveToFront})}},{title:"move forward",icon:`<img style="rotate: 90deg" src="${C+"icons/moveLeft.svg"}">`,action:()=>{t.executeCommand({type:A.moveForward})}},{title:"move backward",icon:`<img style="rotate: 270deg" src="${C+"icons/moveLeft.svg"}">`,action:()=>{t.executeCommand({type:A.moveBackward})}},{title:"to back",icon:`<img style="rotate: 270deg" src="${C+"icons/moveFirst.svg"}">`,action:()=>{t.executeCommand({type:A.moveToBack})}}]}}});function Hp(s,e,t=!1,i=0){for(let p of s)if(p==e||p.element.contains(e.element)){console.warn("could not move items into of itself or a child");return}let r=s[0],n=r.openGroup("switchContainerHelper"),o=r.instanceServiceContainer.designerCanvas,a=Number.MAX_VALUE,l=Number.MAX_VALUE,c=0,h=0;for(let p of s){let m=o.getNormalizedElementCoordinates(p.element);m.x<a&&(a=m.x),m.y<l&&(l=m.y),m.x+m.width>c&&(c=m.x+m.width),m.y+m.height>h&&(h=m.y+m.height)}let d=o.getNormalizedElementCoordinates(e.element);for(let p of s){let m=o.getNormalizedElementCoordinates(p.element);p.nodeType==k.Element&&(t?(p.setStyle("left",(m.x-a+i).toString()+"px"),p.setStyle("top",(m.y-l+i).toString()+"px")):(p.setStyle("left",(m.x-d.x).toString()+"px"),p.setStyle("top",(m.y-d.y).toString()+"px"))),e.insertChild(p)}t&&(e.setStyle("position","absolute"),e.setStyle("left",(a-i).toString()+"px"),e.setStyle("top",(l-i).toString()+"px"),e.setStyle("width",(c-a+2*i).toString()+"px"),e.setStyle("height",(h-l+2*i).toString()+"px")),n.commit()}var gc=g(()=>{"use strict";q()});var us,yc=g(()=>{"use strict";gc();ne();us=class{orderIndex=60;shouldProvideContextmenu(e,t,i,r){return i?.instanceServiceContainer.selectionService.selectedElements.length>1}provideContextMenuItems(e,t,i){return[{title:"wrap in",children:[{title:"div",action:()=>{let r=i.openGroup("wrap in Div"),n=i.instanceServiceContainer.selectionService.selectedElements,o=document.createElement("div"),a=M.createDesignItemFromInstance(o,i.serviceContainer,i.instanceServiceContainer);n[0].insertAdjacentElement(a,"beforebegin"),Hp(n,a,!0,10),r.commit(),i.instanceServiceContainer.selectionService.setSelectedElements([a])}}]}]}}});var gr,vc=g(()=>{"use strict";le();Fe();ne();te();gr=class{cursor="progress";_rect;_initialPoint;activated(e){}pointerEventHandler(e,t,i){W(t)||t.shiftKey?this.cursor="copy":t.altKey?this.cursor="default":this.cursor="default";let r=e.getNormalizedEventCoordinates(t);switch(t.type){case w.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._initialPoint=r,this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect")),this._rect.setAttribute("class","svg-selector"),this._rect.setAttribute("x",this._initialPoint.x*e.scaleFactor),this._rect.setAttribute("y",this._initialPoint.y*e.scaleFactor),this._rect.setAttribute("width",0),this._rect.setAttribute("height",0),this._rect.style.strokeWidth=""+1/e.scaleFactor,this._rect.style.strokeDasharray=""+2/e.scaleFactor,e.overlayLayer.addOverlay(this.constructor.name,this._rect,D.Foreground);break;case w.PointerMove:if(this._initialPoint){let l=r.x-this._initialPoint.x,c=r.y-this._initialPoint.y;l>=0?(this._rect.setAttribute("x",this._initialPoint.x),this._rect.setAttribute("width",l)):(this._rect.setAttribute("x",r.x),this._rect.setAttribute("width",-1*l)),c>=0?(this._rect.setAttribute("y",this._initialPoint.y),this._rect.setAttribute("height",c)):(this._rect.setAttribute("y",r.y),this._rect.setAttribute("height",-1*c))}break;case w.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let n=e.rootDesignItem.querySelectorAll("*"),o=[];(W(t)||t.shiftKey||t.altKey)&&e.instanceServiceContainer.selectionService.selectedElements&&o.push(...e.instanceServiceContainer.selectionService.selectedElements);let a=e.overlayLayer.createPoint();for(let l of n){let c=e.getNormalizedElementCoordinates(l);a.x=c.x,a.y=c.y;let h=this._rect.isPointInFill(a);a.x=c.x+c.width,a.y=c.y;let d=h&&this._rect.isPointInFill(a);a.x=c.x,a.y=c.y+c.height;let p=d&&this._rect.isPointInFill(a);if(a.x=c.x+c.width,a.y=c.y+c.height,p&&this._rect.isPointInFill(a)){let u=M.GetOrCreateDesignItem(l,l,e.serviceContainer,e.instanceServiceContainer);if(!o.includes(u)&&!t.altKey)o.push(u);else if(t.altKey){let f=o.indexOf(u);o.splice(f,1)}}}e.overlayLayer.removeOverlay(this._rect),this._rect=null,this._initialPoint=null,e.instanceServiceContainer.selectionService.setSelectedElements(o,t),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}dispose(){}}});var fs,xc=g(()=>{"use strict";le();Fe();ne();te();fs=class{cursor="progress";_pathD;_path;pointerEventHandler(e,t,i){W(t)?this.cursor="copy":t.altKey?this.cursor="default":this.cursor="default";let r=e.getNormalizedEventCoordinates(t);switch(t.type){case w.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-selector"),this._path.style.strokeWidth=""+1/e.scaleFactor,this._path.style.strokeDasharray=""+2/e.scaleFactor,this._pathD="M"+r.x+" "+r.y,this._path.setAttribute("D",this._pathD),e.overlayLayer.addOverlay(this.constructor.name,this._path,D.Foreground);break;case w.PointerMove:this._path&&(this._pathD+="L"+r.x+" "+r.y,this._path.setAttribute("d",this._pathD+"Z"));break;case w.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let n=e.rootDesignItem.querySelectorAll("*"),o=[];(W(t)||t.altKey)&&e.instanceServiceContainer.selectionService.selectedElements&&o.push(...e.instanceServiceContainer.selectionService.selectedElements);let a=e.overlayLayer.createPoint();for(let l of n){let c=e.getNormalizedElementCoordinates(l);a.x=c.x,a.y=c.y;let h=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x+c.width,a.y=c.y;let d=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x,a.y=c.y+c.height;let p=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x+c.width,a.y=c.y+c.height;let m=this._path.isPointInFill(a)||this._path.isPointInStroke(a);if(h&&d&&p&&m){let u=M.GetOrCreateDesignItem(l,l,e.serviceContainer,e.instanceServiceContainer);if(!o.includes(u)&&!t.altKey)o.push(u);else if(t.altKey){let f=o.indexOf(u);o.splice(f,1)}}}e.overlayLayer.removeOverlay(this._path),this._path=null,this._pathD=null,e.instanceServiceContainer.selectionService.setSelectedElements(o),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}activated(e){}dispose(){}}});var gs,_c=g(()=>{"use strict";gs=class{cursor="crosshair";async activated(e){try{let r=(await new EyeDropper().open()).sRGBHex;e.globalContext.strokeColor=r}finally{e.globalContext.finishedWithTool(this)}}async pointerEventHandler(e,t,i){}keyboardEventHandler(e,t,i){}dispose(){}}});function bc(s){let e=document.getSelection();return s.getSelection?e=s.getSelection():e.getComposedRanges&&(e=e.getComposedRanges(s)),e}function Gp(s,e){function t(o){let a=o.parentNode;if(!a)return;let l=document.createElement("span");e.push(l),a.insertBefore(l,o),l.appendChild(o)}function i(o){return o instanceof HTMLSpanElement&&Array.from(o.childNodes).every(a=>a.nodeType===Node.TEXT_NODE)}function r(o){switch(o.nodeType){case Node.TEXT_NODE:t(o);break;case Node.DOCUMENT_FRAGMENT_NODE:case Node.ELEMENT_NODE:if(i(o)){e.push(o);break}Array.from(o.childNodes).forEach(r);break}}let n=s.extractContents();r(n),s.insertNode(n)}function Uf(s){let e=document.createRange();return e.setStart(s.startContainer,s.startOffset),e.setEnd(s.endContainer,s.endOffset),e}function Wp(s){let e=[];if("getRangeAt"in s){if(!s.rangeCount)return e;let t=s.getRangeAt(0);Gp(t,e)}else{let t=s[0];if(!t)return e;Gp(Uf(t),e)}return"removeAllRanges"in s&&s.removeAllRanges&&s.removeAllRanges(),e}var wc=g(()=>{"use strict"});import{html as Yf}from"@node-projects/base-custom-webcomponent";var Ti,ys=g(()=>{"use strict";ie();te();wc();fl();ce();Ti=class s extends R{static template=Yf`<div style="height:100%;display:flex;gap:2px;width:100%"><button data-command="font-weight" data-command-parameter="800" style="pointer-events:auto;height:24px;width:24px;padding:0;font-weight:900">b</button> <button data-command="font-style" data-command-parameter="italic" style="pointer-events:auto;height:24px;width:24px;padding:0"><em>i</em></button> <button data-command="text-decoration" data-command-parameter="underline" style="pointer-events:auto;height:24px;width:24px;padding:0"><ins>u</ins></button> <button data-command="text-decoration" data-command-parameter="line-through" style="pointer-events:auto;height:24px;width:24px;padding:0"><del>s</del></button> <button data-command="text-decoration" data-command-parameter="overline" style="pointer-events:auto;height:24px;width:24px;padding:0"><span style="text-decoration:overline">o</span></button> <select data-command="fontSize" style="pointer-events:auto;height:24px;width:60px;padding:0"><option>8px</option><option>9px</option><option>10px</option><option>11px</option><option>12px</option><option>14px</option><option>16px</option><option>18px</option><option>20px</option><option>24px</option><option>28px</option><option>32px</option><option>36px</option></select> <select id="fontFamily" data-command="font-family" style="pointer-events:auto;height:24px;width:90px;padding:0"></select></div>`;_path;_toolbar;_selectionChangedListener;_toolbarStateAnimationFrame;constructor(e,t,i){super(e,t,i),this._keyDown=this._keyDown.bind(this),this._scheduleToolbarStateRefresh=this._scheduleToolbarStateRefresh.bind(this)}_keyDown(e){e.key==="Escape"&&this.dispose()}extend(){this.extendedItem.instanceServiceContainer.selectionService.clearSelectedElements(),this.extendedItem.removeDesignerAttributesAndStylesFromChildren(),window.addEventListener("keydown",this._keyDown,!0),this.extendedItem.editContent(),this._selectionChangedListener=this.extendedItem.instanceServiceContainer.selectionService.onSelectionChanged.on(()=>{this.commitchanges(),this.extensionManager.removeExtensionInstance(this.extendedItem,this)}),this.extendedItem.element.focus();let e=Y(this.extendedItem.element);this._toolbar=this.createToolbar(s.template,300,24),this._toolbar.updatePosition({x:(e.x-this.designerCanvas.containerBoundingRect.x)/this.designerCanvas.scaleFactor,y:(e.y-this.designerCanvas.containerBoundingRect.y)/this.designerCanvas.scaleFactor-36}),xi.addFontsToSelect(this._toolbar.getById("fontFamily")),this._toolbar.querySelectorAll("button").forEach(t=>t.onpointerdown=i=>{let r=t.dataset.command;r&&this._formatSelection(r,t.dataset.commandParameter)}),this._toolbar.querySelectorAll("select").forEach(t=>t.onchange=()=>{let i=t.dataset.command;i&&this._formatSelection(i,t.value)}),document.addEventListener("selectionchange",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("keyup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("pointerup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("input",this._scheduleToolbarStateRefresh,!0),this.designerCanvas.clickOverlay.style.pointerEvents="none",this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-edit-text-clickoutside"),this._path.setAttribute("fill-rule","evenodd"),this._path.style.pointerEvents="auto",this._path.onpointerdown=t=>{this.designerCanvas.ignoreEvent(t),this.commitchanges(),this.extensionManager.removeExtensionInstance(this.extendedItem,this)},this._addOverlay(this._path,D.Background),this.refresh(),this._refreshToolbarState()}refresh(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(this._valuesHaveChanges(this.designerCanvas.containerBoundingRect.width,this.designerCanvas.containerBoundingRect.height,this.designerCanvas.scaleFactor,e.p1.x,e.p1.y,e.p2.x,e.p2.y,e.p3.x,e.p3.y,e.p4.x,e.p4.y)){let t={width:this.designerCanvas.containerBoundingRect.width/this.designerCanvas.scaleFactor,height:this.designerCanvas.containerBoundingRect.height/this.designerCanvas.scaleFactor},i="M0 0 L"+t.width+" 0 L"+t.width+" "+t.height+" L0 "+t.height+" Z ";i+="M"+[e.p1,e.p2,e.p3,e.p4].map(r=>r.x+","+r.y).join(" ")+"Z ",this._path.setAttribute("d",i)}}dispose(){window.removeEventListener("keydown",this._keyDown,!0),document.removeEventListener("selectionchange",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("keyup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("pointerup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("input",this._scheduleToolbarStateRefresh,!0),this._toolbarStateAnimationFrame!=null&&cancelAnimationFrame(this._toolbarStateAnimationFrame),this._selectionChangedListener?.dispose(),this._removeAllOverlays(),this.extendedItem.editContentFinish(),this.designerCanvas.clickOverlay.style.pointerEvents="auto"}commitchanges(){this._removeAllOverlays(),this.extendedItem.element.normalize(),this._cleanupFormattingMarkup(this.extendedItem.element),this.extendedItem.element.normalize();let e=!1;e:for(;!e;){for(let i of this.extendedItem.element.querySelectorAll("*"))if(i.childNodes.length==0){i.remove();continue e}e=!0}this._cleanupFormattingMarkup(this.extendedItem.element),this.extendedItem.element.normalize();let t=this.extendedItem.element.innerHTML;this.extendedItem.editContentFinish(),this.extendedItem.innerHTML=t,this.designerCanvas.clickOverlay.style.pointerEvents="auto"}_cleanupFormattingMarkup(e){let t=!1;do t=this._cleanupFormattingNode(e),e.normalize();while(t)}_cleanupFormattingNode(e){let t=!1;for(let i of Array.from(e.childNodes))t=this._cleanupFormattingNode(i)||t;if(e instanceof HTMLElement&&e.localName==="span"){let i=e;if(this._isRedundantSpan(i))return this._unwrapElement(i),!0;let r=i.parentElement;if(r instanceof HTMLElement&&r.localName==="span"&&this._haveSameAttributes(r,i))return this._unwrapElement(i),!0}return this._mergeAdjacentSpans(e)||t}_mergeAdjacentSpans(e){let t=!1,i=e.firstChild;for(;i;){if(i instanceof HTMLElement&&i.localName==="span"){let r=i.nextSibling;for(;r instanceof HTMLElement&&r.localName==="span"&&this._haveSameAttributes(i,r);){for(;r.firstChild;)i.appendChild(r.firstChild);r.remove(),t=!0,r=i.nextSibling}}i=i.nextSibling}return t}_isRedundantSpan(e){return this._getAttributeSignature(e)===""}_haveSameAttributes(e,t){return this._getAttributeSignature(e)===this._getAttributeSignature(t)}_getAttributeSignature(e){return Array.from(e.attributes).filter(t=>t.name!=="style"||t.value.trim()!=="").sort((t,i)=>t.name.localeCompare(i.name)).map(t=>`${t.name}=${t.value}`).join(";")}_unwrapElement(e){let t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);e.remove()}}handlesPointerEvent(e,t,i){let r=t.composedPath(),n=this._toolbar?.querySelector("stylo-editor");return n!=null&&r.indexOf(n)>=0}_formatSelection(e,t){let i=this.designerCanvas.rootDesignItem.element.shadowRoot;if(!i)return;let r=bc(i);if(!r)return;let n=this._isFormatApplied(r,e,t),o=Wp(r);if(o.length){for(let a of o)if(n){let l=this._findFormatTargets(a,e,t);if(l.length)for(let c of l)this._unsetFormat(c,e,t);else this._unsetFormat(a,e,t)}else this._setFormat(a,e,t);this.extendedItem.element.focus(),this._restoreSelection(o),this._refreshToolbarState()}}_scheduleToolbarStateRefresh(){this._toolbarStateAnimationFrame!=null&&cancelAnimationFrame(this._toolbarStateAnimationFrame),this._toolbarStateAnimationFrame=requestAnimationFrame(()=>{this._toolbarStateAnimationFrame=void 0,this._refreshToolbarState()})}_refreshToolbarState(){let e=this._getToolbarStateElement(),t=getComputedStyle(e),i=this._getTextDecorationValues(t.textDecorationLine||t.textDecoration);this._setToolbarButtonState("font-weight","800",this._isComputedFormatApplied(t,"font-weight","800")),this._setToolbarButtonState("font-style","italic",this._isComputedFormatApplied(t,"font-style","italic")),this._setToolbarButtonState("text-decoration","underline",i.includes("underline")),this._setToolbarButtonState("text-decoration","line-through",i.includes("line-through")),this._setToolbarButtonState("text-decoration","overline",i.includes("overline")),this._setToolbarSelectValue(this._getToolbarSelect("fontSize"),t.fontSize),this._setToolbarFontFamilyValue(this._getToolbarSelect("font-family"),t.fontFamily)}_getToolbarStateElement(){let e=this._getEditableSelection(),t=e?this._getFirstSelectedElement(e):null;return t&&this.extendedItem.element.contains(t)?t:this.extendedItem.element}_isComputedFormatApplied(e,t,i){switch(t){case"font-weight":{if(e.fontWeight==="bold")return!0;let r=parseFloat(e.fontWeight);return Number.isNaN(r)?!1:i?r>=parseFloat(i):r>=600}case"font-style":return e.fontStyle===i;case"text-decoration":return!!i&&this._getTextDecorationValues(e.textDecorationLine).includes(i);case"fontSize":return e.fontSize===i;case"font-family":return!!i&&this._normalizeFontFamily(e.fontFamily)===this._normalizeFontFamily(i);default:return i!=null&&e.getPropertyValue(t)===i}}_getToolbarSelect(e){return this._toolbar.querySelector(`select[data-command="${e}"]`)}_setToolbarButtonState(e,t,i){let r=this._toolbar.querySelector(`button[data-command="${e}"][data-command-parameter="${t}"]`);r&&(r.toggleAttribute("data-active",i),r.ariaPressed=String(i),r.style.backgroundColor=i?"rgb(191, 219, 254)":"",r.style.boxShadow=i?"inset 0 0 0 1px rgb(59, 130, 246)":"")}_setToolbarSelectValue(e,t){if(!e)return;this._removeTemporarySelectOptions(e);let i=Array.from(e.options).find(n=>n.value===t);if(i){e.value=i.value;return}if(!t){e.selectedIndex=-1;return}let r=document.createElement("option");r.value=t,r.text=t,r.dataset.temporaryToolbarValue="true",e.appendChild(r),e.value=t}_setToolbarFontFamilyValue(e,t){if(!e)return;let i=this._getPrimaryFontFamily(t),r=this._normalizeFontFamily(i);this._removeTemporarySelectOptions(e);let n=Array.from(e.options).find(a=>this._normalizeFontFamily(a.value)===r);if(n){e.value=n.value;return}if(!i){e.selectedIndex=-1;return}let o=document.createElement("option");o.value=i,o.text=i,o.dataset.temporaryToolbarValue="true",e.appendChild(o),e.value=i}_removeTemporarySelectOptions(e){Array.from(e.options).filter(t=>t.dataset.temporaryToolbarValue==="true").forEach(t=>t.remove())}_getPrimaryFontFamily(e){return e.replaceAll(/['"]/g,"").split(",")[0].trim()}_restoreSelection(e){let t=this._getEditableSelection();if(!t)return;let i=document.createRange();i.setStartBefore(e[0]),i.setEndAfter(e[e.length-1]),t.removeAllRanges(),t.addRange(i)}_getEditableSelection(){let e=this.designerCanvas.rootDesignItem.element.shadowRoot;if(!e)return document.getSelection();let t=bc(e);return t&&"addRange"in t&&"removeAllRanges"in t?t:document.getSelection()}_isFormatApplied(e,t,i){let r=this._getFirstSelectedElement(e);return r?this._isComputedFormatApplied(getComputedStyle(r),t,i):!1}_getFirstSelectedElement(e){let t=this._getSelectionRange(e);if(!t)return null;if(t.startContainer.nodeType===Node.TEXT_NODE)return t.startContainer.parentElement;let i=t.commonAncestorContainer.nodeType===Node.TEXT_NODE?t.commonAncestorContainer.parentNode:t.commonAncestorContainer;if(!i)return t.startContainer instanceof HTMLElement?t.startContainer:null;let r=document.createTreeWalker(i,NodeFilter.SHOW_TEXT,{acceptNode:o=>{let a=o;return a.textContent?.length&&t.intersectsNode(a)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}}),n=i.nodeType===Node.TEXT_NODE&&t.intersectsNode(i)?i:r.nextNode();return n?.parentElement?n.parentElement:t.startContainer instanceof HTMLElement?t.startContainer:t.startContainer.parentElement}_getSelectionRange(e){if("getRangeAt"in e)return e.rangeCount?e.getRangeAt(0):null;let t=e[0];if(!t)return null;let i=document.createRange();return i.setStart(t.startContainer,t.startOffset),i.setEnd(t.endContainer,t.endOffset),i}_findFormatTargets(e,t,i){let r=[],n=e;for(;n&&n!==this.extendedItem.element;)this._hasInlineFormat(n,t,i)&&r.push(n),n=n.parentElement;return r}_hasInlineFormat(e,t,i){switch(t){case"font-weight":return e.style.fontWeight!=="";case"font-style":return e.style.fontStyle!=="";case"text-decoration":return!!i&&this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration).includes(i);case"fontSize":return e.style.fontSize!=="";case"font-family":return e.style.fontFamily!=="";default:return e.style.getPropertyValue(t)!==""}}_setFormat(e,t,i){switch(t){case"font-weight":e.style.fontWeight=i??"";break;case"font-style":e.style.fontStyle=i??"";break;case"text-decoration":{let r=this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration);i&&!r.includes(i)&&r.push(i),e.style.textDecorationLine=r.join(" ");break}case"fontSize":e.style.fontSize=i??"";break;case"font-family":e.style.fontFamily=i??"";break;default:i==null?e.style.removeProperty(t):e.style.setProperty(t,i);break}}_unsetFormat(e,t,i){switch(t){case"font-weight":e.style.removeProperty("font-weight");break;case"font-style":e.style.removeProperty("font-style");break;case"text-decoration":{let r=this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration).filter(n=>n!==i);r.length?e.style.textDecorationLine=r.join(" "):(e.style.removeProperty("text-decoration-line"),e.style.removeProperty("text-decoration"));break}case"fontSize":e.style.removeProperty("font-size");break;case"font-family":e.style.removeProperty("font-family");break;default:e.style.removeProperty(t);break}}_getTextDecorationValues(e){return e?e.split(" ").map(t=>t.trim()).filter(t=>t.length>0&&t!=="none"&&t!=="solid"):[]}_normalizeFontFamily(e){return e.replaceAll(/['"]/g,"").split(",")[0].trim().toLowerCase()}}});var vs,Sc=g(()=>{"use strict";le();ne();st();ys();vs=class{_textEditExtensions;constructor(e){e&&(this._editExistingText=!0)}activated(e){this._textCreated=!1}dispose(){}cursor="text";_textCreated=!1;_editExistingText=!1;pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t);switch(t.type){case w.PointerDown:if(!this._textCreated&&!this._editExistingText){this._textCreated=!0;let n=document.createElement("span"),o=M.createDesignItemFromInstance(n,e.serviceContainer,e.instanceServiceContainer);o.setStyle("position","absolute"),o.setStyle("left",r.x+"px"),o.setStyle("top",r.y+"px"),e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,o)),e.extensionManager.applyExtensionInstance(o,new Ti(e.extensionManager,e,o)),e.serviceContainer.globalContext.finishedWithTool(this),setTimeout(()=>{n.focus()},50)}else for(let n of this._textEditExtensions)n.handlesPointerEvent&&(n.handlesPointerEvent(e,t,i)||e.serviceContainer.globalContext.finishedWithTool(this));break}}keyboardEventHandler(e,t,i){}}});var xs,Cc=g(()=>{"use strict";ie();te();xs=class extends R{_path;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){this._path||(this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-gray-out"),this._path.setAttribute("fill-rule","evenodd"),this._addOverlay(this._path,D.Background));let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0],t={width:this.designerCanvas.containerBoundingRect.width/this.designerCanvas.scaleFactor,height:this.designerCanvas.containerBoundingRect.height/this.designerCanvas.scaleFactor},i="M0 0 L"+t.width+" 0 L"+t.width+" "+t.height+" L0 "+t.height+" Z ";i+="M"+e.p1.x+" "+e.p1.y+" L"+e.p2.x+" "+e.p2.y+" L"+e.p3.x+" "+e.p3.y+" L"+e.p4.x+" "+e.p4.y+" Z",this._path.setAttribute("d",i)}dispose(){this._removeAllOverlays(),this._path=null}}});import{css as Xf}from"@node-projects/base-custom-webcomponent";var _s,Ec=g(()=>{"use strict";Cc();_s=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new xs(e,t,i)}style=Xf`.svg-gray-out{stroke:transparent;fill:rgba(211,211,211,.8);pointer-events:none}`}});var bs,Pc=g(()=>{"use strict";ie();te();bs=class extends R{_text;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);this._text=this._drawText("Press ALT (or hold) to enter container",e.x+5,e.y+12,"svg-text-enter-container",this._text,D.Foreground),this._text.style.fontSize=14/this.designerCanvas.scaleFactor+"px",this._text.setAttribute("x",""+(e.x+5/this.designerCanvas.scaleFactor)),this._text.setAttribute("y",""+(e.y+12/this.designerCanvas.scaleFactor))}dispose(){this._removeAllOverlays()}}});import{css as Kf}from"@node-projects/base-custom-webcomponent";var ws,Ac=g(()=>{"use strict";Pc();ws=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new bs(e,t,i)}static style=Kf`.svg-text-enter-container{stroke:none;fill:#000;stroke-width:1;font-weight:800;font-family:monospace}`}});var Ss,kc=g(()=>{"use strict";ie();te();Ss=class extends R{_rect;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._valuesHaveChanges(i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._rect=this._drawTransformedRect(i,"svg-invisible-div",this._rect,D.Background))}dispose(){this._removeAllOverlays()}}});import{css as $f}from"@node-projects/base-custom-webcomponent";var Ic,Cs,Es=g(()=>{"use strict";kc();Ic="invisibleElementExtensionShowOverlay",Cs=class{elementFilter;constructor(e=t=>t.name=="div"&&window.getComputedStyle(t.element).display!="inline"){this.elementFilter=e}shouldExtend(e,t,i){if(t.instanceServiceContainer.designContext.extensionOptions[Ic]!==!1&&this.elementFilter(i)){let r=window.getComputedStyle(i.element);return r.backgroundColor=="rgba(0, 0, 0, 0)"&&r.borderStyle=="none"}return!1}getExtension(e,t,i){return new Ss(e,t,i)}static style=$f`.svg-invisible-div{stroke:#d3d3d3;fill:transparent;stroke-width:1}`}});var Ps,Dc=g(()=>{"use strict";ne();Ps=class{shouldProvideContextmenu(e,t,i,r){return r=="designer"}provideContextMenuItems(e,t,i){let r=t.elementsFromPoint(e.x,e.y);return r.length>0?[{title:"items below",children:[...r.map(n=>({title:"select: "+n.localName+(n.id?" (#"+n.id+")":""),action:()=>this._select(t,n)}))]}]:[]}_select(e,t){let i=M.GetOrCreateDesignItem(t,t,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.selectionService.setSelectedElements([i])}}});var As,Tc=g(()=>{"use strict";$t();wi();ce();As=class{_basePlacementService;constructor(e){this._basePlacementService=e??new nt}enterContainer(e,t,i){for(let r of t)e.insertChild(r),r.removeStyle("position"),r.removeStyle("left"),r.removeStyle("top"),r.removeStyle("right"),r.removeStyle("width"),r.removeStyle("height"),r.removeStyle("transform")}leaveContainer(e,t){for(let i of t)if(!i.lastContainerSize){let r=Y(i.element);i.lastContainerSize={width:r.width,height:r.height}}}serviceForContainer(e,t,i){return t.display=="grid"||t.display=="inline-grid"?!(i!=null&&i.getComputedStyle()?.position=="absolute"):!1}isEnterableContainer(e){return this._basePlacementService.isEnterableContainer(e)}canEnter(e,t){return e.instanceServiceContainer.designerCanvas.readOnly?!1:this._basePlacementService.canEnter(e,t)}canLeave(e,t){return!0}getElementOffset(e,t){return Y(e.element)}placePoint(e,t,i,r,n,o,a){return i.serviceContainer.getLastServiceWhere("containerService",c=>c instanceof nt).placePoint(e,t,i,r,n,o,a)}startPlace(e,t,i,r,n,o,a){}place(e,t,i,r,n,o,a){let l=qe(i),c=t.getNormalizedEventCoordinates(e),h=fr(i,c,l);if(h){let{row:d,column:p,cell:m}=h,u=Ai(a[0].element);m.name?(a[0].element.style.gridColumn="",a[0].element.style.gridRow="",a[0].element.style.gridArea=m.name):(a[0].element.style.gridArea="",u.colSpan<=1?(a[0].element.style.gridColumn=""+(p+1),a[0].element.style.gridRow=""+(d+1)):(a[0].element.style.gridColumnStart=""+(p+1),a[0].element.style.gridRowStart=""+(d+1),a[0].element.style.gridColumnEnd=""+(p+u.colSpan+1),a[0].element.style.gridRowEnd=""+(d+u.rowSpan+1)))}t.extensionManager.refreshAllExtensions([i])}finishPlace(e,t,i,r,n,o,a){let l=qe(i),c=t.getNormalizedEventCoordinates(e),h=fr(i,c,l);if(h){let{row:d,column:p,cell:m}=h,u=Ai(a[0].element);m.name?(a[0].setStyle("grid-area",m.name),a[0].removeStyle("grid-row-start"),a[0].removeStyle("grid-row-end"),a[0].removeStyle("grid-column-start"),a[0].removeStyle("grid-column-end"),a[0].removeStyle("grid-column"),a[0].removeStyle("grid-row"),a[0].setStyle("grid-area",m.name)):u.colSpan<=1?(a[0].removeStyle("grid-area"),a[0].removeStyle("grid-row-start"),a[0].removeStyle("grid-row-end"),a[0].removeStyle("grid-column-start"),a[0].removeStyle("grid-column-end"),a[0].setStyle("grid-column",""+(p+1)),a[0].setStyle("grid-row",""+(d+1))):(a[0].removeStyle("grid-area"),a[0].removeStyle("grid-column"),a[0].removeStyle("grid-row"),a[0].setStyle("grid-column-start",""+(p+1)),a[0].setStyle("grid-row-start",""+(d+1)),a[0].setStyle("grid-column-end",""+(p+u.colSpan+1)),a[0].setStyle("grid-row-end",""+(d+u.rowSpan+1)))}t.extensionManager.refreshAllExtensions([i])}moveElements(e,t,i){}}});var ks,Mc=g(()=>{"use strict";ks=class{getElementAtPoint(e,t){return e.getElementAtPoint(t)}}});var Is,Nc=g(()=>{"use strict";ce();wi();Is=class{_basePlacementService;constructor(e){this._basePlacementService=e??new nt}enterContainer(e,t,i){for(let r of t)e.insertChild(r),r.removeStyle("position"),r.removeStyle("left"),r.removeStyle("top"),r.removeStyle("right"),r.removeStyle("transform")}leaveContainer(e,t){for(let i of t)if(!i.lastContainerSize){let r=Y(i.element);i.lastContainerSize={width:r.width,height:r.height}}}serviceForContainer(e,t,i){return t.display=="flex"||t.display=="inline-flex"?!(i!=null&&i.getComputedStyle()?.position=="absolute"):!1}isEnterableContainer(e){return this._basePlacementService.isEnterableContainer(e)}canEnter(e,t){return e.instanceServiceContainer.designerCanvas.readOnly?!1:this._basePlacementService.canEnter(e,t)}canLeave(e,t){return!0}getElementOffset(e,t){return Y(e.element)}placePoint(e,t,i,r,n,o,a){return i.serviceContainer.getLastServiceWhere("containerService",c=>c instanceof nt).placePoint(e,t,i,r,n,o,a)}startPlace(e,t,i,r,n,o,a){}place(e,t,i,r,n,o,a){let l=t.getNormalizedEventCoordinates(e),c=getComputedStyle(i.element),h=Array.from(i.children()).filter(d=>!d.isEmptyTextNode).map(d=>[d,t.getNormalizedElementCoordinates(d.element)]);if(c.flexDirection=="row"||c.flexDirection=="row-reverse"){h.sort(u=>u[1].x);let d=null;for(let u of h)if(u[1].x+u[1].width/2<l.x&&(d=u,c.flexDirection=="row-reverse"))break;let p=h.indexOf(d),m=h.indexOf(h.find(u=>u[0]==a[0]));if(d&&d[0]!=a[0]){if(c.flexDirection=="row-reverse"&&p-1===m||c.flexDirection=="row"&&p+1===m)return;let u=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="row-reverse"?d[0].insertAdjacentElement(a[0],"beforebegin"):d[0].insertAdjacentElement(a[0],"afterend"),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(u)}else if(d==null){if(m==0)return;let u=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="row-reverse"?i.insertChild(a[0]):i.insertChild(a[0],0),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(u)}}else if(c.flexDirection=="column"||c.flexDirection=="column-reverse"){h.sort(u=>u[1].y);let d=null;for(let u of h)if(u[1].y+u[1].height/2<l.y&&(d=u,c.flexDirection=="column-reverse"))break;let p=h.indexOf(d),m=h.indexOf(h.find(u=>u[0]==a[0]));if(d&&d[0]!=a[0]){if(c.flexDirection=="column-reverse"&&p-1===m||c.flexDirection=="column"&&p+1===m)return;let u=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="column-reverse"?d[0].insertAdjacentElement(a[0],"beforebegin"):d[0].insertAdjacentElement(a[0],"afterend"),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(u)}else if(d==null){if(m==0)return;let u=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="column-reverse"?i.insertChild(a[0]):i.insertChild(a[0],0),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(u)}}t.extensionManager.refreshAllExtensions([i])}finishPlace(e,t,i,r,n,o,a){}moveElements(e,t,i){}}});var Zf,Qf,Ds,Lc=g(()=>{"use strict";ce();Zf="provideSnaplinesWithDistance",Qf="provideSnaplinesWithDistanceDistance",Ds=class{provideSnaplines(e,t){{let i=e.instanceServiceContainer.designerCanvas,r=new Map(t.map(u=>[u.element,u])),n=Y(e.element),o=i.instanceServiceContainer.designContext.extensionOptions[Zf]!==!1,a=i.instanceServiceContainer.designContext.extensionOptions[Qf]??5,l=[],c=[],h=[],d=[],p=e.document.createTreeWalker(e.usableContainer,NodeFilter.SHOW_ELEMENT),m=p.nextNode();for(;m!=null;)if(r.has(m))m=p.nextSibling();else{let u=Y(m),f=(u.x-n.x)/i.scaleFactor,y=(u.x-n.x+u.width/2)/i.scaleFactor,v=(u.x-n.x+u.width)/i.scaleFactor,b=(u.y-n.y)/i.scaleFactor,E=(u.y-n.y+u.height/2)/i.scaleFactor,S=(u.y-n.y+u.height)/i.scaleFactor,T={x:f+n.x,y:b+n.y,width:u.width/i.scaleFactor,height:u.height/i.scaleFactor};o&&l.push([f-a,T]),l.push([f,T]),c.push([y,T]),l.push([v,T]),o&&l.push([v+a,T]),o&&h.push([b-a,T]),h.push([b,T]),d.push([E,T]),h.push([S,T]),o&&h.push([S+a,T]),m=p.nextNode()}return l.push([0,{x:0,y:0,width:0,height:0}]),l.sort((u,f)=>u[0]-f[0]),c.sort((u,f)=>u[0]-f[0]),h.push([0,{x:0,y:0,width:0,height:0}]),h.sort((u,f)=>u[0]-f[0]),d.sort((u,f)=>u[0]-f[0]),{outerRect:n,positionsH:l,positionsMiddleH:c,positionsV:h,positionsMiddleV:d}}}}});var Ts,Oc=g(()=>{"use strict";ne();st();Ts=class{dragOver(e,t){return e.readOnly?"none":t.dataTransfer.items[0].type.startsWith("image/")?"copy":"none"}async drop(e,t){if(t.dataTransfer.files[0].type.startsWith("image/")){let i=await M.createDesignItemFromImageBlob(e.serviceContainer,e.instanceServiceContainer,t.dataTransfer.files[0]),r=i.openGroup("Insert of &lt;img&gt;");i.setStyle("position","absolute");let n=e.getNormalizedEventCoordinates(t);i.setStyle("top",n.y+"px"),i.setStyle("left",n.x+"px"),e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,i)),r.commit(),requestAnimationFrame(()=>e.instanceServiceContainer.selectionService.setSelectedElements([i]))}}}});import{css as qf}from"@node-projects/base-custom-webcomponent";var Ms,Vc=g(()=>{"use strict";ys();Ms=class{shouldExtend(e,t,i){return!(i.isRootItem||i.name==="input")}getExtension(e,t,i){return new Ti(e,t,i)}static style=qf`.svg-edit-text-clickoutside{stroke:transparent;fill:#d3d3d3;opacity:.7}`}});async function u0(s){yr([["text/plain",s]])}async function yr(s){if(navigator.clipboard){try{let e=[];for(let t of s)e.push(new ClipboardItem({[t[0]]:new Blob([t[1]],{type:t[0]})}));await navigator.clipboard.write(e)}catch{await navigator.clipboard.writeText(s[0][1]),Rc=s[0][1]}console.info("Copy to clipboard successful")}else{let e=document.activeElement;for(;e?.shadowRoot?.activeElement;)e=e.shadowRoot.activeElement;Rc=s[0][1];let t=document.createElement("textarea");t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.width="2em",t.style.height="2em",t.style.padding="0",t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",t.value=s[0][1],document.body.appendChild(t),t.select();try{document.execCommand("copy")}catch{try{document.execCommand("copy")}catch(r){console.error(r)}}document.body.removeChild(t),e.focus()}}async function Ns(){return navigator.clipboard?new Promise(async(s,e)=>{let t=await navigator.clipboard.readText();s(t)}):new Promise(async(s,e)=>{let t=document.createElement("textarea");t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.width="2em",t.style.height="2em",t.style.padding="0",t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",document.body.appendChild(t),t.focus(),t.select(),document.execCommand("paste");let i=t.value;i||(i=Rc),document.body.removeChild(t),s(i)})}async function Ls(){return navigator.clipboard?await navigator.clipboard.read():null}var Rc,Os=g(()=>{"use strict";Rc=null});var jp,Vs,zc=g(()=>{"use strict";Ze();Os();Pe();jp="web text/positions",Vs=class{async copyItems(e){let t=he(e),i=Q.ConvertToString(t,!1),r=t.map(n=>n.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(n.element));yr([["text/html",i],[jp,JSON.stringify(r)]])}async getPasteItems(e,t){let i="",r=null,n=await Ls();if(n!=null){try{i=await(await n[0].getType("text/html"))?.text()}catch{}i||(i=await(await n[0].getType("text/plain"))?.text());try{let a=await(await n[0].getType(jp))?.text();r=JSON.parse(a)}catch{}}else i=await Ns();return[await e.htmlParserService.parse(i,e,t,!0),r??void 0]}}});var Se,Fc=g(()=>{"use strict";(function(s){s[s.TOP=0]="TOP",s[s.RIGHT=1]="RIGHT",s[s.BOTTOM=2]="BOTTOM",s[s.LEFT=3]="LEFT",s[s.VERTICAL_CENTER=4]="VERTICAL_CENTER",s[s.HORIZONTAL_CENTER=5]="HORIZONTAL_CENTER"})(Se||(Se={}))});var wt,Ot,Up=g(()=>{"use strict";Fc();wt=class{static arrangeElements(e,t,i){switch(e){case Se.TOP:{let r=this.formGroup(Ot.TOP,t),o=t.getNormalizedElementCoordinates(i[0].element).y;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o-l.height;this.arrange(a,"bottom",h+"px")}else{let h=o-c.y;this.arrange(a,"top",h+"px")}}}r.commit();break}case Se.BOTTOM:{let r=this.formGroup(Ot.BOTTOM,t),n=t.getNormalizedElementCoordinates(i[0].element),o=n.y+n.height;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y+l.height){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o;this.arrange(a,"bottom",h+"px")}else{let h=o-l.height-c.y;this.arrange(a,"top",h+"px")}}}r.commit();break}case Se.LEFT:{let r=this.formGroup(Ot.LEFT,t),o=t.getNormalizedElementCoordinates(i[0].element).x;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o-l.width;this.arrange(a,"right",h+"px")}else{let h=o-c.x;this.arrange(a,"left",h+"px")}}}r.commit();break}case Se.RIGHT:{let r=this.formGroup(Ot.RIGHT,t),n=t.getNormalizedElementCoordinates(i[0].element),o=n.x+n.width;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x+l.width){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o;this.arrange(a,"right",h+"px")}else{let h=o-l.width-c.x;this.arrange(a,"left",h+"px")}}}r.commit();break}case Se.VERTICAL_CENTER:{let r=this.formGroup(Ot.VERTICAL_CENTER,t),n=t.getNormalizedElementCoordinates(i[0].element),o=n.y+n.height/2;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y+l.height/2){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o-l.height/2;this.arrange(a,"bottom",h+"px")}else{let h=o-l.height/2-c.y;this.arrange(a,"top",h+"px")}}}r.commit();break}case Se.HORIZONTAL_CENTER:{let r=this.formGroup(Ot.HORIZONTAL_CENTER,t),n=t.getNormalizedElementCoordinates(i[0].element),o=n.x+n.width/2;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x+l.width/2){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o-l.width/2;this.arrange(a,"right",h+"px")}else{let h=o-l.width/2-c.x;this.arrange(a,"left",h+"px")}}}r.commit();break}}}static arrange(e,t,i){e.setStyle(t,i)}static formGroup(e,t){return t.instanceServiceContainer.selectionService.primarySelection.openGroup(e)}};(function(s){s.TOP="arrangeTop",s.RIGHT="arrangeRight",s.BOTTOM="arrangeBottom",s.LEFT="arrangeLeft",s.HORIZONTAL_CENTER="arrangeHorizontalCenter",s.VERTICAL_CENTER="arrangeVerticalCenter"})(Ot||(Ot={}))});var Rs,Bc=g(()=>{"use strict";bt();Up();Fc();Rs=class{canExecuteCommand(e,t,i){return t.type==A.moveBackward||t.type==A.moveForward||t.type==A.moveToBack||t.type==A.moveToFront?e.instanceServiceContainer.selectionService.primarySelection!=null&&!e.instanceServiceContainer.selectionService.primarySelection.isRootItem:t.type==A.arrangeBottom||t.type==A.arrangeCenter||t.type==A.arrangeLeft||t.type==A.arrangeMiddle||t.type==A.arrangeRight||t.type==A.arrangeTop||t.type==A.unifyHeight||t.type==A.unifyWidth?e.instanceServiceContainer.selectionService.selectedElements.length>1:t.type==A.rotateCounterClockwise||t.type==A.rotateClockwise||t.type==A.mirrorHorizontal||t.type==A.mirrorVertical?e.instanceServiceContainer.selectionService.selectedElements.length>0&&!e.instanceServiceContainer.selectionService.primarySelection.isRootItem:null}async executeCommand(e,t,i){i=i??[...e.instanceServiceContainer.selectionService.selectedElements];let r=i[0];if(t.type==A.moveBackward){let o=r.parent.indexOf(r)-1;o>=0&&r.parent.insertChild(r,o)}else if(t.type==A.moveForward){let o=r.parent.indexOf(r)+1;o<r.parent.childCount&&r.parent.insertChild(r,o)}else if(t.type==A.moveToBack)r.parent.insertChild(r,0);else if(t.type==A.moveToFront)r.parent.insertChild(r);else if(t.type==A.arrangeTop)wt.arrangeElements(Se.TOP,e,i);else if(t.type==A.arrangeRight)wt.arrangeElements(Se.RIGHT,e,i);else if(t.type==A.arrangeLeft)wt.arrangeElements(Se.LEFT,e,i);else if(t.type==A.arrangeBottom)wt.arrangeElements(Se.BOTTOM,e,i);else if(t.type==A.arrangeCenter)wt.arrangeElements(Se.HORIZONTAL_CENTER,e,i);else if(t.type==A.arrangeMiddle)wt.arrangeElements(Se.VERTICAL_CENTER,e,i);else if(t.type==A.unifyHeight){let o=r.openGroup("unifyHeight"),a=r.getStyle("height");for(let l of i)l.setStyle("height",a);o.commit()}else if(t.type==A.unifyWidth){let o=r.openGroup("unifyWidth"),a=r.getStyle("width");for(let l of i)l.setStyle("width",a);o.commit()}else if(t.type==A.rotateCounterClockwise){let o=r.openGroup("rotateCounterClockwise");var n=r.getStyle("transform");let a=0,l="";if(n!=null)try{n.includes("-")?a=parseInt(n.match(/\d+/)[0])*-1:a=parseInt(n.match(/\d+/)[0]),l="rotate("+(a-90)+"deg)"}catch{l="rotate(-90deg)"}else l="rotate(-90deg)";for(let c of i)c.setStyle("transform",l);o.commit()}else if(t.type==A.rotateClockwise){let o=r.openGroup("rotateClockwise");var n=r.getStyle("transform");let l=0,c="";if(n!=null)try{n.includes("-")?l=parseInt(n.match(/\d+/)[0])*-1:l=parseInt(n.match(/\d+/)[0]),c="rotate("+(l+90)+"deg)"}catch{c="rotate(90deg)"}else c="rotate(90deg)";for(let h of i)h.setStyle("transform",c);o.commit()}else if(t.type==A.mirrorHorizontal){let o=r.openGroup("mirrorHorizontal");for(let a of i)a.setStyle("transform","scaleX(-1)");o.commit()}else if(t.type==A.mirrorVertical){let o=r.openGroup("mirrorVertical");for(let a of i)a.setStyle("transform","scaleY(-1)");o.commit()}else return null;return!0}}});var St,Hc=g(()=>{"use strict";St=class{_space;constructor(e){this._space=e}provideButtons(e,t){let i=document.createElement("div");return i.style.width=this._space+"px",i.oncontextmenu=r=>{r.preventDefault()},[i]}}});var zs,Gc=g(()=>{"use strict";$t();ie();te();zs=class extends R{_cells;_texts;_gaps;_group;gridInformation;gridInformationString;_lastEvent;gridColor;gridFillColor;constructor(e,t,i,r,n){super(e,t,i),this.gridColor=r,this.gridFillColor=n}extend(e,t){this._initSVGArrays(),this.refresh(t)}refresh(e,t){this.gridInformation=qe(this.extendedItem);let i=JSON.stringify(this.gridInformation);if(i!==this.gridInformationString||t!=null&&this._lastEvent!==t){t&&(this._lastEvent=t),this.gridInformationString=i;let r=this.gridInformation.cells,n=this._lastEvent&&this._lastEvent instanceof MouseEvent?fr(this.extendedItem,this.designerCanvas.getNormalizedEventCoordinates(this._lastEvent),this.gridInformation):null;r[0][0]&&!isNaN(r[0][0].height)&&!isNaN(r[0][0].width)&&((this.gridInformation.cells.length!=this._cells.length||this.gridInformation.cells[0].length!=this._cells[0].length)&&this._initSVGArrays(),this._group||(this._group=this._drawGroup(null,this._group,D.Background),this._group.style.transformOrigin="0 0",this._group.style.setProperty("--svg-grid-stroke-color",this.gridColor),this._group.style.setProperty("--svg-grid-fill-color",this.gridFillColor)),this._group.style.transform=ki(this.extendedItem).toString(),this.gridInformation.gaps.forEach((o,a)=>{this._gaps[a]=this._drawRect(o.localX,o.localY,o.width,o.height,"svg-grid-gap",this._gaps[a],D.Background),this._group.appendChild(this._gaps[a])}),r.forEach((o,a)=>{o.forEach((l,c)=>{this._cells[a][c]=this._drawRect(l.localX,l.localY,l.width,l.height,"svg-grid",this._cells[a][c],D.Background),this._group.appendChild(this._cells[a][c]),l.name&&(this._texts[a][c]=this._drawText(l.name,l.localX,l.localY,"svg-grid-area",this._texts[a][c],D.Background),this._texts[a][c].setAttribute("dominant-baseline","hanging")),n?.row===a&&n?.column===c&&this._cells[a][c].setAttribute("class","svg-grid-current-cell")})}))}}dispose(){this._removeAllOverlays()}_initSVGArrays(){this._removeAllOverlays(),this._group=null,this.gridInformation=qe(this.extendedItem),this._cells=new Array(this.gridInformation.cells.length),this.gridInformation.cells.forEach((e,t)=>this._cells[t]=new Array(e.length)),this._texts=new Array(this.gridInformation.cells.length),this.gridInformation.cells.forEach((e,t)=>this._texts[t]=new Array(e.length)),this._gaps=new Array(this.gridInformation.gaps.length)}}});import{css as Jf}from"@node-projects/base-custom-webcomponent";var vr,Zt,xr=g(()=>{"use strict";Gc();Pi();vr="gridExtensionShowOverlay",Zt=class{gridColor;gridFillColor;constructor(e="orange",t="#ff944722"){this.gridColor=e,this.gridFillColor=t}shouldExtend(e,t,i){let r=getComputedStyle(i.element).display;return r=="grid"||r=="inline-grid"?t.instanceServiceContainer.designContext.extensionOptions[vr]!==!1:!1}getExtension(e,t,i){return new zs(e,t,i,this.gridColor,this.gridFillColor)}static style=Jf`.svg-grid{stroke:var(--svg-grid-stroke-color);stroke-dasharray:5;fill:var(--svg-grid-fill-color)}.svg-grid-current-cell{stroke:var(--svg-grid-stroke-color);stroke-dasharray:5;fill:#e3ff4722}.svg-grid-area{font-size:8px}.svg-grid-gap{stroke:transparent;fill:var(--svg-grid-stroke-color);opacity:.3;mask:url(#mask-stripe-grid)}.svg-grid-header{fill:var(--svg-grid-fill-color);stroke:var(--svg-grid-stroke-color)}.svg-grid-plus-sign{stroke:#000}`;static svgDefs=Ei`<pattern id="pattern-stripe-grid" width="4" height="4" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1" height="4" transform="translate(0,0)" fill="white"></rect></pattern><mask id="mask-stripe-grid"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-grid)"></mask>`}});var Fs,Wc=g(()=>{"use strict";xr();Wt();Fs=class extends We{constructor(){super(vr,"G","show grid overlay")}}});var Bs,jc=g(()=>{"use strict";le();te();Qe();ne();st();Fe();Bs=class{cursor="crosshair";_path;_startPoint;_minX;_minY;_maxX;_maxY;_px;_py;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t),n=10;switch(t.type){case w.PointerDown:this._startPoint=r,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("x",r.x.toString()),this._path.setAttribute("y",r.y.toString()),this._path.setAttribute("width","0"),this._path.setAttribute("height","0"),e.overlayLayer.addOverlay(this.constructor.name,this._path,D.Foreground);break;case w.PointerMove:if(this._path)if(this._minX=r.x<this._startPoint.x?r.x:this._startPoint.x,this._maxX=r.x>this._startPoint.x?r.x:this._startPoint.x,this._minY=r.y<this._startPoint.y?r.y:this._startPoint.y,this._maxY=r.y>this._startPoint.y?r.y:this._startPoint.y,W(t)){if(t.shiftKey){let d=2*bi(this._startPoint,r);this._px=this._startPoint.x-d/2,this._py=this._startPoint.y-d/2,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",d.toString())}else{let d=2*(this._maxX-this._minX),p=2*(this._maxY-this._minY);this._px=r.x<this._startPoint.x?r.x:this._startPoint.x-d/2,this._py=r.y<this._startPoint.y?r.y:this._startPoint.y-p/2,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",p.toString())}this._path.setAttribute("x",this._px.toString()),this._path.setAttribute("y",this._py.toString())}else{if(t.shiftKey){let d=bi(this._startPoint,r);this._px=r.x<this._startPoint.x?this._startPoint.x-d:this._startPoint.x,this._py=r.y<this._startPoint.y?this._startPoint.y-d:this._startPoint.y,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",d.toString())}else this._px=r.x<this._startPoint.x?r.x:this._startPoint.x,this._py=r.y<this._startPoint.y?r.y:this._startPoint.y,this._path.setAttribute("width",(this._maxX-this._minX).toString()),this._path.setAttribute("height",(this._maxY-this._minY).toString());this._path.setAttribute("x",this._px.toString()),this._path.setAttribute("y",this._py.toString())}break;case w.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-n,c=o.y-n;this._path.setAttribute("x",(this._px-l).toString()),this._path.setAttribute("y",(this._py-c).toString()),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.appendChild(this._path),a.style.left=l+"px",a.style.top=c+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*n)+"px",a.style.height=Math.round(o.height+2*n)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let h=M.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,h)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var Hs,Uc=g(()=>{"use strict";le();te();Qe();ne();st();Fe();Hs=class{cursor="crosshair";_path;_startPoint;_radius;_cx;_cy;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t),n=10;switch(t.type){case w.PointerDown:this._startPoint=r,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","ellipse"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("cx",r.x.toString()),this._path.setAttribute("cy",r.y.toString()),this._path.setAttribute("rx","0"),this._path.setAttribute("ry","0"),e.overlayLayer.addOverlay(this.constructor.name,this._path,D.Foreground);break;case w.PointerMove:if(this._path)if(this._radius={x:Math.abs(r.x-this._startPoint.x),y:Math.abs(r.y-this._startPoint.y)},W(t))if(this._path.setAttribute("cx",this._startPoint.x.toString()),this._path.setAttribute("cy",this._startPoint.y.toString()),this._cx=this._startPoint.x,this._cy=this._startPoint.y,t.shiftKey){let d=bi(this._startPoint,r);this._path.setAttribute("rx",d.toString()),this._path.setAttribute("ry",d.toString())}else this._path.setAttribute("rx",this._radius.x.toString()),this._path.setAttribute("ry",this._radius.y.toString());else{if(t.shiftKey){let d=bi(this._startPoint,r);this._radius={x:d,y:d}}this._cx=r.x<this._startPoint.x?this._startPoint.x-this._radius.x/2:this._startPoint.x+this._radius.x/2,this._cy=r.y<this._startPoint.y?this._startPoint.y-this._radius.y/2:this._startPoint.y+this._radius.y/2,this._path.setAttribute("cx",this._cx.toString()),this._path.setAttribute("cy",this._cy.toString()),this._path.setAttribute("rx",(this._radius.x/2).toString()),this._path.setAttribute("ry",(this._radius.y/2).toString())}break;case w.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-n,c=o.y-n;a.appendChild(this._path),this._path.setAttribute("cx",(this._cx-l).toString()),this._path.setAttribute("cy",(this._cy-c).toString()),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.style.left=l+"px",a.style.top=c+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*n)+"px",a.style.height=Math.round(o.height+2*n)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let h=M.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,h)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var Gs,Yc=g(()=>{"use strict";le();te();Qe();ne();st();Gs=class{cursor="crosshair";_path;_startPoint;_endPoint;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t),n=10;switch(t.type){case w.PointerDown:this._startPoint=r,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","line"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("x1",r.x.toString()),this._path.setAttribute("y1",r.y.toString()),this._path.setAttribute("x2",r.x.toString()),this._path.setAttribute("y2",r.y.toString()),e.overlayLayer.addOverlay(this.constructor.name,this._path,D.Foreground);break;case w.PointerMove:if(this._path)if(t.shiftKey){let d=ft(this._startPoint,r);this._path.setAttribute("x2",d.x.toString()),this._path.setAttribute("y2",d.y.toString()),this._endPoint=d}else this._path.setAttribute("x2",r.x.toString()),this._path.setAttribute("y2",r.y.toString()),this._endPoint=r;break;case w.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-n,c=o.y-n;this._path.setAttribute("x1",(this._startPoint.x-l).toString()),this._path.setAttribute("y1",(this._startPoint.y-c).toString()),this._path.setAttribute("x2",(this._endPoint.x-l).toString()),this._path.setAttribute("y2",(this._endPoint.y-c).toString()),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.appendChild(this._path),a.style.left=l+"px",a.style.top=c+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*n)+"px",a.style.height=Math.round(o.height+2*n)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let h=M.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,h)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var Mi,Ws=g(()=>{"use strict";Mi=class s{static _helperElement=document.createElement("div");static combine(e,t){if(s.applyStylesToHelper(e),s.combineBorder(e),s.combineMargin(e),s.combinePadding(e),s.combineInset(e),s.combineBackground(e),s.combineFont(e),e=s.combineBrowserSupportedShorthands(e),t)for(let i of t)e.has(i[0])&&e.get(i[0])===i[1]&&e.delete(i[0]);return e}static applyStylesToHelper(e){let t=s._helperElement;t.setAttribute("style","");for(let i of e)i[0].startsWith("--")||i[0].includes("-")?t.style.setProperty(i[0],i[1]):t.style[i[0]]=i[1];return t}static combineBrowserSupportedShorthands(e){let t=s.getNormalizedStyleValues(e),i=new Map(e);for(;;){let r=s.parseStyleDeclarationList(s.applyStylesToHelper(i).style.cssText),n=null,o=0;for(let a of r){let l=s.getCandidateCoverage(i,t,a[0],a[1]);if(l.length===0)continue;let c=new Map(i);for(let d of l)c.delete(d);c.set(a[0],a[1]);let h=s.getSerializedSize(i)-s.getSerializedSize(c);h<=0||s.matchesNormalizedStyleValues(c,t)&&h>o&&(o=h,n=c)}if(!n)return i;i=n}}static getNormalizedStyleValues(e){let t=s.applyStylesToHelper(e),i=new Map;for(let r of e)i.set(r[0],s.readStyleValue(t.style,r[0]));return i}static getCandidateCoverage(e,t,i,r){let n=s.applyStylesToHelper(new Map([[i,r]])),o=[];for(let a of e){let l=t.get(a[0]);l&&s.readStyleValue(n.style,a[0])===l&&o.push(a[0])}return o}static matchesNormalizedStyleValues(e,t){let i=s.applyStylesToHelper(e);for(let r of t)if(s.readStyleValue(i.style,r[0])!==r[1])return!1;return!0}static readStyleValue(e,t){return t.startsWith("--")||t.includes("-")?e.getPropertyValue(t).trim():String(e[t]??"").trim()}static getSerializedSize(e){let t=0;for(let i of e)t+=i[0].length+i[1].length+2;return t}static parseStyleDeclarationList(e){let t=new Map,i=0,r=null,n=0;for(let o=0;o<e.length;o++){let a=e[o];if(r){a===r&&e[o-1]!=="\\"&&(r=null);continue}if(a==='"'||a==="'"){r=a;continue}if(a==="("){n++;continue}if(a===")"&&n>0){n--;continue}a===";"&&n===0&&(s.addStyleDeclaration(t,e.substring(i,o)),i=o+1)}return s.addStyleDeclaration(t,e.substring(i)),t}static addStyleDeclaration(e,t){let i=t.trim();if(!i)return;let r=null,n=0;for(let o=0;o<i.length;o++){let a=i[o];if(r){a===r&&i[o-1]!=="\\"&&(r=null);continue}if(a==='"'||a==="'"){r=a;continue}if(a==="("){n++;continue}if(a===")"&&n>0){n--;continue}if(a===":"&&n===0){let l=i.substring(0,o).trim(),c=i.substring(o+1).trim();l&&e.set(l,c);return}}}static combineBorder(e){if(!s.checkIfStyleIsCombinable(e,"border-left-style")||!s.checkIfStyleIsCombinable(e,"border-right-style")||!s.checkIfStyleIsCombinable(e,"border-top-style")||!s.checkIfStyleIsCombinable(e,"border-bottom-style")||!s.checkIfStyleIsCombinable(e,"border-left-color")||!s.checkIfStyleIsCombinable(e,"border-right-color")||!s.checkIfStyleIsCombinable(e,"border-top-color")||!s.checkIfStyleIsCombinable(e,"border-bottom-color")||!s.checkIfStyleIsCombinable(e,"border-left-width")||!s.checkIfStyleIsCombinable(e,"border-right-width")||!s.checkIfStyleIsCombinable(e,"border-top-width")||!s.checkIfStyleIsCombinable(e,"border-bottom-width")||!s.checkIfStyleIsCombinable(e,"border-width")||!s.checkIfStyleIsCombinable(e,"border-style")||!s.checkIfStyleIsCombinable(e,"border-color")||!s.checkIfStyleIsCombinable(e,"border-top")||!s.checkIfStyleIsCombinable(e,"border-right")||!s.checkIfStyleIsCombinable(e,"border-left")||!s.checkIfStyleIsCombinable(e,"border-bottom")||!s.checkIfStyleIsCombinable(e,"border-width"))return;let t=s._helperElement,i=t.style.borderLeftStyle,r=t.style.borderLeftColor;if(i&&r&&t.style.borderRightStyle===i&&t.style.borderTopStyle===i&&t.style.borderBottomStyle===i&&t.style.borderRightColor===r&&t.style.borderTopColor===r&&t.style.borderBottomColor===r){let n=t.style.borderTopWidth,o=t.style.borderRightWidth,a=t.style.borderBottomWidth,l=t.style.borderLeftWidth;e.delete("border-left-style"),e.delete("border-right-style"),e.delete("border-top-style"),e.delete("border-bottom-style"),e.delete("border-left-color"),e.delete("border-right-color"),e.delete("border-top-color"),e.delete("border-bottom-color"),e.delete("border-left-width"),e.delete("border-right-width"),e.delete("border-top-width"),e.delete("border-bottom-width"),e.delete("border-width"),e.delete("border-style"),e.delete("border-color"),e.delete("border-top"),e.delete("border-right"),e.delete("border-left"),e.delete("border-bottom"),t.style.borderRightWidth==l&&t.style.borderTopWidth===l&&t.style.borderBottomWidth===l?e.set("border",l+" "+i+" "+r):(e.set("border",i+" "+r),n===a&&o===l?e.set("border-width",n+" "+o):e.set("border-width",n+" "+o+" "+a+" "+l))}t.style.borderImageSource==="initial"&&e.delete("border-image-source"),t.style.borderImageSlice==="initial"&&e.delete("border-image-slice"),t.style.borderImageWidth==="initial"&&e.delete("border-image-width"),t.style.borderImageOutset==="initial"&&e.delete("border-image-outset"),t.style.borderImageRepeat==="initial"&&e.delete("border-image-repeat")}static combineMargin(e){if(!s.checkIfStyleIsCombinable(e,"margin-top")||!s.checkIfStyleIsCombinable(e,"margin-right")||!s.checkIfStyleIsCombinable(e,"margin-bottom")||!s.checkIfStyleIsCombinable(e,"margin-left")||!s.checkIfStyleIsCombinable(e,"margin"))return;let t=s._helperElement;t.style.marginTop&&t.style.marginRight&&t.style.marginBottom&&t.style.marginLeft&&(e.delete("margin-top"),e.delete("margin-right"),e.delete("margin-bottom"),e.delete("margin-left"),t.style.marginTop==t.style.marginRight&&t.style.marginTop==t.style.marginBottom&&t.style.marginTop==t.style.marginLeft?e.set("margin",t.style.marginTop):e.set("margin",t.style.marginTop+" "+t.style.marginRight+" "+t.style.marginBottom+" "+t.style.marginLeft))}static combinePadding(e){if(!s.checkIfStyleIsCombinable(e,"padding-top")||!s.checkIfStyleIsCombinable(e,"padding-right")||!s.checkIfStyleIsCombinable(e,"padding-bottom")||!s.checkIfStyleIsCombinable(e,"padding-left")||!s.checkIfStyleIsCombinable(e,"padding"))return;let t=s._helperElement;t.style.paddingTop&&t.style.paddingRight&&t.style.paddingBottom&&t.style.paddingLeft&&(e.delete("padding-top"),e.delete("padding-right"),e.delete("padding-bottom"),e.delete("padding-left"),t.style.paddingTop==t.style.paddingRight&&t.style.paddingTop==t.style.paddingBottom&&t.style.paddingTop==t.style.paddingLeft?e.set("padding",t.style.paddingTop):e.set("padding",t.style.paddingTop+" "+t.style.paddingRight+" "+t.style.paddingBottom+" "+t.style.paddingLeft))}static combineInset(e){if(!s.checkIfStyleIsCombinable(e,"top")||!s.checkIfStyleIsCombinable(e,"right")||!s.checkIfStyleIsCombinable(e,"bottom")||!s.checkIfStyleIsCombinable(e,"left")||!s.checkIfStyleIsCombinable(e,"inset"))return;let t=s._helperElement;t.style.top&&t.style.right&&t.style.bottom&&t.style.left&&(e.delete("top"),e.delete("right"),e.delete("bottom"),e.delete("left"),e.set("inset",t.style.top+" "+t.style.right+" "+t.style.bottom+" "+t.style.left))}static combineBackground(e){if(!s.checkIfStyleIsCombinable(e,"background-image")||!s.checkIfStyleIsCombinable(e,"background-position")||!s.checkIfStyleIsCombinable(e,"background-position-x")||!s.checkIfStyleIsCombinable(e,"background-position-y")||!s.checkIfStyleIsCombinable(e,"background-size")||!s.checkIfStyleIsCombinable(e,"background-repeat")||!s.checkIfStyleIsCombinable(e,"background-repeat-x")||!s.checkIfStyleIsCombinable(e,"background-repeat-y")||!s.checkIfStyleIsCombinable(e,"background-attachment")||!s.checkIfStyleIsCombinable(e,"background-origin")||!s.checkIfStyleIsCombinable(e,"background-clip")||!s.checkIfStyleIsCombinable(e,"background-color")||!s.checkIfStyleIsCombinable(e,"background"))return;let t=s._helperElement;e.delete("background-image"),e.delete("background-position"),e.delete("background-position-x"),e.delete("background-position-y"),e.delete("background-size"),e.delete("background-repeat"),e.delete("background-repeat-x"),e.delete("background-repeat-y"),e.delete("background-attachment"),e.delete("background-origin"),e.delete("background-clip"),e.delete("background-color"),e.delete("background");let i="";t.style.backgroundImage&&t.style.backgroundImage!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundImage),t.style.backgroundPosition&&t.style.backgroundPosition!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundPosition),t.style.backgroundSize&&t.style.backgroundSize!=="initial"&&(i+=(i===""?"":" / ")+t.style.backgroundSize),t.style.backgroundRepeat&&t.style.backgroundRepeat!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundRepeat),t.style.backgroundAttachment&&t.style.backgroundAttachment!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundAttachment),t.style.backgroundOrigin&&t.style.backgroundOrigin!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundOrigin),t.style.backgroundClip&&t.style.backgroundClip!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundClip),t.style.backgroundColor&&t.style.backgroundColor!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundColor),i&&e.set("background",i)}static combineFont(e){if(!s.checkIfStyleIsCombinable(e,"font-style")||!s.checkIfStyleIsCombinable(e,"font-weight")||!s.checkIfStyleIsCombinable(e,"font-size")||!s.checkIfStyleIsCombinable(e,"line-height")||!s.checkIfStyleIsCombinable(e,"font-family")||!s.checkIfStyleIsCombinable(e,"font"))return;let t=s._helperElement;if(t.style.fontFamily){e.delete("font-style"),e.delete("font-weight"),e.delete("font-size"),e.delete("line-height"),e.delete("font-family"),e.delete("font");let i="";t.style.fontStyle&&(i+=(i===""?"":" ")+t.style.fontStyle),t.style.fontWeight&&(i+=(i===""?"":" ")+t.style.fontWeight),t.style.fontSize&&(i+=(i===""?"":" ")+t.style.fontSize),t.style.lineHeight&&(i+="/"+t.style.lineHeight),t.style.fontFamily&&(i+=(i===""?"":" ")+t.style.fontFamily),e.set("font",i)}}static checkIfStyleIsCombinable(e,t){if(e.has(t)){let i=e.get(t);return typeof i=="string"?!i.startsWith("var("):!1}return!0}}});var js,Xc=g(()=>{"use strict";Ze();Ws();_e();js=class{options;constructor(e){this.options=e??{},this.options.beautifyOutput??=!0,this.options.compressCssToShorthandProperties??=!0,this.options.writeDesignerProperties??=!0,this.options.parseJsonInAttributes??=!0,this.options.jsonWriteMode??="min"}writeAttributes(e,t){if(t.hasAttributes)for(let i of t.attributes())if(e.write(" "),typeof i[1]=="string")if(i[1]==="")e.write(i[0]);else{if(this.options.parseJsonInAttributes&&(i[1].startsWith("{")&&!i[1].startsWith("{{")&&i[1].endsWith("}")||i[1].startsWith("[")&&!i[1].startsWith("[[")&&i[1].endsWith("]")))try{let n=JSON.parse(i[1]),o;this.options.jsonWriteMode=="beauty"?o=JSON.stringify(n,null,2):o=JSON.stringify(n),e.write(i[0]+"='"+Q.normalizeAttributeValue(o,!0)+"'");continue}catch{}let r=Q.normalizeAttributeValue(i[1]);if(r.indexOf("&quot;")){let n=Q.normalizeAttributeValue(i[1],!0);n.length<r.length?e.write(i[0]+"='"+n+"'"):e.write(i[0]+'="'+r+'"')}else e.write(i[0]+'="'+r+'"')}else i[1]||e.write(i[0])}writeStyles(e,t){if(t.hasStyles){e.write(' style="');let i=t.styles();this.options.compressCssToShorthandProperties&&(i=Mi.combine(new Map(i)));for(let r of i)r[0]&&(r[0].startsWith("--")?e.write(r[0]+":"+Q.normalizeAttributeValue(r[1])+";"):e.write(z.camelToDashCase(r[0])+":"+Q.normalizeAttributeValue(r[1])+";"));e.write('"')}}}});var Us,Kc=g(()=>{"use strict";Ze();q();ce();Xc();Us=class extends js{constructor(e){super(e)}_conditionalyWriteIndent(e,t,i){i||(t.element instanceof t.window.HTMLElement&&!Ht(t.element)||t.element.previousElementSibling instanceof t.window.HTMLElement&&!Dt(t.element.previousElementSibling)||t.element.previousElementSibling==null&&!this._isInlineElement(t.element.parentElement)&&(t.element.previousSibling==null||Wr(t.element.previousSibling))||t.element instanceof t.window.SVGElement)&&e.writeIndent()}_conditionalyWriteIndentBefore(e,t,i){i||(t.element.previousElementSibling instanceof t.window.HTMLElement&&!Dt(t.element.previousElementSibling)||t.element.previousElementSibling==null&&!this._isInlineElement(t.element.parentElement)&&(t.element.previousSibling==null||Wr(t.element.previousSibling))||t.element instanceof t.window.SVGElement)&&e.writeIndent()}_conditionalyWriteNewline(e,t,i){i||(t.element instanceof t.window.HTMLElement&&!Ht(t.element)||t.element.nextElementSibling instanceof t.window.HTMLElement&&!Dt(t.element.nextElementSibling)||t.element instanceof t.window.SVGElement)&&e.writeNewline()}write(e,t,i,r=!1){for(let n of t)this.internalWrite(e,n,r,!1)}internalWrite(e,t,i,r){let n=e.position,o=e.position,a=r||this._isInlineContainer(t);if(t.nodeType==k.TextNode)Wr(t.element)&&(t.element.previousSibling instanceof t.window.HTMLElement&&!Ht(t.element.previousSibling)||t.element.nextSibling instanceof t.window.HTMLElement&&!Dt(t.element.nextSibling))||this.writeTextNode(e,t,!0,!0,a),o=e.position;else if(t.nodeType==k.Comment)this._conditionalyWriteIndent(e,t,a),n=e.position,e.write("<!--"+t.content+"-->"),o=e.position,this._conditionalyWriteNewline(e,t,a);else{this._conditionalyWriteIndentBefore(e,t,a),n=e.position,e.write("<"+t.name),this.writeAttributes(e,t),this.writeStyles(e,t),e.write(">");let l=!1;if(t.hasChildren){let c=t.children();if(l=t.childCount===1&&t.firstChild.nodeType===k.TextNode,l){let h=t.name=="script"||t.name=="style"||t.name=="pre";this.writeTextNode(e,t,!1,!h,a)}else{!a&&(t.element instanceof t.window.HTMLElement&&!Ht(t.element)||t.element instanceof t.window.SVGElement)&&(e.writeNewline(),e.levelRaise());for(let h of c)this.internalWrite(e,h,i,a),h.childCount===1&&h.firstChild.nodeType===k.TextNode&&(e.isLastCharNewline()||this._conditionalyWriteNewline(e,h,a));!a&&(t.element instanceof t.window.HTMLElement&&!Ht(t.element)||t.element instanceof t.window.SVGElement)&&(e.levelShrink(),e.isLastCharNewline()||e.writeNewline(),e.writeIndent())}}else t.hasContent&&e.write(Q.normalizeContentValue(t.content));o=e.position,Q.IsSelfClosingElement(t.name)||e.write("</"+t.name+">"),o=e.position,!a&&!e.isLastCharNewline()&&(!t.parent||!Ht(t.parent.element))&&this._conditionalyWriteNewline(e,t,a)}i&&t.instanceServiceContainer.designItemDocumentPositionService&&t.instanceServiceContainer.designItemDocumentPositionService.setPosition(t,{start:n,length:o-n})}writeTextNode(e,t,i,r=!0,n=!1){let o=e.position,a=e.position,l=Q.normalizeContentValue(t.content);n||this._hasInlineParent(t)?l=this._normalizeInlineTextContent(l):r&&(l=l.trim()),l&&(i&&this._conditionalyWriteIndent(e,t,n),e.write(l),i&&this._conditionalyWriteNewline(e,t,n)),a=e.position;for(let c of t.children())t.instanceServiceContainer.designItemDocumentPositionService.setPosition(c,{start:o,length:a-o})}_hasInlineParent(e){return e.parent?.element instanceof e.window.HTMLElement&&Dt(e.parent.element)}_normalizeInlineTextContent(e){if(!e?.trim())return"";let t=/^\s/.test(e),i=/\s$/.test(e),r=e.replaceAll(/[\t\r\n ]+/g," ").trim();return`${t?" ":""}${r}${i?" ":""}`}_isInlineContainer(e){return e.nodeType===k.Element&&e.element instanceof e.window.HTMLElement&&Dt(e.element)}_isInlineElement(e){return e instanceof HTMLElement&&Dt(e)}}});var Ys,$c=g(()=>{"use strict";ne();st();Ys=class{shouldProvideContextmenu(e,t,i,r){return i?.element instanceof SVGRectElement}provideContextMenuItems(e,t,i){return[{title:"convert to path",action:()=>{let r=i.element,n="";n+="M"+r.x.baseVal.value+" "+r.y.baseVal.value+"L"+(r.x.baseVal.value+r.width.baseVal.value)+" "+r.y.baseVal.value+"L"+(r.x.baseVal.value+r.width.baseVal.value)+" "+(r.y.baseVal.value+r.height.baseVal.value)+"L"+r.x.baseVal.value+" "+(r.y.baseVal.value+r.height.baseVal.value)+"Z";let o=document.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d",n),o.setAttribute("stroke",r.getAttribute("stroke")),o.setAttribute("fill",r.getAttribute("fill")),o.setAttribute("stroke-width",r.getAttribute("stroke-width"));let a=M.createDesignItemFromInstance(o,t.serviceContainer,t.instanceServiceContainer);t.instanceServiceContainer.undoService.execute(new ve(i.parent,i.childCount,a)),t.serviceContainer.deletionService.removeItems([i])}}]}}});var Xs,Zc=g(()=>{"use strict";Qe();Xs=class{shouldProvideContextmenu(e,t,i,r){return i?.element instanceof SVGPathElement}provideContextMenuItems(e,t,i){let r=i.node.getPathData({normalize:!0}),n=[],o=r[r.length-1].type;return n.push({title:"-"}),o=="z"||o=="Z"?n.push({title:"open path ",action:()=>{r.splice(r.length-1,1),i.setAttribute("d",cr(r))}}):n.push({title:"close path ",action:()=>{r.push({type:"Z"}),i.setAttribute("d",cr(r))}}),n}}});var ke,Ks=g(()=>{"use strict";ke=class{shouldProvideContextmenu(e,t,i,r){return!0}provideContextMenuItems(e,t,i){return[{title:"-"}]}}});var $s,Zs,Qc=g(()=>{"use strict";se();$s=10,Zs=class{shouldProvideContextmenu(e,t,i,r){return i!==null}provideContextMenuItems(e,t,i){return[{title:"zoom to",icon:`<img src="${C+"icons/zoomIn.svg"}">`,action:()=>{let r=t.getNormalizedElementCoordinates(i.element),n={x:r.x-$s,y:r.y-$s},o={x:r.x+r.width+$s,y:r.y+r.height+$s},a={x:n.x<o.x?n.x:o.x,y:n.y<o.y?n.y:o.y,width:Math.abs(n.x-o.x),height:Math.abs(n.y-o.y)},l=t.outerRect.width/a.width,c=t.outerRect.height/a.height,h=l>=c?c:l;t.zoomPoint({x:r.x+r.width/2,y:r.y+r.height/2},h)}}]}}});var Qs,qc=g(()=>{"use strict";bt();q();se();Qs=class{shouldProvideContextmenu(e,t,i,r){return t.readOnly?!1:!i?.isRootItem&&i?.nodeType==k.Element}provideContextMenuItems(e,t,i){return[{title:"rotate right",icon:`<img src="${C+"icons/rotateRight.svg"}">`,action:()=>{t.executeCommand({type:A.rotateClockwise})},shortCut:"Ctrl + R"},{title:"rotate left",icon:`<img src="${C+"icons/rotateLeft.svg"}">`,action:()=>{t.executeCommand({type:A.rotateCounterClockwise})},shortCut:"Ctrl + Shift + R"}]}}});var qs,Jc=g(()=>{"use strict";q();qs=class{shouldProvideContextmenu(e,t,i,r){return i?.hasChildren}provideContextMenuItems(e,t,i){return[{title:"select all Children",action:()=>{t.instanceServiceContainer.selectionService.setSelectedElements(Array.from(i.children()).filter(r=>r.nodeType==k.Element))}}]}}});import{BaseCustomWebComponentConstructorAppend as eg,css as tg,html as ig}from"@node-projects/base-custom-webcomponent";var ge,ot=g(()=>{"use strict";ge=class extends eg{static style=tg`div{width:24px;height:24px;display:flex;justify-content:center;align-items:center;background-color:inherit}div:hover{background-color:#a9a9a9}img{width:calc(100% - 4px);height:calc(100% - 4px);-webkit-user-drag:none}`;static template=ig`<div id="div"><img id="img"></div>`;tools;popup;currentToolOnButton;_img;_div;_longPress;constructor(e,t){super(),this.tools=t,this._img=this._getDomElement("img"),this._div=this._getDomElement("div"),this._div.onpointerdown=()=>{this.currentToolOnButton?(this.getRootNode().host.setTool(this.currentToolOnButton),setTimeout(()=>{e.clickOverlay.focus()},50),this.popup&&(this._longPress=setTimeout(()=>{this._longPress=null,this.getRootNode().host.showPopup(this)},200))):this.popup&&this.getRootNode().host.showPopup(this)},this._div.onpointerup=()=>{this._longPress&&(clearTimeout(this._longPress),this._longPress=null)},this.showTool(Object.getOwnPropertyNames(t)[0])}showTool(e){let t=this.tools[e];t&&(this._img.title=e,this._img.src=t.icon,this.currentToolOnButton=e)}setActiveTool(e){this.showTool(e),this.tools[e]?this._div.style.backgroundColor="lightgreen":this._div.style.backgroundColor=""}};customElements.define("node-projects-designer-toolbar-button",ge)});import{BaseCustomWebComponentConstructorAppend as rg,css as ng}from"@node-projects/base-custom-webcomponent";var Vt,_r=g(()=>{"use strict";Vt=class extends rg{static style=ng`.container{width:120px;min-height:100px;color:#fff;background-color:#404040;border:1px solid #000}header{text-align:center}.tool{height:32px;width:32px;background-color:#fff;background-size:65%;background-repeat:no-repeat;background-position:center center;flex-shrink:0;border-bottom:1px solid #000}.tools{display:flex;flex-wrap:wrap;margin-bottom:5px;gap:3px}`;constructor(){super();for(let e of[...this.shadowRoot.querySelectorAll("div.tool")]){let t=e;t.onclick=()=>this.getRootNode().host.setTool(t.dataset.commandParameter)}}}});import{html as sg}from"@node-projects/base-custom-webcomponent";var br,eh=g(()=>{"use strict";se();_r();br=class extends Vt{static template=sg`<div class="container"><header><h2 id="title" style="margin:0">Selection</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="Pointer" title="Pointer" style="background-image:url('${C}images/tools/PointerTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="Pan" title="Pan" style="background-image:url('${C}images/tools/PanTool.svg')"></div></div></main></div>`};customElements.define("node-projects-designer-pointer-tool-popup",br)});var Js,th=g(()=>{"use strict";ot();se();eh();Js=class{provideButton(e){let t=new ge(e,{Pointer:{icon:C+"images/tools/PointerTool.svg"}});return t.popup=br,t}}});var at,ih=g(()=>{"use strict";at=class{constructor(e){this.distance=e}distance;provideButton(e){let t=document.createElement("div");return t.style.marginTop=this.distance+"px",t}}});var eo,rh=g(()=>{"use strict";ot();se();eo=class{provideButton(e){return new ge(e,{Zoom:{icon:C+"images/tools/ZoomTool.svg"}})}}});import{html as og,css as ag}from"@node-projects/base-custom-webcomponent";var wr,nh=g(()=>{"use strict";se();_r();wr=class extends Vt{static style=[super.style,ag`.container{width:220px;min-height:300px}.inputs{float:left;margin-top:5px;align-items:center}.input{display:flex;align-items:center;margin-top:5px}.text{margin-left:5px;font-size:14px}.strokecolor{float:both}.fillbrush{float:both}.strokethickness{float:both}`];static template=og`<div class="container"><header><h2 id="title" style="margin:0">Draw</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="DrawLine" title="Draw Line" style="background-image:url('${C}images/tools/DrawLineTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawPath" title="Pointer Tool" style="background-image:url('${C}images/tools/DrawPathTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawRect" title="Draw Rectangle" style="background-image:url('${C}images/tools/DrawRectTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawEllipsis" title="Draw Ellipsis" style="background-image:url('${C}images/tools/DrawEllipTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="PickColor" title="Pick Color" style="background-image:url('${C}images/tools/ColorPickerTool.svg')"></div></div><div class="inputs"><div class="input"><input id="strokecolor" class="strokecolor" type="color" title="stroke color" value="#000000" style="padding:0;width:31px;height:31px"><text class="text">Stroke Color</text></div><div class="input"><input id="fillbrush" class="fillbrush" type="color" title="fill brush" value="#ffffff" style="padding:0;width:31px;height:31px"><text class="text">Fill Brush</text></div><div class="input"><input id="strokethickness" class="strokethickness" type="range" title="stroke thickness" min="1" max="20" value="3" style="padding:0;width:80px;height:20px;margin-right:5px"><text class="text">Stroke Thickness</text></div></div></main></div>`;constructor(){if(super(),this.shadowRoot.querySelector("input.strokecolor")){let e=this._getDomElement("strokecolor");e.onchange=()=>this.getRootNode().host.setStrokeColor(e.value)}if(this.shadowRoot.querySelector("input.fillbrush")){let e=this._getDomElement("fillbrush");e.onchange=()=>this.getRootNode().host.setFillBrush(e.value)}if(this.shadowRoot.querySelector("input.strokethickness")){let e=this._getDomElement("strokethickness");e.onchange=()=>this.getRootNode().host.setStrokeThickness(e.value)}}};customElements.define("node-projects-designer-draw-tool-popup",wr)});var to,sh=g(()=>{"use strict";ot();se();nh();to=class{provideButton(e){let t=new ge(e,{DrawLine:{icon:C+"images/tools/DrawLineTool.svg"},DrawPath:{icon:C+"images/tools/DrawPathTool.svg"},DrawRect:{icon:C+"images/tools/DrawRectTool.svg"},DrawEllipsis:{icon:C+"images/tools/DrawEllipTool.svg"},PickColor:{icon:C+"images/tools/ColorPickerTool.svg"}});return t.popup=wr,t}}});var io,oh=g(()=>{"use strict";ot();se();io=class{provideButton(e){return new ge(e,{Text:{icon:C+"images/tools/TextTool.svg"}})}}});import{html as lg}from"@node-projects/base-custom-webcomponent";var Sr,ah=g(()=>{"use strict";se();_r();Sr=class extends Vt{static template=lg`<div class="container"><header><h2 id="title" style="margin:0">Selection</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="RectangleSelector" title="Rectangle Selector" style="background-image:url('${C}images/tools/SelectRectTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="MagicWandSelector" title="Magic Wand Selector" style="background-image:url('${C}images/tools/MagicWandTool.svg')"></div></div></main></div>`};customElements.define("node-projects-designer-selection-tool-popup",Sr)});var ro,lh=g(()=>{"use strict";ot();se();ah();ro=class{provideButton(e){let t=new ge(e,{RectangleSelector:{icon:C+"images/tools/SelectRectTool.svg"},MagicWandSelector:{icon:C+"images/tools/MagicWandTool.svg"}});return t.popup=Sr,t}}});var no,ch=g(()=>{"use strict";ie();te();no=class extends R{_rect;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._rect=this._drawTransformedRect(e,"svg-rect-enter-container",this._rect,D.Background)}dispose(){this._removeAllOverlays()}}});import{css as cg}from"@node-projects/base-custom-webcomponent";var Cr,hh=g(()=>{"use strict";ch();Cr=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new no(e,t,i)}static style=cg`.svg-rect-enter-container{stroke:none;fill:#aa00ff2e}`}});var so,dh=g(()=>{"use strict";Me();fe();so=class extends ee{name="attached";getRefreshMode(e){return G.full}isHandledElement(e){return e.serviceContainer.forSomeServicesTillResult("attachedPropertyService",t=>t.isHandledElement(e))}async getProperties(e){let t=[];if(e.serviceContainer.attachedPropertyServices)for(let i of e.serviceContainer.attachedPropertyServices)i.isHandledElement(e)&&t.push(...await i.getProperties(e));return t}}});var Ni,ph=g(()=>{"use strict";fe();pt();Ke();ue();_e();Me();Ni=class extends ee{name="attributes";getRefreshMode(e){return G.fullOnValueChange}isHandledElement(e){return!e.isRootItem}async getProperty(e,t){return{name:t,type:"string",service:this,propertyType:x.attribute}}async getProperties(e){if(e){let t=[];for(let i of e.attributes())t.push({name:i[0],renamable:!0,type:"string",service:this,propertyType:x.attribute});return t.push({name:"",type:"addNew",service:this,propertyType:x.complex}),t}return null}async setValue(e,t,i){let r=e[0].openGroup("properties changed");for(let n of e)n.setAttribute(t.name,i);r.commit()}getPropertyTarget(e,t){return L.attribute}clearValue(e,t){for(let i of e)i.removeAttribute(t.name),i.serviceContainer.forSomeServicesTillResult("bindingService",r=>r.clearBinding(i,t.name,this.getPropertyTarget(i,t)))}isSet(e,t){let i=!0,r=!1;if(e!=null&&e.length!==0){if(e.length==1&&typeof e[0].getAttribute(t.name)=="object")return H.bound;let n=z.dashToCamelCase(t.name),o=t.name;e.forEach(l=>{let c=l.hasAttribute(o);i=i&&c,r=r||c});let a=ee.getOrBuildCachedBindings(e[0]);if(a&&a.find(l=>l.target==L.attribute&&l.targetName==n))return H.bound}else return H.none;return i?H.all:r?H.some:H.none}getValue(e,t){if(e!=null&&e.length!==0){let i=t.name,r=e[0].getAttribute(i);return typeof r=="object"?r.rawValue:r}return null}getBinding(e,t){return ee.getOrBuildCachedBindings(e[0]).find(r=>(r.target==L.property||r.target==L.explicitProperty||r.target==L.attribute)&&r.targetName==t.name)}getUnsetValue(e,t){return t.defaultValue}}});var Ct,mh=g(()=>{Ct={accentColor:{type:"color"},additiveSymbols:{},alignContent:{type:"list",values:["start","end","flex-start","flex-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignItems:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignSelf:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignmentBaseline:{},all:{},animation:{},animationDelay:{},animationDirection:{},animationDuration:{},animationFillMode:{},animationIterationCount:{},animationName:{},animationPlayState:{},animationTimingFunction:{},appRegion:{},appearance:{},ascentOverride:{},aspectRatio:{},backdropFilter:{},backfaceVisibility:{},background:{},backgroundAttachment:{},backgroundBlendMode:{},backgroundClip:{},backgroundColor:{type:"color"},backgroundImage:{},backgroundOrigin:{},backgroundPosition:{},backgroundPositionX:{},backgroundPositionY:{},backgroundRepeat:{},backgroundRepeatX:{},backgroundRepeatY:{},backgroundSize:{},basePalette:{},baselineShift:{},blockSize:{},border:{},borderBlock:{},borderBlockColor:{type:"color"},borderBlockEnd:{},borderBlockEndColor:{type:"color"},borderBlockEndStyle:{},borderBlockEndWidth:{},borderBlockStart:{},borderBlockStartColor:{type:"color"},borderBlockStartStyle:{},borderBlockStartWidth:{},borderBlockStyle:{},borderBlockWidth:{},borderBottom:{},borderBottomColor:{type:"color"},borderBottomLeftRadius:{},borderBottomRightRadius:{},borderBottomStyle:{},borderBottomWidth:{},borderCollapse:{},borderColor:{type:"color"},borderEndEndRadius:{},borderEndStartRadius:{},borderImage:{},borderImageOutset:{},borderImageRepeat:{},borderImageSlice:{},borderImageSource:{},borderImageWidth:{},borderInline:{},borderInlineColor:{type:"color"},borderInlineEnd:{},borderInlineEndColor:{type:"color"},borderInlineEndStyle:{},borderInlineEndWidth:{},borderInlineStart:{},borderInlineStartColor:{type:"color"},borderInlineStartStyle:{},borderInlineStartWidth:{},borderInlineStyle:{},borderInlineWidth:{},borderLeft:{},borderLeftColor:{type:"color"},borderLeftStyle:{},borderLeftWidth:{},borderRadius:{},borderRight:{},borderRightColor:{type:"color"},borderRightStyle:{},borderRightWidth:{},borderSpacing:{},borderStartEndRadius:{},borderStartStartRadius:{},borderStyle:{},borderTop:{},borderTopColor:{type:"color"},borderTopLeftRadius:{},borderTopRightRadius:{},borderTopStyle:{},borderTopWidth:{},borderWidth:{type:"length",values:["medium","thin","thick"]},bottom:{},boxShadow:{},boxSizing:{type:"list",values:["border-box","content-box"]},breakAfter:{},breakBefore:{},breakInside:{},bufferedRendering:{},captionSide:{},caretColor:{type:"color"},clear:{},clip:{},clipPath:{},clipRule:{},color:{type:"color"},colorInterpolation:{},colorInterpolationFilters:{},colorRendering:{},colorScheme:{},columnCount:{},columnFill:{},columnGap:{type:"length"},columnRule:{},columnRuleColor:{type:"color"},columnRuleStyle:{},columnRuleWidth:{},columnSpan:{},columnWidth:{},columns:{},contain:{},containIntrinsicBlockSize:{},containIntrinsicHeight:{},containIntrinsicInlineSize:{},containIntrinsicSize:{},containIntrinsicWidth:{},container:{},containerName:{},containerType:{},content:{},contentVisibility:{},counterIncrement:{},counterReset:{},counterSet:{},cursor:{},cx:{},cy:{},d:{},descentOverride:{},direction:{},display:{type:"list",values:["block","inline","inline-block","flex","inline-flex","contents","grid","inline-grid","inline-table","list-item","run-in","table","table-caption","table-column-group","table-header-group","table-footer-group","tabl-row-group","table-cell","table-column","table-row","inherit","initial","none"]},dominantBaseline:{},emptyCells:{},fallback:{},fill:{type:"color"},fillOpacity:{},fillRule:{},filter:{},flex:{},flexBasis:{},flexDirection:{type:"list",values:["row","column","row-reverse","column-reverse"]},flexFlow:{},flexGrow:{type:"number"},flexShrink:{type:"number"},flexWrap:{type:"list",values:["nowrap","wrap","wrap-reverse"]},fieldSizing:{},float:{type:"list",values:["none","left","right","inline-start","inline-end"]},floodColor:{type:"color"},floodOpacity:{},font:{},fontDisplay:{},fontFamily:{type:"font"},fontFeatureSettings:{},fontKerning:{},fontOpticalSizing:{},fontPalette:{},fontSize:{},fontSizeAdjust:{},fontStretch:{},fontStyle:{},fontSynthesis:{},fontSynthesisSmallCaps:{},fontSynthesisStyle:{},fontSynthesisWeight:{},fontVariant:{},fontVariantCaps:{},fontVariantEastAsian:{},fontVariantLigatures:{},fontVariantNumeric:{},fontVariationSettings:{},fontWeight:{},forcedColorAdjust:{},gap:{type:"length"},grid:{},gridArea:{},gridAutoColumns:{},gridAutoFlow:{},gridAutoRows:{},gridColumn:{},gridColumnEnd:{},gridColumnGap:{type:"length"},gridColumnStart:{},gridGap:{type:"length"},gridRow:{},gridRowEnd:{},gridRowGap:{type:"length"},gridRowStart:{},gridTemplate:{},gridTemplateAreas:{},gridTemplateColumns:{},gridTemplateRows:{},height:{},hyphenateCharacter:{},hyphens:{},imageOrientation:{},imageRendering:{},inherits:{},initialValue:{},inlineSize:{},inset:{},insetBlock:{},insetBlockEnd:{},insetBlockStart:{},insetInline:{},insetInlineEnd:{},insetInlineStart:{},isolation:{},justifyContent:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},justifyItems:{type:"list",values:["start","end","flex-start","flex-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},justifySelf:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},left:{},letterSpacing:{},lightingColor:{type:"color"},lineBreak:{},lineGapOverride:{},lineHeight:{},listStyle:{},listStyleImage:{},listStylePosition:{},listStyleType:{},margin:{},marginBlock:{},marginBlockEnd:{type:"length"},marginBlockStart:{type:"length"},marginBottom:{type:"length"},marginInline:{},marginInlineEnd:{type:"length"},marginInlineStart:{type:"length"},marginLeft:{type:"length"},marginRight:{type:"length"},marginTop:{type:"length"},marker:{},markerEnd:{},markerMid:{},markerStart:{},mask:{},maskType:{},maxBlockSize:{},maxHeight:{},maxInlineSize:{},maxWidth:{},minBlockSize:{},minHeight:{},minInlineSize:{},minWidth:{},mixBlendMode:{},negative:{},objectFit:{},objectPosition:{type:"position"},objectViewBox:{},offset:{},offsetDistance:{},offsetPath:{},offsetRotate:{},opacity:{type:"number"},order:{},orphans:{},outline:{},outlineColor:{type:"color"},outlineOffset:{},outlineStyle:{},outlineWidth:{},overflow:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overflowAnchor:{},overflowClipMargin:{},overflowWrap:{},overflowX:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overflowY:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overrideColors:{},overscrollBehavior:{},overscrollBehaviorBlock:{},overscrollBehaviorInline:{},overscrollBehaviorX:{},overscrollBehaviorY:{},pad:{},padding:{},paddingBlock:{},paddingBlockEnd:{},paddingBlockStart:{},paddingBottom:{},paddingInline:{},paddingInlineEnd:{},paddingInlineStart:{},paddingLeft:{},paddingRight:{},paddingTop:{},page:{},pageBreakAfter:{},pageBreakBefore:{},pageBreakInside:{},pageOrientation:{},paintOrder:{},perspective:{},perspectiveOrigin:{},placeContent:{},placeItems:{},placeSelf:{},pointerEvents:{},position:{type:"list",values:["static","relative","absolute","fixed","sticky"]},prefix:{},quotes:{},r:{},range:{},resize:{},right:{},rotate:{},rowGap:{type:"length"},rubyAlign:{},rubyPosition:{},rx:{},ry:{},scale:{},scrollbarColor:{},scrollbarGutter:{type:"list",values:["auto","stable","stable both-edges"]},scrollbarWidth:{},scrollBehavior:{},scrollMargin:{},scrollMarginBlock:{},scrollMarginBlockEnd:{},scrollMarginBlockStart:{},scrollMarginBottom:{},scrollMarginInline:{},scrollMarginInlineEnd:{},scrollMarginInlineStart:{},scrollMarginLeft:{},scrollMarginRight:{},scrollMarginTop:{},scrollPadding:{},scrollPaddingBlock:{},scrollPaddingBlockEnd:{},scrollPaddingBlockStart:{},scrollPaddingBottom:{},scrollPaddingInline:{},scrollPaddingInlineEnd:{},scrollPaddingInlineStart:{},scrollPaddingLeft:{},scrollPaddingRight:{},scrollPaddingTop:{},scrollSnapAlign:{},scrollSnapStop:{},scrollSnapType:{},shapeImageThreshold:{},shapeMargin:{},shapeOutside:{},shapeRendering:{type:"list",values:["auto","optimizeSpeed","crispEdges","geometricPrecision"]},size:{},sizeAdjust:{},speak:{},speakAs:{},src:{},stopColor:{type:"color"},stopOpacity:{},stroke:{type:"color"},strokeDasharray:{},strokeDashoffset:{},strokeLinecap:{},strokeLinejoin:{},strokeMiterlimit:{},strokeOpacity:{},strokeWidth:{type:"number"},suffix:{},symbols:{},syntax:{},system:{},tabSize:{},tableLayout:{},textAlign:{type:"list",values:["start","end","left","right","center","justify","justify-all","match-parent"]},textAlignLast:{},textAnchor:{},textCombineUpright:{},textDecoration:{},textDecorationColor:{type:"color"},textDecorationLine:{},textDecorationSkipInk:{},textDecorationStyle:{},textDecorationThickness:{},textEmphasis:{},textEmphasisColor:{type:"color"},textEmphasisPosition:{},textEmphasisStyle:{},textIndent:{},textOrientation:{},textOverflow:{},textRendering:{},textShadow:{},textSizeAdjust:{},textTransform:{},textUnderlineOffset:{},textUnderlinePosition:{},textWrap:{},textWrapMode:{type:"list",values:["wrap","nowrap"]},textWrapStyle:{type:"list",values:["auto","balance","pretty","stable"]},top:{},touchAction:{},transform:{},transformBox:{},transformOrigin:{},transformStyle:{},transition:{},transitionDelay:{},transitionBehavior:{},transitionDuration:{},transitionProperty:{},transitionTimingFunction:{},translate:{},unicodeBidi:{},unicodeRange:{},userSelect:{},vectorEffect:{},verticalAlign:{},visibility:{},whiteSpace:{},widows:{},width:{},willChange:{},wordBreak:{},wordSpacing:{},wordWrap:{},writingMode:{},x:{},y:{},zIndex:{},zoom:{}}});var oo,uh=g(()=>{"use strict";Ee();$t();oo=class extends re{_root;constructor(e){super(e),this._root=document.createElement("div"),this._root.style.display="grid",this._root.style.padding="4px 0px",this._root.style.boxSizing="border-box",this._root.style.minHeight="50px",this.element=this._root}refreshValue(e,t){if(this._root.innerHTML="",this.designItems!=null&&this.designItems.length){let i=this.designItems[0].element.parentElement;if(i){let r=getComputedStyle(i),n=Ai(this.designItems[0].element),o=getComputedStyle(this.designItems[0].element),a=r.gridTemplateColumns.split(" ").length,l=r.gridTemplateRows.split(" ").length;this._root.style.gridTemplateColumns="repeat("+a+", 1fr)",this._root.style.gridTemplateRows="repeat("+l+", 1fr)";let c=parseInt(o.gridRowStart),h=c+n.rowSpan,d=parseInt(o.gridColumnStart),p=d+n.colSpan;for(let m=1;m<=l;m++)for(let u=1;u<=a;u++){let f=document.createElement("button");f.style.minHeight="10px",f.onclick=()=>{let y=Ai(this.designItems[0].element),v=this.designItems[0].openGroup("Change grid row/column");this.designItems[0].setStyle("grid-row",m+" / "+(m+y.rowSpan)),this.designItems[0].setStyle("grid-column",u+" / "+(u+y.colSpan)),v.commit()},m>=c&&m<h&&u>=d&&u<p&&(f.style.backgroundColor="coral"),this._root.appendChild(f)}}}}}});import{BaseCustomWebComponentConstructorAppend as dg,css as pg,html as mg}from"@node-projects/base-custom-webcomponent";var Er,Yp=g(()=>{"use strict";Er=class extends dg{static style=pg`:host{justify-content:center;display:flex;margin:10px;line-height:12px;min-width:120px}*{font-size:12px;font-family:monospace;color:#000}.top{display:inline-block}.left{display:inline-block;vertical-align:middle}.right{display:inline-block;vertical-align:middle}.bottom{display:inline-block}div.ct{width:280px;height:120px}div span{font-size:10px;position:absolute;top:0;left:0}div.ct{position:relative;background:#fff;display:inline-block;border:dotted 1px gray;text-align:center;vertical-align:middle}div.ct.box{border:dotted 2px #000}div.ct>div.ct{left:0;top:0;background:#f9cc9f;width:calc(100% - 20px);height:calc(100% - 26px);border-style:dashed}div.ct>div.ct>div.ct{background:#fedc9b;border-style:solid}div.ct>div.ct>div.ct>div.ct{background:#c4cf8c;border-style:dashed}div.ct>div.ct>div.ct>div.ct>div.ct{background:#8cb6c2;border-style:solid;display:inline-flex;justify-content:center;align-items:center}span{width:30%;overflow:hidden;text-overflow:ellipsis}`;static template=mg`<div id="position" class="ct"><span title="position">position</span><div data-style="position" @keydown="onKeyDown" @dblclick="onDoubleClick" class="top">-</div><br><div data-style="position" @keydown="onKeyDown" @dblclick="onDoubleClick" class="left">-</div><div id="margin" class="ct"><span title="margin">margin</span><div data-style="margin" @keydown="onKeyDown" @dblclick="onDoubleClick" class="top">-</div><br><div @keydown="onKeyDown" @dblclick="onDoubleClick" class="left">-</div><div id="border" class="ct"><span title="border">border</span><div data-style="border" @keydown="onKeyDown" @dblclick="onDoubleClick" class="top">-</div><br><div @keydown="onKeyDown" @dblclick="onDoubleClick" class="left">-</div><div id="padding" class="ct"><span title="padding">padding</span><div data-style="padding" @keydown="onKeyDown" @dblclick="onDoubleClick" class="top">-</div><br><div @keydown="onKeyDown" @dblclick="onDoubleClick" class="left">-</div><div id="element" class="ct" style="font-size:6px"><div data-style="element" @keydown="onKeyDown" @dblclick="onDoubleClick" class="left">-</div> x <div data-style="element" @keydown="onKeyDown" @dblclick="onDoubleClick" class="right">-</div></div><div data-style="padding" @keydown="onKeyDown" @dblclick="onDoubleClick" class="right">-</div><br><div data-style="padding" @keydown="onKeyDown" @dblclick="onDoubleClick" class="bottom">-</div></div><div data-style="border" @keydown="onKeyDown" @dblclick="onDoubleClick" class="right">-</div><br><div data-style="border" @keydown="onKeyDown" @dblclick="onDoubleClick" class="bottom">-</div></div><div data-style="margin" @keydown="onKeyDown" @dblclick="onDoubleClick" class="right">-</div><br><div data-style="margin" @keydown="onKeyDown" @dblclick="onDoubleClick" class="bottom">-</div></div><div data-style="position" @keydown="onKeyDown" @dblclick="onDoubleClick" class="right">-</div><br><div data-style="position" @keydown="onKeyDown" @dblclick="onDoubleClick" class="bottom">-</div></div>`;property;unsetValue;_borderDiv;_elementDiv;constructor(){super(),this._restoreCachedInititalValues(),this._borderDiv=this._getDomElement("border"),this._elementDiv=this._getDomElement("element")}ready(){this._parseAttributesToProperties(),this._assignEvents()}onDoubleClick(e){let t=e.target;t.setAttribute("contentEditable","");let i=document.createRange(),r=window.getSelection();i.setStart(t.firstChild,0),i.setEndAfter(t.lastChild),r.removeAllRanges(),r.addRange(i)}onKeyDown(e){let t=e.target;if(e.key=="Enter"){t.removeAttribute("contentEditable");let i=t.innerHTML,r=new CustomEvent("value-changed",{detail:{style:t.dataset.style,value:i}});this.dispatchEvent(r)}}refresh(e){this._elementDiv.classList.remove("box"),this._borderDiv.classList.remove("box"),e&&(getComputedStyle(e).boxSizing=="content-box"?this._elementDiv.classList.add("box"):this._borderDiv.classList.add("box"))}};customElements.define("node-projects-metrics-editor",Er)});var ao,fh=g(()=>{"use strict";Ee();Yp();ao=class extends re{constructor(e){super(e);let t=new Er;t.property=e.name,this.element=t}refreshValue(e,t){this.element.refresh(this.designItems?.[0]?.element)}}});var Li,lo=g(()=>{"use strict";li();fe();_e();xn();Li=class extends Ge{_enrichCssProperty(e){return mp(e)}getRefreshMode(e){return G.none}async previewValue(e,t,i){let r=t.propertyName??t.name;r.startsWith("--")||(r=z.camelToDashCase(r));for(let n of e)n.element.style.setProperty(r,i)}async removePreviewValue(e,t){let i=t.propertyName??t.name;i.startsWith("--")||(i=z.camelToDashCase(i));for(let r of e)r.hasStyle(i)?r.element.style.setProperty(i,r.getStyle(i)):r.element.style.setProperty(i,"")}constructor(){super(!1)}}});var Ve,co=g(()=>{"use strict";Ke();ue();fe();_e();uh();fh();mh();lo();Ve=class extends Li{getRefreshMode(e){return G.none}layout={common:["display","color","background-color","box-sizing","border","box-shadow","opacity","position","align-content"],font:["font-family","font-size","font-weight"],layout:["inset","margin","border","padding","overflow","metrics"]};grid=["display","position","grid-template-columns","grid-template-rows","gap","column-gap","row-gap","align-content","justify-content","align-items","justify-items"];gridChild=["grid-row","grid-column","assigned-row-column","align-self","justify-self"];flex=["display","position","flex-direction","flex-wrap","align-content","justify-content","align-items","gap"];flexChild=["align-self","justify-self"];svg=["fill","fill-rule","fill-opacity","stroke","stroke-width","stroke-dasharray","stroke-dashoffset","stroke-opacity"];layoutSvgChild={common:["display","fill","fill-rule","fill-opacity","stroke","stroke-width","stroke-dasharray","stroke-dashoffset","stroke-opacity"]};constructor(e){super(),this.name=e}isHandledElement(e){return!0}async getProperty(e,t){return this._getPropertyDef(t)}async getProperties(e){let t=this[this.name];if(Array.isArray(t))return t.map(r=>this._getPropertyDef(r));{let i=[];for(let r in t){let n={name:r,properties:t[r].map(o=>this._getPropertyDef(o))};i.push(n)}return i}}_getPropertyDef(e){let t=z.dashToCamelCase(e);switch(t){case"assignedRowColumn":return{name:e,service:this,propertyType:x.complex,createEditor:i=>new oo(i)};case"metrics":return{name:e,service:this,propertyType:x.complex,createEditor:i=>new ao(i)};default:return this._enrichCssProperty({name:e,type:Ct[t]?.type??"string",values:Ct[t]?.values,service:this,propertyType:x.cssValue})}}getPropertyTarget(e,t){return L.css}}});var ug,Qt,gh=g(()=>{"use strict";ue();fe();pt();q();mh();Ke();_e();Me();co();ug="&lt;local&gt;",Qt=class extends Ve{getRefreshMode(e){return G.fullOnValueChange}constructor(){super(null),this.name="styles"}isHandledElement(e){return!0}async getProperty(e,t){let i=z.dashToCamelCase(t);return this._enrichCssProperty({name:t,type:Ct[i]?.type??"string",values:Ct[i]?.values,service:this,propertyType:x.cssValue})}getPropertyNameSuggestions(e){return Object.keys(Ct).map(t=>z.camelToDashCase(t))}async getProperties(e){if(!e||e.nodeType!=k.Element)return[];let t=e.getAllStyles().reverse().sort((o,a)=>o.specificity==null?-1:a.specificity==null?1:o.specificity.A>a.specificity.A||o.specificity.A===a.specificity.A&&o.specificity.B>a.specificity.B||o.specificity.A===a.specificity.A&&o.specificity.B===a.specificity.B&&o.specificity.C>a.specificity.C?-1:o.specificity.A===a.specificity.A&&o.specificity.B===a.specificity.B&&o.specificity.C===a.specificity.C?0:1),i=ee.getOrBuildCachedBindings(e),r=t.find(o=>o.selector===null);for(let o of i)o.target===L.css&&(r.declarations.find(a=>a.name==o.targetName)||r.declarations.push({name:o.targetName,value:null,important:!1,parent:null}));return t.map(o=>({name:(o.selector??ug)+(o.specificity?" ("+o.specificity.A+"-"+o.specificity.B+"-"+o.specificity.C+")":""),description:o.stylesheetName??"",properties:[...o.declarations.map(a=>{let l=z.dashToCamelCase(a.name);return this._enrichCssProperty({name:a.name,renamable:!0,type:Ct[l]?.type??"string",values:Ct[l]?.values,service:this,propertyType:x.cssValue,styleRule:o,styleDeclaration:a})}),{name:"",type:"addNew",service:this,propertyType:x.complex,styleRule:o}]}))}async setValue(e,t,i){if(t.styleRule?.selector!==null&&t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.updateDeclarationValue(t.styleDeclaration,i,!1),this._notifyChangedProperty(e[0],t,i);return}if(t.styleRule?.selector!==null&&!t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(t.styleRule,t.name,i,!1),this._notifyChangedProperty(e[0],t,i);return}for(let r of e)r.setStyle(t.name,i),r.element.setAttribute("style",r.element.getAttribute("style"))}clearValue(e,t,i){if(t.styleRule?.selector!==null&&t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.removeDeclarationFromRule(t.styleRule,t.styleDeclaration.name);return}super.clearValue(e,t,i)}getValue(e,t){return t.styleRule?.selector&&t.styleDeclaration?t.styleDeclaration.value:super.getValue(e,t)}getUnsetValue(e,t){return t.styleRule?.selector&&t.styleDeclaration?t.styleDeclaration.value:super.getUnsetValue(e,t)}isSet(e,t){return t.styleRule?.selector&&t.styleDeclaration?e[0].hasStyle(t.name)?H.none:H.fromStylesheet:super.isSet(e,t)}getPropertyTarget(e,t){return t.name.startsWith("--")?L.cssvar:L.css}}});var qt,yh=g(()=>{"use strict";ue();fe();pt();Ke();lo();qt=class extends Li{removeInheritedCustomProperties;constructor(e=!0){super(),this.name="customProperties",this.removeInheritedCustomProperties=e}getRefreshMode(e){return G.fullOnValueChange}isHandledElement(e){return!0}async getProperty(e,t){return this._enrichCssProperty({name:t,type:"string",service:this,propertyType:x.cssValue})}async getProperties(e){if(e?.element?.computedStyleMap){let n=Array.from(e.instanceServiceContainer.designerCanvas.computedStyleMap()).map(l=>l[0]).filter(l=>l.startsWith("--")),o=Array.from(e.element.computedStyleMap()).map(l=>l[0]).filter(l=>l.startsWith("--"));return this.removeInheritedCustomProperties&&(o=o.filter(l=>!n.includes(l))),o.map(l=>({name:l,service:this,propertyType:x.cssValue})).map(l=>this._enrichCssProperty(l))}let t=Array.from(getComputedStyle(e.instanceServiceContainer.designerCanvas)).map(n=>n[0]).filter(n=>n.startsWith("--")),i=Array.from(getComputedStyle(e.element)).map(n=>n[0]).filter(n=>n.startsWith("--"));return this.removeInheritedCustomProperties&&(i=i.filter(n=>!t.includes(n))),i.map(n=>({name:n,service:this,propertyType:x.cssValue})).map(n=>this._enrichCssProperty(n))}clearValue(e,t,i){super.clearValue(e,t,i)}getValue(e,t){let i=e[0].getStyle(t.name);return i||getComputedStyle(e[0].element).getPropertyValue(t.name)}getUnsetValue(e,t){return e?.[0].element?.computedStyleMap?e[0].element.computedStyleMap().get(t.name)?.[0]:getComputedStyle(e[0].element).getPropertyValue(t.name)}isSet(e,t){return super.isSet(e,t)==H.bound?H.bound:e[0].hasStyle(t.name)?H.all:H.none}getPropertyTarget(e,t){return L.cssvar}}});var ho,vh=g(()=>{"use strict";q();dh();ph();li();gh();yh();co();ho=class{_attachedPropertiesService=new so;_rootPgList=[{name:"styles",propertiesService:new Qt},{name:"css vars",propertiesService:new qt},{name:"layout",propertiesService:new Ve("layout")}];_pgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ni},{name:"common",propertiesService:new Ge},{name:"styles",propertiesService:new Qt},{name:"css vars",propertiesService:new qt},{name:"layout",propertiesService:new Ve("layout")}];_svgPgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ni},{name:"common",propertiesService:new Ge},{name:"styles",propertiesService:new Qt},{name:"css vars",propertiesService:new qt},{name:"layout",propertiesService:new Ve("layout")},{name:"svg",propertiesService:new Ve("svg")}];_svgChildPgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ni},{name:"common",propertiesService:new Ge},{name:"styles",propertiesService:new Qt},{name:"css vars",propertiesService:new qt},{name:"layout",propertiesService:new Ve("layoutSvgChild")}];_gridChild=[{name:"gridChild",propertiesService:new Ve("gridChild")}];_grid=[{name:"grid",propertiesService:new Ve("grid")}];_flexChild=[{name:"flexChild",propertiesService:new Ve("flexChild")}];_flex=[{name:"flex",propertiesService:new Ve("flex")}];getPropertygroups(e){if(e==null||e.length==0)return[];if(e[0].nodeType==k.TextNode||e[0].nodeType==k.Comment)return[];if(e[0].isRootItem){let r=e[0].getComputedStyle(),n=this._rootPgList;return r.display.includes("grid")?n=[...n,...this._grid]:r.display.includes("flex")&&(n=[...n,...this._flex]),n}this._pgList[0].propertiesService=e[0].serviceContainer.getLastServiceWhere("propertyService",r=>r.isHandledElement(e[0])),this._svgPgList[0].propertiesService=e[0].serviceContainer.getLastServiceWhere("propertyService",r=>r.isHandledElement(e[0]));let t=this._pgList;e[0].element instanceof e[0].window.SVGElement&&(e[0].element instanceof e[0].window.SVGSVGElement?t=this._svgPgList:t=this._svgChildPgList);let i=e[0].getComputedStyle();if(i.display.includes("grid")?t=[...t,...this._grid]:i.display.includes("flex")&&(t=[...t,...this._flex]),e[0].parent){let r=e[0].parent.getComputedStyle();r.display.includes("grid")?t=[...t,...this._gridChild]:r.display.includes("flex")&&(t=[...t,...this._flexChild])}return t}}});var po,xh=g(()=>{"use strict";ie();po=class extends R{_rect;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element),t=getComputedStyle(this.extendedItem.element),i=Number.parseFloat(t.marginLeft.replace("px","")),r=Number.parseFloat(t.marginTop.replace("px","")),n=Number.parseFloat(t.marginRight.replace("px","")),o=Number.parseFloat(t.marginBottom.replace("px",""));this._rect=this._drawRect(e.x-i,e.y-r,i+e.width+n,r+e.height+o,"svg-placement",this._rect)}dispose(){this._removeAllOverlays()}}});import{css as fg}from"@node-projects/base-custom-webcomponent";var mo,_h=g(()=>{"use strict";xh();mo=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new po(e,t,i)}static style=fg`.svg-placement{stroke:#90caf9;fill:none}`}});var uo,bh=g(()=>{"use strict";ie();te();uo=class extends R{_path;constructor(e,t,i){super(e,t,i)}extend(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._path=this._drawTransformedRect(e,"svg-flexbox",this._path,D.Background)}refresh(){this._removeAllOverlays(),this.extend()}dispose(){this._removeAllOverlays()}}});import{css as gg}from"@node-projects/base-custom-webcomponent";var wh,Pr,fo=g(()=>{"use strict";bh();wh="flexboxExtensionShowOverlay",Pr=class{shouldExtend(e,t,i){let r=getComputedStyle(i.element).display;return r=="flex"||r=="inline-flex"?t.instanceServiceContainer.designContext.extensionOptions[wh]!==!1:!1}getExtension(e,t,i){return new uo(e,t,i)}style=gg`.svg-flexbox{stroke:orange;fill:#9a47ff22}`}});var go,Sh=g(()=>{"use strict";fo();Wt();go=class extends We{constructor(){super(wh,"F","show flexbox overlay")}}});var yo,Ch=g(()=>{"use strict";Es();Wt();yo=class extends We{constructor(){super(Ic,"I","show invisible div overlay")}}});var vo,Eh=g(()=>{"use strict";vo=class{redoBranches;source;_contentChanges=[];title;get affectedItems(){let e=new Set;for(let t of this.undoStack)for(let i of t.affectedItems)e.add(i);for(let t of this.redoStack)for(let i of t.affectedItems)e.add(i);return[...e.values()]}commitHandler;abortHandler;constructor(e,t,i,r="local"){this.title=e,this.commitHandler=t,this.abortHandler=i,this.source=r}get contentChanges(){return this._contentChanges.length>0?this._contentChanges:null}do(){let e=null,t=[];for(;e=this.redoStack.pop();)try{let i=e.do();i&&t.push(...i),this.undoStack.push(e)}catch(i){throw i}return t.length>0?t:null}undo(){let e=null,t=[];for(;e=this.undoStack.pop();)try{let i=e.undo();i&&t.push(...i),this.redoStack.push(e)}catch(i){throw i}return t.length>0?t:null}commit(){this.commitHandler(this)}abort(){this.abortHandler(this)}mergeWith(e){return!1}addCommitedSubchangeGroup(e){this.undoStack.push(e),this._recordContentChanges(e.contentChanges)}undoStack=[];redoStack=[];execute(e){let t=e.do();this._recordContentChanges(t);for(let i of this.undoStack)if(i.mergeWith(e))return t;return this.undoStack.push(e),t}_recordContentChanges(e){e?.length&&this._contentChanges.push(...e)}}});import{TypedEvent as yg}from"@node-projects/base-custom-webcomponent";var xo,Ph=g(()=>{"use strict";Eh();xo=class{_undoStack=[];_redoStack=[];_transactionStack=[];_designerCanvas;_storeRedoBranches;constructor(e,t=!1){this._designerCanvas=e,this._storeRedoBranches=t}openGroup(e,t="local"){let i=new vo(e,r=>this.commitTransactionItem(r),r=>this.abortTransactionItem(r),t);return this._transactionStack.push(i),i}commitTransactionItem(e){let t=this._transactionStack.pop();if(t!==e)throw this.clear(),"UndoService - Commited Transaction was not the last";t.undoStack.length&&(this._transactionStack.length>0?this._transactionStack[this._transactionStack.length-1].addCommitedSubchangeGroup(t):(this._storeRedoBranches&&this._redoStack.length&&(t.redoBranches==null&&(t.redoBranches=[]),t.redoBranches.push(this._redoStack)),this._redoStack=[],this._undoStack.push(t))),this._transactionStack.length==0&&(this._designerCanvas.extensionManager.refreshAllExtensions(e.affectedItems),this.emitTransaction(e,"execute",e.source??"local"),e.contentChanges&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(e.contentChanges))}abortTransactionItem(e){if(this._transactionStack.length>0){let t=this._transactionStack.pop();if(t!==e)throw this.clear(),"UndoService - Aborted Transaction was not the last";t.undo()}}execute(e,t="local"){let i=null;this._transactionStack.length==0?(i=e.do(),this._storeRedoBranches&&this._redoStack.length&&(e.redoBranches==null&&(e.redoBranches=[]),e.redoBranches.push(this._redoStack)),this._redoStack=[],this._undoStack.push(e)):i=this._transactionStack[this._transactionStack.length-1].execute(e),this._transactionStack.length==0&&(this._designerCanvas.extensionManager.refreshAllExtensions(e.affectedItems),this.emitTransaction(e,"execute",t),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i))}clear(){this._undoStack=[],this._redoStack=[],this._transactionStack=[]}clearTransactionstackIfNotEmpty(){this._transactionStack.length&&(console.error("transactionStack was not empty, but should be",this._transactionStack),this._transactionStack=[])}undo(e="local"){if(!this.canUndo())return;if(this._transactionStack.length!=0)throw"Cannot Undo while transaction is running";let t=this._undoStack.pop(),i=null;try{i=t.undo(),this._redoStack.push(t)}catch(r){throw this.clear(),r}this._designerCanvas.extensionManager.refreshAllExtensions(t.affectedItems),this.emitTransaction(t,"undo",e),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i)}redo(e="local"){if(!this.canRedo())return;if(this._transactionStack.length!=0)throw"Cannot Redo while transaction is running";let t=this._redoStack.pop(),i=null;try{i=t.do(),this._undoStack.push(t)}catch(r){throw this.clear(),r}this._designerCanvas.extensionManager.refreshAllExtensions(t.affectedItems),this.emitTransaction(t,"redo",e),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i)}redoTo(e){this._redoStack=e.toReversed();for(let t=0;t<e.length;t++)this.redo()}canUndo(){return this._undoStack.length>0}canRedo(){return this._redoStack.length>0}get undoCount(){return this._undoStack.length}get redoCount(){return this._redoStack.length}*getUndoEntryNames(e=999){for(let t=Math.min(this._undoStack.length,e)-1;t>=0;t--)yield this._undoStack[t].title}*getUndoEntries(e=999){for(let t=Math.min(this._undoStack.length,e)-1;t>=0;t--)yield this._undoStack[t]}*getRedoEntryNames(e=999){for(let t=Math.min(this._redoStack.length,e)-1;t>=0;t--)yield this._redoStack[t].title}*getRedoEntries(e=999){for(let t=Math.min(this._redoStack.length,e)-1;t>=0;t--)yield this._redoStack[t]}onTransaction=new yg;emitTransaction(e,t,i){this.onTransaction.emit({item:e,kind:t,source:i})}}});var _o,Xp=g(()=>{"use strict";_o=class{constructor(e,t,i){this.title="Change Selection",this.oldSelection=e,this.newSelection=t,this.selectionService=i}title;get affectedItems(){return this.oldSelection&&this.newSelection?[...this.oldSelection,...this.newSelection]:this.oldSelection?[...this.oldSelection]:[...this.newSelection]}undo(){return this.selectionService._withoutUndoSetSelectedElements(this.oldSelection),null}do(){return this.selectionService._withoutUndoSetSelectedElements(this.newSelection),null}oldSelection;newSelection;selectionService;mergeWith(e){return!1}}});import{TypedEvent as Kp}from"@node-projects/base-custom-webcomponent";function $p(s,e){let t=null;if(s.hasChildren)for(let i of s.children()){let r=s.instanceServiceContainer.designItemDocumentPositionService.getPosition(i);r&&r.start<=e&&r.start+r.length>=e&&(t=i)}return t?$p(t,e):s}var bo,Ah=g(()=>{"use strict";Xp();bo=class{primarySelection;selectedElements=[];_designerCanvas;_undoSelectionChanges;constructor(e,t){this._designerCanvas=e,this._undoSelectionChanges=t}setSelectedElements(e,t){if((e===null||e.length===0)&&(e=[this._designerCanvas.rootDesignItem]),this.selectedElements!=e&&!(this.selectedElements.length===0&&(e==null||e.length===0))){if(this.selectedElements?.length===1&&e?.length===1&&e[0]===this.selectedElements[0]){this.onSelectionRefresh.emit({selectedElements:this.selectedElements,event:t});return}if(this._undoSelectionChanges){let i=new _o(this.selectedElements,e,this);this._designerCanvas.instanceServiceContainer.undoService.execute(i)}else this._withoutUndoSetSelectedElements(e,t)}}setSelectionByTextRange(e,t){let i=$p(this._designerCanvas.rootDesignItem,e);i&&(this.selectedElements.length!=1||this.primarySelection!=i)&&this.setSelectedElements([i])}_withoutUndoSetSelectedElements(e,t){let i=this.selectedElements;if(!e)this.selectedElements=[],this.primarySelection=null;else{let r=[];for(let n of e)n&&(e.length==1||n!==n.instanceServiceContainer.designerCanvas.rootDesignItem)&&r.push(n);this.selectedElements=r,r&&r.length>0?this.primarySelection=r[0]:this.primarySelection=null}this.onSelectionChanged.emit({selectedElements:this.selectedElements,oldSelectedElements:i,event:t})}clearSelectedElements(){this.setSelectedElements([])}isSelected(e){return this.selectedElements.indexOf(e)>=0}onSelectionChanged=new Kp;onSelectionRefresh=new Kp}});var wo,kh=g(()=>{"use strict";se();wo=class{shouldProvideContextmenu(e,t,i,r){return i!==null}provideContextMenuItems(e,t,i){return[{title:"jump to",icon:`<img src="${C+"icons/jump.svg"}">`,action:()=>{let r=t.getNormalizedElementCoordinates(i.element);t.zoomPoint({x:r.x+r.width/2,y:r.y+r.height/2},t.zoomFactor)}}]}}});var So,Ih=g(()=>{"use strict";le();Vl();ce();$t();ie();te();So=class extends R{gridInformation;_resizers=[];_initalPos;_initialSizes;_group;_hasChanged;constructor(e,t,i){super(e,t,i)}extend(e,t){this._group=this._drawGroup(null,this._group,D.Background),this._group.style.transformOrigin="0 0",this.refresh(t)}refresh(e,t){this.gridInformation=qe(this.extendedItem),this._group.style.transform=ki(this.extendedItem).toString(),this.gridInformation.gaps.forEach((i,r)=>{i.width<3&&(i.width=3,i.x--,i.localX--),i.height<3&&(i.height=3,i.y--,i.localY--);let n=this._drawRect(i.localX,i.localY,i.width,i.height,"svg-grid-resizer-"+i.type,this._resizers[r],D.Normal);this._resizers[r]||(this._resizers[r]=n,n.addEventListener(w.PointerDown,o=>this._pointerActionTypeResize(o,n,i)),n.addEventListener(w.PointerMove,o=>this._pointerActionTypeResize(o,n,i)),n.addEventListener(w.PointerUp,o=>this._pointerActionTypeResize(o,n,i)),this._group.appendChild(n))})}_pointerActionTypeResize(e,t,i){e.stopPropagation();let r=i.type=="h"?"gridTemplateRows":"gridTemplateColumns",n=(i.type=="h"?i.row:i.column)-1,o=i.type=="h"?"height":"width",a=this._getAxisLocalPosition(e,i.type);switch(e.type){case w.PointerDown:t.setPointerCapture(e.pointerId),this._initalPos=a,this._initialSizes=getComputedStyle(this.extendedItem.element)[r];break;case w.PointerMove:if(this._initialSizes){let c=a-this._initalPos;if(Math.abs(c)>5||this._hasChanged){this._hasChanged=!0;let h=this._initialSizes.split(" ");h[n]=parseFloat(h[n])+c+"px",h[n+1]=parseFloat(h[n+1])-c+"px",this.extendedItem.element.style[r]=h.join(" "),this.extensionManager.refreshExtensions([this.extendedItem],null,e)}}break;case w.PointerUp:t.releasePointerCapture(e.pointerId);let l=a-this._initalPos;if(this._hasChanged){this._hasChanged=!1;let c=this.extendedItem.getStyleFromSheetOrLocalOrComputed(r),h=this._initialSizes.split(" "),d=bp(c);d.length!=h.length&&(d=h.map(u=>Kt(u))),this.extendedItem.element.style[r]="";let p=h.map(u=>parseFloat(u));p[n]+=l,p[n+1]-=l;let m=this._convertCssUnits(p,d,this.extendedItem.element,o);this.extendedItem.updateStyleInSheetOrLocal(r,m.join(" "),null,!0)}this._initalPos=null,this._initialSizes=null,this.extensionManager.refreshExtensions([this.extendedItem]);break}}_getAxisLocalPosition(e,t){let i=ur(this.extendedItem,this.designerCanvas.getNormalizedEventCoordinates(e));return t=="h"?i.y:i.x}_convertCssUnits(e,t,i,r){let n=getComputedStyle(i),a=Y(i)[r],l=r=="height"?this.gridInformation.cells.length-1:this.gridInformation.cells[0].length-1,c=r=="width"?n.columnGap:n.rowGap;c=="normal"&&(c="0px");let h=Ol(c,i,r)??0,p=a-h*l;for(let u=0;u<e.length;u++)t[u]!="fr"&&(p-=e[u]);let m=[];for(let u=0;u<e.length;u++)t[u]!="fr"?m.push(Ci(e[u],i,r,t[u])):m.push((e[u]/p*10).toFixed(2)+"fr");return m}dispose(){this._removeAllOverlays()}}});import{css as vg}from"@node-projects/base-custom-webcomponent";var Co,Dh=g(()=>{"use strict";Ih();xr();Co=class{shouldExtend(e,t,i){let r=getComputedStyle(i.element).display;return r=="grid"||r=="inline-grid"?t.instanceServiceContainer.designContext.extensionOptions[vr]!==!1:!1}getExtension(e,t,i){return new So(e,t,i)}static style=vg`.svg-grid-resizer-v{fill:transparent;cursor:ew-resize;pointer-events:auto}.svg-grid-resizer-v:hover{fill:#ff7f5052}.svg-grid-resizer-h{fill:transparent;cursor:ns-resize;pointer-events:auto}.svg-grid-resizer-h:hover{fill:#ff7f5052}`}});var Oi,Th=g(()=>{"use strict";Oi=class{extensions;extIndex;style;svgDefs;constructor(...e){this.extensions=e;for(let t of e)t.style&&(this.style||(this.style=[]),Array.isArray(t.style)?this.style.push(...t.style):this.style.push(t.style)),t.constructor.style&&(this.style||(this.style=[]),Array.isArray(t.constructor.style)?this.style.push(...t.constructor.style):this.style.push(t.constructor.style)),t.svgDefs&&(this.svgDefs||(this.svgDefs=[]),Array.isArray(t.svgDefs)?this.svgDefs.push(...t.svgDefs):this.svgDefs.push(t.svgDefs)),t.constructor.svgDefs&&(this.svgDefs||(this.svgDefs=[]),Array.isArray(t.constructor.svgDefs)?this.svgDefs.push(...t.svgDefs):this.svgDefs.push(t.constructor.svgDefs))}shouldExtend(e,t,i){for(this.extIndex=0;this.extIndex<this.extensions.length;this.extIndex++)if(this.extensions[this.extIndex].shouldExtend(e,t,i))return!0;return!1}getExtension(e,t,i){return this.extensions[this.extIndex].getExtension(e,t,i)}}});var Eo,Mh=g(()=>{"use strict";Eo=class{_designItemsAssignmentList=new WeakMap;constructor(e){}setPosition(e,t){this._designItemsAssignmentList.set(e,t)}getPosition(e){return this._designItemsAssignmentList.get(e)}}});import{html as xg,BaseCustomWebComponentConstructorAppend as _g,css as bg}from"@node-projects/base-custom-webcomponent";var Ar,Nh=g(()=>{"use strict";Pe();ce();Ar=class extends _g{_designerView;_previousSelectionRect;_selectionChanged;_relativeButton;_absoluteButton;_applyButton;_inputX;_inputY;_inputR;_inputSpacingX;_inputSpacingY;_originTopLeft;_originTopMid;_originTopRight;_originMidLeft;_originMidMid;_originMidRight;_originBotLeft;_originBotMid;_originBotRight;_transformMode;_transformOrigin;static style=bg`.container{width:220px;min-height:200px;color:#fff;background-color:#404040;border:1px solid #000}header{text-align:center}.inputs{float:left;margin-top:5px;align-items:center}.input{display:flex;align-items:center;margin-top:5px}.text{margin-left:5px;font-size:14px}.strokecolor{float:both}.fillbrush{float:both}.strokethickness{float:both}#input-div{display:grid;grid-template-columns:1fr 9fr;grid-template-rows:25px 25px 25px;grid-row-gap:2px;font-size:small;margin:10px}#button-div{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:25px;font-size:small;margin:10px;grid-column-gap:5px}#apply-div{font-size:small;justify-content:center;width:100%;margin-top:10px;margin-bottom:10px;display:flex}#cube{display:grid;grid-template-columns:20px 20px 20px;grid-template-rows:20px 20px 20px;grid-gap:10px;padding:10px;top:-80px;position:relative}#cube-background{width:60px;height:60px;background:gray;margin-top:20px;margin-left:20px}#spacing-div{display:inline-grid;grid-template-rows:20px 20px;grid-template-columns:95px 95px;gap:5px;justify-content:center;align-items:center;width:100%}`;static template=xg`<div class="container"><header><h2 id="title" style="margin:0">Transform</h2></header><main id="content-area"><div id="input-div"><span>X:</span> <input type="number" id="transform-input-x"> <span>Y:</span> <input type="number" id="transform-input-y"> <span>R:</span> <input type="number" id="transform-input-r"></div><div id="button-div"><button id="transform-button-absolute">absolute</button> <button id="transform-button-relative">relative</button></div><div id="spacing-div"><span>X spacing</span> <span>Y spacing</span> <input type="number" id="spacing-input-x"> <input type="number" id="spacing-input-y"></div><div style="justify-content:center;display:grid;height:100px"><div id="cube-background"></div><div id="cube"><input id="origin-top-left" type="radio" name="origin-radio"> <input id="origin-top-mid" type="radio" name="origin-radio"> <input id="origin-top-right" type="radio" name="origin-radio"> <input id="origin-mid-left" type="radio" name="origin-radio"> <input id="origin-mid-mid" type="radio" name="origin-radio" checked="checked"> <input id="origin-mid-right" type="radio" name="origin-radio"> <input id="origin-bot-left" type="radio" name="origin-radio"> <input id="origin-bot-mid" type="radio" name="origin-radio"> <input id="origin-bot-right" type="radio" name="origin-radio"></div></div><div id="apply-div"><button id="transform-button-apply" style="width:100px">apply</button></div></main></div>`;constructor(){super(),this._relativeButton=this._getDomElement("transform-button-relative"),this._absoluteButton=this._getDomElement("transform-button-absolute"),this._applyButton=this._getDomElement("transform-button-apply"),this._inputX=this._getDomElement("transform-input-x"),this._inputY=this._getDomElement("transform-input-y"),this._inputR=this._getDomElement("transform-input-r"),this._inputSpacingX=this._getDomElement("spacing-input-x"),this._inputSpacingY=this._getDomElement("spacing-input-y"),this._originTopLeft=this._getDomElement("origin-top-left"),this._originTopMid=this._getDomElement("origin-top-mid"),this._originTopRight=this._getDomElement("origin-top-right"),this._originMidLeft=this._getDomElement("origin-mid-left"),this._originMidMid=this._getDomElement("origin-mid-mid"),this._originMidRight=this._getDomElement("origin-mid-right"),this._originBotLeft=this._getDomElement("origin-bot-left"),this._originBotMid=this._getDomElement("origin-bot-mid"),this._originBotRight=this._getDomElement("origin-bot-right"),this._relativeButton.onclick=()=>this._changePositionMode("relative"),this._absoluteButton.onclick=()=>this._changePositionMode("absolute"),this._applyButton.onclick=()=>this._applyTransform(),this._transformMode="relative",this._changePositionMode(this._transformMode)}_changePositionMode(e){e=="relative"?(this._relativeButton.style.backgroundColor="#6F8A9D",this._relativeButton.style.color="black",this._absoluteButton.style.backgroundColor="#A4B5C1",this._absoluteButton.style.color="#77716E"):(this._absoluteButton.style.backgroundColor="#6F8A9D",this._absoluteButton.style.color="black",this._relativeButton.style.backgroundColor="#A4B5C1",this._relativeButton.style.color="#77716E"),this._transformMode=e}_applyTransform(){this._checkOrigin(),this._designerView=this.getRootNode().host.designerView;let e=this._designerView.instanceServiceContainer.selectionService.selectedElements;if(e=he(e),this._selectionChanged=!1,this._designerView.instanceServiceContainer.selectionService.onSelectionChanged.once(()=>{this._selectionChanged=!0,this._previousSelectionRect=null}),e.length!=0){let t={x:isNaN(this._inputX.valueAsNumber)?null:this._inputX.valueAsNumber,y:isNaN(this._inputY.valueAsNumber)?null:this._inputY.valueAsNumber},i=this._inputR.valueAsNumber?this._inputR.valueAsNumber:0,r=e[0].openGroup("Transform selection");(!this._previousSelectionRect||this._selectionChanged)&&(this._previousSelectionRect=Gt(e,this._designerView.designerCanvas));let n=this._calculateTransformOriginPosition(this._previousSelectionRect);for(let o of e){let a={x:parseFloat(o.getStyle("left")),y:parseFloat(o.getStyle("top")),width:parseFloat(o.getStyle("width")),height:parseFloat(o.getStyle("height"))},l=o.getStyle("transform"),c=0;l&&(c=parseFloat(o.getStyle("transform").replaceAll("rotate(","").replaceAll("deg)","")));let h=this._calculateTransform(this._previousSelectionRect,n,a,i,t,this._transformMode);o.setStyle("left",h.x.toString()+"px"),o.setStyle("top",h.y.toString()+"px");let d;for(this._transformMode=="relative"?d=c+i:d=i;d>=360;)d-=360;d!=0?o.setStyle("transform","rotate("+d+"deg)"):o.removeStyle("transform")}this._applySpacing(e),r.commit()}}_calculateTransformOriginPosition(e){switch(this._transformOrigin){case"topLeft":return{x:e.x,y:e.y};case"topMid":return{x:e.x+e.width/2,y:e.y};case"topRight":return{x:e.x+e.width,y:e.y};case"midLeft":return{x:e.x,y:e.y+e.height/2};case"midMid":return{x:e.x+e.width/2,y:e.y+e.height/2};case"midRight":return{x:e.x+e.width,y:e.y+e.height/2};case"botLeft":return{x:e.x,y:e.y+e.height};case"botMid":return{x:e.x+e.width/2,y:e.y+e.height};case"botRight":return{x:e.x+e.width,y:e.y+e.height}}}_checkOrigin(){this._originTopLeft.checked?this._transformOrigin="topLeft":this._originTopMid.checked?this._transformOrigin="topMid":this._originTopRight.checked?this._transformOrigin="topRight":this._originMidLeft.checked?this._transformOrigin="midLeft":this._originMidMid.checked?this._transformOrigin="midMid":this._originMidRight.checked?this._transformOrigin="midRight":this._originBotLeft.checked?this._transformOrigin="botLeft":this._originBotMid.checked?this._transformOrigin="botMid":this._originBotRight.checked&&(this._transformOrigin="botRight")}_calculateTransform(e,t,i,r,n,o){let a;r=r*(Math.PI/180),o=="absolute"&&(n.x&&(n.x=n.x-e.x),n.y&&(n.y=n.y-e.y)),t={x:t.x-i.width/2,y:t.y-i.height/2};let l={x:i.x-t.x,y:i.y-t.y};return a={x:Math.cos(r)*l.x-Math.sin(r)*l.y+t.x+n.x,y:Math.sin(r)*l.x+Math.cos(r)*l.y+t.y+n.y},a}_applySpacing(e){let t=this._inputSpacingX.valueAsNumber,i=this._inputSpacingY.valueAsNumber;if(!isNaN(t)){let r=e.sort((o,a)=>parseFloat(o.getStyle("left"))-parseFloat(a.getStyle("left"))),n=parseFloat(r[0].getStyle("left"));for(let o=0;o<r.length;o++)r[o].setStyle("left",o*t+n+"px")}if(!isNaN(i)){let r=e.sort((o,a)=>parseFloat(o.getStyle("top"))-parseFloat(a.getStyle("top"))),n=parseFloat(r[0].getStyle("top"));for(let o=0;o<r.length;o++)r[o].setStyle("top",o*i+n+"px")}}};customElements.define("node-projects-designer-transform-tool-popup",Ar)});var Po,Lh=g(()=>{"use strict";ot();se();Nh();Po=class{provideButton(e){let t=new ge(e,{"":{icon:C+"images/tools/TransformTool.svg"}});return t.popup=Ar,t}}});var Ao,Oh=g(()=>{"use strict";ce();Pe();ie();te();Ao=class extends R{_line1;_line2;_line3;_line4;_designerView;constructor(e,t,i){super(e,t,i),this._designerView=t}extend(){this.refresh()}refresh(){let e=this._designerView.instanceServiceContainer.selectionService.selectedElements;if(e.length>1){e=he(e);let t=Gt(e,this._designerView);this._line1=this._drawLine(t.x,t.y,t.x+t.width,t.y,"svg-multiple-rect-selection",this._line1,D.Background),this._line2=this._drawLine(t.x+t.width,t.y,t.x+t.width,t.y+t.height,"svg-multiple-rect-selection",this._line2,D.Background),this._line3=this._drawLine(t.x+t.width,t.y+t.height,t.x,t.y+t.height,"svg-multiple-rect-selection",this._line3,D.Background),this._line4=this._drawLine(t.x,t.y+t.height,t.x,t.y,"svg-multiple-rect-selection",this._line4,D.Background),this._line1.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line2.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line3.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line4.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString()}}dispose(){this._removeAllOverlays()}}});import{css as wg}from"@node-projects/base-custom-webcomponent";var ko,Vh=g(()=>{"use strict";Oh();ko=class{shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Ao(e,t,i)}static style=wg`.svg-multiple-rect-selection{stroke:#909090;stroke-dasharray:3;fill:transparent;stroke-width:2}`}});var Io,Rh=g(()=>{"use strict";ne();$e();se();Io=class{_dragOverExtensionItem;_oldX;_oldY;_currentDragDropFormatNameElementDefinition;constructor(){window.addEventListener("dragstart",e=>{let t=e.dataTransfer;if(!t)return;let i=t.setData.bind(t);t.setData=(r,n)=>(r==vi&&(this._currentDragDropFormatNameElementDefinition=n),i(r,n))},!0),window.addEventListener("dragend",e=>{this._currentDragDropFormatNameElementDefinition=null},!0)}dragEnter(e,t){}dragLeave(e,t){this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerExternalDragOverAndCanBeEntered),this._dragOverExtensionItem=null)}async dragOver(e,t){if(e.readOnly){t.dataTransfer.dropEffect="none";return}let i=null,r=t.dataTransfer.getData(vi);if(r||(r=this._currentDragDropFormatNameElementDefinition),r){let o=JSON.parse(r);o&&(i=await e.serviceContainer.forSomeServicesTillResult("instanceService",a=>a.getElement(o,e.serviceContainer,e.instanceServiceContainer)))}let[n]=this.getPossibleContainerForDragDrop(e,t,i?[i]:null);n||(n=e.rootDesignItem),this._dragOverExtensionItem!=n?(e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerExternalDragOverAndCanBeEntered),e.extensionManager.applyExtension(n,P.ContainerExternalDragOverAndCanBeEntered,t),this._dragOverExtensionItem=n):t.x!=this._oldX&&t.y!=this._oldY&&(this._oldX=t.x,this._oldY=t.y,e.extensionManager.refreshExtension(n,P.ContainerExternalDragOverAndCanBeEntered,t))}async drop(e,t){this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerExternalDragOverAndCanBeEntered),this._dragOverExtensionItem=null);let i=t.dataTransfer.getData(vi),r=JSON.parse(i),n=await e.serviceContainer.forSomeServicesTillResult("instanceService",m=>m.getElement(r,e.serviceContainer,e.instanceServiceContainer)),[o]=this.getPossibleContainerForDragDrop(e,t,[n]);o||(o=e.rootDesignItem);let a=n.openGroup("Insert of &lt;"+n.name+"&gt;"),l=e.serviceContainer.getLastServiceWhere("containerService",m=>m.serviceForContainer(o,o.getComputedStyle(),n));l.enterContainer(o,[n],"drop");let c=e.getNormalizedElementCoordinates(o.element),h=e.getNormalizedEventCoordinates(t),d={x:h.x-c.x,y:h.y-c.y},p={x:0,y:0};r.mouseOffset&&(p=r.mouseOffset),l.place(t,e,o,p,{x:0,y:0},d,[n]),l.finishPlace(t,e,o,p,{x:0,y:0},d,[n]),requestAnimationFrame(()=>{e.instanceServiceContainer.selectionService.setSelectedElements([n],t),a.commit()})}getPossibleContainerForDragDrop(e,t,i){let r=null,n=null,o=e.elementsFromPoint(t.clientX,t.clientY);for(let a of o)if(a==e.rootDesignItem.element){r=e.rootDesignItem;let l=getComputedStyle(r.element);n=e.serviceContainer.getLastServiceWhere("containerService",c=>c.serviceForContainer(r,l));break}else{r=M.GetOrCreateDesignItem(a,a,e.serviceContainer,e.instanceServiceContainer);let l=getComputedStyle(r.element);if(n=e.serviceContainer.getLastServiceWhere("containerService",c=>c.serviceForContainer(r,l)),n){if(i&&n.canEnter(r,i)&&!(r.element instanceof r.window.SVGElement))break;if(!i&&n.isEnterableContainer(r)&&!(r.element instanceof r.window.SVGElement))break;r=null,n=null;continue}}return[r,n]}}});var Ie,kr=g(()=>{"use strict";Ie=class s{constructor(){}static _windowEvents=[{name:"afterprint",propertyName:"onafterprint",eventObjectName:"Event"},{name:"beforeprint",propertyName:"onbeforeprint",eventObjectName:"Event"},{name:"beforeunload",propertyName:"onbeforeunload",eventObjectName:"Event"},{name:"error",propertyName:"onerror",eventObjectName:"Event"},{name:"load",propertyName:"onload",eventObjectName:"Event"},{name:"hashchange",propertyName:"onhashchange",eventObjectName:"Event"},{name:"message",propertyName:"onmessage",eventObjectName:"Event"},{name:"offline",propertyName:"onoffline",eventObjectName:"Event"},{name:"online",propertyName:"ononline",eventObjectName:"Event"},{name:"pageshow",propertyName:"onpageshow",eventObjectName:"Event"},{name:"popstate",propertyName:"onpopstate",eventObjectName:"Event"},{name:"resize",propertyName:"onresize",eventObjectName:"Event"},{name:"storage",propertyName:"onstorage",eventObjectName:"Event"},{name:"unload",propertyName:"onunload",eventObjectName:"Event"}];static _allElements=[{name:"contextmenu",propertyName:"oncontextmenu",eventObjectName:"PointerEvent"}];static _focusableEvents=[{name:"blur",propertyName:"onblur",eventObjectName:"FocusEvent"},{name:"focus",propertyName:"onfocus",eventObjectName:"FocusEvent"},{name:"keydown",propertyName:"onkeydown",eventObjectName:"KeyboardEvent"},{name:"keyup",propertyName:"onkeyup",eventObjectName:"KeyboardEvent"}];static _simpleForm=[{name:"input",propertyName:"oninput",eventObjectName:"InputEvent"},{name:"change",propertyName:"onchange",eventObjectName:"Event"}];static _form=[{name:"beforeinput",propertyName:"onbeforeinput",eventObjectName:"InputEvent"},{name:"invalid",propertyName:"oninvalid",eventObjectName:"Event"},{name:"reset",propertyName:"onreset",eventObjectName:"Event"},{name:"select",propertyName:"onselect",eventObjectName:"Event"},{name:"submit",propertyName:"onsubmit",eventObjectName:"SubmitEvent"}];static _simpleMouseEvents=[{name:"click",propertyName:"onclick",eventObjectName:"PointerEvent"},{name:"dblclick",propertyName:"ondblclick",eventObjectName:"MouseEvent"},{name:"wheel",propertyName:"onwheel",eventObjectName:"WheelEvent"},{name:"scroll",propertyName:"onscroll",eventObjectName:"Event"}];static _mouseEvents=[{name:"mousedown",propertyName:"onmousedown",eventObjectName:"MouseEvent"},{name:"mouseup",propertyName:"onmouseup",eventObjectName:"MouseEvent"},{name:"mousemove",propertyName:"onmousemove",eventObjectName:"MouseEvent"},{name:"mouseover",propertyName:"onmouseover",eventObjectName:"MouseEvent"},{name:"mouseout",propertyName:"onmouseout",eventObjectName:"MouseEvent"}];static _pointerEvents=[{name:"pointerdown",propertyName:"onpointerdown",eventObjectName:"PointerEvent"},{name:"pointerup",propertyName:"onpointerup",eventObjectName:"PointerEvent"},{name:"pointerenter",propertyName:"onpointerenter",eventObjectName:"PointerEvent"},{name:"pointerleave",propertyName:"onpointerleave",eventObjectName:"PointerEvent"},{name:"pointermove",propertyName:"onpointermove",eventObjectName:"PointerEvent"},{name:"pointerover",propertyName:"onpointerover",eventObjectName:"PointerEvent"},{name:"pointerout",propertyName:"onpointerout",eventObjectName:"PointerEvent"},{name:"pointercancel",propertyName:"onpointercancel",eventObjectName:"PointerEvent"}];static _touchEvents=[{name:"touchstart",propertyName:"ontouchstart",eventObjectName:"TouchEvent"},{name:"touchend",propertyName:"ontouchend",eventObjectName:"TouchEvent"},{name:"touchmove",propertyName:"ontouchmove",eventObjectName:"TouchEvent"},{name:"touchcancel",propertyName:"ontouchcancel",eventObjectName:"TouchEvent"}];static _dragEvents=[{name:"drag",propertyName:"ondrag",eventObjectName:"DragEvent"},{name:"dragend",propertyName:"ondragend",eventObjectName:"DragEvent"},{name:"dragenter",propertyName:"ondragenter",eventObjectName:"DragEvent"},{name:"dragleave",propertyName:"ondragleave",eventObjectName:"DragEvent"},{name:"dragover",propertyName:"ondragover",eventObjectName:"DragEvent"},{name:"dragstart",propertyName:"ondragstart",eventObjectName:"DragEvent"},{name:"drop",propertyName:"ondrop",eventObjectName:"DragEvent"}];static _clipboard=[{name:"copy",propertyName:"oncopy",eventObjectName:"ClipboardEvent"},{name:"cut",propertyName:"oncut",eventObjectName:"ClipboardEvent"},{name:"paste",propertyName:"onpaste",eventObjectName:"ClipboardEvent"}];static _details=[{name:"toggle",propertyName:"ontoggle",eventObjectName:"Event"}];static _allEvents=[...s._windowEvents,...s._form,...s._simpleMouseEvents,...s._mouseEvents,...s._pointerEvents,...s._touchEvents,...s._allElements,...s._focusableEvents,...s._dragEvents,...s._clipboard,...s._dragEvents];isHandledElementFromEventsService(e){return!0}getPossibleEvents(e){return e.element instanceof e.window.HTMLInputElement||e.element instanceof e.window.HTMLTextAreaElement||e.element instanceof e.window.HTMLSelectElement?[...s._simpleForm,...s._simpleMouseEvents,...s._form,...s._pointerEvents,...s._allElements,...s._focusableEvents]:[...s._simpleMouseEvents,...s._pointerEvents,...s._allElements,...s._focusableEvents]}getEvent(e,t){return s._allEvents.find(r=>r.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}}});import{DomHelper as Sg,cssFromString as Cg}from"@node-projects/base-custom-webcomponent";var Do,zh=g(()=>{"use strict";Do=class{async provideDemo(e,t,i,r){let n=document.createElement("div"),o=n.attachShadow({mode:"open",serializable:!0});n.style.width="100%",n.style.height="100%",n.style.border="none",n.style.display="none",n.style.overflow="auto",n.style.position="absolute",e.style.position="relative",Sg.removeAllChildnodes(e),e.appendChild(n);let a=[];i.designerCanvas.additionalStyles&&a.push(...i.designerCanvas.additionalStyles),i.stylesheetService&&a.push(...i.stylesheetService.getStylesheets().map(l=>Cg(l.content))),o.adoptedStyleSheets=a,o.innerHTML="","setHTMLUnsafe"in o?o.setHTMLUnsafe(r):o.innerHTML=r,n.style.display=""}}});var To,Fh=g(()=>{"use strict";le();Pe();te();To=class{_elementDefinition;_createdItem;_startPosition;_changeGroup;cursor="crosshair";_rect;constructor(e){this._elementDefinition=e}activated(e){}dispose(){this._createdItem&&this._createdItem.element.parentElement.removeChild(this._createdItem.element)}pointerEventHandler(e,t,i){switch(t.type){case w.PointerDown:this._onPointerDown(e,t);break;case w.PointerMove:this._onPointerMove(e,t);break;case w.PointerUp:this._onPointerUp(e,t);break}}keyboardEventHandler(e,t,i){}sizeOverlapThreshold=!1;async _onPointerDown(e,t){let i=e.getNormalizedEventCoordinates(t);t.preventDefault(),this._startPosition={x:i.x,y:i.y},this._changeGroup=e.rootDesignItem.openGroup("Insert Item"),this._createdItem=await e.serviceContainer.forSomeServicesTillResult("instanceService",r=>r.getElement(this._elementDefinition,e.serviceContainer,e.instanceServiceContainer)),this._createdItem.setStyle("position","absolute"),this._createdItem.setStyle("left",N(this._createdItem,i.x)+"px"),this._createdItem.setStyle("top",N(this._createdItem,i.y)+"px"),this._createdItem.setStyle("width","0"),this._createdItem.setStyle("height","0"),e.rootDesignItem.insertChild(this._createdItem),e.instanceServiceContainer.selectionService.clearSelectedElements()}async _onPointerMove(e,t){let i=e.getNormalizedEventCoordinates(t);if(this._createdItem){this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect"),e.overlayLayer.addOverlay(this.constructor.name,this._rect,D.Foreground),this._rect.setAttribute("class","svg-draw-new-element"),this._rect.setAttribute("x",N(this._createdItem,this._startPosition.x)),this._rect.setAttribute("y",N(this._createdItem,this._startPosition.y)));let r=N(this._createdItem,i.x-this._startPosition.x),n=N(this._createdItem,i.y-this._startPosition.y);parseFloat(""+r)>=0&&(this._rect.setAttribute("width",r),this._createdItem.setStyle("width",r+"px")),parseFloat(""+n)>=0&&(this._rect.setAttribute("height",n),this._createdItem.setStyle("height",n+"px")),(parseFloat(""+r)>5||parseFloat(""+n)>5)&&(this.sizeOverlapThreshold=!0)}}async _onPointerUp(e,t){this.sizeOverlapThreshold?(this._changeGroup.commit(),e.instanceServiceContainer.selectionService.setSelectedElements([this._createdItem],t)):this._changeGroup.abort(),e.overlayLayer.removeOverlay(this._rect),this._startPosition=null,this._rect=null,this._createdItem=null,e.serviceContainer.globalContext.finishedWithTool(this)}}});var Mo,Bh=g(()=>{"use strict";Mo=class{constructor(){}provideButtons(e,t){let i=document.createElement("div");i.className="toolbar-control",i.title="round pixels to";let r=document.createElement("input");return r.type="number",r.step="1",r.min="-1",r.valueAsNumber=e.serviceContainer.options.roundPixelsToDecimalPlaces,r.onchange=()=>e.serviceContainer.options.roundPixelsToDecimalPlaces=r.valueAsNumber,i.appendChild(r),[i]}}});var No,Hh=g(()=>{"use strict";li();ue();fe();No=class extends Ge{commonMathProperties=[{name:"displaystyle",type:"boolean",service:this,defaultValue:!0,propertyType:x.propertyAndAttribute}];mathProperties=[{name:"display",type:"list",values:["block","inline"],service:this,defaultValue:"text",propertyType:x.propertyAndAttribute}];mfracProperties=[{name:"denomalign",type:"list",values:["left","center","right"],service:this,defaultValue:"center",propertyType:x.propertyAndAttribute},{name:"linethickness",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"numalign",type:"list",values:["left","center","right"],service:this,defaultValue:"center",propertyType:x.propertyAndAttribute}];name="mathml";getRefreshMode(e){return G.full}isHandledElement(e){return e.element instanceof e.window.MathMLElement}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){if(!this.isHandledElement(e))return null;switch(e.element.localName){case"math":return[...this.commonMathProperties,...this.mathProperties];case"merror":return[...this.commonMathProperties];case"mfrac":return[...this.commonMathProperties,...this.mfracProperties];default:return[...this.commonMathProperties]}}}});var Lo,Gh=g(()=>{"use strict";ie();le();Mt();te();ze();Tn();Lo=class extends R{_geometry=null;_reader;_dragState=null;_options;_overlayStructureSignature=null;_eventCleanups=[];_overlayCircles=new Map;_overlayLines=[];constructor(e,t,i,r,n){super(e,t,i),this._reader=r??Dn(i.element),this._options=n??{}}extend(){this.refresh()}refresh(){if(!this._reader){this._cleanupAll();return}if(this._geometry=this._reader.read(this.extendedItem.element),!this._geometry){this._cleanupAll();return}let e=this._getOverlayStructureSignature(this._geometry);if(this._overlayStructureSignature!==e||this._hasOverlayStructureMismatch(this._geometry)){this._cleanupAll(),this._overlayStructureSignature=e,this._drawOverlays();return}this._valuesHaveChanges(...this._getRefreshValues(this._geometry))&&(this._updateOverlayAppearance(),this._updateOverlayPositions())}dispose(){this._cleanupAll(),this._geometry=null,this._dragState=null}_cleanupAll(){for(let e of this._eventCleanups)try{e()}catch{}this._eventCleanups=[],this._overlayStructureSignature=null,this._overlayCircles.clear(),this._overlayLines=[],this._removeAllOverlays()}_getOverlayStructureSignature(e){return e.segments.map(t=>`${t.type}:${t.cp1?1:0}:${t.cp2?1:0}`).join("|")}_hasOverlayStructureMismatch(e){let t=0,i=0;for(let r=0;r<e.segments.length;r++){let n=e.segments[r];n.type!==_.Close&&(this._shouldRenderAnchorHandle(r,n,e)&&i++,n.cp1&&(i++,t++,n.type===_.QuadraticBezier&&t++),n.cp2&&(i++,t++))}return this._overlayCircles.size!==i||this._overlayLines.length!==t}_getRefreshValues(e){let t=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0],i=[this.designerCanvas.zoomFactor,this.designerCanvas.scaleFactor,this._overlayStructureSignature??""];t&&i.push(t.p1.x,t.p1.y,t.p2.x,t.p2.y,t.p3.x,t.p3.y,t.p4.x,t.p4.y);for(let r of e.segments)i.push(r.type,r.point.x,r.point.y),r.cp1?i.push(r.cp1.x,r.cp1.y):i.push("cp1:none"),r.cp2?i.push(r.cp2.x,r.cp2.y):i.push("cp2:none");return i}_toOverlay(e){let t=this._getSvgOverlayTransform();if(t&&t.bbox.width!==0&&t.bbox.height!==0)return this._mapSvgPointToOverlay(e,t);let i=this._toElementReferenceBoxPoint(e),r=this.designerCanvas.canvas.convertPointFromNode(i,this.extendedItem.element);return{x:r.x,y:r.y}}_fromOverlay(e){let t=this._getSvgOverlayTransform();if(t&&t.bbox.width!==0&&t.bbox.height!==0)return this._mapOverlayPointToSvg(e,t);let i=this.extendedItem.element.convertPointFromNode({x:e.x,y:e.y},this.designerCanvas.canvas);return this._fromElementReferenceBoxPoint({x:i.x,y:i.y})}_getSvgOverlayTransform(){let e=this.extendedItem.element;if(!(e instanceof SVGGraphicsElement)||e instanceof SVGSVGElement)return null;let t=e.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];return t?{bbox:e.getBBox(),quad:t}:null}_mapSvgPointToOverlay(e,t){let{bbox:i,quad:r}=t,n=(e.x-i.x)/i.width,o=(e.y-i.y)/i.height;return{x:r.p1.x+(r.p2.x-r.p1.x)*n+(r.p4.x-r.p1.x)*o,y:r.p1.y+(r.p2.y-r.p1.y)*n+(r.p4.y-r.p1.y)*o}}_mapOverlayPointToSvg(e,t){let{bbox:i,quad:r}=t,n={x:r.p2.x-r.p1.x,y:r.p2.y-r.p1.y},o={x:r.p4.x-r.p1.x,y:r.p4.y-r.p1.y},a=e.x-r.p1.x,l=e.y-r.p1.y,c=n.x*o.y-n.y*o.x;if(Math.abs(c)<1e-10)return this._fromElementReferenceBoxPoint(this.extendedItem.element.convertPointFromNode({x:e.x,y:e.y},this.designerCanvas.canvas));let h=(a*o.y-l*o.x)/c,d=(l*n.x-a*n.y)/c;return{x:i.x+h*i.width,y:i.y+d*i.height}}_toElementReferenceBoxPoint(e){let t=this._getSvgGeometryBBoxOffset();return{x:e.x-t.x,y:e.y-t.y}}_fromElementReferenceBoxPoint(e){let t=this._getSvgGeometryBBoxOffset();return{x:e.x+t.x,y:e.y+t.y}}_getSvgGeometryBBoxOffset(){let e=this.extendedItem.element;if(!(e instanceof SVGGraphicsElement)||e instanceof SVGSVGElement)return{x:0,y:0};let t=e.getBBox();return{x:t.x,y:t.y}}_drawOverlays(){if(!this._geometry)return;let e=null;for(let t=0;t<this._geometry.segments.length;t++){let i=this._geometry.segments[t];if(i.type===_.Close){e=this._geometry.segments[0]?.point??null;continue}if(i.cp1){let r=this._toOverlay(i.cp1);if(e){let n=this._toOverlay(e),o=this._drawLine(n.x,n.y,r.x,r.y,"svg-control-line");this._overlayLines.push(o)}if(i.type===_.QuadraticBezier){let n=this._toOverlay(i.point),o=this._drawLine(n.x,n.y,r.x,r.y,"svg-control-line");this._overlayLines.push(o)}this._drawControlCircle(r,t,"cp1")}if(i.cp2){let r=this._toOverlay(i.cp2),n=this._toOverlay(i.point),o=this._drawLine(n.x,n.y,r.x,r.y,"svg-control-line");this._overlayLines.push(o),this._drawControlCircle(r,t,"cp2")}if(this._shouldRenderAnchorHandle(t,i,this._geometry)){let r=this._toOverlay(i.point);this._drawAnchorCircle(r,t,i)}e=i.point}this._updateOverlayAppearance()}_updateOverlayAppearance(){let e=5/this.designerCanvas.scaleFactor,t=4/this.designerCanvas.scaleFactor,i=(1/this.designerCanvas.zoomFactor).toString(),r=(4/this.designerCanvas.scaleFactor).toString();for(let[n,o]of this._overlayCircles)o.setAttribute("r",(n.startsWith("anchor-")?e:t).toString()),o.style.strokeWidth=i;for(let n of this._overlayLines)n.style.strokeDasharray=r,n.style.strokeWidth=i}_addTrackedListener(e,t,i){e.addEventListener(t,i),this._eventCleanups.push(()=>e.removeEventListener(t,i))}_drawAnchorCircle(e,t,i){let r=5/this.designerCanvas.scaleFactor,n=this._drawCircle(e.x,e.y,r,"svg-path",void 0,D.Foreground);n.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),n.style.cursor="move",this._overlayCircles.set(`anchor-${t}`,n);let o=h=>this._onPointerDown(h,n,t,"anchor"),a=h=>this._onPointerMove(h,n,t,"anchor"),l=h=>this._onPointerUp(h,t),c=h=>{h.preventDefault(),this._showContextMenu(h,t,i)};this._addTrackedListener(n,w.PointerDown,o),this._addTrackedListener(n,w.PointerMove,a),this._addTrackedListener(n,w.PointerUp,l),this._addTrackedListener(n,w.ContextMenu,c)}_drawControlCircle(e,t,i){let r=4/this.designerCanvas.scaleFactor,n=this._drawCircle(e.x,e.y,r,"svg-control-point",void 0,D.Foreground);n.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),n.style.cursor="move",this._overlayCircles.set(`${i}-${t}`,n);let o=c=>this._onPointerDown(c,n,t,i),a=c=>this._onPointerMove(c,n,t,i),l=c=>this._onPointerUp(c,t);this._addTrackedListener(n,w.PointerDown,o),this._addTrackedListener(n,w.PointerMove,a),this._addTrackedListener(n,w.PointerUp,l)}_onPointerDown(e,t,i,r){e.stopPropagation(),e.preventDefault(),e.target.setPointerCapture(e.pointerId);let n=this.designerCanvas.getNormalizedEventCoordinates(e);if(!this._geometry)return;let o=this._geometry.segments[i],a;r==="anchor"?a={...o.point}:r==="cp1"?a={...o.cp1}:a={...o.cp2};let l=this._geometry.segments.map(c=>({point:{...c.point},cp1:c.cp1?{...c.cp1}:void 0,cp2:c.cp2?{...c.cp2}:void 0}));this._dragState={startCursorPos:n,segmentIndex:i,handleType:r,originalPoint:a,originalSegments:l,startScrollOffset:this.designerCanvas.canvasOffset}}_onPointerMove(e,t,i,r){if(e.stopPropagation(),e.preventDefault(),!this._dragState||!this._geometry||e.buttons===0||this._dragState.segmentIndex!==i||this._dragState.handleType!==r)return;let n=this.designerCanvas.getNormalizedEventCoordinates(e),o=n.x-this._dragState.startCursorPos.x,a=n.y-this._dragState.startCursorPos.y;e.shiftKey&&(Math.abs(o)>=Math.abs(a)?a=0:o=0),e.altKey&&r==="anchor"&&this._options.allowShapeDrag!==!1?this._dragWholeShape(o,a):this._dragSingleHandle(i,r,o,a),this._applyGeometryToElement(),this._updateOverlayPositions(),this.designerCanvas.extensionManager.refreshAllExtensions([this.extendedItem],this)}_dragSingleHandle(e,t,i,r){let n=this._toOverlay(this._dragState.originalPoint),o={x:n.x+i,y:n.y+r},a=this._fromOverlay(o),l=this._geometry.segments[e];if(t==="anchor"){if(this.extendedItem.element instanceof SVGRectElement&&this._dragRectCorner(e,a)||this.extendedItem.element instanceof SVGCircleElement&&this._dragCircleCardinal(e,a)||this.extendedItem.element instanceof SVGEllipseElement&&this._dragEllipseCardinal(e,a))return;l.point.x=a.x,l.point.y=a.y}else t==="cp1"?(l.cp1.x=a.x,l.cp1.y=a.y):(l.cp2.x=a.x,l.cp2.y=a.y)}_dragRectCorner(e,t){if(!this._geometry||!this._dragState?.originalSegments||this._geometry.segments.length<4||e<0||e>3)return!1;let i=this._dragState.originalSegments;switch(e){case 0:this._setRectCornerPoints(t,{x:i[2].point.x,y:t.y},{...i[2].point},{x:t.x,y:i[2].point.y});break;case 1:this._setRectCornerPoints({x:i[3].point.x,y:t.y},t,{x:t.x,y:i[3].point.y},{...i[3].point});break;case 2:this._setRectCornerPoints({...i[0].point},{x:t.x,y:i[0].point.y},t,{x:i[0].point.x,y:t.y});break;case 3:this._setRectCornerPoints({x:t.x,y:i[1].point.y},{...i[1].point},{x:i[1].point.x,y:t.y},t);break;default:return!1}let r=this._geometry.segments[4];return r?.type===_.Close&&(r.point={...this._geometry.segments[0].point}),!0}_setRectCornerPoints(e,t,i,r){this._geometry.segments[0].point={...e},this._geometry.segments[1].point={...t},this._geometry.segments[2].point={...i},this._geometry.segments[3].point={...r}}_dragCircleCardinal(e,t){if(!this._geometry||!this._dragState?.originalSegments)return!1;let i=this._normalizeCardinalIndex(e);if(i===null)return!1;let r=this._dragState.originalSegments,n=(r[1].point.x+r[3].point.x)/2,o=(r[0].point.y+r[2].point.y)/2,a=n,l=o,c=Math.abs(r[1].point.x-r[3].point.x)/2;switch(i){case 0:{let h=r[2].point.y;l=(t.y+h)/2,c=Math.abs(h-t.y)/2;break}case 1:{let h=r[3].point.x;a=(t.x+h)/2,c=Math.abs(t.x-h)/2;break}case 2:{let h=r[0].point.y;l=(r[0].point.y+t.y)/2,c=Math.abs(t.y-h)/2;break}case 3:{let h=r[1].point.x;a=(h+t.x)/2,c=Math.abs(h-t.x)/2;break}default:return!1}return this._setCardinalArcPoints(a,l,c,c),!0}_dragEllipseCardinal(e,t){if(!this._geometry||!this._dragState?.originalSegments)return!1;let i=this._normalizeCardinalIndex(e);if(i===null)return!1;let r=this._dragState.originalSegments,n=(r[1].point.x+r[3].point.x)/2,o=(r[0].point.y+r[2].point.y)/2,a=Math.abs(r[1].point.x-r[3].point.x)/2,l=Math.abs(r[2].point.y-r[0].point.y)/2;switch(i){case 0:{let c=r[2].point.y;o=(t.y+c)/2,l=Math.abs(c-t.y)/2;break}case 1:{let c=r[3].point.x;n=(t.x+c)/2,a=Math.abs(t.x-c)/2;break}case 2:{let c=r[0].point.y;o=(c+t.y)/2,l=Math.abs(t.y-c)/2;break}case 3:{let c=r[1].point.x;n=(c+t.x)/2,a=Math.abs(c-t.x)/2;break}default:return!1}return this._setCardinalArcPoints(n,o,a,l),!0}_normalizeCardinalIndex(e){return e>=0&&e<=3?e:e===4?0:null}_setCardinalArcPoints(e,t,i,r){this._geometry&&(this._geometry.segments[0].point={x:e,y:t-r},this._geometry.segments[1].point={x:e+i,y:t},this._geometry.segments[2].point={x:e,y:t+r},this._geometry.segments[3].point={x:e-i,y:t},this._geometry.segments[1].arc&&(this._geometry.segments[1].arc.rx=i,this._geometry.segments[1].arc.ry=r),this._geometry.segments[2].arc&&(this._geometry.segments[2].arc.rx=i,this._geometry.segments[2].arc.ry=r),this._geometry.segments[3].arc&&(this._geometry.segments[3].arc.rx=i,this._geometry.segments[3].arc.ry=r),this._geometry.segments[4]?.arc&&(this._geometry.segments[4].point={x:e,y:t-r},this._geometry.segments[4].arc.rx=i,this._geometry.segments[4].arc.ry=r),this._geometry.segments[5]?.type===_.Close&&(this._geometry.segments[5].point={x:e,y:t-r}))}_shouldRenderAnchorHandle(e,t,i){if(!(this.extendedItem.element instanceof SVGCircleElement)&&!(this.extendedItem.element instanceof SVGEllipseElement)||e!==4)return!0;let r=i.segments[0];return t.point.x!==r?.point.x||t.point.y!==r?.point.y}_dragWholeShape(e,t){if(!(!this._dragState?.originalSegments||!this._geometry))for(let i=0;i<this._geometry.segments.length;i++){let r=this._dragState.originalSegments[i],n=this._geometry.segments[i],o=this._toOverlay(r.point),a={x:o.x+e,y:o.y+t},l=this._fromOverlay(a);if(n.point.x=l.x,n.point.y=l.y,n.cp1&&r.cp1){let c=this._toOverlay(r.cp1),h={x:c.x+e,y:c.y+t},d=this._fromOverlay(h);n.cp1.x=d.x,n.cp1.y=d.y}if(n.cp2&&r.cp2){let c=this._toOverlay(r.cp2),h={x:c.x+e,y:c.y+t},d=this._fromOverlay(h);n.cp2.x=d.x,n.cp2.y=d.y}}}_updateOverlayPositions(){if(!this._geometry)return;let e=null,t=0;for(let i=0;i<this._geometry.segments.length;i++){let r=this._geometry.segments[i];if(r.type===_.Close){e=this._geometry.segments[0]?.point??null;continue}if(r.cp1){let n=this._toOverlay(r.cp1);if(e&&t<this._overlayLines.length){let a=this._toOverlay(e),l=this._overlayLines[t++];l.setAttribute("x1",a.x.toString()),l.setAttribute("y1",a.y.toString()),l.setAttribute("x2",n.x.toString()),l.setAttribute("y2",n.y.toString())}if(r.type===_.QuadraticBezier&&t<this._overlayLines.length){let a=this._toOverlay(r.point),l=this._overlayLines[t++];l.setAttribute("x1",a.x.toString()),l.setAttribute("y1",a.y.toString()),l.setAttribute("x2",n.x.toString()),l.setAttribute("y2",n.y.toString())}let o=this._overlayCircles.get(`cp1-${i}`);o&&(o.setAttribute("cx",n.x.toString()),o.setAttribute("cy",n.y.toString()))}if(r.cp2){let n=this._toOverlay(r.cp2),o=this._toOverlay(r.point);if(t<this._overlayLines.length){let l=this._overlayLines[t++];l.setAttribute("x1",o.x.toString()),l.setAttribute("y1",o.y.toString()),l.setAttribute("x2",n.x.toString()),l.setAttribute("y2",n.y.toString())}let a=this._overlayCircles.get(`cp2-${i}`);a&&(a.setAttribute("cx",n.x.toString()),a.setAttribute("cy",n.y.toString()))}if(this._shouldRenderAnchorHandle(i,r,this._geometry)){let n=this._toOverlay(r.point),o=this._overlayCircles.get(`anchor-${i}`);o&&(o.setAttribute("cx",n.x.toString()),o.setAttribute("cy",n.y.toString()))}e=r.point}}_onPointerUp(e,t){e.stopPropagation(),e.target.releasePointerCapture(e.pointerId),this._dragState&&this._geometry&&(this._commitGeometryChange(),this._dragState=null)}_applyGeometryToElement(){if(!this._reader||!this._geometry)return;let e=this._reader.serialize(this._geometry);for(let t of e)this.extendedItem.element.setAttribute(t.attribute,t.value)}_commitGeometryChange(){if(!this._reader||!this._geometry)return;let e=this._reader.serialize(this._geometry),t=this.extendedItem.openGroup("editGeometry");for(let i of e)this.extendedItem.setAttribute(i.attribute,i.value);t.commit()}_showContextMenu(e,t,i){if(!this._geometry)return;let r=[],n=this.extendedItem.element instanceof SVGPathElement;if(this._geometry.segments.filter(a=>a.type!==_.Close).length>2&&r.push({title:"Delete point",action:()=>{this._geometry&&(this._geometry.segments.splice(t,1),t===0&&this._geometry.segments.length>0&&this._geometry.segments[0].type!==_.Close&&(this._geometry.segments[0].type=_.Move),this._applyGeometryToElement(),this._commitGeometryChange())}}),n&&this._findNextNonCloseSegment(t)!==null&&r.push({title:"Insert point after",action:()=>{this._insertPointAfter(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),n&&this._geometry.segments.length>0){let a=this._geometry.segments.some(c=>c.type===_.Close),l=this._findLastNonCloseIndex();(t===l||a&&i.type!==_.Close)&&(r.push({title:"---"}),a?r.push({title:"Open path",action:()=>{this._geometry&&(this._geometry.segments=this._geometry.segments.filter(c=>c.type!==_.Close),this._geometry.closed=!1,this._applyGeometryToElement(),this._commitGeometryChange())}}):r.push({title:"Close path",action:()=>{this._geometry&&(this._geometry.segments.push({type:_.Close,relative:!1,point:this._geometry.segments[0].point}),this._geometry.closed=!0,this._applyGeometryToElement(),this._commitGeometryChange())}}))}n&&t>0&&i.type!==_.Move&&i.type!==_.Close&&(r.push({title:"---"}),i.type!==_.Line&&i.type!==_.HorizontalLine&&i.type!==_.VerticalLine&&r.push({title:"Convert to line",action:()=>{this._convertToLine(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==_.QuadraticBezier&&r.push({title:"Convert to quadratic b\xE9zier",action:()=>{this._convertToQuadratic(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==_.CubicBezier&&r.push({title:"Convert to cubic b\xE9zier",action:()=>{this._convertToCubic(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==_.Arc?(r.push({title:"Convert to arc",action:()=>{this._convertToArc(t,!1),this._applyGeometryToElement(),this._commitGeometryChange()}}),r.push({title:"Convert to inverted arc",action:()=>{this._convertToArc(t,!0),this._applyGeometryToElement(),this._commitGeometryChange()}})):r.push({title:"Invert arc",action:()=>{this._invertArc(t),this._applyGeometryToElement(),this._commitGeometryChange()}})),r.length>0&&be.show(r,e)}_findLastNonCloseIndex(){if(!this._geometry)return-1;for(let e=this._geometry.segments.length-1;e>=0;e--)if(this._geometry.segments[e].type!==_.Close)return e;return-1}_findNextNonCloseSegment(e){if(!this._geometry)return null;for(let t=e+1;t<this._geometry.segments.length;t++)if(this._geometry.segments[t].type!==_.Close)return t;return null}_findPreviousAnchor(e){if(!this._geometry)return null;for(let t=e-1;t>=0;t--){let i=this._geometry.segments[t];if(i.type!==_.Close)return i.point}return null}_insertPointAfter(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findNextNonCloseSegment(e);if(i===null)return;let r=this._geometry.segments[i],n;switch(r.type){case _.CubicBezier:{let a=t.point,l=r.cp1,c=r.cp2,h=r.point;n=this._evalCubicBezier(a,l,c,h,.5);break}case _.QuadraticBezier:{let a=t.point,l=r.cp1,c=r.point;n=this._evalQuadraticBezier(a,l,c,.5);break}default:{n={x:(t.point.x+r.point.x)/2,y:(t.point.y+r.point.y)/2};break}}let o={type:_.Line,relative:t.relative,point:n};this._geometry.segments.splice(e+1,0,o)}_convertToLine(e){if(!this._geometry)return;let t=this._geometry.segments[e];t.type=_.Line,delete t.cp1,delete t.cp2,delete t.arc}_convertToQuadratic(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);if(!i)return;let r=t.point,n=(i.x+r.x)/2,o=(i.y+r.y)/2,a=Math.sqrt(Math.pow(r.x-i.x,2)+Math.pow(r.y-i.y,2)),l=Math.max(20,a*.25),c=Math.atan2(r.y-i.y,r.x-i.x)-Math.PI/2;t.type=_.QuadraticBezier,t.cp1={x:n+l*Math.cos(c),y:o+l*Math.sin(c)},delete t.cp2,delete t.arc}_convertToCubic(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);if(!i)return;let r=t.point;if(t.type===_.QuadraticBezier&&t.cp1){t.type=_.CubicBezier;let n=t.cp1;t.cp1={x:i.x+2/3*(n.x-i.x),y:i.y+2/3*(n.y-i.y)},t.cp2={x:r.x+2/3*(n.x-r.x),y:r.y+2/3*(n.y-r.y)}}else t.type=_.CubicBezier,t.cp1={x:i.x+(r.x-i.x)/3,y:i.y+(r.y-i.y)/3},t.cp2={x:i.x+2*(r.x-i.x)/3,y:i.y+2*(r.y-i.y)/3};delete t.arc}_convertToArc(e,t=!1){if(!this._geometry)return;let i=this._geometry.segments[e],r=this._findPreviousAnchor(e);if(!r)return;let n=i.point,o=n.x-r.x,a=n.y-r.y,l=Math.sqrt(o*o+a*a),c=Math.max(1,l/2);i.type=_.Arc,i.arc={rx:c,ry:c,rotation:0,largeArc:!1,sweep:!t},delete i.cp1,delete i.cp2}_invertArc(e){if(!this._geometry)return;let t=this._geometry.segments[e];t.type!==_.Arc||!t.arc||(t.arc.sweep=!t.arc.sweep)}_evalCubicBezier(e,t,i,r,n){let o=1-n;return{x:o*o*o*e.x+3*o*o*n*t.x+3*o*n*n*i.x+n*n*n*r.x,y:o*o*o*e.y+3*o*o*n*t.y+3*o*n*n*i.y+n*n*n*r.y}}_evalQuadraticBezier(e,t,i,r){let n=1-r;return{x:n*n*e.x+2*n*r*t.x+r*r*i.x,y:n*n*e.y+2*n*r*t.y+r*r*i.y}}}});import{css as Eg}from"@node-projects/base-custom-webcomponent";var Oo,Wh=g(()=>{"use strict";Gh();Pi();Oo=class{_customReader;constructor(e){this._customReader=e}shouldExtend(e,t,i){if(this._customReader)return!0;let r=i.node;return r instanceof SVGPathElement||r instanceof SVGRectElement||r instanceof SVGLineElement||r instanceof SVGEllipseElement||r instanceof SVGCircleElement||r instanceof SVGPolygonElement||r instanceof SVGPolylineElement?Un(r):!1}getExtension(e,t,i){return new Lo(e,t,i,this._customReader)}style=Eg`.svg-control-line{stroke:#3899ec;fill:none;stroke-dasharray:4;pointer-events:none;opacity:.9}.svg-control-point{stroke:#3899ec;fill:#fff;pointer-events:auto}`}});var Et,jh=g(()=>{"use strict";Et=class{constructor(e,t,i=!1){this.extensionProvider=e,this.condition=t,this.style=e.style??e.constructor.style,this.svgDefs=e.svgDefs??e.constructor.svgDefs}extensionProvider;condition;style;svgDefs;shouldExtend(e,t,i){return this.condition(i,t)?this.extensionProvider.shouldExtend(e,t,i):!1}getExtension(e,t,i){return this.extensionProvider.getExtension(e,t,i)}}});var lt,Be,Je=g(()=>{"use strict";se();ie();Ne();lt="basicStackedToolbarExtensionShowOverlay",Be=class s extends R{static basicTemplate=Kd`<select title="position" id="position" style="pointer-events:auto;height:24px;width:80px;padding:0;font-weight:900;text-transform:uppercase;margin-left:5px;margin-right:10px"><option>static</option><option>relative</option><option>absolute</option><option>fixed</option></select><node-projects-image-button-list-selector id="inline" no-value-in-header property="inline"><img data-value="block" title="block" src="${C}images/display/block.svg"> <img data-value="inline" title="inline" src="${C}images/display/inline.svg"></node-projects-image-button-list-selector><select title="display" id="displayType" style="pointer-events:auto;height:24px;width:80px;padding:0;font-weight:900;text-transform:uppercase;margin-left:5px;margin-right:10px"><option>block</option><option>flex</option><option>grid</option></select>`;static toolBars=[];_toolbar;_size={width:220,height:30};_display;_inline;constructor(e,t,i){super(e,t,i)}extend(e,t){let i=getComputedStyle(this.extendedItem.element);this._display=i.display.replace("inline-","").replace("inline","block"),this._inline=i.display.startsWith("inline")?"inline":"block",this._toolbar=this.createToolbar(this.constructor.template,this._size.width,this._size.height),s.toolBars.push(this._toolbar);let r=this._toolbar.getById("position");r&&(r.value=i.position,r.onchange=async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync("position",r.value),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])});let n=this._toolbar.getById("displayType");n&&(n.value=this._display,n.onchange=async()=>{this._display=n.value,await this.updateDisplayValue(),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])});let o=this._toolbar.getById("inline");o&&(o.value=this._inline,o.addEventListener("value-changed",async()=>{this._inline=o.value,this._inline&&i.position==="absolute"&&this.extendedItem.setStyle("position","static"),await this.updateDisplayValue(),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])}))}async updateDisplayValue(){let e=(this._inline=="inline"?"inline ":"")+this._display;e==="inline block"&&(e="inline"),await this.extendedItem.updateStyleInSheetOrLocalAsync("display",e)}refresh(e,t){if(t){let i=this.designerCanvas.getNormalizedEventCoordinates(t),r=0;for(let n=0;n<s.toolBars.length-1&&s.toolBars[n]!==this._toolbar;n++)r+=this._toolbar.children[0].getBoundingClientRect().height+4;this._toolbar.updatePosition({x:i.x-16/this.designerCanvas.zoomFactor,y:i.y-r-(this._size.height+14)/this.designerCanvas.zoomFactor})}}_addStyleButton(e){let t=getComputedStyle(this.extendedItem.element),i=this._toolbar.getById(e);i.addEventListener("value-changed",async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync(e,i.value)}),i.value=t[e]}dispose(){s.toolBars.splice(s.toolBars.indexOf(this._toolbar),1),this._removeAllOverlays()}}});import{html as Pg}from"@node-projects/base-custom-webcomponent";var Vo,Uh=g(()=>{"use strict";Je();se();Vo=class extends Be{static template=Pg`<div style="height:100%;width:100%">${Be.basicTemplate} <select title="display" id="gridType" style="pointer-events:auto;height:24px;width:60px;padding:0;margin-right:10px"><option>1x1</option><option>1x16</option><option>2x8</option><option>4x4</option><option>8x2</option><option>16x1</option><option>custom</option></select><node-projects-image-button-list-selector property="align-content" no-value-in-header id="align-content"><img title="center" data-value="center" src="${C}images/chromeDevtools/align-content-center-icon.svg"> <img title="space-around" data-value="space-around" src="${C}images/chromeDevtools/align-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${C}images/chromeDevtools/align-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${C}images/chromeDevtools/align-content-space-between-icon.svg"> <img title="stretch" data-value="stretch" src="${C}images/chromeDevtools/align-content-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-content" no-value-in-header id="justify-content"><img title="start" data-value="start" src="${C}images/chromeDevtools/justify-content-start-icon.svg"> <img title="center" data-value="center" src="${C}images/chromeDevtools/justify-content-center-icon.svg"> <img title="end" data-value="end" src="${C}images/chromeDevtools/justify-content-end-icon.svg"> <img title="space-around" data-value="space-around" src="${C}images/chromeDevtools/justify-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${C}images/chromeDevtools/justify-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${C}images/chromeDevtools/justify-content-space-between-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-items" no-value-in-header id="align-items"><img title="start" data-value="start" src="${C}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${C}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${C}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${C}images/chromeDevtools/align-items-stretch-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${C}images/chromeDevtools/align-items-baseline-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-items" no-value-in-header id="justify-items"><img title="start" data-value="start" src="${C}images/chromeDevtools/justify-items-start-icon.svg"> <img title="center" data-value="center" src="${C}images/chromeDevtools/justify-items-center-icon.svg"> <img title="end" data-value="end" src="${C}images/chromeDevtools/justify-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${C}images/chromeDevtools/justify-items-stretch-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=624}extend(e,t){super.extend(e,t);let i=getComputedStyle(this.extendedItem.element),r=this._toolbar.getById("gridType"),n=document.createElement("option");n.innerText=i.gridTemplateColumns.split(" ").length+"x"+i.gridTemplateRows.split(" ").length,r.insertAdjacentElement("afterbegin",n),r.selectedIndex=0,r.onchange=async()=>{if(r.value=="custom"){let o=prompt("Number of columns?","4");if(!o)return;let a=prompt("Number of rows?","4");if(!a)return;let l=this.extendedItem.openGroup("change grid type");await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-columns","repeat("+o+", 1fr)"),await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-rows","repeat("+a+", 1fr)"),l.commit()}else{let o=r.value.split("x"),a=this.extendedItem.openGroup("change grid type");await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-columns","repeat("+o[0]+", 1fr)"),await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-rows","repeat("+o[1]+", 1fr)"),a.commit()}},this._addStyleButton("align-content"),this._addStyleButton("justify-content"),this._addStyleButton("align-items"),this._addStyleButton("justify-items"),this.refresh(e,t)}}});var Ro,Yh=g(()=>{"use strict";Uh();q();Je();Ro=class{shouldExtend(e,t,i){if(i.nodeType===k.Element){let r=getComputedStyle(i.element).display;if(r==="grid"||r==="inline-grid")return t.instanceServiceContainer.designContext.extensionOptions[lt]!==!1}return!1}getExtension(e,t,i){return new Vo(e,t,i)}}});import{html as Ag}from"@node-projects/base-custom-webcomponent";var zo,Xh=g(()=>{"use strict";se();Je();zo=class extends Be{static template=Ag`<div style="height:100%;width:100%">${Be.basicTemplate}<node-projects-image-button-list-selector property="direction" no-value-in-header id="flex-direction"><img title="row" data-value="row" src="${C}images/chromeDevtools/flex-direction-row-icon.svg"> <img title="column" data-value="column" src="${C}images/chromeDevtools/flex-direction-column-icon.svg"> <img title="row-reverse" data-value="row-reverse" style="transform:scaleX(-1)" src="${C}images/chromeDevtools/flex-direction-row-icon.svg"> <img title="column-reverse" data-value="column-reverse" style="transform:scaleY(-1)" src="${C}images/chromeDevtools/flex-direction-column-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="wrap" no-value-in-header id="flex-wrap"><img title="nowrap" data-value="nowrap" src="${C}images/chromeDevtools/flex-wrap-nowrap-icon.svg"> <img title="wrap" data-value="wrap" src="${C}images/chromeDevtools/flex-wrap-wrap-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-content" no-value-in-header id="align-content"><img title="start" data-value="start" src="${C}images/chromeDevtools/align-content-flex-start-icon.svg"> <img title="center" data-value="center" src="${C}images/chromeDevtools/align-content-center-icon.svg"> <img title="end" data-value="end" src="${C}images/chromeDevtools/align-content-flex-end-icon.svg"> <img title="space-around" data-value="space-around" src="${C}images/chromeDevtools/align-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${C}images/chromeDevtools/align-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${C}images/chromeDevtools/align-content-space-between-icon.svg"> <img title="stretch" data-value="stretch" src="${C}images/chromeDevtools/align-content-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-content" no-value-in-header id="justify-content"><img title="start" data-value="start" src="${C}images/chromeDevtools/justify-content-start-icon.svg"> <img title="center" data-value="center" src="${C}images/chromeDevtools/justify-content-center-icon.svg"> <img title="end" data-value="end" src="${C}images/chromeDevtools/justify-content-end-icon.svg"> <img title="space-around" data-value="space-around" src="${C}images/chromeDevtools/justify-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${C}images/chromeDevtools/justify-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${C}images/chromeDevtools/justify-content-space-between-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-items" no-value-in-header id="align-items"><img title="start" data-value="start" src="${C}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${C}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${C}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${C}images/chromeDevtools/align-items-stretch-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${C}images/chromeDevtools/align-items-baseline-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=625}extend(e,t){super.extend(e,t),this._addFlexDirectionButton(),this._addStyleButton("flex-wrap"),this._addStyleButton("align-content"),this._addStyleButton("justify-content"),this._addStyleButton("align-items"),this.refresh(e,t)}_addFlexDirectionButton(){let e=getComputedStyle(this.extendedItem.element),t=this._toolbar.getById("flex-direction");t.addEventListener("value-changed",async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync("flex-direction",t.value),this.rotateImagesAcordingFlexDirection(t.value)}),t.value=e["flex-direction"],this.rotateImagesAcordingFlexDirection(t.value)}rotateImagesAcordingFlexDirection(e){let t=0;(e=="column"||e=="column-reverse")&&(t=-90),this._toolbar.getById("flex-wrap").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("align-content").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("justify-content").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("align-items").querySelectorAll("img:nth-child(-n+4)").forEach(i=>i.style.rotate=t+"deg")}}});var Fo,Kh=g(()=>{"use strict";Xh();q();Je();Fo=class{shouldExtend(e,t,i){if(i.nodeType===k.Element){let r=getComputedStyle(i.element).display;if(r==="flex"||r==="inline-flex")return t.instanceServiceContainer.designContext.extensionOptions[lt]!==!1}return!1}getExtension(e,t,i){return new zo(e,t,i)}}});import{html as kg}from"@node-projects/base-custom-webcomponent";var Bo,$h=g(()=>{"use strict";Je();Bo=class extends Be{static template=kg`<div style="height:100%;width:100%">${Be.basicTemplate}</div>`;constructor(e,t,i){super(e,t,i)}extend(e,t){super.extend(e,t),this.refresh(e,t)}}});var Ho,Zh=g(()=>{"use strict";$h();q();Je();Ho=class{shouldExtend(e,t,i){if(i.nodeType===k.Element){let r=getComputedStyle(i.element).display;if(r==="block"||r==="inline"||r==="inline-block")return t.instanceServiceContainer.designContext.extensionOptions[lt]!==!1}return!1}getExtension(e,t,i){return new Bo(e,t,i)}}});var Jt,Qh=g(()=>{"use strict";Ks();Jt=class{_title;_contextMenus;constructor(e,...t){this._title=e,this._contextMenus=t}shouldProvideContextmenu(e,t,i,r){return this._contextMenus.some(n=>!(n instanceof ke)&&n.shouldProvideContextmenu(e,t,i,r))}provideContextMenuItems(e,t,i,r){return[{title:this._title,children:this._contextMenus.map(n=>n.shouldProvideContextmenu(e,t,i,r)?n.provideContextMenuItems(e,t,i,r):[]).flat()}]}}});import{html as Ig}from"@node-projects/base-custom-webcomponent";var Go,qh=g(()=>{"use strict";se();Je();Go=class extends Be{static template=Ig`<div style="height:100%;width:100%"><div style="display:flex;flex-direction:column"><span style="font-size:10px;color:#00aff0">column:</span> <input type="text" title="column" id="gridColumn" style="pointer-events:auto;height:12px;width:45px;padding:0;margin-right:5px"></div><div style="display:flex;flex-direction:column"><span style="font-size:10px;color:#00aff0">row:</span> <input type="text" title="column" id="gridRow" style="pointer-events:auto;height:12px;width:45px;padding:0;margin-right:10px"></div><node-projects-image-button-list-selector property="align-self" no-value-in-header id="align-self"><img title="start" data-value="start" src="${C}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${C}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${C}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${C}images/chromeDevtools/align-items-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-self" no-value-in-header id="justify-self"><img title="start" data-value="start" src="${C}images/chromeDevtools/justify-items-start-icon.svg"> <img title="center" data-value="center" src="${C}images/chromeDevtools/justify-items-center-icon.svg"> <img title="end" data-value="end" src="${C}images/chromeDevtools/justify-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${C}images/chromeDevtools/justify-items-stretch-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=250}extend(e,t){super.extend(e,t);let i=getComputedStyle(this.extendedItem.element),r=this._toolbar.getById("gridColumn");r&&(r.value=i.gridColumn,r.onkeyup=async o=>{o.key==="Enter"&&await this.extendedItem.updateStyleInSheetOrLocalAsync("gridColumn",r.value)});let n=this._toolbar.getById("gridRow");n&&(n.value=i.gridColumn,n.onkeyup=async o=>{o.key==="Enter"&&await this.extendedItem.updateStyleInSheetOrLocalAsync("gridRow",n.value)}),this._addStyleButton("align-self"),this._addStyleButton("justify-self"),this.refresh(e,t)}}});var Wo,Jh=g(()=>{"use strict";q();qh();Je();Wo=class{shouldExtend(e,t,i){if(i.nodeType===k.Element&&i.parent){let r=i.parent?.getComputedStyle();if(r!=null&&(r.display==="grid"||r.display==="inline-grid"))return t.instanceServiceContainer.designContext.extensionOptions[lt]!==!1}return!1}getExtension(e,t,i){return new Go(e,t,i)}}});var jo,ed=g(()=>{"use strict";Je();Wt();jo=class extends We{constructor(){super(lt,"T","show Toolbars")}}});var Uo,td=g(()=>{"use strict";ie();te();Uo=class extends R{constructor(e,t,i){super(e,t,i)}_path;_path2;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=getComputedStyle(this.extendedItem.element);if(i.padding!=="0px"){let r=Number.parseFloat(i.paddingLeft.replace("px","")),n=Number.parseFloat(i.paddingTop.replace("px","")),o=Number.parseFloat(i.paddingRight.replace("px","")),a=Number.parseFloat(i.paddingBottom.replace("px",""));if(r+=Number.parseFloat(i.borderLeftWidth.replace("px","")),n+=Number.parseFloat(i.borderTopWidth.replace("px","")),o+=Number.parseFloat(i.borderRightWidth.replace("px","")),a+=Number.parseFloat(i.borderBottomWidth.replace("px","")),!isNaN(r)&&!isNaN(n)&&!isNaN(o)&&!isNaN(a)){let l=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(l.p1.x)&&this._valuesHaveChanges(r,n,o,a,l.p1.x,l.p1.y,l.p2.x,l.p2.y,l.p3.x,l.p3.y,l.p4.x,l.p4.y)){let c=this.extendedItem.element.getBoxQuads({box:"content",relativeTo:this.designerCanvas.canvas})[0],h="M"+[l.p1,l.p2,l.p3,l.p4].map(d=>d.x+","+d.y).join(" ")+"Z ";h+="M"+[c.p1,c.p2,c.p3,c.p4].map(d=>d.x+","+d.y).join(" ")+"Z ",this._path=this._drawPath(h,"svg-padding-fill",this._path,D.Background),this._path2=this._drawPath(h,"svg-padding",this._path2,D.Background)}}}}dispose(){this._removeAllOverlays()}}});import{css as Zp}from"@node-projects/base-custom-webcomponent";var Yo,id=g(()=>{"use strict";q();td();Pi();Yo=class{shouldExtend(e,t,i){return i.nodeType==k.Element}getExtension(e,t,i){return new Uo(e,t,i)}static style=Zp`.svg-padding{fill:#32cd3266;fill-rule:evenodd}`;style=Zp`.svg-padding-fill{fill:#32cd3266;fill-rule:evenodd}.svg-padding{fill:#32cd32FF;fill-rule:evenodd;mask:url(#mask-stripe-padding)}`;static svgDefs=Ei`<pattern id="pattern-stripe-padding" patternUnits="userSpaceOnUse" width="10" height="10" patternTransform="rotate(45)" class="pattern"><line x1="0" y="0" x2="0" y2="10" stroke="color(display-p3 1 0 1 / 80%)" stroke-width="1"></line></pattern><mask id="mask-stripe-padding"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-padding)"></mask>`}});var Xo,rd=g(()=>{"use strict";le();$t();ie();Xo=class extends R{_actionModeStarted;_initialPoint;_circle1;_circle2;_circle3;_circle4;_circle5;_circle6;_circle7;_circle8;_initialComputedTransformOrigins;_initialTransformOrigins;_styleBackup;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(isNaN(i.p1.x)||isNaN(i.p2.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p4.x,i.p4.y,i.p3.x,i.p3.y)&&(this._circle1=this._drawResizerOverlay(i.p1.x,i.p1.y,"nw-resize",this._circle1),this._circle2=this._drawResizerOverlay(i.p1.x+(i.p2.x-i.p1.x)/2,i.p1.y+(i.p2.y-i.p1.y)/2,"n-resize",this._circle2),this._circle3=this._drawResizerOverlay(i.p2.x,i.p2.y,"ne-resize",this._circle3),this._circle4=this._drawResizerOverlay(i.p1.x+(i.p4.x-i.p1.x)/2,i.p1.y+(i.p4.y-i.p1.y)/2,"w-resize",this._circle4),this._circle5=this._drawResizerOverlay(i.p4.x,i.p4.y,"sw-resize",this._circle5),this._circle6=this._drawResizerOverlay(i.p4.x+(i.p3.x-i.p4.x)/2,i.p4.y+(i.p3.y-i.p4.y)/2,"s-resize",this._circle6),this._circle8=this._drawResizerOverlay(i.p2.x+(i.p3.x-i.p2.x)/2,i.p2.y+(i.p3.y-i.p2.y)/2,"e-resize",this._circle8),this._circle7=this._drawResizerOverlay(i.p3.x,i.p3.y,"se-resize",this._circle7))}_drawResizerOverlay(e,t,i,r){let n=this._drawCircle(e,t,this.designerCanvas.serviceContainer.options.resizerPixelSize/this.designerCanvas.zoomFactor,"svg-grid-resizer",r);return n.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),r||(n.addEventListener(w.PointerDown,o=>this._pointerActionTypeResize(n,o,i)),n.addEventListener(w.PointerMove,o=>this._pointerActionTypeResize(n,o,i)),n.addEventListener(w.PointerUp,o=>this._pointerActionTypeResize(n,o,i))),n.style.cursor=i,n}_pointerActionTypeResize(e,t,i){t.stopPropagation();let r=this.designerCanvas.getNormalizedEventCoordinates(t);switch(t.type){case w.PointerDown:this._styleBackup=this.extendedItem.element.getAttribute("style"),t.target.setPointerCapture(t.pointerId),this._initialPoint=r,this._actionModeStarted=i,this._initialComputedTransformOrigins=[],this._initialTransformOrigins=[];let n=getComputedStyle(this.extendedItem.element).transformOrigin.split(" ").map(m=>parseFloat(m.replace("px",""))),o=new DOMPoint(n[0],n[1]);this._initialComputedTransformOrigins.push(o),this._initialTransformOrigins.push(this.extendedItem.element.style.transformOrigin);break;case w.PointerMove:if(this._initialPoint){let m=0,u=0,f=qe(this.extendedItem.parent),y=ur(this.extendedItem.parent,this.designerCanvas.getNormalizedEventCoordinates(t)),v=getComputedStyle(this.extendedItem.element);this.extendedItem.element.style.gridColumnStart=v.gridColumnStart,this.extendedItem.element.style.gridColumnEnd=v.gridColumnEnd==="auto"?""+(parseInt(v.gridColumnStart)+1):v.gridColumnEnd,this.extendedItem.element.style.gridRowStart=v.gridRowStart,this.extendedItem.element.style.gridRowEnd=v.gridRowEnd==="auto"?""+(parseInt(v.gridRowStart)+1):v.gridRowEnd,(this._actionModeStarted=="nw-resize"||this._actionModeStarted=="w-resize"||this._actionModeStarted=="sw-resize")&&(this.extendedItem.element.style.gridColumnStart=""+Np(f,y.x)),(this._actionModeStarted=="nw-resize"||this._actionModeStarted=="n-resize"||this._actionModeStarted=="ne-resize")&&(this.extendedItem.element.style.gridRowStart=""+Op(f,y.y)),(this._actionModeStarted=="se-resize"||this._actionModeStarted=="e-resize"||this._actionModeStarted=="ne-resize")&&(m=Mp(f,y.x),this.extendedItem.element.style.gridColumnEnd=""+(m+2)),(this._actionModeStarted=="sw-resize"||this._actionModeStarted=="s-resize"||this._actionModeStarted=="se-resize")&&(u=Lp(f,y.y),this.extendedItem.element.style.gridRowEnd=""+(u+2));let b=[this.extendedItem,this.extendedItem.parent];this.extensionManager.refreshExtensions(b)}break;case w.PointerUp:t.target.releasePointerCapture(t.pointerId);let a=getComputedStyle(this.extendedItem.element),l=a.gridColumnStart,c=a.gridColumnEnd,h=a.gridRowStart,d=a.gridRowEnd;this._styleBackup?this.extendedItem.element.setAttribute("style",this._styleBackup):this.extendedItem.element.removeAttribute("style");let p=this.extendedItem.openGroup("Resize &lt;"+this.extendedItem.name+"&gt;");this.extendedItem.setStyle("gridColumnStart",l),this.extendedItem.setStyle("gridColumnEnd",c),this.extendedItem.setStyle("gridRowStart",h),this.extendedItem.setStyle("gridRowEnd",d),p.commit(),this._initialPoint=null;break}}dispose(){this._removeAllOverlays()}}});import{css as Dg}from"@node-projects/base-custom-webcomponent";var Ko,nd=g(()=>{"use strict";q();rd();Ko=class{shouldExtend(e,t,i){return i.nodeType===k.Element&&i.parent?.nodeType===k.Element&&getComputedStyle(i.parent.element).display==="grid"}getExtension(e,t,i){return new Xo(e,t,i)}static style=Dg`.svg-grid-resizer{stroke:#3899ec;fill:#fff;pointer-events:auto}`}});var $o,sd=g(()=>{"use strict";bt();q();se();$o=class{shouldProvideContextmenu(e,t,i,r){return t.readOnly?!1:i?.instanceServiceContainer.selectionService.selectedElements.length>1?!i?.isRootItem&&i?.nodeType==k.Element:!1}provideContextMenuItems(e,t,i){return[{title:"align left",icon:`<img src="${C+"icons/alignHorizontalLeft.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeLeft})}},{title:"align center",icon:`<img src="${C+"icons/alignHorizontalCenter.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeCenter})}},{title:"align right",icon:`<img src="${C+"icons/alignHorizontalRight.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeRight})}},{title:"distribute horizontal",icon:`<img src="${C+"icons/horizontalDistribute.svg"}">`,action:()=>{t.executeCommand({type:A.distributeHorizontal})}},{title:"align top",icon:`<img src="${C+"icons/alignVerticalTop.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeTop})}},{title:"align middle",icon:`<img src="${C+"icons/alignVerticalCenter.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeMiddle})}},{title:"align bottom",icon:`<img src="${C+"icons/alignVerticalBottom.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeBottom})}},{title:"distribute vertical",icon:`<img src="${C+"icons/verticalDistribute.svg"}">`,action:()=>{t.executeCommand({type:A.distributeVertical})}}]}}});var Zo,od=g(()=>{"use strict";ue();fe();Me();_e();Zo=class extends ee{name="webcomponent";getRefreshMode(e){return G.full}isHandledElement(e){let t=e.element.constructor?.observedAttributes;return!!(t&&t.length>0)}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){return(e.element.constructor?.observedAttributes).map(i=>({name:z.dashToCamelCase(i),type:"string",service:this,propertyType:x.propertyAndAttribute}))}}});var Qo,ad=g(()=>{"use strict";ie();Qo=class extends R{constructor(e,t,i){super(e,t,i)}_path;_rect;_clickRect;_g;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i&&!isNaN(i.p2.x)&&this._valuesHaveChanges(i.p1.x,i.p1.y,i.p2.x,i.p2.y,this.designerCanvas.scaleFactor)){let r=Math.atan2(i.p2.y-i.p1.y,i.p2.x-i.p1.x)*180/Math.PI,n=15/this.designerCanvas.scaleFactor;this._rect=this._drawRect(0,0,n,n,"svg-previous-select",this._rect),this._clickRect=this._drawRect(0,0,n,n,"svg-invisible",this._clickRect),this._g||(this._g=document.createElementNS("http://www.w3.org/2000/svg","g"),this._g.setAttribute("class","svg-previous-select"),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("d","m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"),this._g.appendChild(this._rect),this._g.appendChild(this._path),this._addOverlay(this._g),this._clickRect.onpointerdown=o=>{o.preventDefault(),o.stopPropagation(),this.extendedItem.instanceServiceContainer.selectionService.setSelectedElements([this.extendedItem.parent])},this._clickRect.onpointermove=o=>{o.preventDefault(),o.stopPropagation()},this._g.appendChild(this._clickRect)),this._path.style.scale=(.6/this.designerCanvas.scaleFactor).toString(),this._g.style.translate=i.p2.x-14.5/this.designerCanvas.scaleFactor+"px "+(i.p2.y-15/this.designerCanvas.scaleFactor)+"px",this._g.style.rotate=r+"deg",this._g.style.transformOrigin="100% 100%",this._g.style.transformBox="fill-box"}}dispose(){this._removeAllOverlays()}}});import{css as Tg}from"@node-projects/base-custom-webcomponent";var qo,ld=g(()=>{"use strict";ad();qo=class{shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Qo(e,t,i)}static style=Tg`rect.svg-previous-select{stroke:none;fill:#3899ec;pointer-events:auto}g.svg-previous-select{fill:#fff;pointer-events:auto}`}});var Jo,cd=g(()=>{"use strict";q();Jo=class{shouldProvideContextmenu(e,t,i,r){return i!=null&&i.nodeType==k.Element}provideContextMenuItems(e,t,i){return[{title:":hover",action:()=>{i.cssForceHover=!i.cssForceHover},checked:i.cssForceHover},{title:":active",action:()=>{i.cssForceActive=!i.cssForceActive},checked:i.cssForceActive},{title:":visited",action:()=>{i.cssForceVisited=!i.cssForceVisited},checked:i.cssForceVisited},{title:":focus",action:()=>{i.cssForceFocus=!i.cssForceFocus},checked:i.cssForceFocus},{title:":focus-within",action:()=>{i.cssForceFocusWithin=!i.cssForceFocusWithin},checked:i.cssForceFocusWithin},{title:":focus-visible",action:()=>{i.cssForceFocusVisible=!i.cssForceFocusVisible},checked:i.cssForceFocusVisible}]}}});var ea,hd=g(()=>{"use strict";Mt();ea=class{constructor(){}provideButtons(e,t){let i=document.createElement("div");return i.innerHTML="O",i.title="options",i.className="toolbar-control",i.onclick=r=>{this.showCtxMenu(r,t)},i.oncontextmenu=r=>{r.preventDefault(),this.showCtxMenu(r,t)},[i]}prepareContextMenu(e,t){return[{title:"simulate hover on hover",checked:t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover,action:()=>{t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover=!t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover}},{title:"select unhitable elements",checked:t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements,action:()=>{t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements=!t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements}},{title:"pause animations",checked:t.pauseAnimations,action:()=>{t.pauseAnimations=!t.pauseAnimations}},{title:"hide overflowing content",checked:t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent,action:()=>{if(t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent=!t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent,t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent)for(let r of t.rootDesignItem.children(!0))r.element instanceof HTMLElement&&(r.element.style.overflow="hidden",r.element.style.whiteSpace="nowrap");else for(let r of t.rootDesignItem.children(!0))r.element instanceof HTMLElement&&(r.element.style.overflow=r.hasStyle("overflow")?r.getStyle("overflow"):"",r.element.style.whiteSpace=r.hasStyle("white-space")?r.getStyle("white-space"):"")}}]}showCtxMenu(e,t){be.show(this.prepareContextMenu(e,t),e)}}});var ta,dd=g(()=>{"use strict";ne();ta=class{shouldProvideContextmenu(e,t,i,r){return r=="designer"}provideContextMenuItems(e,t,i){if(i){let r=[...i.element.children];if(r.length>0)return[{title:"children",children:[...r.map(n=>({title:"select: "+n.localName+(n.id?" (#"+n.id+")":""),action:()=>this._select(t,n)}))]}]}return[]}_select(e,t){let i=M.GetOrCreateDesignItem(t,t,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.selectionService.setSelectedElements([i])}}});var Vi,pd=g(()=>{"use strict";le();gt();Vi=class{cursor="pointer";_changeGroup;pointerEventHandler(e,t,i){e.serviceContainer.designerTools.get(K.Pointer).pointerEventHandler(e,t,i)}keyboardEventHandler(e,t,i){t.preventDefault();let r=e.instanceServiceContainer.selectionService.primarySelection,n=getComputedStyle(r.element),o="";switch(t.key){case"ArrowLeft":o="margin-left";break;case"ArrowRight":o="margin-right";break;case"ArrowUp":o="margin-top";break;case"ArrowDown":o="margin-bottom";break}o&&(t.type==w.KeyDown&&!this._changeGroup&&(this._changeGroup=r.openGroup("change margin")),this._changeGroup&&(r.setStyleAsync(o,parseFloat(n[o])+(t.altKey?-1:1)+"px"),t.type==w.KeyUp&&(this._changeGroup.commit(),this._changeGroup=null)))}activated(e){}dispose(){this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null)}}});var Ir,md=g(()=>{"use strict";ot();Ir=class{_name;_icon;constructor(e,t){this._name=e,this._icon=t}provideButton(e){let t={};return t[this._name]={icon:this._icon},new ge(e,t)}}});var Ri,ud=g(()=>{"use strict";le();gt();Ri=class{cursor="pointer";_changeGroup;pointerEventHandler(e,t,i){e.serviceContainer.designerTools.get(K.Pointer).pointerEventHandler(e,t,i)}keyboardEventHandler(e,t,i){t.preventDefault();let r=e.instanceServiceContainer.selectionService.primarySelection,n=getComputedStyle(r.element),o="";switch(t.key){case"ArrowLeft":o="padding-left";break;case"ArrowRight":o="padding-right";break;case"ArrowUp":o="padding-top";break;case"ArrowDown":o="padding-bottom";break}o&&(t.type==w.KeyDown&&!this._changeGroup&&(this._changeGroup=r.openGroup("change padding")),this._changeGroup&&(r.setStyleAsync(o,parseFloat(n[o])+(t.altKey?-1:1)+"px"),t.type==w.KeyUp&&(this._changeGroup.commit(),this._changeGroup=null)))}activated(e){}dispose(){this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null)}}});var zi,ia=g(()=>{"use strict";ne();zi=class{createDesignItem(e,t,i,r){return new M(e,t,i,r)}handleSpecialAttributes(e,t){e==fi?(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(fi)?t.element.style.display="none":t.element.style.display=t.getStyle("display")??""):e==gi?(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(gi)?t.element.style.opacity="0.3":t.element.style.opacity=t.getStyle("opacity")??""):e==Ut&&(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(Ut)?t.element.style.pointerEvents="none":requestAnimationFrame(()=>t.element.style.pointerEvents="auto"))}}});import{DomHelper as Mg}from"@node-projects/base-custom-webcomponent";var ra,fd=g(()=>{"use strict";ra=class{constructor(e){this.title="Delete Items",this.deletedItems=e}title;get affectedItems(){return this.deletedItems}undo(){for(let e=0;e<this.deletedItems.length;e++)this._parentItems[e]._insertChildInternal(this.deletedItems[e],this._parentIndexes[e]);return[{changeType:"added",designItems:this.deletedItems}]}do(){this._parentItems=[],this._parentIndexes=[];for(let e=0;e<this.deletedItems.length;e++)this._parentItems.push(this.deletedItems[e].parent),this._parentIndexes.push(Mg.nodeIndex(this.deletedItems[e].element));for(let e=0;e<this.deletedItems.length;e++)this.deletedItems[e].parent._removeChildInternal(this.deletedItems[e]);return[{changeType:"removed",designItems:this.deletedItems}]}deletedItems;_parentItems;_parentIndexes;mergeWith(e){return!1}}});var na,gd=g(()=>{"use strict";fd();na=class{removeItems(e){e[0].instanceServiceContainer.undoService.execute(new ra(e)),e[0].serviceContainer.referencesChangedService&&e[0].serviceContainer.referencesChangedService.notifyReferencesChanged(e.map(t=>({designItem:t,type:"deleted"})))}}});var sa,yd=g(()=>{"use strict";sa=class{async provideMiniatureView(e){let t=document.createDocumentFragment();for(let i of e.rootDesignItem.children())t.appendChild(i.element.cloneNode(!0));return t}}});var ei,oa=g(()=>{"use strict";ce();ei=class s{static _canvas;static _context;static _video;static _captureStream;static _disableStream(){s._captureStream.getTracks().forEach(e=>e.stop()),s._canvas=null}static get screenshotsEnabled(){return s._captureStream&&s._captureStream.active}static async enableScreenshots(e=document.body){if(s._captureStream&&!s._captureStream.active&&s._disableStream(),s._canvas==null){s._canvas=document.createElement("canvas"),s._context=s._canvas.getContext("2d"),s._video=document.createElement("video");let t={video:{cursor:"never",displaySurface:"browser"},audio:!1,selfBrowserSurface:"include",preferCurrentTab:!0};s._video.style.display="none",e.appendChild(s._video);try{s._captureStream=await navigator.mediaDevices.getDisplayMedia(t)}catch(r){throw s._canvas=null,r}if(s._captureStream.getVideoTracks()[0].getSettings().displaySurface!="browser")throw s._disableStream(),alert("You need to share the current Tab, for the screenshot API to work"),"You need to share the current Tab, for the screenshot API to work";s._video.srcObject=s._captureStream,s._video.play(),await s._sleep(2e3)}}static async takeScreenshot(e,t=100,i=100,r=document.body){await s.enableScreenshots(r);let n=Y(e);s._canvas.width=t,s._canvas.height=i,s._context.drawImage(s._video,0,0,1,1,0,0,t,i);let o=s._video.videoWidth/window.innerWidth,a=s._video.videoHeight/window.innerHeight;return s._context.drawImage(s._video,n.left*o,n.top*a,n.width*o,n.height*a,0,0,t,i),s._canvas.toDataURL("image/png")}static _sleep(e){let t=null,i=new Promise(r=>t=r);return window.setTimeout(t,e),i}}});var aa,vd=g(()=>{"use strict";oa();Ne();aa=class{async takePng(e,t){if(!e||e.length===0)return null;let i=e[0].instanceServiceContainer.designerCanvas,r=e[0].instanceServiceContainer.selectionService,n=i.zoomFactor,o=i.canvasOffset,a=r.selectedElements;try{await ei.enableScreenshots(),i.disableBackgroud(),i.zoomFactor=1,t?.removeSelection&&r.setSelectedElements([]),i.canvasOffset={x:0,y:0},await tr();let l=1/0,c=1/0,h=-1/0,d=-1/0;for(let J of e){let ae=i.getNormalizedElementCoordinates(J.element);l=Math.min(l,ae.x),c=Math.min(c,ae.y),h=Math.max(h,ae.x+ae.width),d=Math.max(d,ae.y+ae.height)}let p=t?.margin??0;l-=p,c-=p,h+=p,d+=p;let m=Math.ceil(h-l),u=Math.ceil(d-c),f=i.outercanvas2,y=f.offsetWidth,v=f.offsetHeight,b=1,E=y-2*b,S=v-2*b,T=Math.ceil(m/E),O=Math.ceil(u/S),I=window.devicePixelRatio||1,U=Math.ceil(y*I),$=Math.ceil(v*I),V=Math.ceil(b*I),j=U-2*V,X=$-2*V,Z=document.createElement("canvas");Z.width=Math.ceil(m*I),Z.height=Math.ceil(u*I);let oe=Z.getContext("2d"),ye=1e3;for(let J=0;J<O;J++)for(let ae=0;ae<T;ae++){let Ye=l+ae*E,Ce=c+J*S;i.canvasOffset={x:-(Ye-b),y:-(Ce-b)},await mt(ye),ye=300;let ct=await ei.takeScreenshot(f,U,$),tt=await this._loadImage(ct);oe.drawImage(tt,V,V,j,X,ae*j,J*X,j,X)}let me=await(await new Promise(J=>Z.toBlob(J,"image/png"))).arrayBuffer();return new Uint8Array(me)}finally{i.zoomFactor=n,i.canvasOffset=o,i.enableBackground(),t?.removeSelection&&r.setSelectedElements(a)}}_loadImage(e){return new Promise((t,i)=>{let r=new Image;r.onload=()=>t(r),r.onerror=i,r.src=e})}}});var la,xd=g(()=>{"use strict";ne();la=class{async search(e,t,i){if(t!=""){let r=e.rootDesignItem.querySelectorAll(t),n=[];for(let o=0;o<r.length;o++){let a=M.GetDesignItem(r[o]);a&&n.push({designItem:a})}return n}return null}}});var ca,_d=g(()=>{"use strict";ca=class{_item;_shouldProvide;constructor(e,t){this._item=e,this._shouldProvide=t||(()=>!0)}shouldProvideContextmenu(e,t,i,r){return this._shouldProvide(e,t,i,r)}provideContextMenuItems(e,t,i,r){return[{...this._item,action:n=>this._item.action?.(n,t,i,r)}]}}});var Fi,ha=g(()=>{"use strict";le();_t();ie();Fi=class extends R{_outline;_handles=[];_handleCrossHorizontalLines=[];_handleCrossVerticalLines=[];_activeHandleIndex=null;_baseTransform="";_projectiveTransform="";_targetPoints=[];constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let r=[i.p1,i.p2,i.p3,i.p4];if(r.some(n=>!Number.isFinite(n.x)||!Number.isFinite(n.y))){this.remove();return}if(this._valuesHaveChanges(this.designerCanvas.zoomFactor,...r.flatMap(n=>[n.x,n.y]))){this._outline=this._drawTransformedRect(i,"svg-primary-projective-outline",this._outline),this._outline.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._outline.style.pointerEvents="none";let n=5/this.designerCanvas.zoomFactor,o=n*.55;for(let a=0;a<r.length;a++){let l=a,c=r[a],h=this._handles[a];h?(h=this._drawCircle(c.x,c.y,n,"svg-primary-projective-handle",h),this._handles[a]=h):(h=this._drawCircle(c.x,c.y,n,"svg-primary-projective-handle"),h.addEventListener(w.PointerDown,m=>this._handlePointerEvent(l,m)),h.addEventListener(w.PointerMove,m=>this._handlePointerEvent(l,m)),h.addEventListener(w.PointerUp,m=>this._handlePointerEvent(l,m)),this._handles[a]=h),h.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),h.style.cursor="move";let d=this._handleCrossHorizontalLines[a];d=this._drawLine(c.x-o,c.y,c.x+o,c.y,"svg-primary-projective-handle-cross",d),d.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),d.style.pointerEvents="none",this._handleCrossHorizontalLines[a]=d;let p=this._handleCrossVerticalLines[a];p=this._drawLine(c.x,c.y-o,c.x,c.y+o,"svg-primary-projective-handle-cross",p),p.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),p.style.pointerEvents="none",this._handleCrossVerticalLines[a]=p}}}dispose(){this._activeHandleIndex=null,this._restorePersistedTransform(),this._removeAllOverlays()}_handlePointerEvent(e,t){t.stopPropagation();let i=t.target;switch(t.type){case w.PointerDown:if(!this._startDrag(e))return;i.setPointerCapture(t.pointerId),this._activeHandleIndex=e;break;case w.PointerMove:if(this._activeHandleIndex===e&&t.buttons>0){let r=this._getLocalPointerPoint(t);if(!r)return;this._targetPoints[e]=r,this._applyPreviewTransform()}break;case w.PointerUp:if(this._activeHandleIndex===e){let r=this._getLocalPointerPoint(t);r&&(this._targetPoints[e]=r,this._applyPreviewTransform()),i.releasePointerCapture(t.pointerId),this._commitTransform(),this._activeHandleIndex=null}break}}_startDrag(e){let{baseTransform:t,projectiveTransform:i}=this._parseTransform(this.extendedItem.getStyleFromSheetOrLocal("transform")??"");this._baseTransform=t,this._projectiveTransform=i;let r=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!r)return!1;let n=this.extendedItem.element;return n.style.transform=this._buildTransform(this._baseTransform,""),this._targetPoints=this._convertQuadToLocalPoints(r),this._targetPoints.length!==4||this._targetPoints.some(o=>!Number.isFinite(o.x)||!Number.isFinite(o.y))?(this._restorePersistedTransform(),!1):(n.style.transform=this._buildTransform(this._baseTransform,this._projectiveTransform),this._targetPoints[e]!=null)}_convertQuadToLocalPoints(e){return[e.p1,e.p2,e.p3,e.p4].map(t=>{let i=this.extendedItem.element.convertPointFromNode({x:t.x,y:t.y},this.designerCanvas.canvas);return{x:i.x,y:i.y}})}_getLocalPointerPoint(e){let t=this.extendedItem.element,i=t.style.transform;t.style.transform=this._buildTransform(this._baseTransform,"");let r=this.designerCanvas.getNormalizedEventCoordinates(e),n=t.convertPointFromNode({x:r.x,y:r.y},this.designerCanvas.canvas);return t.style.transform=i,!Number.isFinite(n.x)||!Number.isFinite(n.y)?null:{x:n.x,y:n.y}}_applyPreviewTransform(){let e=this._buildProjectiveTransform(this._targetPoints);e!=null&&(this._projectiveTransform=e,this.extendedItem.element.style.transform=this._buildTransform(this._baseTransform,this._projectiveTransform))}_commitTransform(){let e=this._buildProjectiveTransform(this._targetPoints);e!=null&&(this._projectiveTransform=e);let t=this._buildTransform(this._baseTransform,this._projectiveTransform);t?this.extendedItem.updateStyleInSheetOrLocal("transform",t):this.extendedItem.hasStyle("transform")?this.extendedItem.removeStyle("transform"):this.extendedItem.updateStyleInSheetOrLocal("transform",null),this._restorePersistedTransform()}_restorePersistedTransform(){let e=this.extendedItem.element;this.extendedItem.hasStyle("transform")?e.style.transform=this.extendedItem.getStyle("transform")??"":e.style.transform=""}_buildProjectiveTransform(e){let t=Le(this.extendedItem.element);if(!t.width||!t.height||e.length!==4)return"";let i=[{x:0,y:0},{x:t.width,y:0},{x:t.width,y:t.height},{x:0,y:t.height}];if(this._pointsApproximatelyEqual(e,i))return"";let r=this._createProjectiveMatrix(e,t.width,t.height);if(!r)return null;let n=getComputedStyle(this.extendedItem.element).transformOrigin.split(" "),o={x:parseFloat(n[0])||0,y:parseFloat(n[1])||0},a=new DOMMatrix().translate(-o.x,-o.y).multiply(r).multiply(new DOMMatrix().translate(o.x,o.y));return this._serializeMatrix3d(a)}_createProjectiveMatrix(e,t,i){let[r,n,o,a]=e,l=n.x-o.x,c=a.x-o.x,h=r.x-n.x+o.x-a.x,d=n.y-o.y,p=a.y-o.y,m=r.y-n.y+o.y-a.y,u,f,y,v,b,E;if(Math.abs(h)<1e-8&&Math.abs(m)<1e-8)u=n.x-r.x,f=a.x-r.x,y=n.y-r.y,v=a.y-r.y,b=0,E=0;else{let O=l*p-c*d;if(Math.abs(O)<1e-8)return null;b=(h*p-c*m)/O,E=(l*m-h*d)/O,u=n.x-r.x+b*n.x,f=a.x-r.x+E*a.x,y=n.y-r.y+b*n.y,v=a.y-r.y+E*a.y}let S=new DOMMatrix([u/t,y/t,0,b/t,f/i,v/i,0,E/i,0,0,1,0,r.x,r.y,0,1]);return[S.m11,S.m12,S.m13,S.m14,S.m21,S.m22,S.m23,S.m24,S.m31,S.m32,S.m33,S.m34,S.m41,S.m42,S.m43,S.m44].some(O=>!Number.isFinite(O))?null:S}_serializeMatrix3d(e){return`matrix3d(${[e.m11,e.m12,e.m13,e.m14,e.m21,e.m22,e.m23,e.m24,e.m31,e.m32,e.m33,e.m34,e.m41,e.m42,e.m43,e.m44].map(i=>this._formatMatrixNumber(i)).join(", ")})`}_formatMatrixNumber(e){if(Math.abs(e)<1e-10)return"0";let t=e.toFixed(8);return t.includes(".")&&(t=t.replace(/0+$/,"").replace(/\.$/,"")),t==="-0"?"0":t}_buildTransform(e,t){let i=[];return e?.trim()&&i.push(e.trim()),t?.trim()&&i.push(t.trim()),i.join(" ").trim()}_parseTransform(e){if(!e||e==="none")return{baseTransform:"",projectiveTransform:""};let t=this._splitTransformFunctions(e);if(!t.length)return{baseTransform:e.trim(),projectiveTransform:""};let i=t[t.length-1],r=i.slice(0,i.indexOf("(")).trim().toLowerCase();return r==="matrix"||r==="matrix3d"?{baseTransform:t.slice(0,-1).join(" ").trim(),projectiveTransform:i.trim()}:{baseTransform:e.trim(),projectiveTransform:""}}_splitTransformFunctions(e){let t=[],i=-1,r=0;for(let n=0;n<e.length;n++){let o=e[n];o==="("?r++:o===")"?(r--,r===0&&i!==-1&&(t.push(e.slice(i,n+1).trim()),i=-1)):r===0&&i===-1&&o.trim()&&(i=n)}return!t.length&&e.trim()&&t.push(e.trim()),t}_pointsApproximatelyEqual(e,t){return e.length!==t.length?!1:e.every((i,r)=>{let n=t[r];return Math.abs(i.x-n.x)<.01&&Math.abs(i.y-n.y)<.01})}}});import{css as Ng}from"@node-projects/base-custom-webcomponent";var da,bd=g(()=>{"use strict";ha();da=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new Fi(e,t,i)}static style=Ng`.svg-primary-projective-handle{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto}.svg-primary-projective-handle-cross{stroke:#3899ec;fill:none;stroke-width:1;stroke-linecap:round;pointer-events:none}.svg-primary-projective-outline{stroke:#3899ec;fill:none;stroke-width:1;stroke-dasharray:4 2}`}});var Jp={};Vd(Jp,{createDefaultServiceContainer:()=>Qp,default:()=>qp});function Qp(){let s=new Hr,e=new nt;return s.register("containerService",e),s.register("containerService",new As(e)),s.register("containerService",new Is(e)),s.register("propertyService",new Zo),s.register("propertyService",new Ur),s.register("propertyService",new Yr),s.register("propertyService",new Xr),s.register("propertyService",new Kr),s.register("propertyService",new No),s.register("propertyService",new Ln),s.register("propertyService",new wn),s.register("propertyGroupsService",new ho),s.register("instanceService",new an),s.register("editorTypesService",new bn),s.register("htmlWriterService",new Us),s.register("snaplinesProviderService",new Ds),s.register("htmlParserService",new Nt),s.register("elementAtPointService",new ks),s.register("externalDragDropService",new Ts),s.register("dragDropService",new Io),s.register("copyPasteService",new Vs),s.register("modelCommandService",new Rs),s.register("demoProviderService",new Do),s.register("eventsService",new Ie),s.register("designItemService",new zi),s.register("deletionService",new na),s.register("miniatureViewService",new sa),s.register("pngCreatorService",new aa),s.register("searchService",new la),s.register("undoService",t=>new xo(t)),s.register("selectionService",t=>new bo(t,!1)),s.register("designItemDocumentPositionService",t=>new Eo(t)),s.designerExtensions.set(P.Permanent,[new Cs]),s.designerExtensions.set(P.PrimarySelection,[new Et(new ko,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement)]),s.designerExtensions.set(P.Selection,[new Et(new ts,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement)]),s.designerExtensions.set(P.OnlyOneItemSelected,[new Et(new Vn,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement),new Et(new qo,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement),new Et(new Yn,(t,i)=>i.activeTool instanceof Vi||i.activeTool instanceof Ri,!0),new Et(new Yo,(t,i)=>i.activeTool instanceof Vi||i.activeTool instanceof Ri,!0),new Kn,new Oo,new Oi(new Ko,new rs(!0)),new Wn(!0),new os]),s.designerExtensions.set(P.MultipleItemsSelected,[new ls]),s.designerExtensions.set(P.PrimarySelectionRefreshed,[new Wo,new Ro,new Fo,new Ho]),s.designerExtensions.set(P.PrimarySelectionAndCanBeEntered,[new Zt,new Co,new Pr]),s.designerExtensions.set(P.PrimarySelectionContainerAndCanBeEntered,[new Zt("lightgray","#8080802b"),new Pr]),s.designerExtensions.set(P.MouseOver,[new Zn]),s.designerExtensions.set(P.Placement,[new mo]),s.designerExtensions.set(P.ContainerDrag,[new _s]),s.designerExtensions.set(P.ContainerDragOverAndCanBeEntered,[new Oi(new Zt,new Cr),new ws]),s.designerExtensions.set(P.ContainerExternalDragOverAndCanBeEntered,[new Oi(new Zt,new Cr)]),s.designerExtensions.set(P.Doubleclick,[new Ms]),s.designerExtensions.set(P.ManualApplied,[new da]),s.designerPointerExtensions.push(),s.designerTools.set(K.Pointer,new Qn),s.designerTools.set(K.DrawSelection,new gr),s.designerTools.set(K.DrawPath,new Jn),s.designerTools.set(K.DrawRect,new Bs),s.designerTools.set(K.DrawEllipsis,new Hs),s.designerTools.set(K.DrawLine,new Gs),s.designerTools.set(K.Zoom,new cs),s.designerTools.set(K.Pan,new hs),s.designerTools.set(K.RectangleSelector,new gr),s.designerTools.set(K.MagicWandSelector,new fs),s.designerTools.set(K.PickColor,new gs),s.designerTools.set(K.Text,new vs),s.designerTools.set(K.DrawElementTool,To),s.designerTools.set(K.Margin,new Vi),s.designerTools.set(K.Padding,new Ri),s.designViewConfigButtons.push(new St(20),new Fs,new go,new St(10),new yo,new St(10),new Jr,new St(10),new jo,new St(30),new Mo,new St(30),new ea),s.designViewToolbarButtons.push(new Js,new at(22),new ro,new at(22),new Ir("Margin",C+"images/tools/Margin.svg"),new at(22),new Ir("Padding",C+"images/tools/Padding.svg"),new at(22),new eo,new at(22),new to,new at(22),new io,new at(22),new Po),s.designerContextMenuExtensions=[new Jt("edit",new ds,new ke,new ps),new ke,new Jt("modify",new Qs,new ke,new ms,new ke,new $o,new ke,new ca({title:"3D transform",action:(t,i,r)=>{i.extensionManager.removeExtensions([r],!1,P.PrimarySelection),i.extensionManager.removeExtensions([r],!1,P.OnlyOneItemSelected),i.extensionManager.applyExtensionInstance(r,new Fi(i.extensionManager,i,r),P.OnlyOneItemSelected)}})),new ke,new Jt("view",new wo,new Zs),new ke,new Jt("force",new Jo),new ke,new us,new Xs,new Ys,new ke,new qs,new ke,new Ps,new ta],s}var qp,pa=g(()=>{"use strict";Ga();Wa();ja();Ua();Ya();rl();xl();_l();wi();pr();Dl();$e();Ll();Yl();Kl();Zl();ql();gt();ec();tc();rc();sc();ac();cc();hc();dc();pc();uc();fc();yc();vc();xc();_c();Sc();Ec();Ac();Es();Dc();Tc();Mc();Nc();Lc();Oc();Vc();zc();Bc();Hc();Wc();jc();Uc();Yc();Kc();$c();Zc();Ks();Qc();qc();Jc();th();ih();rh();sh();oh();lh();hh();vh();_h();fo();Sh();Ch();Ph();Ah();tn();kh();Dh();xr();Th();Mh();Lh();Vh();Rh();kr();zh();Fh();Bh();Hh();Wh();jh();Yh();Kh();Zh();Qh();Jh();ed();id();nd();sd();od();ld();cd();hd();dd();pd();md();se();ud();ia();gd();yd();vd();xd();_d();ha();bd();qp=Qp});import{BaseCustomWebComponentLazyAppend as Km,css as $m,TypedEvent as Zm,DomHelper as zd}from"@node-projects/base-custom-webcomponent";var dt=class extends Km{_selectedIndex=-1;_panels;_headerDiv;_moreDiv;_moreContainer;_elementMap=new WeakMap;_firstConnect=!0;static style=$m`:host{height:100%}.outer{display:flex;flex-direction:column;height:100%;position:relative;overflow:hidden}.header{display:inline-flex;user-select:none;-webkit-user-select:none;flex-direction:row;cursor:pointer;height:30px;width:calc(100% - 30px);background-color:var(--dark-grey,#232733);overflow-x:auto;scrollbar-width:none}.header-more{right:0;top:0;width:30px;position:absolute;color:#fff;display:flex;justify-content:center;align-items:center;font-family:math}.header-more:hover{background:var(--light-grey,#383f52)}.more-container{z-index:1;user-select:none;-webkit-user-select:none;background-color:var(--dark-grey,#232733);right:0;top:30px;position:absolute;color:#fff;display:flex;flex-direction:column;align-items:flex-start;cursor:pointer}.more-container .tab-header{width:100%}.header::-webkit-scrollbar{display:none}.tab-header{height:30px;font-family:Arial;display:flex;justify-content:center;align-items:center;text-transform:uppercase;box-sizing:content-box;padding-left:5px;padding-right:5px;color:#fff;font-size:12px;font-weight:500;line-height:1.5;letter-spacing:1px;white-space:nowrap}.tab-header:hover{background:var(--light-grey,#383f52)}.selected{background:var(--medium-grey,#2f3545);box-shadow:inset 0 3px 0 var(--highlight-pink,#e91e63)}.panels{z-index:0;background:var(--medium-grey,#2f3545);height:calc(100% - 30px)}`;constructor(){super();let e=document.createElement("div");e.className="outer",this.shadowRoot.appendChild(e),this._headerDiv=document.createElement("div"),this._headerDiv.className="header",e.appendChild(this._headerDiv),this._moreDiv=document.createElement("div"),this._moreDiv.className="header header-more",this._moreDiv.innerText="<<",e.appendChild(this._moreDiv),this._moreContainer=document.createElement("div"),this._moreContainer.className="more-container",this._moreContainer.style.visibility="hidden",e.appendChild(this._moreContainer),this._moreDiv.onclick=()=>{this._moreContainer.children.length&&this._moreContainer.style.visibility=="hidden"?this._moreContainer.style.visibility="":this._moreContainer.style.visibility="hidden"},this._panels=document.createElement("div"),this._panels.className="panels",e.appendChild(this._panels);let t=document.createElement("slot");t.name="panels",this._panels.appendChild(t),new ResizeObserver(r=>{this._showHideHeaderItems()}).observe(this._headerDiv)}_showHideHeaderItems(){this._moreContainer.style.visibility="hidden";let e=0;zd.removeAllChildnodes(this._moreContainer),zd.removeAllChildnodes(this._headerDiv);let t=!0;for(let i of this.children)if(i.style.display!="none"){let r=i;!this._elementMap.has(r)&&t&&(this.refreshItems(),t=!1);let n=this._elementMap.get(r);this._moreContainer.appendChild(n),(this._headerDiv.children.length==0||e+n.clientWidth/2<this._headerDiv.clientWidth)&&(this._headerDiv.appendChild(n),e+=n.clientWidth)}}connectedCallback(){if(this._firstConnect){this.refreshItems(),this._firstConnect=!1;let e=this.getAttribute("selected-index");e&&(this.selectedIndex=parseInt(e))}}get selectedIndex(){return this._firstConnect?-1:this._selectedIndex}set selectedIndex(e){let t=this._selectedIndex;this._selectedIndex=e,this.children.length&&t!=this._selectedIndex&&this._selectedIndexChanged(t)}refreshItems(){this._headerDiv.innerHTML="";let e=0;for(let t of this.children)if(t.style.display!="none"){let i=t,r=document.createElement("div");r.innerText=i.dataset.title||i.title,r.title=i.dataset.title||i.title,r.className="tab-header";let n=e;r.onpointerdown=()=>{let o=this._selectedIndex;this._selectedIndex=n,this._headerDiv.children.length&&this._selectedIndexChanged(o,!0),this._moreContainer.style.visibility="hidden"},this._elementMap.set(i,r),this._headerDiv.appendChild(r),e++}this._showHideHeaderItems(),this._selectedIndexChanged()}_selectedIndexChanged(e,t=!1){let i=-1;for(let r of this.children)if(r.style.display!="none")if(i++,i==this._selectedIndex){r.slot!="panels"&&(r.slot="panels");let n=this._elementMap.get(r);n&&(n.classList.add("selected"),r.activated&&r.activated())}else{r.removeAttribute("slot");let n=this._elementMap.get(r);n&&n.classList.remove("selected")}this.onSelectedTabChanged.emit({newIndex:this._selectedIndex,oldIndex:e,changedViaClick:t}),this._moreContainer.style.visibility="hidden"}onSelectedTabChanged=new Zm};customElements.define("node-projects-designer-tab-control",dt);Ra();import{css as tu,html as iu}from"@node-projects/base-custom-webcomponent";var za=class{host;root;trough;button1;button2;thumb;isConnected=!1;thumbSize=.3;value=0;orientation=!1;clickRepeatDelay=300;clickRepeatInterval=100;defaultThumbMinSize=25;dragStartPos;dragStartValue;eventTimeoutId;pointerCaptureId;pointerCaptureElement;thumbDragging;button1Active;button2Active;troughActive;constructor(e){this.host=e,e.attachShadow({mode:"open"});let t=e.shadowRoot;t.appendChild(su.content.cloneNode(!0)),t.adoptedStyleSheets=[nu],this.root=t.querySelector("#root"),this.trough=t.querySelector("#trough"),this.button1=t.querySelector("#button1"),this.button2=t.querySelector("#button2"),this.thumb=t.querySelector("#thumb"),this.trough.addEventListener("pointerdown",this.onTroughPointerDown),this.trough.addEventListener("pointerup",this.onPointerUp),this.trough.addEventListener("pointercancel",this.onPointerUp),this.button1.addEventListener("pointerdown",i=>this.onButtonPointerDown(i,1)),this.button1.addEventListener("pointerup",this.onPointerUp),this.button1.addEventListener("pointercancel",this.onPointerUp),this.button1.addEventListener("contextmenu",i=>i.preventDefault()),this.button2.addEventListener("pointerdown",i=>this.onButtonPointerDown(i,2)),this.button2.addEventListener("pointerup",this.onPointerUp),this.button2.addEventListener("pointercancel",this.onPointerUp),this.button2.addEventListener("contextmenu",i=>i.preventDefault()),this.thumb.addEventListener("pointerdown",this.onThumbPointerDown),this.thumb.addEventListener("pointerup",this.onPointerUp),this.thumb.addEventListener("pointercancel",this.onPointerUp),this.thumb.addEventListener("pointermove",this.onThumbPointerMove),this.resetInteractionState()}resetInteractionState(){this.thumbDragging=!1,this.button1Active=!1,this.button2Active=!1,this.troughActive=!1}connectedCallback(){this.isConnected=!0,this.resetInteractionState(),this.updateLayout(),this.updateStyle()}disconnectedCallback(){this.isConnected=!1,this.resetInteractionState(),this.stopEventRepetition(),this.stopPointerCapture()}updateLayout(){this.isConnected&&(this.root.classList.toggle("horizontal",!this.orientation),this.root.classList.toggle("vertical",this.orientation),this.thumb.style.display=this.thumbSize==0?"none":"",this.thumb.style.height=this.orientation?Rr(this.getEffectiveThumbSize()):"",this.thumb.style.width=this.orientation?"":Rr(this.getEffectiveThumbSize()),this.thumb.style.top="",this.thumb.style.left="",this.updateThumbPosition())}updateStyle(){this.isConnected&&(this.thumb.classList.toggle("active",this.thumbDragging),this.button1.classList.toggle("active",this.button1Active),this.button2.classList.toggle("active",this.button2Active),this.troughActive)}updateThumbPosition(){let e=(1-this.getEffectiveThumbSize())*this.value;this.orientation?this.thumb.style.top=Rr(e):this.thumb.style.left=Rr(e)}getThroughSize(){return this.orientation?this.trough.clientHeight:this.trough.clientWidth}computeThumbMoveValue(e){let t=this.getThroughSize()*(1-this.getEffectiveThumbSize());return t<ru?0:e/t}setThumbSize(e){let t=Math.max(0,Math.min(1,e));t!=this.thumbSize&&(this.thumbSize=t,this.updateLayout())}getThumbMinSize(){let e=this.getCssVar("--plain-scrollbar-thumb-min-size");if(!e)return this.defaultThumbMinSize;let t=au(e);return t||this.defaultThumbMinSize}getEffectiveThumbSize(){let e=this.getThumbMinSize(),t=this.getThroughSize();if(!t)return this.thumbSize;let i=Math.min(1,e/t);return Math.max(i,this.thumbSize)}setValue(e){let t=Math.max(0,Math.min(1,e));return t==this.value?!1:(this.value=isNaN(t)?0:t,this.updateThumbPosition(),!0)}setOrientation(e){return e==this.orientation?!1:(this.orientation=e,this.updateLayout(),!0)}getCssVar(e){let t=getComputedStyle(this.root).getPropertyValue(e);return t?t.trim():null}fireEvent(e){let t=new CustomEvent("scrollbar-input",{detail:e});this.host.dispatchEvent(t)}fireEventRepeatedly(e,t,i,r=0){this.stopEventRepetition(),this.fireEvent(e);let n=r==0?t:i,o=()=>this.fireEventRepeatedly(e,t,i,r+1);this.eventTimeoutId=setTimeout(o,n)}stopEventRepetition(){this.eventTimeoutId&&(clearTimeout(this.eventTimeoutId),this.eventTimeoutId=void 0)}startPointerCapture(e,t){this.stopPointerCapture(),e.setPointerCapture(t),this.pointerCaptureElement=e,this.pointerCaptureId=t}stopPointerCapture(){this.pointerCaptureId&&(this.pointerCaptureElement.releasePointerCapture(this.pointerCaptureId),this.pointerCaptureId=void 0)}onTroughPointerDown=e=>{if(!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0)return;let t=this.trough.getBoundingClientRect(),i=this.orientation?e.clientY-t.top:e.clientX-t.left,r=(this.orientation?t.height:t.width)*(1-this.getEffectiveThumbSize())*this.value,o=i>r?"incrementLarge":"decrementLarge";this.troughActive=!0,e.preventDefault(),this.startPointerCapture(this.trough,e.pointerId),this.fireEventRepeatedly(o,this.clickRepeatDelay,this.clickRepeatInterval)};onButtonPointerDown=(e,t)=>{if(!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0)return;switch(t){case 1:this.button1Active=!0;break;case 2:this.button2Active=!0;break}let i=t==1?"decrementSmall":"incrementSmall";this.updateStyle(),e.preventDefault();let r=t==1?this.button1:this.button2;this.startPointerCapture(r,e.pointerId),this.fireEventRepeatedly(i,this.clickRepeatDelay,this.clickRepeatInterval)};onThumbPointerDown=e=>{!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0||(this.dragStartPos=this.orientation?e.clientY:e.clientX,this.dragStartValue=this.value,this.thumbDragging=!0,this.updateStyle(),e.preventDefault(),this.startPointerCapture(this.thumb,e.pointerId))};onThumbPointerMove=e=>{if(!this.isConnected||!e.isPrimary||!this.thumbDragging)return;let i=(this.orientation?e.clientY:e.clientX)-this.dragStartPos,r=this.computeThumbMoveValue(i),n=this.dragStartValue+r;e.preventDefault(),this.setValue(n)&&this.fireEvent("value")};onPointerUp=e=>{this.isConnected&&e.isPrimary&&(this.resetInteractionState(),this.updateStyle(),this.stopEventRepetition(),this.stopPointerCapture(),e.preventDefault())}},Fa=class extends HTMLElement{widget;constructor(){super(),this.widget=new za(this);let e=parseFloat(this.getAttribute("value"));if(isNaN(e)||(this.widget.value=e),this.hasOwnProperty("value")){let t=this.value;delete this.value,isNaN(t)||(this.widget.value=t)}}connectedCallback(){this.widget.connectedCallback()}disconnectedCallback(){this.widget.disconnectedCallback()}get thumbSize(){return this.widget.thumbSize}set thumbSize(e){this.widget.setThumbSize(e)}get value(){return this.widget.value}set value(e){this.widget.setValue(e)}get orientation(){return ou(this.widget.orientation)}set orientation(e){this.widget.setOrientation(Gd(e))&&this.setAttribute("orientation",this.orientation)}get orientationBoolean(){return this.widget.orientation}static get observedAttributes(){return["orientation"]}attributeChangedCallback(e,t,i){switch(e){case"orientation":{i&&this.widget.setOrientation(Gd(i));break}}}},ru=1e-9,kt="var(--plain-scrollbar-button-size, 13px)",Vr='<path d="M -60 30 h 120 L 0 -30 z" stroke-width="0"/>',nu=tu`:host{display:block;contain:content;background-color:#f8f8f8;border-style:solid;border-width:1px;border-color:#ddd}#root{touch-action:none;user-select:none;box-sizing:border-box;position:relative;width:100%;height:100%}#trough{position:absolute}#root.vertical #trough{width:100%;top:${kt};bottom:${kt}}#root.horizontal #trough{height:100%;left:${kt};right:${kt}}#thumb{box-sizing:border-box;position:absolute;width:100%;height:100%;background-color:var(--plain-scrollbar-thumb-background-color,#f0f0f0);border-style:solid;border-width:var(--plain-scrollbar-thumb-border-width,1px);border-color:var(--plain-scrollbar-thumb-border-color,#b8b8b8);border-radius:var(--plain-scrollbar-thumb-border-radius,4px);transition:background-color 50ms linear}#thumb:hover{background-color:var(--plain-scrollbar-thumb-background-color-hover,#e0e0e0)}#thumb.active{background-color:var(--plain-scrollbar-thumb-background-color-active,silver)}#button1,#button2{box-sizing:border-box;position:absolute;display:block;fill:var(--plain-scrollbar-button-color,#606060)}#root.vertical #button1{top:0;width:100%;height:${kt}}#root.vertical #button2{bottom:0;width:100%;height:${kt}}#root.horizontal #button1{left:0;height:100%;width:${kt}}#root.horizontal #button2{right:0;height:100%;width:${kt}}#downArrow,#leftArrow,#rightArrow,#upArrow{display:none;width:100%;height:100%}#root.vertical #downArrow,#root.vertical #upArrow{display:block}#root.horizontal #leftArrow,#root.horizontal #rightArrow{display:block}#button1:hover,#button2:hover{background-color:var(--plain-scrollbar-button-color-hover,#e0e0e0)}#button1.active,#button2.active{background-color:var(--plain-scrollbar-button-color-active,silver)}`,su=iu`<div id="root" part="root"><div id="button1" part="button button1"><svg id="upArrow" part="arrow upArrow" viewBox="-100 -100 200 200">${Vr}</svg> <svg id="leftArrow" part="arrow leftArrow" viewBox="-100 -100 200 200"><g transform="rotate(-90)">${Vr}</g></svg></div><div id="trough" part="trough"><div id="thumb" part="thumb"></div></div><div id="button2" part="button button2"><svg id="downArrow" part="arrow downArrow" viewBox="-100 -100 200 200"><g transform="rotate(180)">${Vr}</g></svg> <svg id="rightArrow" part="arrow rightArrow" viewBox="-100 -100 200 200"><g transform="rotate(90)">${Vr}</g></svg></div></div>`;function ou(s){return s?"vertical":"horizontal"}function Gd(s){switch(s){case"vertical":return!0;case"horizontal":return!1;default:throw new Error('Invalid orientation value "'+s+'".')}}function Rr(s){return(s*100).toFixed(3)+"%"}function au(s){if(!(!s||!s.endsWith("px")))return Number(s.substring(0,s.length-2))}customElements.define("node-projects-plain-scrollbar",Fa);pa();$a();Fe();Ws();var ma=class{_originalCustomElementsRegistry;_newElements=[];constructor(){this._originalCustomElementsRegistry=window.customElements;let e={},t=this._originalCustomElementsRegistry,i=this._newElements;e.define=function(r,n,o){i.push(r),t.define(r,n,o)},e.get=function(r){return t.get(r)},e.upgrade=function(r){return t.upgrade(r)},e.whenDefined=function(r){return t.whenDefined(r)},Object.defineProperty(window,"customElements",{get(){return e}})}dispose(){let e=this._originalCustomElementsRegistry;Object.defineProperty(window,"customElements",{get(){return e}})}getNewElements(){let e=this._newElements;return this._newElements=[],e}};ce();Qa();Qe();function eM(s,e,t){let i=e.getRootNode(),r=document.createElement("div");return r.popover="auto",typeof s=="string"?r.innerHTML=s:r.append(s),i instanceof ShadowRoot?i.appendChild(r):document.body.appendChild(r),Object.assign(r.style,{positionArea:"right bottom",positionTryFallbacks:`
3
+ `}getString(){return this._textHolder}}});var Qr,$d=g(()=>{"use strict";Qr=class{_textHolder="";get position(){return this._textHolder.length}isLastCharNewline(){return this._textHolder[this._textHolder.length-1]===`
4
+ `}levelRaise(){}levelShrink(){}write(e){this._textHolder+=e}writeLine(e){this._textHolder+=e}writeIndent(){}writeNewline(){}getString(){return this._textHolder}}});var Q,Ze=g(()=>{"use strict";Za();$d();Q=class{static normalizeAttributeValue(e,t=!1){return typeof e=="number"&&(e=e.toString()),e?t?e.replaceAll("&","&amp;").replaceAll("'","&#39;").replaceAll("<","&lt;").replaceAll(">","&gt;"):e.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("<","&lt;").replaceAll(">","&gt;"):e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")}static normalizeContentValue(e){return e&&e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll("\xA0","&nbsp;")}static IsSelfClosingElement(e){return e==="area"||e==="base"||e==="br"||e==="col"||e==="embed"||e==="hr"||e==="img"||e==="input"||e==="keygen"||e==="link"||e==="meta"||e==="param"||e==="source"||e==="track"||e==="wbr"}static ConvertToString(e,t,i=!1){let r=t!==!1?new Zr:new Qr;return e[0].serviceContainer.htmlWriterService.write(r,e,!0,i),r.getString()}}});import{css as xu}from"@node-projects/base-custom-webcomponent";var be,Tt=g(()=>{"use strict";be=class s{static _contextMenuCss=xu`.context_menu{position:fixed;inset:auto;margin:0;border:none;background:0 0;overflow:visible;opacity:0;transform:scale(0);transition:transform .1s;transform-origin:top left;padding:0;z-index:2147483647;color:#000}.context_menu.context_menu_display{opacity:1;transform:scale(1)}.context_menu,.context_menu *{box-sizing:border-box}.context_menu *{position:relative}.context_menu ul{list-style-type:none;padding:3px;margin:0;border:none;background-color:#f5f7f7;box-shadow:0 0 5px #333;max-inline-size:calc(100vw - 8px);max-block-size:calc(100vh - 8px);overflow:auto;overscroll-behavior:contain;isolation:isolate}.context_menu ul[popover]{inset:auto;margin:0;border:none}.context_menu li{padding:0;padding-right:1.7em;cursor:pointer;white-space:nowrap;display:flex;align-items:center}.context_menu li:hover{background-color:#bbb}.context_menu li .context_menu_icon_span{width:28px;display:inline-flex;align-items:center;justify-content:center}.context_menu li .context_menu_icon_span img{height:18px}.context_menu li .context_menu_text{padding-left:2px;vertical-align:middle}.context_menu li .context_menu_sub_span{width:1em;display:inline-block;text-align:center;position:absolute;top:50%;right:.5em;transform:translateY(-50%)}.context_menu li>ul{position:absolute;inset:auto;top:0;left:100%;opacity:0;transition:opacity .2s;visibility:hidden}.context_menu li>ul.context_menu_submenu_popover{position:fixed}.context_menu li>ul:popover-open{opacity:1;visibility:visible}.context_menu li.context_menu_divider{border-bottom:1px solid #aaa;margin:5px;padding:0;cursor:default}.context_menu li.context_menu_divider:hover{background-color:inherit}.context_menu li[disabled=""]{color:#777;cursor:default}.context_menu li[disabled=""]:hover{background-color:inherit}.context_menu li.context_menu_marked{background-color:#5ebdec}`;static count=0;static _openedContextMenus=new Set;menu;options;context;num;_menuElement;constructor(e,t,i){this.num=s.count++,this.menu=e,this.options=t,this.context=i,this.reload(),this._windowDown=this._windowDown.bind(this),this._windowKeyUp=this._windowKeyUp.bind(this),this._windowResize=this._windowResize.bind(this)}reload(){let e=this.options?.shadowRoot??document;this._menuElement==null&&(this._menuElement=document.createElement("div"),this._menuElement.className="context_menu",this._menuElement.id="context_menu_"+this.num,this._menuElement.setAttribute("popover","manual"),e===document?document.body.appendChild(this._menuElement):e.appendChild(this._menuElement)),this._menuElement.innerHTML="",e.adoptedStyleSheets.indexOf(s._contextMenuCss)<0&&(e.adoptedStyleSheets=[...e.adoptedStyleSheets,s._contextMenuCss]),this._menuElement.appendChild(this.renderLevel(this.menu))}renderLevel(e){let t=document.createElement("ul"),i=!1;return e.forEach(r=>{if(r.title!=="-"){if(i){let c=document.createElement("li");c.className="context_menu_divider",i=!1,t.appendChild(c)}let n=document.createElement("li"),o=document.createElement("span");o.className="context_menu_icon_span",r.checked===!0?o.innerHTML="\u2714":(r.icon??"")!=""?o.innerHTML=r.icon??"":o.innerHTML=this.options?.defaultIcon??"";let a=document.createElement("span");a.className="context_menu_text",a.innerHTML=r.title??"";let l=document.createElement("span");if(l.className="context_menu_sub_span",r.children!=null&&(l.innerHTML=this.options?.subIcon??"&#155;"),n.appendChild(o),n.appendChild(a),n.appendChild(l),r.disabled)n.setAttribute("disabled","");else if(r.checkable?n.addEventListener("click",c=>{c.stopPropagation(),c.preventDefault(),r.checked=!r.checked,o.innerHTML=r.checked?"\u2714":r.icon??this.options?.defaultIcon??"",r.action&&r.action(c,r,this.context,this)}):r.action&&n.addEventListener("click",c=>{c.stopPropagation(),c.preventDefault(),r.action?.(c,r,this.context,this),this.close()}),this.options?.mode=="undo"&&n.addEventListener("mouseup",c=>{c.stopPropagation(),r.action?.(c,r,this.context,this),this.close()}),n.addEventListener("mouseenter",()=>{this.closeSiblingSubmenus(n),this.options?.mode=="undo"&&this.markUndoItems(n)}),r.children!=null){let c=this.renderLevel(r.children);this.configurePopoverSubmenu(c),n.appendChild(c),n.addEventListener("mouseenter",()=>{this.openPopoverSubmenu(n,c)})}t.appendChild(n)}else i=!0}),t}display(e){let t=this._menuElement,i=this.options?.mouseOffset!=null?this.options.mouseOffset:2;this.showPopover(t),this.positionMenu(t,e.clientX,e.clientY,i),t.classList.add("context_menu_display"),e.preventDefault(),s._openedContextMenus.add(this),window.addEventListener("keyup",this._windowKeyUp),window.addEventListener("resize",this._windowResize),window.addEventListener("mousedown",this._windowDown),setTimeout(()=>{s._openedContextMenus.has(this)&&window.addEventListener("contextmenu",this._windowDown)},150)}_windowResize(){this.close()}_windowDown(e){return e.preventDefault(),(!(e.target instanceof Node)||!this._menuElement.contains(e.target))&&this.close(),!1}_windowKeyUp(e){e.key==="Escape"&&this.close()}static show(e,t,i,r){let n=new s(e,i,r);return n.display(t),n}close(){this.hideDescendantSubmenus(this._menuElement),this.hidePopover(this._menuElement),this._menuElement.remove(),window.removeEventListener("mousedown",this._windowDown),window.removeEventListener("resize",this._windowResize),window.removeEventListener("keyup",this._windowKeyUp),setTimeout(()=>window.removeEventListener("contextmenu",this._windowDown),10),s._openedContextMenus.delete(this)}static closeAll(){for(let e of s._openedContextMenus.values())e.close()}configurePopoverSubmenu(e){e.classList.add("context_menu_submenu_popover"),e.setAttribute("popover","manual")}markUndoItems(e){if(e.parentElement==null)return;let t=!0;for(let i of e.parentElement.children)t?i.classList.add("context_menu_marked"):i.classList.remove("context_menu_marked"),i==e&&(t=!1)}closeSiblingSubmenus(e){if(e.parentElement!=null)for(let t of e.parentElement.children)t!==e&&this.hideDescendantSubmenus(t)}hideDescendantSubmenus(e){let t=e.querySelectorAll("ul[popover]");for(let i of t)this.hidePopover(i)}openPopoverSubmenu(e,t){this.showPopover(t),this.positionSubmenuPopover(e,t)}showPopover(e){this.isPopoverOpen(e)||e.showPopover()}hidePopover(e){e==null||!this.isPopoverOpen(e)||e.hidePopover()}isPopoverOpen(e){return e.matches(":popover-open")}positionMenu(e,t,i,r){let n=e.offsetWidth+4,o=e.offsetHeight+4,a=window.innerWidth-t,l=t,c=window.innerHeight-i,h=i,d=t+r;a<n&&l>a&&(d=t-n-r);let p=i+r;c<o&&h>c&&(p=i-o-r),e.style.left=`${Math.max(0,Math.min(d,window.innerWidth-n))}px`,e.style.top=`${Math.max(0,Math.min(p,window.innerHeight-o))}px`}positionSubmenuPopover(e,t){let i=e.getBoundingClientRect(),r=t.getBoundingClientRect(),n=t.offsetWidth||r.width,o=t.offsetHeight||r.height,a=window.innerWidth-i.right,l=i.left,c=i.right;a<n&&l>a&&(c=i.left-n);let h=window.innerHeight-i.top,d=i.bottom,p=i.top;h<o&&d>h&&(p=i.bottom-o),t.style.left=`${Math.max(0,Math.min(c,window.innerWidth-n))}px`,t.style.top=`${Math.max(0,Math.min(p,window.innerHeight-o))}px`,t.style.right="auto",t.style.bottom="auto"}}});var We,Wt=g(()=>{"use strict";Tt();We=class{settingName;content;tooltp;contextmenu;constructor(e,t,i,r){this.settingName=e,this.content=t,this.tooltp=i,this.contextmenu=r}provideButtons(e,t){let i=document.createElement("div");typeof this.content=="string"?i.innerHTML=this.content:i.appendChild(this.content),i.title=this.tooltp,i.className="toolbar-control",t.instanceServiceContainer.designContext.extensionOptionsChanged.on(()=>{r[this.settingName]!==!1?i.classList.add("selected"):i.classList.remove("selected")});let r=t.instanceServiceContainer.designContext.extensionOptions;return r[this.settingName]!==!1&&i.classList.add("selected"),i.onclick=()=>{let n=r[this.settingName];r[this.settingName]=n===!1,r[this.settingName]!==!1?i.classList.add("selected"):i.classList.remove("selected")},i.oncontextmenu=n=>{n.preventDefault(),this.contextmenu&&be.show(this.contextmenu,n)},[i]}}});var Jr,qr,en=g(()=>{"use strict";Wt();Jr="enableStylesheetService",qr=class extends We{constructor(){super(Jr,"ss","modify Stylesheet")}}});var tn,Qa=g(()=>{"use strict";tn=class{constructor(e,t,i){this.title="Change TextContent from '"+i+"' to '"+t+"'",this.designItem=e,this.newValue=t,this.oldValue=i}title;get affectedItems(){return[this.designItem]}undo(){return this.designItem.element.textContent=this.oldValue,[{changeType:"changed",designItems:this.affectedItems,type:"property",name:"textContent",oldValue:this.newValue,newValue:this.oldValue}]}do(){return this.designItem.element.textContent=this.newValue,[{changeType:"changed",designItems:this.affectedItems,type:"property",name:"textContent",oldValue:this.oldValue,newValue:this.newValue}]}designItem;newValue;oldValue;mergeWith(e){return!1}}});function Zd(s,...e){return s.reduce((t,i,r)=>t+i+(e[r]??""),"")}function Qd(){return window.navigator.platform?.startsWith("Mac")||window.navigator.platform==="iPhone"||window.navigator.platform==="iPad"||window.navigator.platform==="iPod"}function mt(s){return new Promise(e=>setTimeout(e,s))}async function qd(s,e){let t=URL.createObjectURL(s),i=document.createElement("a");i.href=t,i.style.display="none",i.download=e,document.body.appendChild(i),i.click(),document.body.removeChild(i),await mt(300)}function Ax(s){for(var e=s.split(",")[0].split(":")[1].split(";")[0],t=atob(s.split(",")[1]),i=[],r=0;r<t.length;r++)i.push(t.charCodeAt(r));return new Blob([new Uint8Array(i)],{type:e})}function Ix(s,e){return s.x>=e.x&&s.x<=e.x+e.width&&s.y>=e.y&&s.y<=e.y+e.height}function jt(s,e){return s.endsWith(e??"/")?s.substring(0,s.length-1):s}function Se(s,e){return s.startsWith(e??"/")?s.substring(1):s}function tr(){return new Promise(s=>requestAnimationFrame(s))}function kx(s,e){if(s===e)return!0;if(s==null||e==null||s.length!==e.length)return!1;for(var t=0;t<s.length;++t)if(s[t]!==e[t])return!1;return!0}function Jd(s,e,t=!1,i="."){if(e==null)return s;let r=e.split(i);for(let n=0;n<r.length;n++)if(s!=null)s=s[r[n]];else return t?_u:null;return s}function qa(s,e,t,i="."){if(e==null)return;let r=e.split(i);for(let n=0;n<r.length-1;n++)if(s!=null){let o=s[r[n]];o==null&&(o={},s[r[n]]=o),s=o}s!=null&&(s[r[r.length-1]]=t)}var _u,Ne=g(()=>{"use strict"});var rn,Ja=g(()=>{"use strict";Ne();rn=class s{constructor(e,t,i,r){this.title="Change Property "+t+" of &lt;"+e.name+"&gt;",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=r}title;get affectedItems(){return[this.designItem]}undo(){return qa(this.designItem.node,this.name,this.oldValue),[{changeType:"changed",type:"property",name:this.name,designItems:[this.designItem]}]}do(){return qa(this.designItem.node,this.name,this.newValue),[{changeType:"changed",type:"property",name:this.name,designItems:[this.designItem]}]}designItem;name;newValue;oldValue;mergeWith(e){return e instanceof s&&this.designItem===e.designItem&&this.name===e.name?(this.newValue=e.newValue,!0):!1}}});var ir,el=g(()=>{"use strict";ir=class s{constructor(e,t,i,r,n){this.title="Change Attribute & Property"+t+" of &lt;"+e.name+"&gt;",this.designItem=e,this.attributeName=t,this.propertyName=i,this.newValue=r,this.oldValue=n}title;get affectedItems(){return[this.designItem]}undo(){if(this.designItem.element[this.propertyName]=this.oldValue,this.oldValue==null)return this.designItem._withoutUndoRemoveAttribute(this.attributeName),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:null}];{let e=this.oldValue;return typeof this.oldValue!="string"&&(e=this.oldValue.toString()),this.designItem._withoutUndoSetAttribute(this.attributeName,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:e}]}}do(){if(this.designItem.element[this.propertyName]=this.newValue,this.newValue==null)return this.designItem._withoutUndoRemoveAttribute(this.attributeName),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:null}];{let e=this.newValue;return typeof this.newValue!="string"&&(e=this.newValue.toString()),this.designItem._withoutUndoSetAttribute(this.attributeName,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.oldValue,newValue:e}]}}designItem;attributeName;propertyName;newValue;oldValue;mergeWith(e){return e instanceof s&&this.designItem===e.designItem&&this.attributeName===e.attributeName&&this.propertyName===e.propertyName?(this.newValue=e.newValue,!0):!1}}});import{TypedEvent as bu}from"@node-projects/base-custom-webcomponent";var fi,gi,Ut,ut,hi,di,pi,mi,ui,M,ne=g(()=>{"use strict";Ya();q();Xa();$e();Ka();_e();$a();Ze();en();Qa();Ja();Ne();el();fi="node-projects-hide-at-design-time",gi="node-projects-hide-at-run-time",Ut="node-projects-lock-at-design-time",ut="node-projects-force-hover",hi="node-projects-force-active",di="node-projects-force-visited",pi="node-projects-force-focus",mi="node-projects-force-focus-within",ui="node-projects-force-focus-visible",M=class s{lastContainerSize;parsedNode;node;view;serviceContainer;instanceServiceContainer;nodeReplaced=new bu;get window(){return this.isRootItem&&this.node instanceof HTMLIFrameElement?this.node.contentDocument.defaultView:this.node.ownerDocument.defaultView??window}get document(){return this.isRootItem&&this.node instanceof HTMLIFrameElement?this.node.contentDocument:this.node.ownerDocument}get usableContainer(){return this.isRootItem&&this.element instanceof(this.element.ownerDocument.defaultView??window).HTMLIFrameElement?this.element.contentWindow.document:this.isRootItem?this.node.shadowRoot:this.element}async clone(){try{let e=Q.ConvertToString([this],!1);return(await this.serviceContainer.htmlParserService.parse(e,this.serviceContainer,this.instanceServiceContainer,!0))[0]}catch{console.warn("could not clone design item.",this)}return null}*allMatching(e){if(this.hasChildren)for(let t of this.children())t.nodeType==I.Element&&t.element.matches(e)&&(yield t),yield*t.allMatching(e)}replaceNode(e){s._designItemMap.delete(this.node),s._designItemMap.set(e,this),this.view==this.node&&(this.view=e),this.node=e,this.nodeReplaced.emit()}get nodeType(){return this.node instanceof(this.node.ownerDocument.defaultView??window).Comment?I.Comment:this.node instanceof(this.node.ownerDocument.defaultView??window).Text?I.TextNode:I.Element}_attributes;get hasAttributes(){return this._attributes.size>0}hasAttribute(e){return this._attributes.has(e)}getAttribute(e){return this._attributes.get(e)}*attributes(){for(let e of this._attributes)yield e}_withoutUndoSetAttribute(e,t){try{this.element.setAttribute(e,t)}catch(i){i?.code!==5&&console.warn(i)}this._attributes.set(e,t),this.serviceContainer.designItemService.handleSpecialAttributes(e,this)}_withoutUndoRemoveAttribute(e){try{this.element.removeAttribute(e)}catch(t){t?.code!==5&&console.warn(t)}this._attributes.delete(e),this.serviceContainer.designItemService.handleSpecialAttributes(e,this)}_styles;get hasStyles(){return this._styles.size>0}hasStyle(e){let t=e;return t.startsWith("--")||(t=R.camelToDashCase(e)),this._styles.has(t)}getStyle(e){let t=e;return t.startsWith("--")||(t=R.camelToDashCase(e)),this._styles.get(t)}*styles(){for(let e of this._styles)yield e}_withoutUndoSetStyle(e,t){let i=e;i.startsWith("--")||(i=R.camelToDashCase(e)),this._styles.set(i,t)}_withoutUndoRemoveStyle(e){let t=e;t.startsWith("--")||(t=R.camelToDashCase(e)),this._styles.delete(t)}static _designItemMap=new WeakMap;get element(){return this.view}get name(){return this.node.localName}get id(){return this.element.id}set id(e){let t=this.element.id;this.element.id=e,this.id?this.setAttribute("id",e):this.removeAttribute("id"),this.serviceContainer.referencesChangedService&&this.serviceContainer.referencesChangedService.notifyReferencesChanged([{designItem:this,oldValue:t,type:"idChanged"}])}get isRootItem(){return this.instanceServiceContainer.designerCanvas.rootDesignItem===this}*childrenRect(e){if(this.hasChildren)for(let t of this.children())t.nodeType==I.Element&&t.element.matches(e)&&(yield t),yield*t.allMatching(e)}_childArray=[];get hasChildren(){return this._childArray.length>0}*children(e=!1){for(let t of this._childArray)if(yield t,e)for(let i of t.children(e))yield i}get childCount(){return this._childArray.length}get firstChild(){return this._childArray[0]}_parent;get parent(){return this._parent}indexOf(e){return this._childArray.indexOf(e)}insertAdjacentElement(e,t){let i;t=="afterbegin"?i=new Dt(e,this,0):t=="beforeend"?i=new Dt(e,this,this._childArray.length):t=="beforebegin"?i=new Dt(e,this.parent,this.parent.indexOf(this)):t=="afterend"&&(i=new Dt(e,this.parent,this.parent.indexOf(this)+1)),this.instanceServiceContainer.undoService.execute(i)}insertChild(e,t){let i=new Dt(e,this,t);this.instanceServiceContainer.undoService.execute(i)}removeChild(e){this.serviceContainer.deletionService.removeItems([e])}remove(){this.serviceContainer.deletionService.removeItems([this])}clearChildren(){for(let e=this._childArray.length-1;e>=0;e--)this._childArray[e].remove()}get hasContent(){return(this.nodeType==I.TextNode||this.nodeType==I.Comment)&&this.element.textContent!=""||this._childArray.length===0}get content(){return this.nodeType==I.TextNode||this.nodeType==I.Comment?this.node.textContent:this._childArray.map(e=>e.content).join()}set content(e){let t=this.openGroup("set content");this.clearChildren();let i=document.createTextNode(e),r=s.GetOrCreateDesignItem(i,i,this.serviceContainer,this.instanceServiceContainer);if(this.nodeType==I.TextNode){let n=this.parent.indexOf(this),o=this.parent;this.remove(),o.insertChild(r,n)}else if(this.nodeType==I.Comment){let n=new tn(this,e,this.content);this.instanceServiceContainer.undoService.execute(n)}else this.insertChild(r);t.commit()}get innerHTML(){return Q.ConvertToString([...this.children()],!1)}set innerHTML(e){if(this.nodeType!=I.TextNode){let t=this.openGroup("set innerHTML");this.clearChildren();let i=document.createRange();i.selectNode(document.body);let r=i.createContextualFragment(e);for(let n of[...r.childNodes]){let o=s.createDesignItemFromInstance(n,this.serviceContainer,this.instanceServiceContainer);this.insertChild(o)}t.commit()}}get isEmptyTextNode(){return this.nodeType===I.TextNode&&this.content?.trim()==""}get hideAtDesignTime(){return this.hasAttribute(fi)}set hideAtDesignTime(e){e?this.setAttribute(fi,""):this.removeAttribute(fi)}get hideAtRunTime(){return this.hasAttribute(gi)}set hideAtRunTime(e){e?this.setAttribute(gi,""):this.removeAttribute(gi)}get lockAtDesignTime(){return this.hasAttribute(Ut)}set lockAtDesignTime(e){e?this.setAttribute(Ut,""):this.removeAttribute(Ut)}static createDesignItemFromInstance(e,t,i){let r=t.designItemService.createDesignItem(e,e,t,i);if(e instanceof(e.ownerDocument.defaultView??window).HTMLTemplateElement&&e.getAttribute("shadowrootmode")=="open")try{e.parentNode.attachShadow({mode:"open"}).appendChild(e.content.cloneNode(!0))}catch(n){console.error("error attaching shadowdom",n)}if(r.nodeType==I.Element){for(let n of r.element.attributes)n.name!=="style"&&r._attributes.set(n.name,n.value);if(e instanceof(e.ownerDocument.defaultView??window).HTMLElement||e instanceof(e.ownerDocument.defaultView??window).SVGElement){let n=new $r,o=e.getAttribute("style");if(o){n.parse(o);for(let a of n.entries)r._styles.set(a.name,a.value)}t.designItemService.handleSpecialAttributes(Ut,r)}e.draggable=!1}r._childArray=r._internalUpdateChildrenFromNodesChildren();for(let n of r._childArray)n._parent=r;return r}querySelectorAll(e){return this.usableContainer.querySelectorAll(e)}removeDesignerAttributesAndStylesFromChildren(){let e=this.querySelectorAll("*");for(let t of e){let i=s.GetDesignItem(t);i.hasAttribute("draggable")||t.removeAttribute("draggable"),i.hasStyle("pointer-events")||(t.style.pointerEvents="")}}updateChildrenFromNodesChildren(){this._childArray=this._internalUpdateChildrenFromNodesChildren();for(let e of this._childArray)e._parent=this}_internalUpdateChildrenFromNodesChildren(){let e=[];if(this.nodeType==I.Element)if(this.element instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement)for(let t of this.element.content.childNodes){let i=s.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}else if(this.isRootItem&&this.element instanceof(this.node.ownerDocument.defaultView??window).HTMLIFrameElement)for(let t of this.element.contentWindow.document.childNodes){let i=s.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}else for(let t of this.element.childNodes){let i=s.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}return e}_backupWhenEditContent;_inEditContent=!1;editContent(){this._inEditContent=!0,this._backupWhenEditContent=[...this.element.childNodes];let e=this.element.innerHTML;this.element.innerHTML="",this.element.innerHTML=e,this.element.setAttribute("contenteditable","")}editContentFinish(){if(this._inEditContent){this._inEditContent=!1,this.element.removeAttribute("contenteditable"),this.element.innerHTML="";for(let e of this._backupWhenEditContent)this.element.appendChild(e);this._backupWhenEditContent=null}}constructor(e,t,i,r){this.node=e,this.view=e,this.parsedNode=t,this.serviceContainer=i,this.instanceServiceContainer=r,this._attributes=new Map,this._styles=new Map,s._designItemMap.set(e,this)}setView(e){this.view=e,s._designItemMap.set(e,this)}openGroup(e){return this.instanceServiceContainer.undoService.openGroup(e)}getOrCreateDesignItem(e){return s.GetOrCreateDesignItem(e,e,this.serviceContainer,this.instanceServiceContainer)}static GetOrCreateDesignItem(e,t,i,r){if(!e)return null;let n=s._designItemMap.get(e);return n||(n=i.designItemService.createDesignItem(e,t,i,r)),n}static GetDesignItem(e){return e?s._designItemMap.get(e):null}setStyle(e,t,i){let r=e;if(r.startsWith("--")||(r=R.camelToDashCase(e)),this.isRootItem)throw"not allowed to set style on root item or use async setStyle";{let n=new ci(this,r,t,this._styles.get(r));this.instanceServiceContainer.undoService.execute(n)}}async setStyleAsync(e,t,i){let r=e;if(r.startsWith("--")||(r=R.camelToDashCase(e)),this.isRootItem)if(this.instanceServiceContainer.stylesheetService){let n=this.instanceServiceContainer.stylesheetService.getDeclarationsSortedBySpecificity(this,e);if(n!==null&&n.length>0)this.instanceServiceContainer.stylesheetService.updateDeclarationValue(n[0],t,i);else{let o=this.instanceServiceContainer.stylesheetService.getRules(":host").filter(a=>!a.stylesheet?.readOnly);if(n===null||o.length===0){let a=this.openGroup("add rule and set style: "+e),l=this.instanceServiceContainer.stylesheetService.getStylesheets(),c=await this.instanceServiceContainer.stylesheetService.addRule(l[0],":host");this.instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(c,e,t,i),a.commit()}else this.instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(o[0],e,t,i)}}else throw"not allowed to set style on root item";else{let n=new ci(this,r,t,this._styles.get(r));this.instanceServiceContainer.undoService.execute(n)}}removeStyle(e){let t=e;t.startsWith("--")||(t=R.camelToDashCase(e));let i=new ci(this,t,"",this._styles.get(t));this.instanceServiceContainer.undoService.execute(i)}updateStyleInSheetOrLocal(e,t,i,r){let n=e;n.startsWith("--")||(n=R.camelToDashCase(e));let o=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,n).filter(a=>!a.stylesheet?.readOnly);this.hasStyle(e)||this.instanceServiceContainer.designContext.extensionOptions[Jr]===!1||!o?.length?this.getStyle(n)!=t||r?this.setStyle(n,t):t==null&&this.removeStyle(n):this.instanceServiceContainer.stylesheetService.updateDeclarationValue(o[0],t,!1)}async updateStyleInSheetOrLocalAsync(e,t,i,r){let n=e;n.startsWith("--")||(n=R.camelToDashCase(e));let o=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,n).filter(a=>!a.stylesheet?.readOnly);this.hasStyle(e)||this.instanceServiceContainer.designContext.extensionOptions[Jr]===!1||!o?.length?this.getStyle(n)!=t||r?await this.setStyleAsync(n,t):t==null&&this.removeStyle(n):this.instanceServiceContainer.stylesheetService.updateDeclarationValue(o[0],t,!1)}getStyleFromSheetOrLocal(e,t=null){let i=e;if(i.startsWith("--")||(i=R.camelToDashCase(e)),this.hasStyle(e))return this.getStyle(i);let r=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,i);return r&&r.length>0?r[0].value:null}getStyleFromSheetOrLocalOrComputed(e,t=null){let i=e;i.startsWith("--")||(i=R.camelToDashCase(e));let r=this.getStyleFromSheetOrLocal(i);return r||(r=getComputedStyle(this.element).getPropertyValue(i)),r??t}getComputedStyleProperty(e,t=null){let i=e;i.startsWith("--")||(i=R.camelToDashCase(e));let r=this.getStyleFromSheetOrLocal(i);return r||(r=getComputedStyle(this.element).getPropertyValue(i)),r??t}getComputedStyle(){return this.nodeType==I.Element?this.window.getComputedStyle(this.element):null}_stylesCache=null;_cacheClearTimer;getAllStyles(){let e=this._stylesCache;if(e)return e;if(this.nodeType!=I.Element)return[];let t=[...this._styles.entries()].map(i=>({name:i[0],value:i[1],important:!1,parent:null}));if(this.instanceServiceContainer.stylesheetService)try{let i=this.instanceServiceContainer.stylesheetService?.getAppliedRules(this);if(i)return[{selector:null,declarations:t,specificity:null,stylesheet:null},...i]}catch(i){console.warn("getAppliedRules",i)}return e=[{selector:null,declarations:t,specificity:null,stylesheet:null}],this._stylesCache=e,clearTimeout(this._cacheClearTimer),this._cacheClearTimer=setTimeout(()=>this._stylesCache=null,30),e}setAttribute(e,t){if(this.isRootItem)throw"not allowed to set attribute on root item";let i=new er(this,e,t,this._attributes.get(e));this.instanceServiceContainer.undoService.execute(i)}removeAttribute(e){let t=new er(this,e,null,this._attributes.get(e));this.instanceServiceContainer.undoService.execute(t)}setPropertyAndAttribute(e,t){let i=R.camelToDashCase(e),r=R.dashToCamelCase(e);if(this.isRootItem)throw"not allowed to set attribute on root item";let n=new ir(this,i,r,t,this.element[r]);this.instanceServiceContainer.undoService.execute(n)}removePropertyAndAttribute(e){let t=R.camelToDashCase(e),i=R.dashToCamelCase(e),r=new ir(this,t,i,null,this.element[i]);this.instanceServiceContainer.undoService.execute(r)}setProperty(e,t){if(this.isRootItem)throw"not allowed to set attribute on root item";let i=Jd(this.node,e),r=new rn(this,e,t,i);this.instanceServiceContainer.undoService.execute(r)}_insertChildInternal(e,t){this._insertChildsInternal([e],t)}_insertChildsInternal(e,t){let i=this.document.createDocumentFragment(),r=null;for(let n of e)n.parent&&this.instanceServiceContainer.selectionService.primarySelection==n&&(n.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(n.parent,P.PrimarySelectionContainer),n.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(n.parent,P.PrimarySelectionContainerAndCanBeEntered)),n.parent&&n.parent._removeChildInternal(n),i.appendChild(n.view),n._parent=this,t==null||this._childArray.length==0||t>=this._childArray.length?this._childArray.push(n):(r=this._childArray[t],this._childArray.splice(t,0,n),t++);r==null?this.isRootItem?(this.usableContainer?.children[0]instanceof this.window.HTMLHtmlElement&&this.usableContainer.children[0].remove(),this.usableContainer.appendChild(i)):this.view instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement?this.view.content.appendChild(i):this.view.appendChild(i):this.isRootItem?(this.usableContainer?.children[0]instanceof this.window.HTMLHtmlElement&&this.usableContainer.children[0].remove(),this.usableContainer.insertBefore(i,r.element)):this.view instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement?this.view.content.insertBefore(i,r.element):this.view.insertBefore(i,r.element),this._refreshIfStyleSheet()}_removeChildInternal(e){e.parent&&this.instanceServiceContainer.selectionService.primarySelection==e&&(e.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(e.parent,P.PrimarySelectionContainer),e.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(e.parent,P.PrimarySelectionAndCanBeEntered)),e.instanceServiceContainer.designerCanvas.extensionManager.removeExtensions([e],!0);let t=this._childArray.indexOf(e);t>-1&&(this._childArray.splice(t,1),e.element.remove(),e._parent=null),this._refreshIfStyleSheet()}_refreshIfStyleSheet(){this.name=="style"||this.parent?.name=="style"||this.name=="link"}getPlacementService(e){return this.nodeType!=I.Element?null:(e??=getComputedStyle(this.element),this.serviceContainer.getLastServiceWhere("containerService",t=>t.serviceForContainer(this,e)))}static createDesignItemFromImageBlob(e,t,i){return new Promise(r=>{let n=new FileReader;n.onloadend=()=>{let o=document.createElement("img");o.src=n.result;let a=s.createDesignItemFromInstance(o,e,t);return r(a)},n.readAsDataURL(i)})}get hasForcedCss(){return this.cssForceHover||this.cssForceActive||this.cssForceVisited||this.cssForceFocus||this.cssForceFocusWithin||this.cssForceFocusVisible}get cssForceHover(){return this.element.hasAttribute(ut)}set cssForceHover(e){e?this.element.setAttribute(ut,""):this.element.removeAttribute(ut),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:ut,designItems:[this]}])}get cssForceActive(){return this.element.hasAttribute(hi)}set cssForceActive(e){e?this.element.setAttribute(hi,""):this.element.removeAttribute(hi),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:hi,designItems:[this]}])}get cssForceVisited(){return this.element.hasAttribute(di)}set cssForceVisited(e){e?this.element.setAttribute(di,""):this.element.removeAttribute(di),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:di,designItems:[this]}])}get cssForceFocus(){return this.element.hasAttribute(pi)}set cssForceFocus(e){e?this.element.setAttribute(pi,""):this.element.removeAttribute(pi),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:pi,designItems:[this]}])}get cssForceFocusWithin(){return this.element.hasAttribute(mi)}set cssForceFocusWithin(e){e?this.element.setAttribute(mi,""):this.element.removeAttribute(mi),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:mi,designItems:[this]}])}get cssForceFocusVisible(){return this.element.hasAttribute(ui)}set cssForceFocusVisible(e){e?this.element.setAttribute(ui,""):this.element.removeAttribute(ui),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:ui,designItems:[this]}])}}});function tl(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}var ep=g(()=>{"use strict"});var nn,sn=g(()=>{"use strict";nn=navigator.userAgent.toLowerCase().includes("firefox")});var on,il=g(()=>{"use strict";ne();ep();le();sn();on=class{async getElement(e,t,i){if(e.import){let l=e.import;l[0]==="."&&(l=(window.location.origin+window.location.pathname).split("/").slice(0,-1).join("/")+"/"+l),window.importShim?importShim(l).then(c=>{!customElements.get(e.tag)&&e.className&&c[e.className]&&customElements.define(e.tag,c[e.className])}):import(l).then(c=>{!customElements.get(e.tag)&&e.className&&c[e.className]&&customElements.define(e.tag,c[e.className])}),i.designContext.imports.indexOf(l)<=0&&i.designContext.imports.push(l)}let r="";if(e.defaultAttributes)for(let l in e.defaultAttributes){let c=e.defaultAttributes[l];try{typeof c=="object"?r+=" "+l+'="'+tl(JSON.stringify(e.defaultAttributes[l]))+'"':r+=" "+l+'="'+tl(e.defaultAttributes[l])+'"'}catch(h){console.warn(h)}}let n="<"+e.tag+r+"></"+e.tag+">",o=Hr(n,i.designerCanvas.rootDesignItem.document);if(o._inNodeProjectsDesignerView=!0,e.defaultWidth&&(o.style.width=e.defaultWidth),e.defaultHeight&&(o.style.height=e.defaultHeight),o.style.position="absolute",e.defaultStyles)for(let l in e.defaultStyles)o.style[l]=e.defaultStyles[l];if(e.defaultContent)if(typeof e.defaultContent=="string"){let l;i.designerCanvas.rootDesignItem.window.Document.parseHTMLUnsafe&&!nn?l=i.designerCanvas.rootDesignItem.window.Document.parseHTMLUnsafe(e.defaultContent):l=new i.designerCanvas.rootDesignItem.window.DOMParser().parseFromString(e.defaultContent,"text/html",{includeShadowRoots:!0}),o.append(...l.head.childNodes),o.append(...l.body.childNodes)}else o.appendChild(e.defaultContent);return M.createDesignItemFromInstance(o,t,i)}}});var te,Ee=g(()=>{"use strict";pt();te=class{element;property;designItems;disableChangeNotification=!1;constructor(e){this.property=e}async _previewValueChanged(e){this.disableChangeNotification||this.designItems&&this.designItems.length&&await this.property.service.previewValue?.(this.designItems,this.property,e)}async _removePreviewValue(){this.disableChangeNotification||this.designItems&&this.designItems.length&&await this.property.service.removePreviewValue?.(this.designItems,this.property)}async _valueChanged(e){if(!this.disableChangeNotification&&this.designItems&&this.designItems.length){let t=this.designItems[0].openGroup("set property: "+this.property.name);e==null?this.property.service.clearValue(this.designItems,this.property,"value"):await this.property.service.setValue(this.designItems,this.property,e),t.commit()}}designItemsChanged(e){this.designItems=e}refreshValueWithoutNotification(e,t){e==G.none?this.element.classList.add("unset-value"):this.element.classList.remove("unset-value"),this.disableChangeNotification=!0;try{this.refreshValue(e,t)}catch(i){console.error(i)}this.disableChangeNotification=!1}}});var yi,rl=g(()=>{"use strict";yi=class s{red=0;green=0;blue=0;hue=0;sat=0;lightness=0;whiteness=0;blackness=0;cyan=0;magenta=0;yellow=0;black=0;ncol="R";opacity=1;valid=!1;toRgbString(){return"rgb("+this.red+", "+this.green+", "+this.blue+")"}toRgbaString(){return"rgba("+this.red+", "+this.green+", "+this.blue+", "+this.opacity+")"}toHwbString(){return"hwb("+this.hue+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%)"}toHwbStringDecimal(){return"hwb("+this.hue+", "+this.whiteness+", "+this.blackness+")"}toHwbaString(){return"hwba("+this.hue+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%, "+this.opacity+")"}toHslString(){return"hsl("+this.hue+", "+Math.round(this.sat*100)+"%, "+Math.round(this.lightness*100)+"%)"}toHslStringDecimal(){return"hsl("+this.hue+", "+this.sat+", "+this.lightness+")"}toHslaString(){return"hsla("+this.hue+", "+Math.round(this.sat*100)+"%, "+Math.round(this.lightness*100)+"%, "+this.opacity+")"}toCmykString(){return"cmyk("+Math.round(this.cyan*100)+"%, "+Math.round(this.magenta*100)+"%, "+Math.round(this.yellow*100)+"%, "+Math.round(this.black*100)+"%)"}toCmykStringDecimal(){return"cmyk("+this.cyan+", "+this.magenta+", "+this.yellow+", "+this.black+")"}toNcolString(){return this.ncol+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%"}toNcolStringDecimal(){return this.ncol+", "+this.whiteness+", "+this.blackness}toNcolaString(){return this.ncol+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%, "+this.opacity}toName(){let e,t,i,r=s.getColorArr("hexs");for(let n=0;n<r.length;n++)if(e=parseInt(r[n].substr(0,2),16),t=parseInt(r[n].substr(2,2),16),i=parseInt(r[n].substr(4,2),16),this.red==e&&this.green==t&&this.blue==i)return s.getColorArr("names")[n];return null}toHexString(){let e=s.toHex(this.red),t=s.toHex(this.green),i=s.toHex(this.blue);return"#"+e+t+i}toNameOrHexString(){let e=this.toName();return e||(e=this.toHexString()),e}toRgb(){return{r:this.red,g:this.green,b:this.blue,a:this.opacity}}toHsl(){return{h:this.hue,s:this.sat,l:this.lightness,a:this.opacity}}toHwb(){return{h:this.hue,w:this.whiteness,b:this.blackness,a:this.opacity}}toCmyk(){return{c:this.cyan,m:this.magenta,y:this.yellow,k:this.black,a:this.opacity}}toNcol(){return{ncol:this.ncol,w:this.whiteness,b:this.blackness,a:this.opacity}}isDark(e){let t=e||128;return(this.red*299+this.green*587+this.blue*114)/1e3<t}saturate(e){let t,i,r;t=e/100||.1,this.sat+=t,this.sat>1&&(this.sat=1),i=s.hslToRgb(this.hue,this.sat,this.lightness),r=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(r)}desaturate(e){let t,i,r;t=e/100||.1,this.sat-=t,this.sat<0&&(this.sat=0),i=s.hslToRgb(this.hue,this.sat,this.lightness),r=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(r)}lighter(e){let t,i,r;t=e/100||.1,this.lightness+=t,this.lightness>1&&(this.lightness=1),i=s.hslToRgb(this.hue,this.sat,this.lightness),r=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(r)}darker(e){let t,i,r;t=e/100||.1,this.lightness-=t,this.lightness<0&&(this.lightness=0),i=s.hslToRgb(this.hue,this.sat,this.lightness),r=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(r)}attachValues(e){this.red=e.red,this.green=e.green,this.blue=e.blue,this.hue=e.hue,this.sat=e.sat,this.lightness=e.lightness,this.whiteness=e.whiteness,this.blackness=e.blackness,this.cyan=e.cyan,this.magenta=e.magenta,this.yellow=e.yellow,this.black=e.black,this.ncol=e.ncol,this.opacity=e.opacity,this.valid=e.valid}static toColorObject(e){let t,i,r,n=[],o,a,l,c,h,d,p,m,u=[],f=[];if(e=s.w3trim(e.toLowerCase()),t=e.substr(0,1).toUpperCase(),i=e.substr(1),h=1,(t=="R"||t=="Y"||t=="G"||t=="C"||t=="B"||t=="M"||t=="W")&&!isNaN(i)&&(e.length==6&&e.indexOf(",")==-1||(e="ncol("+e+")")),e.length!=3&&e.length!=6&&!isNaN(e)&&(e="ncol("+e+")"),e.indexOf(",")>0&&e.indexOf("(")==-1&&(e="ncol("+e+")"),e.substr(0,3)=="rgb"||e.substr(0,3)=="hsl"||e.substr(0,3)=="hwb"||e.substr(0,4)=="ncol"||e.substr(0,4)=="cmyk"){if(e.substr(0,4)=="ncol"?(e.split(",").length==4&&e.indexOf("ncola")==-1&&(e=e.replace("ncol","ncola")),r="ncol",e=e.substr(4)):e.substr(0,4)=="cmyk"?(r="cmyk",e=e.substr(4)):(r=e.substr(0,3),e=e.substr(3)),o=3,l=!1,e.substr(0,1).toLowerCase()=="a"?(o=4,l=!0,e=e.substr(1)):r=="cmyk"&&(o=4,e.split(",").length==5&&(o=5,l=!0)),e=e.replace("(",""),e=e.replace(")",""),n=e.split(","),r=="rgb"){if(n.length!=o)return new s;for(a=0;a<o;a++){if((n[a]==""||n[a]==" ")&&(n[a]="0"),n[a].indexOf("%")>-1&&(n[a]=n[a].replace("%",""),n[a]=Number(n[a]/100),a<3&&(n[a]=Math.round(n[a]*255))),isNaN(n[a]))return new s;parseInt(n[a])>255&&(n[a]=255),a<3&&(n[a]=parseInt(n[a])),a==3&&Number(n[a])>1&&(n[a]=1)}m={r:n[0],g:n[1],b:n[2]},l==!0&&(h=Number(n[3]))}if(r=="hsl"||r=="hwb"||r=="ncol"){for(;n.length<o;)n.push("0");for((r=="hsl"||r=="hwb")&&parseInt(n[0])>=360&&(n[0]=0),a=1;a<o;a++){if(n[a].indexOf("%")>-1){if(n[a]=n[a].replace("%",""),n[a]=Number(n[a]),isNaN(n[a]))return new s;n[a]=n[a]/100}else n[a]=Number(n[a]);Number(n[a])>1&&(n[a]=1),Number(n[a])<0&&(n[a]=0)}r=="hsl"&&(m=s.hslToRgb(n[0],n[1],n[2]),d=Number(n[0]),p=Number(n[1])),r=="hwb"&&(m=s.hwbToRgb(n[0],n[1],n[2])),r=="ncol"&&(m=s.ncolToRgb(n[0],n[1],n[2])),l==!0&&(h=Number(n[3]))}if(r=="cmyk"){for(;n.length<o;)n.push("0");for(a=0;a<o;a++){if(n[a].indexOf("%")>-1){if(n[a]=n[a].replace("%",""),n[a]=Number(n[a]),isNaN(n[a]))return new s;n[a]=n[a]/100}else n[a]=Number(n[a]);Number(n[a])>1&&(n[a]=1),Number(n[a])<0&&(n[a]=0)}m=s.cmykToRgb(n[0],n[1],n[2],n[3]),l==!0&&(h=Number(n[4]))}}else if(e.substr(0,3)=="ncs")m=s.ncsToRgb(e);else{for(c=!1,u=s.getColorArr("names"),a=0;a<u.length;a++)if(e.toLowerCase()==u[a].toLowerCase()){f=s.getColorArr("hexs"),c=!0,m={r:parseInt(f[a].substr(0,2),16),g:parseInt(f[a].substr(2,2),16),b:parseInt(f[a].substr(4,2),16)};break}if(c==!1){for(e=e.replace("#",""),e.length==3&&(e=e.substr(0,1)+e.substr(0,1)+e.substr(1,1)+e.substr(1,1)+e.substr(2,1)+e.substr(2,1)),a=0;a<e.length;a++)if(!s.isHex(e.substr(a,1)))return new s;for(n[0]=parseInt(e.substr(0,2),16),n[1]=parseInt(e.substr(2,2),16),n[2]=parseInt(e.substr(4,2),16),a=0;a<3;a++)if(isNaN(n[a]))return new s;m={r:n[0],g:n[1],b:n[2]}}}return s.colorObject(m,h,d,p)}static colorObject(e,t,i,r){let n,o,a,l,c,h,d;return e?(t===null&&(t=1),n=s.rgbToHsl(e.r,e.g,e.b),o=s.rgbToHwb(e.r,e.g,e.b),a=s.rgbToCmyk(e.r,e.g,e.b),h=i||n.h,d=r||n.s,l=s.hueToNcol(h),c={red:e.r,green:e.g,blue:e.b,hue:h,sat:d,lightness:n.l,whiteness:o.w,blackness:o.b,cyan:a.c,magenta:a.m,yellow:a.y,black:a.k,ncol:l,opacity:t,valid:!0},c=s.roundDecimals(c),Object.assign(new s,c)):new s}static getColorArr(e){return e=="names"?["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","RebeccaPurple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen"]:e=="hexs"?["f0f8ff","faebd7","00ffff","7fffd4","f0ffff","f5f5dc","ffe4c4","000000","ffebcd","0000ff","8a2be2","a52a2a","deb887","5f9ea0","7fff00","d2691e","ff7f50","6495ed","fff8dc","dc143c","00ffff","00008b","008b8b","b8860b","a9a9a9","a9a9a9","006400","bdb76b","8b008b","556b2f","ff8c00","9932cc","8b0000","e9967a","8fbc8f","483d8b","2f4f4f","2f4f4f","00ced1","9400d3","ff1493","00bfff","696969","696969","1e90ff","b22222","fffaf0","228b22","ff00ff","dcdcdc","f8f8ff","ffd700","daa520","808080","808080","008000","adff2f","f0fff0","ff69b4","cd5c5c","4b0082","fffff0","f0e68c","e6e6fa","fff0f5","7cfc00","fffacd","add8e6","f08080","e0ffff","fafad2","d3d3d3","d3d3d3","90ee90","ffb6c1","ffa07a","20b2aa","87cefa","778899","778899","b0c4de","ffffe0","00ff00","32cd32","faf0e6","ff00ff","800000","66cdaa","0000cd","ba55d3","9370db","3cb371","7b68ee","00fa9a","48d1cc","c71585","191970","f5fffa","ffe4e1","ffe4b5","ffdead","000080","fdf5e6","808000","6b8e23","ffa500","ff4500","da70d6","eee8aa","98fb98","afeeee","db7093","ffefd5","ffdab9","cd853f","ffc0cb","dda0dd","b0e0e6","800080","663399","ff0000","bc8f8f","4169e1","8b4513","fa8072","f4a460","2e8b57","fff5ee","a0522d","c0c0c0","87ceeb","6a5acd","708090","708090","fffafa","00ff7f","4682b4","d2b48c","008080","d8bfd8","ff6347","40e0d0","ee82ee","f5deb3","ffffff","f5f5f5","ffff00","9acd32"]:null}static roundDecimals(e){return e.red=Number(e.red.toFixed(0)),e.green=Number(e.green.toFixed(0)),e.blue=Number(e.blue.toFixed(0)),e.hue=Number(e.hue.toFixed(0)),e.sat=Number(e.sat.toFixed(2)),e.lightness=Number(e.lightness.toFixed(2)),e.whiteness=Number(e.whiteness.toFixed(2)),e.blackness=Number(e.blackness.toFixed(2)),e.cyan=Number(e.cyan.toFixed(2)),e.magenta=Number(e.magenta.toFixed(2)),e.yellow=Number(e.yellow.toFixed(2)),e.black=Number(e.black.toFixed(2)),e.ncol=e.ncol.substr(0,1)+Math.round(Number(e.ncol.substr(1))),e.opacity=Number(e.opacity.toFixed(2)),e}static hslToRgb(e,t,i){let r,n,o,a,l;return e=e/60,i<=.5?n=i*(t+1):n=i+t-i*t,r=i*2-n,o=s.hueToRgb(r,n,e+2)*255,a=s.hueToRgb(r,n,e)*255,l=s.hueToRgb(r,n,e-2)*255,{r:o,g:a,b:l}}static hueToRgb(e,t,i){return i<0&&(i+=6),i>=6&&(i-=6),i<1?(t-e)*i+e:i<3?t:i<4?(t-e)*(4-i)+e:e}static hwbToRgb(e,t,i){let r,n,o=[],a;for(n=s.hslToRgb(e,1,.5),o[0]=n.r/255,o[1]=n.g/255,o[2]=n.b/255,a=t+i,a>1&&(t=Number((t/a).toFixed(2)),i=Number((i/a).toFixed(2))),r=0;r<3;r++)o[r]*=1-t-i,o[r]+=t,o[r]=Number(o[r]*255);return{r:o[0],g:o[1],b:o[2]}}static cmykToRgb(e,t,i,r){let n,o,a;return n=255-Math.min(1,e*(1-r)+r)*255,o=255-Math.min(1,t*(1-r)+r)*255,a=255-Math.min(1,i*(1-r)+r)*255,{r:n,g:o,b:a}}static ncolToRgb(e,t,i){let r,n,o;if(o=e,isNaN(e.substr(0,1))){if(r=e.substr(0,1).toUpperCase(),n=e.substr(1),n==""&&(n=0),n=Number(n),isNaN(n))return!1;r=="R"&&(o=0+n*.6),r=="Y"&&(o=60+n*.6),r=="G"&&(o=120+n*.6),r=="C"&&(o=180+n*.6),r=="B"&&(o=240+n*.6),r=="M"&&(o=300+n*.6),r=="W"&&(o=0,t=1-n/100,i=n/100)}return s.hwbToRgb(o,t,i)}static hueToNcol(e){for(;e>=360;)e=e-360;return e<60?"R"+e/.6:e<120?"Y"+(e-60)/.6:e<180?"G"+(e-120)/.6:e<240?"C"+(e-180)/.6:e<300?"B"+(e-240)/.6:e<360?"M"+(e-300)/.6:null}static ncsToRgb(e){let t,i,r,n,o,a,l,c,h,d,p,m,u,f,y,v,b,E,S;return e=s.w3trim(e).toUpperCase(),e=e.replace("(",""),e=e.replace(")",""),e=e.replace("NCS","NCS "),e=e.replace(/ /g," "),e.indexOf("NCS")==-1&&(e="NCS "+e),e=e.match(/^(?:NCS|NCS\sS)\s(\d{2})(\d{2})-(N|[A-Z])(\d{2})?([A-Z])?$/),e===null||(t=parseInt(e[1],10),i=parseInt(e[2],10),r=e[3],r!="N"&&r!="Y"&&r!="R"&&r!="B"&&r!="G")?null:(n=parseInt(e[4],10)||0,r!=="N"?(o=1.05*t-5.25,a=i,r==="Y"&&n<=60?h=1:r==="Y"&&n>60||r==="R"&&n<=80?(r==="Y"?l=n-60:l=n+40,h=(Math.sqrt(14884-Math.pow(l,2))-22)/100):r==="R"&&n>80||r==="B"?h=0:r==="G"&&(l=n-170,h=(Math.sqrt(33800-Math.pow(l,2))-70)/100),r==="Y"&&n<=80?c=0:r==="Y"&&n>80||r==="R"&&n<=60?(r==="Y"?l=n-80+20.5:l=n+20+20.5,c=(104-Math.sqrt(11236-Math.pow(l,2)))/100):r==="R"&&n>60||r==="B"&&n<=80?(r==="R"?l=n-60-60:l=n+40-60,c=(Math.sqrt(1e4-Math.pow(l,2))-10)/100):r==="B"&&n>80||r==="G"&&n<=40?(r==="B"?l=n-80-131:l=n+20-131,c=(122-Math.sqrt(19881-Math.pow(l,2)))/100):r==="G"&&n>40&&(c=0),r==="Y"?p=(85-17/20*n)/100:r==="R"&&n<=60?p=0:r==="R"&&n>60?(l=n-60+35,p=(67.5-Math.sqrt(5776-Math.pow(l,2)))/100):r==="B"&&n<=60?(l=1*n-68.5,p=(6.5+Math.sqrt(7044.5-Math.pow(l,2)))/100):r==="B"&&n>60||r==="G"&&n<=60?p=.9:r==="G"&&n>60&&(l=n-60,p=(90-1/8*l)/100),l=(h+p+c)/3,d=(l-h)*(100-a)/100+h,m=(l-p)*(100-a)/100+p,u=(l-c)*(100-a)/100+c,d>m&&d>u?f=d:m>d&&m>u?f=m:u>d&&u>m?f=u:f=(d+m+u)/3,y=1/f,b=parseInt(d*y*(100-o)/100*255,10),E=parseInt(m*y*(100-o)/100*255,10),S=parseInt(u*y*(100-o)/100*255,10),b>255&&(b=255),E>255&&(E=255),S>255&&(S=255),b<0&&(b=0),E<0&&(E=0),S<0&&(S=0)):(v=parseInt((1-t/100)*255,10),v>255&&(v=255),v<0&&(v=0),b=v,E=v,S=v),{r:b,g:E,b:S})}static rgbToHsl(e,t,i){let r,n,o,a,l,c,h,d=[];for(d[0]=e/255,d[1]=t/255,d[2]=i/255,r=d[0],n=d[0],c=0,o=0;o<d.length-1;o++)d[o+1]<=r&&(r=d[o+1]),d[o+1]>=n&&(n=d[o+1],c=o+1);return c==0&&(h=(d[1]-d[2])/(n-r)),c==1&&(h=2+(d[2]-d[0])/(n-r)),c==2&&(h=4+(d[0]-d[1])/(n-r)),isNaN(h)&&(h=0),h=h*60,h<0&&(h=h+360),a=(r+n)/2,r==n?l=0:a<.5?l=(n-r)/(n+r):l=(n-r)/(2-n-r),l=l,{h,s:l,l:a}}static rgbToHwb(e,t,i){let r,n,o;e=e/255,t=t/255,i=i/255;let a=Math.max(e,t,i),l=Math.min(e,t,i),c=a-l;return c==0?r=0:e==a?r=(t-i)/c%6*360:t==a?r=((i-e)/c+2)%6*360:r=((e-t)/c+4)%6*360,n=l,o=1-a,{h:r,w:n,b:o}}static rgbToCmyk(e,t,i){let r,n,o,a;return e=e/255,t=t/255,i=i/255,a=1-Math.max(e,t,i),a==1?(r=0,n=0,o=0):(r=(1-e-a)/(1-a),n=(1-t-a)/(1-a),o=(1-i-a)/(1-a)),{c:r,m:n,y:o,k:a}}static toHex(e){let t=e.toString(16);for(;t.length<2;)t="0"+t;return t}static w3trim(e){return e.replace(/^\s+|\s+$/g,"")}static isHex(e){return"0123456789ABCDEFabcdef".indexOf(e)>-1}}});var an,nl=g(()=>{"use strict";Ee();rl();an=class extends te{constructor(e){super(e);let t=document.createElement("input");t.type="color",e.readonly&&(t.readOnly=!0),t.onchange=async i=>{let r=yi.toColorObject(t.value);await this.property.service.removePreviewValue?.(this.designItems,this.property),this._valueChanged(r.toNameOrHexString())},t.oninput=async i=>{let r=yi.toColorObject(t.value);await this.property.service.previewValue?.(this.designItems,this.property,r.toNameOrHexString())},this.element=t}refreshValue(e,t){if(!t)this.element.value="#000000";else{let i=yi.toColorObject(t);this.element.value=i.toHexString()}}}});var ln,sl=g(()=>{"use strict";Ee();ln=class extends te{constructor(e){super(e);let t=document.createElement("input");t.type="datetime-local",e.readonly&&(t.readOnly=!0),t.onchange=i=>this._valueChanged(t.value),this.element=t}refreshValue(e,t){t?this.element.value=t:this.element.value=null}}});import{html as Su}from"@node-projects/base-custom-webcomponent";var cn,ol=g(()=>{"use strict";Ee();cn=class s extends te{static template=Su`<div style="display:flex"><input id="input" type="text"> <button style="width:30px">...</button></div>`;_input;constructor(e){super(e);let t=s.template.content.cloneNode(!0);this._input=t.getElementById("input"),e.readonly&&(this._input.readOnly=!0),this._input.onchange=i=>this._valueChanged(this._input.value),this.element=t}refreshValue(e,t){this._input.value=t}}});var hn,al=g(()=>{"use strict";Ee();hn=class extends te{constructor(e){super(e);let t=document.createElement("input");t.type="number",e.readonly&&(t.readOnly=!0),t.min=e.min,t.max=e.max,t.step=e.step,t.onchange=i=>this._valueChanged(t.value==""?null:t.valueAsNumber),this.element=t}refreshValue(e,t){this.element.value=t===void 0?null:t}}});var rr,ll=g(()=>{"use strict";Ee();rr=class extends te{elementSelect;elementInput;constructor(e){super(e);let t=document.createElement("div"),i=document.createElement("select");if(e.type=="enum")for(let n of e.enumValues){let o=document.createElement("option");o.value=n[1],o.text=n[0],i.appendChild(o)}else for(let n of e.values){let o=document.createElement("option");o.value=n,o.text=n,i.appendChild(o)}e.readonly&&(i.disabled=!0),i.onchange=n=>this._valueChanged(i.value);let r=document.createElement("input");r.style.display="none",r.onchange=n=>this._valueChanged(r.value),this.elementSelect=i,this.elementInput=r,t.appendChild(this.elementSelect),t.appendChild(this.elementInput),this.element=t}refreshValue(e,t){this.elementSelect.style.display="block",this.elementInput.style.display="none",this.elementSelect.value=t,this.elementSelect.value!=t&&t&&(this.elementInput.value=t,this.elementSelect.style.display="none",this.elementInput.style.display="block")}}});var dn,cl=g(()=>{"use strict";Ee();dn=class extends te{constructor(e){super(e);let t=document.createElement("input");t.type="text",e.readonly&&(t.readOnly=!0),t.onchange=i=>this._valueChanged(t.value),t.onfocus=i=>{t.selectionStart=0,t.selectionEnd=t.value?.length},this.element=t}refreshValue(e,t){t==null?this.element.value="":this.element.value=t}}});var pn,hl=g(()=>{"use strict";Ee();pn=class extends te{constructor(e){super(e);let t=document.createElement("input");t.type="checkbox",e.readonly&&(t.readOnly=!0),t.onchange=i=>this._valueChanged(t.checked),this.element=t}refreshValue(e,t){this.element.checked=t}}});import{BaseCustomWebComponentConstructorAppend as wu,css as Cu,html as Eu}from"@node-projects/base-custom-webcomponent";var nr,tp=g(()=>{"use strict";nr=class extends wu{static style=Cu`div{font-size:10px;color:#fff}#property{color:#00aff0}#value{color:#d3d3d3}#value.value-set{color:wheat}.container{display:flex;flex-direction:row}::slotted(button){min-width:24px;height:24px;padding:1px;background:#fff;border:1px solid #d3d3d3}`;static template=Eu`<div><div id="header" style="display:none"><span id="property"></span><span id="vhd">: <span id="value"></span></span></div><div part="container" class="container"><slot id="slot"></slot></div></div>`;static properties={value:String,property:String,unsetValue:String,noValueInHeader:Boolean};constructor(){super(),this._restoreCachedInititalValues()}_value;get value(){return this._value}set value(e){this._value=e,this._updateValue()}property;unsetValue;noValueInHeader;_updateValue(){this.value?(this._getDomElement("value").innerText=this.value,this._getDomElement("value").classList.add("value-set")):this._getDomElement("value").classList.remove("value-set");let e=this._getDomElement("slot");for(let t of e.assignedElements())t.dataset.value==this.value?t.style.background="cornflowerblue":t.style.background=""}ready(){this._parseAttributesToProperties(),this.property&&(this._getDomElement("header").style.display="block"),this.noValueInHeader&&(this._getDomElement("vhd").style.display="none");let e=this._getDomElement("slot");e.onclick=t=>{let i=t.composedPath();for(let r of e.assignedElements())if(i.indexOf(r)>=0){let n=this._value;this.value=r.dataset.value;let o=new CustomEvent("value-changed",{detail:{newValue:this._value,oldValue:n}});this.dispatchEvent(o)}},this._getDomElement("property").innerText=this.property??"",this._getDomElement("value").innerText=this.unsetValue??"",this._updateValue()}};customElements.define("node-projects-image-button-list-selector",nr)});var vi,Yt,dl,ip,w,se=g(()=>{"use strict";vi="text/json/elementdefintion",Yt="text/json/bindingobject",dl="text/json/propertydrop",ip=new URL(import.meta.url),w=ip.origin+ip.pathname.split("/").slice(0,-1).join("/")+"/../assets/"});var mn,pl=g(()=>{"use strict";Ee();tp();_e();se();mn=class extends te{constructor(e){super(e);let t=new nr;t.property=e.name,t.unsetValue=e.defaultValue;let i=R.camelToDashCase(e.name);if(e.type=="enum")for(let r of e.enumValues){let n=document.createElement("button");n.dataset.value=r[1];let o=document.createElement("img");o.title=r[1],o.src=w+"images/chromeDevtools/"+i+"-"+r[1]+"-icon.svg",n.appendChild(o),t.appendChild(n)}else for(let r of e.values){let n=document.createElement("button");n.dataset.value=r;let o=document.createElement("img");o.title=r,o.src=w+"images/chromeDevtools/"+i+"-"+r+"-icon.svg",n.appendChild(o),t.appendChild(n)}t.addEventListener("value-changed",r=>this._valueChanged(t.value)),this.element=t}refreshValue(e,t){this.element.value=t}}});import{BaseCustomWebComponentConstructorAppend as Pu,css as Au,html as Iu,TypedEvent as un}from"@node-projects/base-custom-webcomponent";var sr,rp=g(()=>{"use strict";sr=class extends Pu{static style=Au`:host{margin:4px;margin-left:auto;margin-right:auto}#container{display:grid;grid-template-columns:minmax(30px,40px) minmax(30px,60px) minmax(30px,40px);grid-template-rows:auto;grid-template-areas:" . top ." "left middle right" " . bottom .";column-gap:2px;row-gap:2px}input{width:20px;text-align:center;font-size:10px;height:20px;padding:0}#left{grid-area:left;justify-self:end}#top{grid-area:top;align-self:end;justify-self:center}#right{grid-area:right;justify-self:start}#bottom{grid-area:bottom;align-self:start;justify-self:center}#rect{grid-area:middle;border:1px solid #000;background:#d3d3d3}`;static template=Iu`<div id="container"><input id="left"> <input id="top"> <input id="right"> <input id="bottom"><div id="rect"></div></div>`;_leftInput;_topInput;_rightInput;_bottomInput;_valueLeft;get valueLeft(){return this._valueLeft}set valueLeft(e){let t=this._valueLeft;this._valueLeft=e,t!==e&&(this._updateValue(),this.valueLeftChanged.emit({newValue:e,oldValue:t}))}valueLeftChanged=new un;_valueTop;get valueTop(){return this._valueTop}set valueTop(e){let t=this._valueTop;this._valueTop=e,t!==e&&(this._updateValue(),this.valueTopChanged.emit({newValue:e,oldValue:t}))}valueTopChanged=new un;_valueRight;get valueRight(){return this._valueRight}set valueRight(e){let t=this._valueRight;this._valueRight=e,t!==e&&(this._updateValue(),this.valueRightChanged.emit({newValue:e,oldValue:t}))}valueRightChanged=new un;_valueBottom;get valueBottom(){return this._valueBottom}set valueBottom(e){let t=this._valueBottom;this._valueBottom=e,t!==e&&(this._updateValue(),this.valueBottomChanged.emit({newValue:e,oldValue:t}))}valueBottomChanged=new un;property;unsetValue;_updateValue(){this._leftInput.value=this.valueLeft,this._topInput.value=this.valueTop,this._rightInput.value=this.valueRight,this._bottomInput.value=this._valueBottom}ready(){this._parseAttributesToProperties(),this._leftInput=this._getDomElement("left"),this._topInput=this._getDomElement("top"),this._rightInput=this._getDomElement("right"),this._bottomInput=this._getDomElement("bottom"),this._leftInput.onkeyup=e=>{e.key==="Enter"&&(this._valueLeft=this._leftInput.value)},this._topInput.onkeyup=e=>{e.key==="Enter"&&(this._valueTop=this._topInput.value)},this._rightInput.onkeyup=e=>{e.key==="Enter"&&(this._valueRight=this._rightInput.value)},this._bottomInput.onkeyup=e=>{e.key==="Enter"&&(this._valueBottom=this._bottomInput.value)},this._leftInput.onblur=e=>this._valueLeft=this._leftInput.value,this._topInput.onblur=e=>this._valueTop=this._topInput.value,this._rightInput.onblur=e=>this._valueRight=this._rightInput.value,this._bottomInput.onblur=e=>this._valueBottom=this._bottomInput.value,this._updateValue()}};customElements.define("node-projects-thickness-editor",sr)});var fn,ml=g(()=>{"use strict";Ee();rp();fn=class extends te{constructor(e){super(e);let t=new sr;t.property=e.name,t.valueLeftChanged.on(i=>this._valueChanged(i.newValue)),this.element=t}refreshValue(e,t){this.element.valueLeft=t}}});var xi,ul=g(()=>{"use strict";Ee();xi=class s extends te{static fontList;constructor(e){super(e);let t=document.createElement("select");e.readonly&&(t.disabled=!0),this.element=t,s.addFontsToSelect(t),this.element.onchange=i=>this._valueChanged(this.element.value)}static addFontsToSelect(e){s.fontList?s.parseFontList(e):window.queryLocalFonts?window.queryLocalFonts().then(t=>{s.fontList=[...new Set(t.map(i=>i.family))],s.parseFontList(e)}):(s.fontList=["Verdana","Arial","Tahoma","Trebuchet MS","Times New Roman","Georgia","Garamond","Courier New","Brush Script MT"],s.parseFontList(e))}static parseFontList(e){for(let t of s.fontList){let i=document.createElement("option");i.value=t,i.text=t,e.appendChild(i)}}refreshValue(e,t){this.element.value=t}}});function yl(s,e=4){if(!Number.isFinite(s))return"0";let t=10**Math.max(0,e),i=Math.round(s*t)/t;return Object.is(i,-0)?"0":`${i}`}function Xt(s,e){let t=s?.trim()??"";return t?t+(e??""):""}function np(s){let e=s?.trim()??"";if(!e)return{kind:"empty"};let t=e.match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:([a-z%]+))?$/i);if(!t)return{kind:"text",text:e};let i=Number(t[1]);return Number.isNaN(i)?{kind:"text",text:e}:{kind:"numeric",numberText:t[1],value:i,unit:t[2]?.toLowerCase()??""}}function yn(s){return s?.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())??""}function Bu(s){return s?.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)??""}function op(s){return s.property.numericValueDecimalPlaces??(s.fromUnit==="%"||s.toUnit==="%"?2:4)}function Hu(s,e,t){return s==null?null:typeof s=="number"?Xt(yl(s,t),e):s}function vn(s){return s.designItems?.[0]?.element??null}function Gu(s){return s?typeof HTMLElement<"u"&&s instanceof HTMLElement?!0:typeof s.getBoundingClientRect=="function":!1}function ap(s){if(!s)return null;if(s.parentElement)return s.parentElement;if(s.assignedSlot)return s.assignedSlot;let t=s.getRootNode?.()?.host;if(Gu(t))return t;let i=s.ownerDocument;return i?.body??i?.documentElement??null}function lp(s){let e=parseFloat(s??"");return Number.isNaN(e)?null:e}function Wu(s){if(typeof getComputedStyle!="function")return null;let e=vn(s);if(!e)return null;let t=getComputedStyle(e),i=s.property.propertyName??s.property.name;if(!i)return null;let r=typeof t.getPropertyValue=="function"?l=>t.getPropertyValue(l):l=>"";if(i.startsWith("--"))return r(i)?.trim()??null;let n=i.includes("-")?i:Bu(i),o=r(n)?.trim();if(o)return o;let a=yn(i);return t[a]?.trim()??null}function ju(s){let e=np(s.rawValue);if(e.kind==="numeric")return{...s,value:e.value,numberText:e.numberText,fromUnit:e.unit||s.fromUnit,rawValue:Xt(e.numberText,e.unit)};let t=Wu(s),i=np(t);if(i.kind!=="numeric"){if(s.numericType!=="css-length")return null;let r=cp(s);if(r==null)return null;let n=yl(r);return{...s,value:r,numberText:n,fromUnit:"px",rawValue:Xt(n,"px")}}return{...s,value:i.value,numberText:i.numberText,fromUnit:i.unit,rawValue:Xt(i.numberText,i.unit)}}function Uu(s){if(typeof window>"u")return null;switch(s){case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;default:return null}}function or(s,e){if(typeof getComputedStyle!="function")return null;let t=vn(s);if(!t)return null;let i=e?ap(t)??t:t;return lp(getComputedStyle(i).fontSize)}function Yu(){return typeof getComputedStyle!="function"||typeof document>"u"?null:lp(getComputedStyle(document.documentElement).fontSize)}function Xu(s){if(typeof getComputedStyle!="function")return null;let e=vn(s);if(!e)return null;let t=yn(s.property.propertyName??s.property.name);if(t==="fontSize")return or(s,!0);if(t==="lineHeight")return or(s,!1);let r=(ap(e)??e).getBoundingClientRect?.();return r?Ru.has(t)?r.height:(Vu.has(t),r.width):null}function cp(s){let e=vn(s);if(!e)return null;let t=e.getBoundingClientRect?.();if(!t)return null;let i=yn(s.property.propertyName??s.property.name);return zu.has(i)?t.width:Fu.has(i)?t.height:null}function fl(s,e){let t=e?.toLowerCase()??"";if(!t)return null;let i=Tu.get(t);if(i!=null)return i;if(t==="%"){let r=Xu(s);return r==null?null:r/100}if(t==="em")return or(s,yn(s.property.propertyName??s.property.name)==="fontSize");if(t==="rem")return Yu();if(t==="ex"){let r=or(s,!1);return r==null?null:r/2}if(t==="ch"){let r=or(s,!1);return r==null?null:r/2}return Uu(t)}function hp(s){let e=ju(s);if(!e)return Xt(s.numberText,s.toUnit);let t=op(s),i;switch(e.numericType){case"css-length":i=Ku(e.value,e.fromUnit,e.toUnit,e);break;case"css-angle":i=gn(e.value,e.fromUnit,e.toUnit,Mu);break;case"css-time":i=gn(e.value,e.fromUnit,e.toUnit,Nu);break;case"css-frequency":i=gn(e.value,e.fromUnit,e.toUnit,Lu);break;case"css-resolution":i=gn(e.value,e.fromUnit,e.toUnit,Ou);break;case"css-flex":i=e.value;break;case"css-scale":i=$u(e.value,e.fromUnit,e.toUnit);break}return i==null?Xt(e.numberText,e.toUnit):Xt(yl(i,t),e.toUnit)}function Ku(s,e,t,i){let r=e?.toLowerCase()??"",n=t?.toLowerCase()??"";if(r!=="%"&&n==="%"){let l=cp(i),c=fl(i,n);if(l!=null&&c!=null)return l/c}let o=fl(i,e),a=fl(i,t);return o==null||a==null?null:s*o/a}function $u(s,e,t){let i=e?.toLowerCase()??"",r=t?.toLowerCase()??"";if(i===r)return s;let n=i==="%"?.01:i===""?1:null,o=r==="%"?.01:r===""?1:null;return n==null||o==null?null:s*n/o}function gn(s,e,t,i){let r=e?.toLowerCase()??"",n=t?.toLowerCase()??"";if(!r||!n||r===n)return s;if(!i)return null;let o=i.get(r),a=i.get(n);return o==null||a==null?null:s*o/a}function vl(s,e){return Du.includes(s??"")?s:null}function dp(s,e){return vl(s,e)!=null}function Zu(s){let e=op(s),t=Hu(s.property.numericValueConverter?.(s.value,s.fromUnit,s.toUnit,s.property,s.numericType,s.numberText,s.rawValue,s.designItems),s.toUnit,e);return t??hp(s)}function pp(s){return[...new Set([...s??[],...ku].filter(Boolean))]}function mp(s){let e=vl(s.type,s.propertyName??s.name);return s.values=pp(s.values),e&&(s.units??=[...gl[e]],s.unitSteps??={...sp[e]},s.numericValueConverter??=(t,i,r,n,o,a,l,c)=>hp({property:n,numericType:o,designItems:c,value:t,numberText:a??`${t}`,rawValue:l??`${t}${i}`,fromUnit:i,toUnit:r})),s}function up(s){let e=vl(s.type,s.name);if(!e)return null;let t=sp[e]??{};return{numericType:e,units:s.units?.length?s.units:gl[e],fixedValues:pp(s.values),unitSteps:{...t,...s.unitSteps??{}},convertValue:i=>Zu({...i,property:s,numericType:e})}}var ku,gl,Du,sp,Tu,Mu,Nu,Lu,Ou,Vu,Ru,zu,Fu,xn=g(()=>{"use strict";ku=["initial","inherit","unset"],gl={"css-length":["px","%","em","rem","vw","vh","vmin","vmax","pt","pc","in","cm","mm","q","ch","ex"],"css-angle":["deg","grad","rad","turn"],"css-time":["ms","s"],"css-frequency":["hz","khz"],"css-flex":["fr"],"css-resolution":["dpi","dpcm","dppx","x"],"css-scale":["","%"],"svg-length":["","%"]},Du=Object.keys(gl),sp={"css-length":{em:.1,rem:.1,in:.01,cm:.1,ch:.1,ex:.1},"css-angle":{rad:.01,turn:.1},"css-time":{ms:10,s:.1},"css-frequency":{khz:.1},"css-flex":{fr:.1},"css-resolution":{dppx:.1,x:.1},"css-scale":{"":.1,"%":10},"svg-length":{"":1,"%":10}},Tu=new Map([["px",1],["in",96],["cm",96/2.54],["mm",96/25.4],["q",96/101.6],["pt",96/72],["pc",16]]),Mu=new Map([["deg",1],["grad",.9],["rad",180/Math.PI],["turn",360]]),Nu=new Map([["ms",1],["s",1e3]]),Lu=new Map([["hz",1],["khz",1e3]]),Ou=new Map([["dpi",1],["dpcm",2.54],["dppx",96],["x",96]]),Vu=new Set(["width","minWidth","maxWidth","inlineSize","minInlineSize","maxInlineSize","left","right","columnGap","gap","flexBasis","perspective"]),Ru=new Set(["height","minHeight","maxHeight","top","bottom","blockSize","minBlockSize","maxBlockSize","rowGap"]),zu=new Set(["width","minWidth","maxWidth","inlineSize","minInlineSize","maxInlineSize"]),Fu=new Set(["height","minHeight","maxHeight","blockSize","minBlockSize","maxBlockSize"])});var _n,xl=g(()=>{"use strict";Va();Ee();xn();_n=class extends te{constructor(e){super(e);let t=up(e),i=new $i;i.units=t?.units??e.units??[],i.fixedValues=t?.fixedValues??e.values,i.unitValueConverter=r=>t?.convertValue({...r,designItems:this.designItems}),i.unitSteps=t?.unitSteps??e.unitSteps??{},i.step=e.step,i.min=e.min,i.max=e.max,i.readOnly=e.readonly,i.valueChanged.on(async r=>this._valueChanged(r.newValue===""?null:r.newValue)),i.valuePreviewChanged.on(async r=>this._previewValueChanged(r.newValue===""?null:r.newValue)),i.valuePreviewFinished.on(async r=>{await this._removePreviewValue(),!r.wasCancelled&&await this._valueChanged(r.newValue===""?null:r.newValue)}),this.element=i}designItemsChanged(e){super.designItemsChanged(e)}refreshValue(e,t){this.element.value=t==null?"":String(t)}}});var bn,_l=g(()=>{"use strict";nl();sl();ol();al();ll();cl();hl();pl();ml();ul();xl();xn();bn=class{getEditorForProperty(e){if(e.createEditor)return e.createEditor(e);if(dp(e.type,e.name))return new _n(e);switch(e.type){case"json":return new cn(e);case"color":return new an(e);case"font":return new xi(e);case"date":return new ln(e);case"number":return new hn(e);case"list":return new rr(e);case"enum":return new rr(e);case"boolean":return new pn(e);case"img-list":return new mn(e);case"thickness":return new fn(e);case"string":default:return new dn(e)}}}});import{BaseCustomWebComponentLazyAppend as Qu,BaseCustomWebComponentConstructorAppend as qu,BaseCustomWebComponentNoAttachedTemplate as Ju,BaseCustomWebComponentConstructorAppendLazyReady as ef}from"@node-projects/base-custom-webcomponent";var Sn,bl=g(()=>{"use strict";ai();Sn=class extends it{name="baseCustomWebComponent";isHandledElement(e){return e.element instanceof Qu||e.element instanceof ef||e.element instanceof qu||e.element instanceof Ju}_notifyChangedProperty(e,t,i){e.element._parseAttributesToProperties()}}});function wn(s,e,t){if(e==null||e==""){s.style.transform=t;return}let i=new DOMMatrix(e),n=new DOMMatrix(t).multiply(i);s.style.transform=n.toString()}function _i(s){return new DOMPoint(s.m41,s.m42,0,0)}var Sl=g(()=>{"use strict"});var _,ze=g(()=>{"use strict";(function(s){s.Move="M",s.Line="L",s.CubicBezier="C",s.QuadraticBezier="Q",s.Arc="A",s.Close="Z",s.HorizontalLine="H",s.VerticalLine="V",s.SmoothCubic="S",s.SmoothQuadratic="T"})(_||(_={}))});function ft(s,e,t=45){let i=fp(s,e),o=(Math.round(i/t)*t+360)%360*Math.PI/180,a=e.x-s.x,l=e.y-s.y,c=Math.sqrt(a*a+l*l),h=s.x+Math.cos(o)*c,d=s.y-Math.sin(o)*c;return{x:h,y:d}}function bi(s,e){let t,i=Math.sqrt(Math.pow(e.x-s.x,2)+Math.pow(e.y-s.y,2)),r=fp(s,e),n=r-(Math.floor(r/90)*90+45);return t=i*Math.cos(n*(Math.PI/180))/Math.sqrt(2),t}function fp(s,e){let t=-1*Math.atan2(e.y-s.y,e.x-s.x)*180/Math.PI;return t<0&&(t+=360),t}function gp(s,e,t){let i="",r=s.getPathData({normalize:!0});for(let n of r)switch(n.type){case"M":case"m":case"L":case"l":case"T":case"t":i+=n.type+" "+(n.values[0]-e)+" "+(n.values[1]-t)+" ";break;case"Z":case"z":i+=n.type+" ";break;case"C":case"c":i+=n.type+" "+(n.values[0]-e)+" "+(n.values[1]-t)+" "+(n.values[2]-e)+" "+(n.values[3]-t)+" "+(n.values[4]-e)+" "+(n.values[5]-t)+" ";break;case"S":case"s":case"Q":case"q":i+=n.type+" "+(n.values[0]-e)+" "+(n.values[1]-t)+" "+(n.values[2]-e)+" "+(n.values[3]-t)+" ";break;case"A":case"a":i+=n.type+" "+(n.values[0]-e)+" "+(n.values[1]-t)+" "+n.values[2]+" "+n.values[3]+" "+n.values[4]+" "+(n.values[5]-e)+" "+(n.values[6]-t)+" ";break}return i}function ar(s){let e="";for(let i of s){e+=i.type+" ";for(var t=0;t<i.values.length;t++)i.values[t]!=null&&!isNaN(i.values[t])&&(e+=i.values[t]+" ")}return e}var Qe=g(()=>{"use strict";(!SVGPathElement.prototype.getPathData||!SVGPathElement.prototype.setPathData)&&(function(){var s={Z:"Z",M:"M",L:"L",C:"C",Q:"Q",A:"A",H:"H",V:"V",S:"S",T:"T",z:"Z",m:"m",l:"l",c:"c",q:"q",a:"a",h:"h",v:"v",s:"s",t:"t"},e=function(o){this._string=o,this._currentIndex=0,this._endIndex=this._string.length,this._prevCommand=null,this._skipOptionalSpaces()};e.prototype={parseSegment:function(){var o=this._string[this._currentIndex],a=s[o]?s[o]:null;if(a===null){if(this._prevCommand===null||((o==="+"||o==="-"||o==="."||o>="0"&&o<="9")&&this._prevCommand!=="Z"?this._prevCommand==="M"?a="L":this._prevCommand==="m"?a="l":a=this._prevCommand:a=null,a===null))return null}else this._currentIndex+=1;this._prevCommand=a;var l=null,c=a.toUpperCase();return c==="H"||c==="V"?l=[this._parseNumber()]:c==="M"||c==="L"||c==="T"?l=[this._parseNumber(),this._parseNumber()]:c==="S"||c==="Q"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber()]:c==="C"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber()]:c==="A"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseArcFlag(),this._parseArcFlag(),this._parseNumber(),this._parseNumber()]:c==="Z"&&(this._skipOptionalSpaces(),l=[]),l===null||l.indexOf(null)>=0?null:{type:a,values:l}},hasMoreData:function(){return this._currentIndex<this._endIndex},peekSegmentType:function(){var o=this._string[this._currentIndex];return s[o]?s[o]:null},initialCommandIsMoveTo:function(){if(!this.hasMoreData())return!0;var o=this.peekSegmentType();return o==="M"||o==="m"},_isCurrentSpace:function(){var o=this._string[this._currentIndex];return o<=" "&&(o===" "||o===`
5
+ `||o===" "||o==="\r"||o==="\f")},_skipOptionalSpaces:function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex+=1;return this._currentIndex<this._endIndex},_skipOptionalSpacesOrDelimiter:function(){return this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&this._string[this._currentIndex]!==","?!1:(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&this._string[this._currentIndex]===","&&(this._currentIndex+=1,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},_parseNumber:function(){var o=0,a=0,l=1,c=0,h=1,d=1,p=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="+"?this._currentIndex+=1:this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="-"&&(this._currentIndex+=1,h=-1),this._currentIndex===this._endIndex||(this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")&&this._string[this._currentIndex]!==".")return null;for(var m=this._currentIndex;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)this._currentIndex+=1;if(this._currentIndex!==m)for(var u=this._currentIndex-1,f=1;u>=m;)a+=f*(this._string[u]-"0"),u-=1,f*=10;if(this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="."){if(this._currentIndex+=1,this._currentIndex>=this._endIndex||this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")return null;for(;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)l*=10,c+=(this._string.charAt(this._currentIndex)-"0")/l,this._currentIndex+=1}if(this._currentIndex!==p&&this._currentIndex+1<this._endIndex&&(this._string[this._currentIndex]==="e"||this._string[this._currentIndex]==="E")&&this._string[this._currentIndex+1]!=="x"&&this._string[this._currentIndex+1]!=="m"){if(this._currentIndex+=1,this._string[this._currentIndex]==="+"?this._currentIndex+=1:this._string[this._currentIndex]==="-"&&(this._currentIndex+=1,d=-1),this._currentIndex>=this._endIndex||this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")return null;for(;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)o*=10,o+=this._string[this._currentIndex]-"0",this._currentIndex+=1}var y=a+c;return y*=h,o&&(y*=Math.pow(10,d*o)),p===this._currentIndex?null:(this._skipOptionalSpacesOrDelimiter(),y)},_parseArcFlag:function(){if(this._currentIndex>=this._endIndex)return null;var o=null,a=this._string[this._currentIndex];if(this._currentIndex+=1,a==="0")o=0;else if(a==="1")o=1;else return null;return this._skipOptionalSpacesOrDelimiter(),o}};var t=function(o){if(!o||o.length===0)return[];var a=new e(o),l=[];if(a.initialCommandIsMoveTo())for(;a.hasMoreData();){var c=a.parseSegment();if(c===null)break;l.push(c)}return l},i=function(o,a,l,c,h,d,p,m,u,f){var y=function(Ft){return Math.PI*Ft/180},v=function(Ft,Ki,Bt){var jm=Ft*Math.cos(Bt)-Ki*Math.sin(Bt),Um=Ft*Math.sin(Bt)+Ki*Math.cos(Bt);return{x:jm,y:Um}},b=y(p),E=[],S,D,O,k;if(f)S=f[0],D=f[1],O=f[2],k=f[3];else{var U=v(o,a,-b);o=U.x,a=U.y;var $=v(l,c,-b);l=$.x,c=$.y;var V=(o-l)/2,j=(a-c)/2,X=V*V/(h*h)+j*j/(d*d);X>1&&(X=Math.sqrt(X),h=X*h,d=X*d);var Z;m===u?Z=-1:Z=1;var oe=h*h,ye=d*d,De=oe*ye-oe*j*j-ye*V*V,ue=oe*j*j+ye*V*V,J=Z*Math.sqrt(Math.abs(De/ue));O=J*h*j/d+(o+l)/2,k=J*-d*V/h+(a+c)/2,S=Math.asin(parseFloat(((a-k)/d).toFixed(9))),D=Math.asin(parseFloat(((c-k)/d).toFixed(9))),o<O&&(S=Math.PI-S),l<O&&(D=Math.PI-D),S<0&&(S=Math.PI*2+S),D<0&&(D=Math.PI*2+D),u&&S>D&&(S=S-Math.PI*2),!u&&D>S&&(D=D-Math.PI*2)}var ae=D-S;if(Math.abs(ae)>Math.PI*120/180){var Ye=D,Ce=l,ct=c;u&&D>S?D=S+Math.PI*120/180*1:D=S+Math.PI*120/180*-1,l=O+h*Math.cos(D),c=k+d*Math.sin(D),E=i(l,c,Ce,ct,h,d,p,0,u,[D,Ye,O,k])}ae=D-S;var tt=Math.cos(S),Te=Math.sin(S),ji=Math.cos(D),Ui=Math.sin(D),ii=Math.tan(ae/4),ri=4/3*h*ii,Et=4/3*d*ii,ht=[o,a],Xe=[o+ri*Te,a-Et*tt],zt=[l+ri*Ui,c-Et*ji],Yi=[l,c];if(Xe[0]=2*ht[0]-Xe[0],Xe[1]=2*ht[1]-Xe[1],f)return[Xe,zt,Yi].concat(E);E=[Xe,zt,Yi].concat(E);for(var Xi=[],Pt=0;Pt<E.length;Pt+=3){let Ft=v(E[Pt][0],E[Pt][1],b),Ki=v(E[Pt+1][0],E[Pt+1][1],b),Bt=v(E[Pt+2][0],E[Pt+2][1],b);Xi.push([Ft.x,Ft.y,Ki.x,Ki.y,Bt.x,Bt.y])}return Xi},r=function(o){var a=[],l=null,c=null,h=null,d=null;return o.forEach(function(p){var m=p.type;if(m==="M"){var u=p.values[0],f=p.values[1];a.push({type:"M",values:[u,f]}),h=u,d=f,l=u,c=f}else if(m==="m"){var u=l+p.values[0],f=c+p.values[1];a.push({type:"M",values:[u,f]}),h=u,d=f,l=u,c=f}else if(m==="L"){var u=p.values[0],f=p.values[1];a.push({type:"L",values:[u,f]}),l=u,c=f}else if(m==="l"){var u=l+p.values[0],f=c+p.values[1];a.push({type:"L",values:[u,f]}),l=u,c=f}else if(m==="C"){var y=p.values[0],v=p.values[1],b=p.values[2],E=p.values[3],u=p.values[4],f=p.values[5];a.push({type:"C",values:[y,v,b,E,u,f]}),l=u,c=f}else if(m==="c"){var y=l+p.values[0],v=c+p.values[1],b=l+p.values[2],E=c+p.values[3],u=l+p.values[4],f=c+p.values[5];a.push({type:"C",values:[y,v,b,E,u,f]}),l=u,c=f}else if(m==="Q"){var y=p.values[0],v=p.values[1],u=p.values[2],f=p.values[3];a.push({type:"Q",values:[y,v,u,f]}),l=u,c=f}else if(m==="q"){var y=l+p.values[0],v=c+p.values[1],u=l+p.values[2],f=c+p.values[3];a.push({type:"Q",values:[y,v,u,f]}),l=u,c=f}else if(m==="A"){var u=p.values[5],f=p.values[6];a.push({type:"A",values:[p.values[0],p.values[1],p.values[2],p.values[3],p.values[4],u,f]}),l=u,c=f}else if(m==="a"){var u=l+p.values[5],f=c+p.values[6];a.push({type:"A",values:[p.values[0],p.values[1],p.values[2],p.values[3],p.values[4],u,f]}),l=u,c=f}else if(m==="H"){var u=p.values[0];a.push({type:"H",values:[u]}),l=u}else if(m==="h"){var u=l+p.values[0];a.push({type:"H",values:[u]}),l=u}else if(m==="V"){var f=p.values[0];a.push({type:"V",values:[f]}),c=f}else if(m==="v"){var f=c+p.values[0];a.push({type:"V",values:[f]}),c=f}else if(m==="S"){var b=p.values[0],E=p.values[1],u=p.values[2],f=p.values[3];a.push({type:"S",values:[b,E,u,f]}),l=u,c=f}else if(m==="s"){var b=l+p.values[0],E=c+p.values[1],u=l+p.values[2],f=c+p.values[3];a.push({type:"S",values:[b,E,u,f]}),l=u,c=f}else if(m==="T"){var u=p.values[0],f=p.values[1];a.push({type:"T",values:[u,f]}),l=u,c=f}else if(m==="t"){var u=l+p.values[0],f=c+p.values[1];a.push({type:"T",values:[u,f]}),l=u,c=f}else(m==="Z"||m==="z")&&(a.push({type:"Z",values:[]}),l=h,c=d)}),a},n=function(o){var a=[],l=null,c=null,h=null,d=null,p=null,m=null,u=null;return o.forEach(function(f){if(f.type==="M"){var y=f.values[0],v=f.values[1];a.push({type:"M",values:[y,v]}),m=y,u=v,d=y,p=v}else if(f.type==="C"){var b=f.values[0],E=f.values[1],S=f.values[2],D=f.values[3],y=f.values[4],v=f.values[5];a.push({type:"C",values:[b,E,S,D,y,v]}),c=S,h=D,d=y,p=v}else if(f.type==="L"){var y=f.values[0],v=f.values[1];a.push({type:"L",values:[y,v]}),d=y,p=v}else if(f.type==="H"){var y=f.values[0];a.push({type:"L",values:[y,p]}),d=y}else if(f.type==="V"){var v=f.values[0];a.push({type:"L",values:[d,v]}),p=v}else if(f.type==="S"){var S=f.values[0],D=f.values[1],y=f.values[2],v=f.values[3],O,k;l==="C"||l==="S"?(O=d+(d-c),k=p+(p-h)):(O=d,k=p),a.push({type:"C",values:[O,k,S,D,y,v]}),c=S,h=D,d=y,p=v}else if(f.type==="T"){var y=f.values[0],v=f.values[1],b,E;l==="Q"||l==="T"?(b=d+(d-c),E=p+(p-h)):(b=d,E=p);var O=d+2*(b-d)/3,k=p+2*(E-p)/3,U=y+2*(b-y)/3,$=v+2*(E-v)/3;a.push({type:"C",values:[O,k,U,$,y,v]}),c=b,h=E,d=y,p=v}else if(f.type==="Q"){var b=f.values[0],E=f.values[1],y=f.values[2],v=f.values[3],O=d+2*(b-d)/3,k=p+2*(E-p)/3,U=y+2*(b-y)/3,$=v+2*(E-v)/3;a.push({type:"C",values:[O,k,U,$,y,v]}),c=b,h=E,d=y,p=v}else if(f.type==="A"){let oe=Math.abs(f.values[0]),ye=Math.abs(f.values[1]);var V=f.values[2],j=f.values[3],X=f.values[4],y=f.values[5],v=f.values[6];if(oe===0||ye===0)a.push({type:"C",values:[d,p,y,v,y,v]}),d=y,p=v;else if(d!==y||p!==v){var Z=i(d,p,y,v,oe,ye,V,j,X);Z.forEach(function(J){a.push({type:"C",values:J})}),d=y,p=v}}else f.type==="Z"&&(a.push(f),d=m,p=u);l=f.type}),a};SVGPathElement.prototype.getPathData=function(o){if(o&&o.normalize){let a;return a=t(this.getAttribute("d")||""),n(r(a))}else return t(this.getAttribute("d")||"")},SVGPathElement.prototype.setPathData=function(o){if(o.length===0)this.removeAttribute("d");else{let a="";for(let l=0,c=o.length;l<c;l+=1){let h=o[l];l>0&&(a+=" "),a+=h.type,h.values&&h.values.length>0&&(a+=" "+h.values.join(" "))}this.setAttribute("d",a)}},SVGRectElement.prototype.getPathData=function(o){var a=this.x.baseVal.value,l=this.y.baseVal.value,c=this.width.baseVal.value,h=this.height.baseVal.value,d=this.hasAttribute("rx")?this.rx.baseVal.value:this.ry.baseVal.value,p=this.hasAttribute("ry")?this.ry.baseVal.value:this.rx.baseVal.value;d>c/2&&(d=c/2),p>h/2&&(p=h/2);var m=[{type:"M",values:[a+d,l]},{type:"H",values:[a+c-d]},{type:"A",values:[d,p,0,0,1,a+c,l+p]},{type:"V",values:[l+h-p]},{type:"A",values:[d,p,0,0,1,a+c-d,l+h]},{type:"H",values:[a+d]},{type:"A",values:[d,p,0,0,1,a,l+h-p]},{type:"V",values:[l+p]},{type:"A",values:[d,p,0,0,1,a+d,l]},{type:"Z",values:[]}];return m=m.filter(function(u){return!(u.type==="A"&&(u.values[0]===0||u.values[1]===0))}),o&&o.normalize===!0&&(m=n(m)),m},SVGCircleElement.prototype.getPathData=function(o){var a=this.cx.baseVal.value,l=this.cy.baseVal.value,c=this.r.baseVal.value,h=[{type:"M",values:[a+c,l]},{type:"A",values:[c,c,0,0,1,a,l+c]},{type:"A",values:[c,c,0,0,1,a-c,l]},{type:"A",values:[c,c,0,0,1,a,l-c]},{type:"A",values:[c,c,0,0,1,a+c,l]},{type:"Z",values:[]}];return o&&o.normalize===!0&&(h=n(h)),h},SVGEllipseElement.prototype.getPathData=function(o){var a=this.cx.baseVal.value,l=this.cy.baseVal.value,c=this.rx.baseVal.value,h=this.ry.baseVal.value,d=[{type:"M",values:[a+c,l]},{type:"A",values:[c,h,0,0,1,a,l+h]},{type:"A",values:[c,h,0,0,1,a-c,l]},{type:"A",values:[c,h,0,0,1,a,l-h]},{type:"A",values:[c,h,0,0,1,a+c,l]},{type:"Z",values:[]}];return o&&o.normalize===!0&&(d=n(d)),d},SVGLineElement.prototype.getPathData=function(){return[{type:"M",values:[this.x1.baseVal.value,this.y1.baseVal.value]},{type:"L",values:[this.x2.baseVal.value,this.y2.baseVal.value]}]},SVGPolylineElement.prototype.getPathData=function(){for(var o=[],a=0;a<this.points.numberOfItems;a+=1){var l=this.points.getItem(a);o.push({type:a===0?"M":"L",values:[l.x,l.y]})}return o},SVGPolygonElement.prototype.getPathData=function(){for(var o=[],a=0;a<this.points.numberOfItems;a+=1){var l=this.points.getItem(a);o.push({type:a===0?"M":"L",values:[l.x,l.y]})}return o.push({type:"Z",values:[]}),o}})()});var wl={};Rd(wl,{SvgPathGeometryReader:()=>lr});var lr,cr=g(()=>{"use strict";ze();Qe();Qe();lr=class{read(e){let i=e.getPathData({normalize:!1}),r=[],n={x:0,y:0},o={x:0,y:0},a=!1;for(let l of i){let c=l.type===l.type.toLowerCase();switch(l.type.toUpperCase()){case"M":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1];r.push({type:_.Move,relative:c,point:{x:d,y:p}}),n={x:d,y:p},o={x:d,y:p};break}case"L":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1];r.push({type:_.Line,relative:c,point:{x:d,y:p}}),n={x:d,y:p};break}case"H":{let d=c?n.x+l.values[0]:l.values[0];r.push({type:_.HorizontalLine,relative:c,point:{x:d,y:n.y}}),n={x:d,y:n.y};break}case"V":{let d=c?n.y+l.values[0]:l.values[0];r.push({type:_.VerticalLine,relative:c,point:{x:n.x,y:d}}),n={x:n.x,y:d};break}case"C":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1],m=c?n.x+l.values[2]:l.values[2],u=c?n.y+l.values[3]:l.values[3],f=c?n.x+l.values[4]:l.values[4],y=c?n.y+l.values[5]:l.values[5];r.push({type:_.CubicBezier,relative:c,point:{x:f,y},cp1:{x:d,y:p},cp2:{x:m,y:u}}),n={x:f,y};break}case"S":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1],m=c?n.x+l.values[2]:l.values[2],u=c?n.y+l.values[3]:l.values[3];r.push({type:_.SmoothCubic,relative:c,point:{x:m,y:u},cp2:{x:d,y:p}}),n={x:m,y:u};break}case"Q":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1],m=c?n.x+l.values[2]:l.values[2],u=c?n.y+l.values[3]:l.values[3];r.push({type:_.QuadraticBezier,relative:c,point:{x:m,y:u},cp1:{x:d,y:p}}),n={x:m,y:u};break}case"T":{let d=c?n.x+l.values[0]:l.values[0],p=c?n.y+l.values[1]:l.values[1];r.push({type:_.SmoothQuadratic,relative:c,point:{x:d,y:p}}),n={x:d,y:p};break}case"A":{let d=c?n.x+l.values[5]:l.values[5],p=c?n.y+l.values[6]:l.values[6];r.push({type:_.Arc,relative:c,point:{x:d,y:p},arc:{rx:l.values[0],ry:l.values[1],rotation:l.values[2],largeArc:l.values[3]===1,sweep:l.values[4]===1}}),n={x:d,y:p};break}case"Z":{a=!0,r.push({type:_.Close,relative:c,point:{...o}}),n={...o};break}}}return{segments:r,closed:a}}serialize(e){let t=[],i={x:0,y:0};for(let r of e.segments){let n=r.relative;switch(r.type){case _.Move:{let o=n?r.point.x-i.x:r.point.x,a=n?r.point.y-i.y:r.point.y;t.push({type:n?"m":"M",values:[o,a]}),i={...r.point};break}case _.Line:{let o=n?r.point.x-i.x:r.point.x,a=n?r.point.y-i.y:r.point.y;t.push({type:n?"l":"L",values:[o,a]}),i={...r.point};break}case _.HorizontalLine:{let o=n?r.point.x-i.x:r.point.x;t.push({type:n?"h":"H",values:[o]}),i={...r.point};break}case _.VerticalLine:{let o=n?r.point.y-i.y:r.point.y;t.push({type:n?"v":"V",values:[o]}),i={...r.point};break}case _.CubicBezier:{let o=n?r.cp1.x-i.x:r.cp1.x,a=n?r.cp1.y-i.y:r.cp1.y,l=n?r.cp2.x-i.x:r.cp2.x,c=n?r.cp2.y-i.y:r.cp2.y,h=n?r.point.x-i.x:r.point.x,d=n?r.point.y-i.y:r.point.y;t.push({type:n?"c":"C",values:[o,a,l,c,h,d]}),i={...r.point};break}case _.SmoothCubic:{let o=n?r.cp2.x-i.x:r.cp2.x,a=n?r.cp2.y-i.y:r.cp2.y,l=n?r.point.x-i.x:r.point.x,c=n?r.point.y-i.y:r.point.y;t.push({type:n?"s":"S",values:[o,a,l,c]}),i={...r.point};break}case _.QuadraticBezier:{let o=n?r.cp1.x-i.x:r.cp1.x,a=n?r.cp1.y-i.y:r.cp1.y,l=n?r.point.x-i.x:r.point.x,c=n?r.point.y-i.y:r.point.y;t.push({type:n?"q":"Q",values:[o,a,l,c]}),i={...r.point};break}case _.SmoothQuadratic:{let o=n?r.point.x-i.x:r.point.x,a=n?r.point.y-i.y:r.point.y;t.push({type:n?"t":"T",values:[o,a]}),i={...r.point};break}case _.Arc:{let o=n?r.point.x-i.x:r.point.x,a=n?r.point.y-i.y:r.point.y;t.push({type:n?"a":"A",values:[r.arc.rx,r.arc.ry,r.arc.rotation,r.arc.largeArc?1:0,r.arc.sweep?1:0,o,a]}),i={...r.point};break}case _.Close:{t.push({type:n?"z":"Z",values:[]});break}}}return[{attribute:"d",value:ar(t)}]}}});function rf(s,e){let t=s.style.getPropertyValue(e).trim();return t?{target:"style",unit:nf(t)}:{target:"attribute"}}function nf(s){let e=s.trim().match(/^-?(?:\d+|\d*\.\d+)([a-z%]*)$/i);return e&&e[1]?e[1]:"px"}function Cn(s,e,t){let i=t?.[s];return i?.target==="style"?{attribute:s,value:`${e}${i.unit??"px"}`,target:"style"}:{attribute:s,value:e.toString()}}var tf,En,Cl=g(()=>{"use strict";ze();tf=["x","y","width","height"];En=class{read(e){let t=e,i=t.getBBox(),r=i.x,n=i.y,o=i.width,a=i.height,l=[{type:_.Move,relative:!1,point:{x:r,y:n}},{type:_.Line,relative:!1,point:{x:r+o,y:n}},{type:_.Line,relative:!1,point:{x:r+o,y:n+a}},{type:_.Line,relative:!1,point:{x:r,y:n+a}},{type:_.Close,relative:!1,point:{x:r,y:n}}],c=Object.fromEntries(tf.map(h=>[h,rf(t,h)]));return{segments:l,closed:!0,serializationHints:c}}serialize(e){let t=e.segments.filter(c=>c.type!==_.Close);if(t.length<2)return[];let i=t.map(c=>c.point.x),r=t.map(c=>c.point.y),n=Math.min(...i),o=Math.min(...r),a=Math.max(...i),l=Math.max(...r);return[Cn("x",n,e.serializationHints),Cn("y",o,e.serializationHints),Cn("width",a-n,e.serializationHints),Cn("height",l-o,e.serializationHints)]}}});var Pn,El=g(()=>{"use strict";ze();Pn=class{read(e){let t=e,i=t.x1.baseVal.value,r=t.y1.baseVal.value,n=t.x2.baseVal.value,o=t.y2.baseVal.value;return{segments:[{type:_.Move,relative:!1,point:{x:i,y:r}},{type:_.Line,relative:!1,point:{x:n,y:o}}],closed:!1}}serialize(e){let t=e.segments.filter(i=>i.type!==_.Close);return t.length<2?[]:[{attribute:"x1",value:t[0].point.x.toString()},{attribute:"y1",value:t[0].point.y.toString()},{attribute:"x2",value:t[1].point.x.toString()},{attribute:"y2",value:t[1].point.y.toString()}]}}});var An,Pl=g(()=>{"use strict";ze();An=class{read(e){let t=e,i=t.cx.baseVal.value,r=t.cy.baseVal.value,n=t.rx.baseVal.value,o=t.ry.baseVal.value;return{segments:[{type:_.Move,relative:!1,point:{x:i,y:r-o}},{type:_.Arc,relative:!1,point:{x:i+n,y:r},arc:{rx:n,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i,y:r+o},arc:{rx:n,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i-n,y:r},arc:{rx:n,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i,y:r-o},arc:{rx:n,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:i,y:r-o}}],closed:!0}}serialize(e){let t=e.segments.filter(d=>d.type!==_.Close);if(t.length<4)return[];let i=t[0].point,r=t[1].point,n=t[2].point,o=t[3].point,a=(r.x+o.x)/2,l=(i.y+n.y)/2,c=Math.abs(r.x-o.x)/2,h=Math.abs(n.y-i.y)/2;return[{attribute:"cx",value:a.toString()},{attribute:"cy",value:l.toString()},{attribute:"rx",value:c.toString()},{attribute:"ry",value:h.toString()}]}}});var In,Al=g(()=>{"use strict";ze();In=class{read(e){let t=e,i=t.cx.baseVal.value,r=t.cy.baseVal.value,n=t.r.baseVal.value;return{segments:[{type:_.Move,relative:!1,point:{x:i,y:r-n}},{type:_.Arc,relative:!1,point:{x:i+n,y:r},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i,y:r+n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i-n,y:r},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:i,y:r-n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:i,y:r-n}}],closed:!0}}serialize(e){let t=e.segments.filter(h=>h.type!==_.Close);if(t.length<4)return[];let i=t[0].point,r=t[1].point,n=t[2].point,o=t[3].point,a=(r.x+o.x)/2,l=(i.y+n.y)/2,c=Math.max(Math.abs(r.x-o.x)/2,Math.abs(n.y-i.y)/2);return[{attribute:"cx",value:a.toString()},{attribute:"cy",value:l.toString()},{attribute:"r",value:c.toString()}]}}});var kn,Il=g(()=>{"use strict";ze();kn=class{read(e){let i=e.points,r=[];for(let n=0;n<i.numberOfItems;n++){let o=i.getItem(n);n===0?r.push({type:_.Move,relative:!1,point:{x:o.x,y:o.y}}):r.push({type:_.Line,relative:!1,point:{x:o.x,y:o.y}})}return r.length>0&&r.push({type:_.Close,relative:!1,point:{...r[0].point}}),{segments:r,closed:!0}}serialize(e){return[{attribute:"points",value:e.segments.filter(r=>r.type!==_.Close).map(r=>`${r.point.x},${r.point.y}`).join(" ")}]}}});var Dn,kl=g(()=>{"use strict";ze();Dn=class{read(e){let i=e.points,r=[];for(let n=0;n<i.numberOfItems;n++){let o=i.getItem(n);n===0?r.push({type:_.Move,relative:!1,point:{x:o.x,y:o.y}}):r.push({type:_.Line,relative:!1,point:{x:o.x,y:o.y}})}return{segments:r,closed:!1}}serialize(e){return[{attribute:"points",value:e.segments.filter(r=>r.type!==_.Close).map(r=>`${r.point.x},${r.point.y}`).join(" ")}]}}});function Mt(s){if(s instanceof SVGPathElement)return pe.has(SVGPathElement)||pe.set(SVGPathElement,new lr),pe.get(SVGPathElement);if(s instanceof SVGRectElement)return pe.has(SVGRectElement)||pe.set(SVGRectElement,new En),pe.get(SVGRectElement);if(s instanceof SVGLineElement)return pe.has(SVGLineElement)||pe.set(SVGLineElement,new Pn),pe.get(SVGLineElement);if(s instanceof SVGEllipseElement)return pe.has(SVGEllipseElement)||pe.set(SVGEllipseElement,new An),pe.get(SVGEllipseElement);if(s instanceof SVGCircleElement)return pe.has(SVGCircleElement)||pe.set(SVGCircleElement,new In),pe.get(SVGCircleElement);if(s instanceof SVGPolygonElement)return pe.has(SVGPolygonElement)||pe.set(SVGPolygonElement,new kn),pe.get(SVGPolygonElement);if(s instanceof SVGPolylineElement)return pe.has(SVGPolylineElement)||pe.set(SVGPolylineElement,new Dn),pe.get(SVGPolylineElement)}function Ib(s,e){yp.set(s,e)}function kb(s){return yp.get(s)??null}var pe,yp,Si=g(()=>{"use strict";cr();Cl();El();Pl();Al();Il();kl();pe=new Map;yp=new Map});function sf(s){return"style"in s}function vp(s,e){for(let t of e)t.target==="style"&&sf(s)?s.style.setProperty(t.attribute,t.value):s.setAttribute(t.attribute,t.value)}function Tn(s,e){for(let t of e)t.target==="style"?s.setStyle(t.attribute,t.value):s.setAttribute(t.attribute,t.value)}var Dl=g(()=>{"use strict"});function ce(s){let e=[];e:for(let t of s){let i=t.parent;for(;i!=null&&!i.isRootItem;){if(s.indexOf(i)>=0)continue e;i=i.parent}e.push(t)}return e}function Mn(s,e){if(e==="position"){let t=getComputedStyle(s.element),i=parseFloat(t.left);i=Number.isNaN(i)?null:i;let r=parseFloat(t.top);return r=Number.isNaN(r)?null:r,{x:i??0,y:r??0}}return{x:0,y:0}}function Nn(s,e,t,i){let r=e.element,n=getComputedStyle(r);if(i==="position"){if(of(e,t))return;let o=s.element,a=s.getComputedStyle();a.position!=="relative"&&a.position!=="absolute"&&o&&o.offsetParent&&(o=o.offsetParent,o&&(a=s.window.getComputedStyle(o)));let l=null,c=null,h=null,d=null,p=0,m=0,u=0,f=0,y=!1;if(n.position==="relative"||n.position==="absolute")l=parseFloat(r.style.left),l=Number.isNaN(l)?null:l,h=parseFloat(r.style.top),h=Number.isNaN(h)?null:h,c=parseFloat(r.style.right),c=Number.isNaN(c)?null:c,d=parseFloat(r.style.bottom),d=Number.isNaN(d)?null:d,y=!0;else if(o&&o!==s.element){let v=Y(o),b=Y(e.element);p=b.left-v.left,m=b.right-v.right,u=b.top-v.top,f=b.bottom-v.bottom}y||e.setStyle("position","absolute"),(l||c==null)&&e.setStyle("left",N(e,t.x+(l??0)+p)+"px"),(h||d==null)&&e.setStyle("top",N(e,t.y+(h??0)+u)+"px"),c!=null&&e.setStyle("right",N(e,(c??0)-t.x+m)+"px"),d!=null&&e.setStyle("bottom",N(e,(d??0)-t.y+f)+"px")}}function of(s,e){let t=s.element;if(!(t instanceof SVGGraphicsElement)||t instanceof SVGSVGElement)return!1;let i=Mt(t);if(!i)return!1;let r=i.read(t);for(let a of r.segments)a.point&&(a.point.x+=e.x,a.point.y+=e.y),a.cp1&&(a.cp1.x+=e.x,a.cp1.y+=e.y),a.cp2&&(a.cp2.x+=e.x,a.cp2.y+=e.y);let n=i.serialize(r);if(!n.length)return!1;let o=s.openGroup("place svg geometry");return Tn(s,n),o.commit(),!0}function N(s,e){return s.serviceContainer.options.roundPixelsToDecimalPlaces>=0?e.toFixed(s.serviceContainer.options.roundPixelsToDecimalPlaces):e.toString()}var Pe=g(()=>{"use strict";le();Si();Dl()});function W(s){return Qd()?s.metaKey:s.ctrlKey}var Fe=g(()=>{"use strict";Ne()});function af(s){let e=s.element;return e instanceof SVGGraphicsElement&&!(e instanceof SVGSVGElement)&&!!Mt(e)}function Tl(s){let e=[];for(let t of s)t.nodeType===I.TextNode||t.nodeType===I.Comment||e.push(t);return e}var nt,wi=g(()=>{"use strict";Ze();Sl();Pe();$e();Qe();Fe();q();le();Si();nt=class{serviceForContainer(e,t,i){return i!=null&&i.getComputedStyle()?.position=="absolute"?!0:!(t.display==="grid"||t.display==="inline-grid"||t.display==="flex"||t.display==="inline-flex")}isEnterableContainer(e){return!(Q.IsSelfClosingElement(e.element.localName)||!e.isRootItem&&e.element.shadowRoot&&e.element.shadowRoot.querySelector("slot")==null)}canEnter(e,t){return!(e.instanceServiceContainer.designerCanvas.readOnly||!this.isEnterableContainer(e)||!t.every(i=>!i.element.contains(e.element)&&i!==e))}canLeave(e,t){return!0}getElementOffset(e,t){return e.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(e.element)}calculateTrack(e,t,i,r,n,o){let a=n.x-i.x,l=n.y-i.y;if(!W(e)){if(t.alignOnGrid){let c=Mn(o,"position");c.x=c.x%t.gridSize,c.y=c.y%t.gridSize,a=Math.round(a/t.gridSize)*t.gridSize-c.x,l=Math.round(l/t.gridSize)*t.gridSize-c.y}else if(t.alignOnSnap){let c=Y(o.element),h=t.snapLines.snapToPosition({x:n.x-r.x,y:n.y-r.y},{width:c.width/t.scaleFactor,height:c.height/t.scaleFactor},{x:a>0?1:-1,y:l>0?1:-1});h.x!==null?a=h.x-Math.round(i.x)+Math.round(r.x):a=Math.round(a),h.y!==null?l=h.y-Math.round(i.y)+Math.round(r.y):l=Math.round(l)}}return{x:a,y:l}}placePoint(e,t,i,r,n,o,a){let l=o.x,c=o.y;if(!W(e)){if(t.alignOnGrid)l=Math.round(l/t.gridSize)*t.gridSize,c=Math.round(c/t.gridSize)*t.gridSize;else if(t.alignOnSnap){let h=t.snapLines.snapToPosition({x:o.x-n.x,y:o.y-n.y},null,{x:l>0?1:-1,y:c>0?1:-1});h.x!==null?l=h.x:l=Math.round(l),h.y!==null?c=h.y:c=Math.round(c)}}return{x:l,y:c}}startPlace(e,t,i,r,n,o,a){}place(e,t,i,r,n,o,a){let l=this.calculateTrack(e,t,r,n,o,a[0]);e.shiftKey&&(l=ft({x:0,y:0},l,90));let c=ce(Tl(a));for(let h of c){let d=h.instanceServiceContainer.designerCanvas.canvas,p=h.parent.element.getBoxQuads({relativeTo:d,iframes:h.instanceServiceContainer.designerCanvas.iframes})[0],m=h.parent.element.convertPointFromNode(new DOMPoint(l.x+p.p1.x,l.y+p.p1.y),d,{iframes:h.instanceServiceContainer.designerCanvas.iframes}),u=getComputedStyle(h.element),f=new DOMMatrix;u.rotate!="none"&&u.rotate&&(f=f.multiply(new DOMMatrix("rotate("+u.rotate.replace(" ",",")+")"))),u.scale!="none"&&u.scale&&(f=f.multiply(new DOMMatrix("scale("+u.scale.replace(" ",",")+")"))),m=f.inverse().transformPoint(m);let y=Wr(h.element);y!==1&&(m=new DOMPoint(m.x/y,m.y/y));let v=new DOMMatrix().translate(m.x,m.y);wn(h.element,h.getStyle("transform"),v.toString())}a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(c,"place",!1)}moveElements(e,t,i){for(let r of e)t.x&&r.setStyle("left",parseInt(r.element.style.left)-t.x+"px"),t.y&&r.setStyle("top",parseInt(r.element.style.top)-t.y+"px");e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshExtensions(e),e[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(e,"place",!0)}enterContainer(e,t,i){let r=ce(t);for(let n of r)i=="drop"&&n.setStyle("position","absolute"),e.insertChild(n),n.lastContainerSize&&(n.hasStyle("width")||n.setStyle("width",n.lastContainerSize.width+"px"),n.hasStyle("height")||n.setStyle("height",n.lastContainerSize.height+"px"));t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(r,"place",!0)}leaveContainer(e,t){let i=ce(t);t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(i,"place",!0)}finishPlace(e,t,i,r,n,o,a){let l=ce(a);for(let c of l){let h=_i(new DOMMatrix(c.element.style.transform)),d=_i(new DOMMatrix(c.getStyle("transform")??""));c.element.style.transform=c.getStyle("transform")??"";let p={x:h.x,y:h.y},m=getComputedStyle(c.element),u=new DOMMatrix;m.rotate!="none"&&m.rotate&&(u=u.multiply(new DOMMatrix("rotate("+m.rotate.replace(" ",",")+")"))),m.scale!="none"&&m.scale&&(u=u.multiply(new DOMMatrix("scale("+m.scale.replace(" ",",")+")"))),af(c)||(p=u.transformPoint(p)),Nn(i,c,{x:p.x-d.x,y:p.y-d.y},"position")}for(let c of a)t.extensionManager.removeExtension(c,P.Placement);a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(l,"place",!0)}}});var Nt,hr=g(()=>{"use strict";ne();sn();Nt=class{async parse(e,t,i,r){let n;Document.parseHTMLUnsafe&&!nn?n=Document.parseHTMLUnsafe(e):n=new DOMParser().parseFromString(e,"text/html",{includeShadowRoots:!0});let o=this.createDesignItems(n.head.childNodes,t,i),a=this.createDesignItems(n.body.childNodes,t,i);return[...o,...a]}createDesignItems(e,t,i){let r=[];for(let n of e)r.push(this._createDesignItemsRecursive(n,t,i));return r}_createDesignItemsRecursive(e,t,i){return M.createDesignItemFromInstance(e,t,i)}}});var Ln,Ml=g(()=>{"use strict";ai();_e();fe();Ln=class extends it{name="lit2";isHandledElement(e){return!!e.element.constructor.elementProperties}async getProperties(e){if(!this.isHandledElement(e))return null;let t=[];for(let i of e.element.constructor.elementProperties.entries()){let r=i[0],n=i[1],o=n;if(n.type&&(o=n.type),o===String){let a={name:r,type:"string",service:this,propertyType:x.propertyAndAttribute};t.push(a)}else if(o===Object){let a={name:r,type:"string",service:this,propertyType:x.propertyAndAttribute};t.push(a)}else if(o===Number){let a={name:r,type:"number",service:this,propertyType:x.propertyAndAttribute};t.push(a)}else if(o===Date){let a={name:r,type:"date",service:this,propertyType:x.propertyAndAttribute};t.push(a)}else if(o===Boolean){let a={name:r,type:"boolean",service:this,propertyType:x.propertyAndAttribute};t.push(a)}else if(R.isTypescriptEnum(o)){let a={name:r,type:"enum",enumValues:R.getTypescriptEnumEntries(o),service:this,propertyType:x.propertyAndAttribute};t.push(a)}}return t}_notifyChangedProperty(e,t,i){}}});function xp(s,e){Nl||(Nl=document.createElement("canvas"));let t=Nl.getContext("2d");return t.font=e,t.measureText(s).width}var Nl,_p=g(()=>{"use strict"});var K,gt=g(()=>{"use strict";(function(s){s.Pointer="Pointer",s.DrawSelection="DrawSelection",s.DrawPath="DrawPath",s.DrawRect="DrawRect",s.DrawEllipsis="DrawEllipsis",s.DrawLine="DrawLine",s.Zoom="Zoom",s.Pan="Pan",s.MagicWandSelector="MagicWandSelector",s.RectangleSelector="RectangleSelector",s.PickColor="PickColor",s.Text="Text",s.DrawElementTool="DrawElementTool",s.Guides="Guides",s.Inspect="Inspect",s.Accessibility="Accessibility",s.Position="Position",s.Padding="Padding",s.Margin="Margin",s.Flexbox="Flexbox",s.Move="Move",s.HueShift="HueShift",s.BoxShadows="BoxShadows",s.FontStyles="FontStyles"})(K||(K={}))});var T,ie=g(()=>{"use strict";(function(s){s[s.Background=10]="Background",s[s.Normal=20]="Normal",s[s.Foreground=30]="Foreground"})(T||(T={}))});var Ci,Ll=g(()=>{"use strict";ie();Ci=class{overlays=[];overlayLayerView;extensionManager;designerCanvas;constructor(e,t){this.extensionManager=e,this.designerCanvas=t,this.overlayLayerView=t.overlayLayer}_backup;_valuesHaveChanges(...e){if(this._backup==null)return this._backup=e,!0;for(let t=0;t<e.length;t++)if(e[t]!==this._backup[t])return this._backup=e,!0;return!1}_removeAllOverlays(){for(let e of this.overlays)try{this.overlayLayerView.removeOverlay(e)}catch(t){console.error(t)}this.overlays=[]}_addOverlay(e,t=T.Normal){this.overlayLayerView.addOverlay(this.constructor.name,e,t),this.overlays.push(e)}_drawGroup(e,t,i){let r=this.overlayLayerView.drawGroup(this.constructor.name,e,t,i);return t||this.overlays.push(r),r}_drawLine(e,t,i,r,n,o,a){let l=this.overlayLayerView.drawLine(this.constructor.name,e,t,i,r,n,o,a);return o||this.overlays.push(l),l}_drawCircle(e,t,i,r,n,o){let a=this.overlayLayerView.drawCircle(this.constructor.name,e,t,i,r,n,o);return n||this.overlays.push(a),a}_drawRect(e,t,i,r,n,o,a){let l=this.overlayLayerView.drawRect(this.constructor.name,e,t,i,r,n,o,a);return o||this.overlays.push(l),l}_drawComplexRect(e,t,i,r){let n="M"+e.map(a=>a.x+","+a.y).join(" ")+"Z",o=this.overlayLayerView.drawPath(this.constructor.name,n,t,i,r);return i||this.overlays.push(o),o}_drawPath(e,t,i,r){let n=this.overlayLayerView.drawPath(this.constructor.name,e,t,i,r);return i||this.overlays.push(n),n}_drawText(e,t,i,r,n,o){let a=this.overlayLayerView.drawText(this.constructor.name,e,t,i,r,n,o);return n||this.overlays.push(a),a}_drawHTML(e,t,i,r,n,o,a,l){let c=this.overlayLayerView.drawHTML(this.constructor.name,e,t,i,r,n,o,a,l);return a||this.overlays.push(c),c}_drawTextWithBackground(e,t,i,r,n,o,a){let l=this.overlayLayerView.drawTextWithBackground(this.constructor.name,e,t,i,r,n,o,a);return o||this.overlays.push(...l),l}_drawTransformedRect(e,t,i,r){let n="M"+e.p1.x+" "+e.p1.y+" L"+e.p2.x+" "+e.p2.y+" L"+e.p3.x+" "+e.p3.y+" L"+e.p4.x+" "+e.p4.y+"Z",o=this.overlayLayerView.drawPath(this.constructor.name,n,t,i,r);return i||this.overlays.push(o),o}}});var z,re=g(()=>{"use strict";Ll();ie();z=class extends Ci{extendedItem;constructor(e,t,i){super(e,t),this.extendedItem=i}remove(){this.extensionManager.removeExtensionInstance(this.extendedItem,this)}createToolbar(e,t,i,r=T.Foreground){let n=e.content.cloneNode(!0);n.querySelectorAll("*").forEach(a=>{a.onpointerdown=l=>{this.designerCanvas.ignoreEvent(l)},a instanceof HTMLInputElement&&(a.addEventListener("keydown",l=>{this.designerCanvas.ignoreEvent(l)},{capture:!0}),a.addEventListener("keyup",l=>{this.designerCanvas.ignoreEvent(l)},{capture:!0}))});let o=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");return o.classList.add("svg-toolbar-container"),o.setAttribute("width",""+t),o.setAttribute("height",""+i),o.appendChild(n),o.style.scale=""+1/this.designerCanvas.zoomFactor,o.style.transformBox="fill-box",this._addOverlay(o,r),o.updatePosition=a=>{o.style.scale=""+1/this.designerCanvas.zoomFactor;let l=this.overlayLayerView.getBoundingClientRect(),c=o.children[0].getBoundingClientRect(),h=this.designerCanvas.scaleFactor,d=l.width/h-this.designerCanvas.canvasOffset.x*h;c.width+a.x*h>d&&(a.x=(d-c.width)/h),a.x<-this.designerCanvas.canvasOffset.x&&(a.x=-this.designerCanvas.canvasOffset.x),o.setAttribute("x",""+a.x),o.setAttribute("y",""+a.y)},o.getById=a=>o.querySelector("#"+a),o}}});var lf,On,Ol=g(()=>{"use strict";le();_p();gt();re();lf=60,On=class extends z{_rect;_clickRect;_text;_width;_createTitleText;constructor(e,t,i,r){super(e,t,i),this._createTitleText=r}extend(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(i&&!isNaN(i.p1.x)){let r=Y(this.extendedItem.element),n=xp(this.extendedItem.name,"10px monospace"),o=Math.sqrt(Math.pow(i.p2.x-i.p1.x,2)+Math.pow(i.p2.y-i.p1.y,2)),a=this.extendedItem.name;this.extendedItem.id&&(a="#"+this.extendedItem.id),this._createTitleText&&(a=this._createTitleText(this.extendedItem)),this._width=Math.max(Math.min(o,n),lf),this._rect=this._drawRect(i.p1.x,i.p1.y,this._width,15,"svg-primary-selection-move",this._rect),this._clickRect=this._drawRect(i.p1.x,i.p1.y,this._width,18,"svg-invisible",this._clickRect),this._clickRect.style.background="transparent",this._text=this._drawHTML('<div style="position:relative; pointer-events: none;"><span style="width: 100%; position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transform-origin: 0 0; padding-left: 2px;">'+a+"</span></div>",(r.x-this.designerCanvas.containerBoundingRect.x)/this.designerCanvas.scaleFactor,i.p1.y-16,this._width,15,"svg-text-primary",this._text),this._text.style.overflow="visible",this._clickRect.addEventListener("pointerdown",l=>this._pointerEvent(l)),this._clickRect.addEventListener("pointermove",l=>this._pointerEvent(l)),this._clickRect.addEventListener("pointerup",l=>this._pointerEvent(l)),this._clickRect.addEventListener("contextmenu",l=>{l.preventDefault(),this.designerCanvas.showDesignItemContextMenu(this.extendedItem,l)}),this.refresh(e,t)}}_drawMoveOverlay(e){}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(i.p1.x)){let r=Math.atan2(i.p2.y-i.p1.y,i.p2.x-i.p1.x)*180/Math.PI;if(this._valuesHaveChanges(i.p1.x,i.p1.y,r,this.designerCanvas.scaleFactor)){let n=15/this.designerCanvas.scaleFactor,o=-(16/this.designerCanvas.scaleFactor),a=this._width/this.designerCanvas.scaleFactor;this._rect.setAttribute("x",""+i.p1.x),this._rect.setAttribute("y",""+i.p1.y),this._rect.style.rotate=r+"deg",this._rect.style.translate="0 "+o+"px",this._rect.style.transformOrigin="0 100%",this._rect.style.transformBox="fill-box",this._rect.setAttribute("height",""+n),this._rect.setAttribute("width",""+a),this._rect.style.strokeWidth=(1/this.designerCanvas.scaleFactor).toString(),this._clickRect.setAttribute("x",""+i.p1.x),this._clickRect.setAttribute("y",""+i.p1.y),this._clickRect.style.rotate=r+"deg",this._clickRect.style.translate="0 "+o+"px",this._clickRect.style.transformOrigin="0 100%",this._clickRect.style.transformBox="fill-box",this._clickRect.setAttribute("height",""+(n+3)),this._clickRect.setAttribute("width",""+a),this._clickRect.style.strokeWidth=(1/this.designerCanvas.scaleFactor).toString(),this._text.setAttribute("x",""+i.p1.x),this._text.setAttribute("y",""+i.p1.y),this._text.style.fontSize=10/this.designerCanvas.scaleFactor+"px",this._text.setAttribute("height",""+n),this._text.setAttribute("width",""+a),this._text.children[0].children[0].style.rotate=r+"deg",this._text.children[0].children[0].style.translate="0 "+o+"px",this._text.children[0].children[0].style.transformOrigin="0 100%"}}}_pointerEvent(e){e.preventDefault(),e.stopPropagation(),e.button!=2&&this.designerCanvas.serviceContainer.designerTools.get(K.Pointer).pointerEventHandler(this.designerCanvas,e,this.extendedItem.element)}dispose(){this._removeAllOverlays()}}});import{css as cf}from"@node-projects/base-custom-webcomponent";var Vn,Vl=g(()=>{"use strict";Ol();Vn=class{_createTitleText;constructor(e){this._createTitleText=e}shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new On(e,t,i,this._createTitleText)}static style=cf`.svg-text-primary{stroke:none;color:#fff;font-family:monospace}`}});var C,he=g(()=>{"use strict";(function(s){s.PointerDown="pointerdown",s.PointerMove="pointermove",s.PointerUp="pointerup",s.DragEnter="dragenter",s.DragEnd="dragend",s.DragLeave="dragleave",s.DragOver="dragover",s.Drop="drop",s.Scroll="scroll",s.Wheel="wheel",s.ContextMenu="contextmenu",s.KeyDown="keydown",s.KeyUp="keyup",s.DblClick="dblclick"})(C||(C={}))});function Rl(s,e,t){if(!s)return null;let i={px:n=>n,cm:n=>n*38,mm:n=>n*3.8,q:n=>n*.95,in:n=>n*96,pc:n=>n*16,pt:n=>n*1.333333,rem:n=>n*parseFloat(getComputedStyle(document.documentElement).fontSize),em:n=>n*parseFloat(getComputedStyle(e).fontSize),vw:n=>n/100*window.innerWidth,vh:n=>n/100*window.innerHeight,vmin:n=>n/100*(window.innerHeight<window.innerWidth?window.innerHeight:window.innerWidth),vmax:n=>n/100*(window.innerHeight>window.innerWidth?window.innerHeight:window.innerWidth),lh:n=>n*parseFloat(getComputedStyle(e).lineHeight),rlh:n=>n*parseFloat(getComputedStyle(document.documentElement).lineHeight),"%":n=>n/100*(t=="height"?Rn(e).height:Rn(e).width),ms:n=>n,s:n=>n*1e3,deg:n=>n,rad:n=>n*(180/Math.PI),grad:n=>n*(180/200),turn:n=>n*360},r=s.trim().match(bp);if(r){let n=Number(r[1]),o=r[2].toLowerCase();if(o in i)return i[o](n)}return s}function Kt(s){let e=s.trim().match(bp);return e?e[2].toLowerCase():null}function Ei(s,e,t,i,r){if(!s)return null;let n={px:o=>o,cm:o=>o/38,mm:o=>o/3.8,q:o=>o/.95,in:o=>o/96,pc:o=>o/16,pt:o=>o/1.333333,rem:o=>o/parseFloat(getComputedStyle(document.documentElement).fontSize),em:o=>o/parseFloat(getComputedStyle(e).fontSize),vw:o=>o*100/window.innerWidth,vh:o=>o*100/window.innerHeight,vmin:o=>o*100/(window.innerHeight<window.innerWidth?window.innerHeight:window.innerWidth),vmax:o=>o*100/(window.innerHeight>window.innerWidth?window.innerHeight:window.innerWidth),lh:o=>o/parseFloat(getComputedStyle(e).lineHeight),rlh:o=>o/parseFloat(getComputedStyle(document.documentElement).lineHeight),"%":o=>o*100/(t=="height"?Rn(e).height:Rn(e).width),ms:o=>o,s:o=>o/1e3,deg:o=>o,rad:o=>o/(180/Math.PI),grad:o=>o/(180/200),turn:o=>o/360};if(typeof s=="string"&&(s=Rl(s,e,t)),i in n){let o=n[i](s);return r?r(o)+i:o+i}return r?r(s):s}function Rn(s){return{width:s.offsetWidth,height:s.offsetHeight}}function df(s){let e=s.split(" "),t=[];for(let i=0;i<e.length;i++){let r=e[i];if(r.startsWith("repeat("))for(;!r.includes(")");)i++,e[i]&&(r+=e[i]);t.push(r)}return t}function Sp(s){let e=df(s),t=[];for(let i of e)if(i.startsWith("repeat(")){let r=i.split(",");for(let n=0;n<parseInt(r[0].substring(7));n++)t.push(r[1].substring(0,r[1].length-1))}else t.push(i);return t.map(i=>Kt(i))}var hf,bp,zl=g(()=>{"use strict";hf=["px","cm","mm","q","in","pc","pt","rem","em","vw","vh","vmin","vmax","lh","rlh","%","ms","s","deg","rad","grad","turn","cqw","cqh","cqi","cqb","cqmin","cqmax","fr"],bp=new RegExp(`^([-+]?(?:\\d+(?:\\.\\d+)?))(${hf.join("|")})$`,"i")});function jl(s=window,e=!1){s.__getBoxQuadsPolyfillFns??={},s.__getBoxQuadsPolyfillFns.getBoxQuads=ff,s.__getBoxQuadsPolyfillFns.convertQuadFromNode=pf,s.__getBoxQuadsPolyfillFns.convertRectFromNode=mf,s.__getBoxQuadsPolyfillFns.convertPointFromNode=uf,(e||!s.Node.prototype.getBoxQuads)&&(s.Node.prototype.getBoxQuads=function(t){return s.__getBoxQuadsPolyfillFns.getBoxQuads(this,t)}),(e||!s.Node.prototype.convertQuadFromNode)&&(s.Node.prototype.convertQuadFromNode=function(t,i,r){return s.__getBoxQuadsPolyfillFns.convertQuadFromNode(this,t,i,r)}),(e||!s.Node.prototype.convertRectFromNode)&&(s.Node.prototype.convertRectFromNode=function(t,i,r){return s.__getBoxQuadsPolyfillFns.convertRectFromNode(this,t,i,r)}),(e||!s.Node.prototype.convertPointFromNode)&&(s.Node.prototype.convertPointFromNode=function(t,i,r){return s.__getBoxQuadsPolyfillFns.convertPointFromNode(this,t,i,r)})}function pf(s,e,t,i){let r=(s.ownerDocument.defaultView??window).document.body,n=Ue(t,r,i?.iframes,!0),o=Ue(s,r,i?.iframes,!0).inverse();if(i?.fromBox&&i?.fromBox!=="border"){let l=me(t);e=new DOMQuad(Ae(e.p1,i.fromBox,l,-1),Ae(e.p2,i.fromBox,l,-1),Ae(e.p3,i.fromBox,l,-1),Ae(e.p4,i.fromBox,l,-1))}let a=new DOMQuad(o.transformPoint(n.transformPoint(e.p1)),o.transformPoint(n.transformPoint(e.p2)),o.transformPoint(n.transformPoint(e.p3)),o.transformPoint(n.transformPoint(e.p4)));if(i?.toBox&&i?.toBox!=="border"&&(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)){let l=me(s);a=new DOMQuad(Ae(a.p1,i.toBox,l,-1),Ae(a.p2,i.toBox,l,-1),Ae(a.p3,i.toBox,l,-1),Ae(a.p4,i.toBox,l,-1))}return a}function mf(s,e,t,i){let r=(s.ownerDocument.defaultView??window).document.body.parentElement,n=Ue(t,r,i?.iframes,!0),o=Ue(s,r,i?.iframes,!0).inverse();if(i?.fromBox&&i?.fromBox!=="border"){let l=Ae(new DOMPoint(e.x,e.y),i.fromBox,me(t),1);e=new DOMRect(l.x,l.y,e.width,e.height)}let a=new DOMQuad(o.transformPoint(n.transformPoint(new DOMPoint(e.x,e.y))),o.transformPoint(n.transformPoint(new DOMPoint(e.x+e.width,e.y))),o.transformPoint(n.transformPoint(new DOMPoint(e.x+e.width,e.y+e.height))),o.transformPoint(n.transformPoint(new DOMPoint(e.x,e.y+e.height))));if(i?.toBox&&i?.toBox!=="border"&&(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)){let l=me(s);a=new DOMQuad(Ae(a.p1,i.toBox,l,-1),Ae(a.p2,i.toBox,l,-1),Ae(a.p3,i.toBox,l,-1),Ae(a.p4,i.toBox,l,-1))}return a}function uf(s,e,t,i){let r=(s.ownerDocument.defaultView??window).document.body.parentElement,n=Ue(t,r,i?.iframes,!0),o=Ue(s,r,i?.iframes,!0).inverse();i?.fromBox&&i?.fromBox!=="border"&&(e=Ae(e,i.fromBox,me(t),1));let a=o.transformPoint(n.transformPoint(e));return i?.toBox&&i?.toBox!=="border"&&(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)&&(a=Ae(a,i.toBox,me(s),-1)),a}function Ae(s,e,t,i){if(e==="margin"){let r=parseFloat(t.marginLeft),n=parseFloat(t.marginTop);return new DOMPoint(s.x-i*r,s.y-i*n)}else if(e==="padding"){let r=parseFloat(t.borderLeftWidth),n=parseFloat(t.borderTopWidth);return new DOMPoint(s.x+i*r,s.y+i*n)}else if(e==="content"){let r=parseFloat(t.borderLeftWidth),n=parseFloat(t.borderTopWidth),o=parseFloat(t.paddingLeft),a=parseFloat(t.paddingTop);return new DOMPoint(s.x+i*(r+o),s.y+i*(n+a))}return s}function xt(){je.clear(),Lt.clear(),dr=new WeakMap}function Ip(){yt=new WeakMap,je=new Map,Lt=new Map,dr=new WeakMap}function me(s){if(!dr)return(s.ownerDocument.defaultView??window).getComputedStyle(s);let e=dr.get(s);return e||(e=(s.ownerDocument.defaultView??window).getComputedStyle(s),dr.set(s,e)),e}function Ul(s){return!!s&&s.nodeType===Node.ELEMENT_NODE}function kp(s){if(!Ul(s))return 1;let t=me(s).zoom;if(!t||t==="normal")return 1;if(t.endsWith("%")){let r=parseFloat(t);return Number.isFinite(r)&&r>0?r/100:1}let i=parseFloat(t);return Number.isFinite(i)&&i>0?i:1}function Dp(s){if(!Ul(s))return new DOMMatrix;let e=kp(s);return e===1?new DOMMatrix:new DOMMatrix().scaleSelf(e)}function wp(s,e,t=!0){let i=Yl(s,e);if(!t||!Ul(s))return i;let r=Dp(s);return r.isIdentity?i:r.multiply(i)}function ff(s,e){let t;if(je){let m=yt.get(s);m===void 0&&yt.set(s,m=Hn++);let u=yt.get(e?.relativeTo??document.body);u===void 0&&yt.set(e?.relativeTo??document.body,u=Hn++),t=m+"_"+u+"_"+(e?.box??"border");let f=je.get(t);if(f)return f}let i=Ue(s,e?.relativeTo??document.body,e?.iframes),r=s.ownerDocument.defaultView??window,n=r.Text;if(s instanceof Text||s instanceof n){let m=s.ownerDocument.createRange();m.selectNodeContents(s);let u=m.getClientRects();if(u.length>1){let O=e?.relativeTo??document.body,k=vt(s,e?.iframes),U=Ue(k,O,e?.iframes),$=Yl(k,e?.iframes),V=k.getBoundingClientRect(),j=$.a,X=$.b,Z=$.c,oe=$.d,ye=k.offsetWidth,De=k.offsetHeight,ue=V.x+V.width/2-(j*ye/2+Z*De/2),J=V.y+V.height/2-(X*ye/2+oe*De/2),ae=j*oe-X*Z,Ye=Math.abs(j),Ce=Math.abs(X),ct=Ye*Ye-Ce*Ce,tt=[];for(let Te of u){if(Te.width<1&&Te.height<1)continue;let ji=Te.x+Te.width/2-ue,Ui=Te.y+Te.height/2-J,ii,ri;Math.abs(ae)>1e-10?(ii=(oe*ji-Z*Ui)/ae,ri=(j*Ui-X*ji)/ae):(ii=ji,ri=Ui);let Et,ht;if(Math.abs(ct)>1e-6)Et=Math.max(0,(Ye*Te.width-Ce*Te.height)/ct),ht=Math.max(0,(Ye*Te.height-Ce*Te.width)/ct);else{let Yi=me(k);ht=Math.max(0,parseFloat(Yi.lineHeight)||parseFloat(Yi.fontSize)*1.2||16);let Xi=Math.max(Ye,Ce);Et=Xi>1e-6?Math.max(0,(Te.width-ht*Ce)/Xi):Te.width}let Xe=ii-Et/2,zt=ri-ht/2;tt.push(new DOMQuad(U.transformPoint(new DOMPoint(Xe,zt)),U.transformPoint(new DOMPoint(Xe+Et,zt)),U.transformPoint(new DOMPoint(Xe+Et,zt+ht)),U.transformPoint(new DOMPoint(Xe,zt+ht))))}if(tt.length>0)return je&&je.set(t,tt),tt}let f=m.getBoundingClientRect(),{width:y,height:v}=Tp(i,f,s),b=i.is2D,E=[new DOMPoint(0,0),new DOMPoint(y,0),new DOMPoint(y,v),new DOMPoint(0,v)],S=Array(4);if(b)for(let O=0;O<4;O++)S[O]=E[O].matrixTransform(i);else for(let O=0;O<4;O++)S[O]=Fl(E[O],i).matrixTransform(i),S[O]=Bl(S[O]);let D=[new DOMQuad(S[0],S[1],S[2],S[3])];return je&&je.set(t,D),D}let{width:o,height:a}=Le(s,i),l=r.Element,c=i.is2D;if(s instanceof Element||s instanceof l){let m=e?.box;if(m==="margin"||m==="padding"||m==="content"){let u=me(s),f,y,v,b,E,S,D,O;if(m==="margin"){let V=parseFloat(u.marginLeft),j=parseFloat(u.marginTop),X=parseFloat(u.marginRight),Z=parseFloat(u.marginBottom);f=-V,y=-j,v=o+X,b=-j,E=o+X,S=a+Z,D=-V,O=a+Z}else if(m==="padding"){let V=parseFloat(u.borderLeftWidth),j=parseFloat(u.borderTopWidth),X=parseFloat(u.borderRightWidth),Z=parseFloat(u.borderBottomWidth);f=V,y=j,v=o-X,b=j,E=o-X,S=a-Z,D=V,O=a-Z}else{let V=parseFloat(u.borderLeftWidth),j=parseFloat(u.borderTopWidth),X=parseFloat(u.borderRightWidth),Z=parseFloat(u.borderBottomWidth),oe=parseFloat(u.paddingLeft),ye=parseFloat(u.paddingTop),De=parseFloat(u.paddingRight),ue=parseFloat(u.paddingBottom);f=V+oe,y=j+ye,v=o-X-De,b=j+ye,E=o-X-De,S=a-Z-ue,D=V+oe,O=a-Z-ue}let k=[new DOMPoint(f,y),new DOMPoint(v,b),new DOMPoint(E,S),new DOMPoint(D,O)],U=Array(4);if(c)for(let V=0;V<4;V++)U[V]=k[V].matrixTransform(i);else for(let V=0;V<4;V++)U[V]=Fl(k[V],i).matrixTransform(i),U[V]=Bl(U[V]);let $=[new DOMQuad(U[0],U[1],U[2],U[3])];return je&&je.set(t,$),$}}let h=[new DOMPoint(0,0),new DOMPoint(o,0),new DOMPoint(o,a),new DOMPoint(0,a)],d=Array(4);if(c)for(let m=0;m<4;m++)d[m]=h[m].matrixTransform(i);else for(let m=0;m<4;m++)d[m]=Fl(h[m],i).matrixTransform(i),d[m]=Bl(d[m]);let p=[new DOMQuad(d[0],d[1],d[2],d[3])];return je&&je.set(t,p),p}function Tp(s,e,t){let i=Math.abs(s?.a??1),r=Math.abs(s?.b??0),n=i*i-r*r,o,a;if(Math.abs(n)>1e-6)o=Math.max(0,(i*e.width-r*e.height)/n),a=Math.max(0,(i*e.height-r*e.width)/n);else{let l=t.parentElement,c=16;if(l){let d=me(l);c=parseFloat(d.lineHeight)||parseFloat(d.fontSize)*1.2||16}a=Math.max(0,c);let h=Math.max(i,r);o=h>1e-6?Math.max(0,(e.width-a*r)/h):e.width}return{width:o,height:a}}function Fl(s,e){let t=-(s.x*e.m13+s.y*e.m23+e.m43)/e.m33;return new DOMPoint(s.x,s.y,t,1)}function Bl(s){return new DOMPoint(s.x/s.w,s.y/s.w)}function Le(s,e){let t=0,i=0,r=s.ownerDocument.defaultView??window;if(s instanceof HTMLElement||s instanceof r.HTMLElement)t=s.offsetWidth,i=s.offsetHeight;else if(s instanceof SVGSVGElement||s instanceof r.SVGSVGElement)t=s.width.baseVal.value,i=s.height.baseVal.value;else if(s instanceof SVGGraphicsElement||s instanceof r.SVGGraphicsElement){let n=s.getBBox();t=n.width,i=n.height}else if(s instanceof MathMLElement||s instanceof r.MathMLElement){let n=s.getBoundingClientRect();t=n.width/(e?.a??1),i=n.height/(e?.d??1)}else if(s instanceof Text||s instanceof r.Text){let n=s.ownerDocument.createRange();n.selectNodeContents(s);let o=n.getBoundingClientRect(),a=Tp(e,o,s);t=a.width,i=a.height}return{width:t,height:i}}function zn(s,e,t){if(s instanceof HTMLElement||s instanceof(s.ownerDocument.defaultView??window).HTMLElement){let i=me(s);if(i.position==="fixed"){let r=vt(s,t);if(!r)return new DOMPoint(s.offsetLeft,s.offsetTop);let n=Ue(r,s.ownerDocument.body,t,!0).inverse(),o=s.getBoundingClientRect(),a=n.transformPoint(o),l=r.getBoundingClientRect(),c=n.transformPoint(l);return new DOMPoint(a.x-c.x,a.y-c.y)}return e?new DOMPoint(s.offsetLeft-(s.scrollLeft-parseFloat(i.borderLeftWidth)),s.offsetTop-(s.scrollTop-parseFloat(i.borderTopWidth))):new DOMPoint(s.offsetLeft,s.offsetTop)}else if(s instanceof Text||s instanceof(s.ownerDocument.defaultView??window).Text){let i=s.ownerDocument.createRange();i.selectNodeContents(s);let r=i.getBoundingClientRect(),n=vt(s,t),o=n.getBoundingClientRect(),a=Yl(n,t),l=a.a,c=a.b,h=a.c,d=a.d,p=n.offsetWidth,m=n.offsetHeight,u=o.x+o.width/2-(l*p/2+h*m/2),f=o.y+o.height/2-(c*p/2+d*m/2),y=r.x+r.width/2-u,v=r.y+r.height/2-f,b=l*d-c*h,E,S;Math.abs(b)>1e-10?(E=(d*y-h*v)/b,S=(l*v-c*y)/b):(E=y,S=v);let D=Math.abs(l),O=Math.abs(c),k=D*D-O*O,U,$;if(Math.abs(k)>1e-6)U=Math.max(0,(D*r.width-O*r.height)/k),$=Math.max(0,(D*r.height-O*r.width)/k);else{let V=me(n);$=parseFloat(V.lineHeight)||parseFloat(V.fontSize)*1.2||16,$=Math.max(0,$);let j=Math.max(D,O);U=j>1e-6?Math.max(0,(r.width-$*O)/j):r.width}return new DOMPoint(E-U/2,S-$/2)}else if(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element){if((s instanceof SVGGraphicsElement||s instanceof(s.ownerDocument.defaultView??window).SVGGraphicsElement)&&!(s instanceof SVGSVGElement||s instanceof(s.ownerDocument.defaultView??window).SVGSVGElement)){let h=s.getBBox();return new DOMPoint(h.x,h.y)}let i=me(s);if(i.position==="absolute")return new DOMPoint(parseFloat(i.left),parseFloat(i.top));let r=vt(s,t),n=Ue(r,document.body,t,!0).inverse(),o=s.getBoundingClientRect(),a=n.transformPoint(o),l=r.getBoundingClientRect(),c=n.transformPoint(l);return new DOMPoint(a.x-c.x,a.y-c.y)}}function Ue(s,e,t,i=!1){let r;if(Lt){let p=yt.get(s);p===void 0&&yt.set(s,p=Hn++);let m=yt.get(e);m===void 0&&yt.set(e,m=Hn++),r=p+"_"+m+"_"+(i?"no-self-zoom":"full");let u=Lt.get(r);if(u)return u}let n=s,o,l=(n instanceof SVGGraphicsElement||n instanceof(n.ownerDocument.defaultView??window).SVGGraphicsElement)&&!(n instanceof SVGSVGElement||n instanceof(n.ownerDocument.defaultView??window).SVGSVGElement)?new DOMMatrix:wp(n,t,!i),c=l.isIdentity?new DOMMatrix:l,h=vt(n,t);h&&(c.is2D||me(h).transformStyle!=="preserve-3d"&&Cp(c));let d=null;for(;n!=e&&n!=null;){let p=vt(n,t);if(n.assignedSlot!=null){if(n.nodeType===Node.ELEMENT_NODE){let m=Wl(n);if(d!==m&&(d===null||n===d||!Pp(d,n))){let f=Ap(n,"offsetLeft"),y=Ap(n,"offsetTop");(f!==0||y!==0)&&(c=new DOMMatrix().translateSelf(f,y).multiplySelf(c)),d=m}d===null&&(d=m)}else if(n.nodeType===Node.TEXT_NODE){let m=zn(n,n!==s,t);(m.x!==0||m.y!==0)&&(c=new DOMMatrix().translateSelf(m.x,m.y).multiplySelf(c))}}else if(!(n instanceof SVGSVGElement)&&!(n instanceof(n.ownerDocument.defaultView??window).SVGSVGElement)&&(n instanceof SVGGraphicsElement||n instanceof(n.ownerDocument.defaultView??window).SVGGraphicsElement)){let m=n.getCTM(),u=n.getBBox();(u.x!==0||u.y!==0)&&(c=new DOMMatrix().translateSelf(u.x,u.y).multiplySelf(c)),c=new DOMMatrix([m.a,m.b,m.c,m.d,m.e,m.f]).multiplySelf(c),p=n.ownerSVGElement}else if(n instanceof HTMLElement||n instanceof(n.ownerDocument.defaultView??window).HTMLElement){if(d!==n.offsetParent&&!(n instanceof HTMLSlotElement||n instanceof(n.ownerDocument.defaultView??window).HTMLSlotElement)&&(d===null||n===d||!Pp(d,n))){let m=zn(n,n!==s,t),u=kp(n);d=n.offsetParent,(m.x!==0||m.y!==0)&&(c=new DOMMatrix().translateSelf(m.x*u,m.y*u).multiplySelf(c))}}else{let m=zn(n,n!==s,t);d=null,(m.x!==0||m.y!==0)&&(c=new DOMMatrix().translateSelf(m.x,m.y).multiplySelf(c))}if(p){if(p===e){if(d!==null&&(p instanceof HTMLElement||p instanceof(p.ownerDocument.defaultView??window).HTMLElement)&&p.offsetParent===d){let u=zn(p,!1,t);(u.x!==0||u.y!==0)&&(c=new DOMMatrix().translate(-u.x,-u.y).multiply(c))}(p.scrollTop||p.scrollLeft)&&(c=new DOMMatrix().translate(-p.scrollLeft,-p.scrollTop).multiply(c));let m=Dp(p);return m.isIdentity||(c=m.multiply(c)),Lt&&Lt.set(r,c),c}o=wp(p,t),o.isIdentity||(c=o.multiply(c)),h=vt(p,t),h&&(c.is2D||me(h).transformStyle!=="preserve-3d"&&Cp(c))}n=p}return Lt&&Lt.set(r,c),c}function vt(s,e){if((s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)&&s.assignedSlot)return s.assignedSlot;if(s.parentElement==null&&(s.parentNode instanceof ShadowRoot||s.parentNode instanceof(s.ownerDocument.defaultView??window).ShadowRoot))return s.parentNode.host;if((s instanceof HTMLHtmlElement||s instanceof(s.ownerDocument.defaultView??window).HTMLHtmlElement)&&e){for(let t of e)if(t?.contentDocument==s.ownerDocument)return t}return s.parentElement}function Yl(s,e){if(s instanceof Text||s instanceof(s.ownerDocument.defaultView??window).Text)return new DOMMatrix;let t=s,i=me(t),r=i.transform!=="none"&&!!i.transform,n=i.translate!=="none"&&!!i.translate,o=i.rotate!=="none"&&!!i.rotate,a=i.scale!=="none"&&!!i.scale,l=!!i.offsetPath&&i.offsetPath!=="none";if(!r&&!n&&!o&&!a&&!l){let v=vt(t,e);if(!v)return new DOMMatrix;let b=me(v);if(!b.perspective||b.perspective==="none")return new DOMMatrix;let E=Ep(t,e);return E??new DOMMatrix}let c=new DOMMatrix,h=i.transformOrigin.split(" "),d=parseFloat(h[0]),p=parseFloat(h[1]),m=h[2]?parseFloat(h[2]):0,u=d!==0||p!==0||m!==0,f=u?new DOMMatrix().translateSelf(d,p,m):null;if(n){let v=i.translate;if(v.includes("%")){let b=v.split(" "),E=t.getBoundingClientRect();b[0].endsWith("%")&&(b[0]=parseFloat(b[0])*E.width/100+"px"),b[1]?.endsWith("%")&&(b[1]=parseFloat(b[1])*E.height/100+"px"),v=b.join(",")}c.multiplySelf(new DOMMatrix("translate("+v.replaceAll(" ",",")+")"))}o&&c.multiplySelf(new DOMMatrix("rotate("+i.rotate.replaceAll(" ",",")+")")),a&&c.multiplySelf(new DOMMatrix("scale("+i.scale.replaceAll(" ",",")+")")),l&&c.multiplySelf(gf(s)),r&&c.multiplySelf(new DOMMatrix(i.transform)),u&&(c=f.multiply(c.multiplySelf(f.inverse())));let y=Ep(s,e);return y!=null&&(c=y.multiplySelf(c)),c}function Cp(s){if(s.m31=0,s.m32=0,s.m13=0,s.m23=0,s.m33=1,s.m43=0,s.m34=0,s.m14==0&&s.m24==0&&s.m44!=1&&s.m44!=0){let e=1/s.m44;s.m11*=e,s.m12*=e,s.m21*=e,s.m22*=e,s.m41*=e,s.m42*=e,s.m44=1}}function Ep(s,e){let t=vt(s,e);if(t){let i=me(t);if(i.perspective!=="none"){let r=new DOMMatrix,n=parseFloat(i.perspective);if(r.m34=-1/n,i.perspectiveOrigin){let o=i.perspectiveOrigin.split(" "),a=parseFloat(o[0])-s.offsetLeft,l=parseFloat(o[1])-s.offsetTop,c=new DOMMatrix().translateSelf(a,l),h=new DOMMatrix().translateSelf(-a,-l);return c.multiplySelf(r.multiplySelf(h))}}}return null}function gf(s){let e=me(s),t=e.offsetPath,i=e.offsetDistance,r=e.offsetRotate,n=e.offsetAnchor,o=e.transformOrigin,a=vf(i),{x:l,y:c,angle:h}=_f(s,t,a),d=s.parentElement;(d instanceof HTMLElement||d instanceof(d.ownerDocument.defaultView??window).HTMLElement)&&(s.offsetParent===d?(l-=s.offsetLeft,c-=s.offsetTop):s.offsetParent===d.offsetParent&&(l-=s.offsetLeft-d.offsetLeft,c-=s.offsetTop-d.offsetTop));let p=0;if(r.startsWith("auto")){let y=r.split(/\s+/),v=y.length===2?parseFloat(y[1]):0;p=h+v}else p=parseFloat(r);let m=yf(n,o,s),u=new DOMMatrix().translateSelf(-m.x,-m.y),f=u.translate(l,c);return f.multiplySelf(u.invertSelf()),f.rotateSelf(p),f.translateSelf(-m.x,-m.y),f}function yf(s,e,t){let i=t.offsetWidth,r=t.offsetHeight;(!s||s==="auto")&&(s=e);let n=s.split(/\s+/);if(n.length===1)return{x:Hl(n[0],i),y:r/2};let o=Hl(n[0],i),a=Hl(n[1],r);return{x:o,y:a}}function Hl(s,e){if(s=s.trim(),s.endsWith("%"))return parseFloat(s)/100*e;if(s.endsWith("px"))return parseFloat(s);switch(s){case"left":return 0;case"top":return 0;case"center":return e/2;case"right":return e;case"bottom":return e}return parseFloat(s)}function vf(s){return s=s.trim(),s.endsWith("%")?parseFloat(s)/100:parseFloat(s)}function xf(s){return s?(s=s.trim(),s.endsWith("deg")?parseFloat(s):s.endsWith("rad")?parseFloat(s)*(180/Math.PI):s.endsWith("grad")?parseFloat(s)*.9:parseFloat(s)):0}function _f(s,e,t){if(!e||e==="none")return{x:0,y:0,angle:0};let i=e.trim(),r=i.match(/path\(["'](.+)["']\)/);return r?bf(r[1],t):i.startsWith("circle(")?wf(i,t):i.startsWith("ellipse(")?Cf(i,t):i.startsWith("inset(")?Tf(i,s,t):i.startsWith("rect(")?Ef(i,t):i.startsWith("xywh(")?Pf(i,t):i.startsWith("ray(")?Sf(i,t):i.startsWith("polygon(")?Af(i,t):(console.warn("Unsupported offset-path:",e),{x:0,y:0,angle:0})}function bf(s,e){let t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttribute("d",s);let i=t.getTotalLength(),r=e<=1?e*i:e,n=t.getPointAtLength(r),o=t.getPointAtLength(Math.min(i,r+.01)),a=Math.atan2(o.y-n.y,o.x-n.x)*180/Math.PI;return{x:n.x,y:n.y,angle:a}}function Sf(s,e){let i=s.match(/ray\(([^)]+)\)/)[1].trim(),[r,n]=i.split("at").map(u=>u&&u.trim()),o=r.split(/\s+/),a=xf(o[0]),l=a*Math.PI/180,c=0,h=0;if(n){let u=n.split(/\s+/);c=parseFloat(u[0]),h=parseFloat(u[1])}let d=(e<=1,e),p=c+Math.cos(l)*d,m=h+Math.sin(l)*d;return{x:p,y:m,angle:a}}function wf(s,e){let i=s.match(/circle\(([^)]+)\)/)[1],[r,n]=i.split("at").map(m=>m.trim()),o=parseFloat(r),[a,l]=n.split(/\s+/).map(parseFloat),c=e*2*Math.PI,h=a+Math.cos(c)*o,d=l+Math.sin(c)*o,p=c*180/Math.PI+90;return{x:h,y:d,angle:p}}function Cf(s,e){let i=s.match(/ellipse\(([^)]+)\)/)[1].split("at"),r=i[0].trim().split(/\s+/).map(parseFloat),n=i[1].trim().split(/\s+/).map(parseFloat),o=r[0],a=r[1],l=n[0],c=n[1],h=e*2*Math.PI,d=l+Math.cos(h)*o,p=c+Math.sin(h)*a,m=-Math.sin(h)*o,u=Math.cos(h)*a,f=Math.atan2(u,m)*180/Math.PI;return{x:d,y:p,angle:f}}function Ef(s,e){let i=s.match(/rect\(([^)]+)\)/)[1].split(/\s+/).map(l=>parseFloat(l)),r=i[0],n=i[1],o=i[2],a=i[3];return Mp(r,a,n,o,e)}function Pf(s,e){let i=s.match(/xywh\(([^)]+)\)/)[1].split(/\s+/).map(parseFloat),r=i[0],n=i[1],o=i[2],a=i[3];return Mp(n,r,r+o,n+a,e)}function Af(s,e){let r=s.match(/polygon\(([^)]+)\)/)[1].split(",").map(E=>E.trim().split(/\s+/).map(parseFloat)),n=[0];for(let E=1;E<r.length;E++){let S=r[E][0]-r[E-1][0],D=r[E][1]-r[E-1][1];n.push(Math.hypot(S,D)+n[E-1])}let o=r[0][0]-r[r.length-1][0],a=r[0][1]-r[r.length-1][1];n.push(Math.hypot(o,a)+n[n.length-1]);let l=n[n.length-1],c=e*l,h=n.findIndex(E=>E>=c);h<=0&&(h=1);let d=n[h-1],p=n[h],m=(c-d)/(p-d),u=r[(h-1)%r.length],f=r[h%r.length],y=u[0]+(f[0]-u[0])*m,v=u[1]+(f[1]-u[1])*m,b=Math.atan2(f[1]-u[1],f[0]-u[0])*180/Math.PI;return{x:y,y:v,angle:b}}function Mp(s,e,t,i,r){let n=t-e,o=i-s,a=2*(n+o),l=r*a;if(l<n)return{x:e+l,y:s,angle:0};if(l-=n,l<o){let h=s+l;return{x:t,y:h,angle:90}}if(l-=o,l<n)return{x:t-l,y:i,angle:180};l-=n;let c=i-l;return{x:e,y:c,angle:270}}function If(s){let e=[],t=0;for(;t<s.length;){let i=s[t];if(/\s/.test(i)){t++;continue}if("+-*/()".includes(i)){e.push({type:i,value:i}),t++;continue}if(/[0-9.]/.test(i)){let r=t;for(;/[0-9.]/.test(s[t]);)t++;let n=s.slice(r,t);if(s[t]==="%"){t++,e.push({type:"percentage",value:parseFloat(n)});continue}if(s.slice(t,t+2)==="px"){t+=2,e.push({type:"dimension",value:parseFloat(n),unit:"px"});continue}e.push({type:"number",value:parseFloat(n)});continue}if(/[a-zA-Z]/.test(i)){let r=t;for(;/[a-zA-Z]/.test(s[t]);)t++;let n=s.slice(r,t);if(n==="calc"&&s[t]==="("){e.push({type:"func",value:"calc"});continue}throw new Error("Unsupported function: "+n)}throw new Error("Unexpected character in calc(): "+i)}return e}function kf(s){let e=0;function t(){return s[e]}function i(){return s[e++]}function r(){let l=n();for(;t()&&(t().type==="+"||t().type==="-");){let c=i().type,h=n();l={type:"binary",op:c,left:l,right:h}}return l}function n(){let l=o();for(;t()&&(t().type==="*"||t().type==="/");){let c=i().type,h=o();l={type:"binary",op:c,left:l,right:h}}return l}function o(){let l=t();if(!l)throw"Unexpected end in calc()";if(l.type==="number")return i(),{type:"number",value:l.value};if(l.type==="dimension")return i(),{type:"dimension",value:l.value,unit:l.unit};if(l.type==="percentage")return i(),{type:"percentage",value:l.value};if(l.type==="func"){if(i(),t().type!=="(")throw"Expected '(' after calc";i();let c=r();if(!t()||t().type!==")")throw"Expected ')'";return i(),c}if(l.type==="("){i();let c=r();if(!t()||t().type!==")")throw"Expected ')'";return i(),c}throw new Error("Unexpected calc token "+JSON.stringify(l))}let a=r();if(e!==s.length)throw"Extra tokens after calc";return a}function Gl(s,e){switch(s.type){case"number":return s.value;case"dimension":return s.value;case"percentage":return e.percentBase*(s.value/100);case"binary":{let t=Gl(s.left,e),i=Gl(s.right,e);switch(s.op){case"+":return t+i;case"-":return t-i;case"*":return t*i;case"/":return t/i}}}throw"Invalid AST node "+s.type}function Fn(s,e,t=!1){if(s=s.trim(),/^[0-9.]+px$/.test(s))return parseFloat(s);let i=t?e.offsetHeight:e.offsetWidth;if(/^[0-9.]+%$/.test(s)){let n=parseFloat(s);return i*(n/100)}let r=kf(If(s));return Gl(r,{percentBase:i})}function Df(s){let e=s.trim().replace(/^inset\s*\(/,"").replace(/\)\s*$/,""),t=[],i="",r=0;for(let n=0;n<e.length;n++){let o=e[n];o==="("?(r++,i+=o):o===")"?(r--,i+=o):/\s/.test(o)&&r===0?i.trim()!==""&&(t.push(i.trim()),i=""):i+=o}return i.trim()!==""&&t.push(i.trim()),t}function Tf(s,e,t){let i=Df(s);if(i.length!==4)throw new Error("inset() must have 4 arguments");let r=Fn(i[0],e,!0),n=Fn(i[1],e,!1),o=Fn(i[2],e,!0),a=Fn(i[3],e,!1),l=e.offsetWidth,c=e.offsetHeight,h=a,d=r,p=l-n,m=c-o,f=2*(p-h+(m-d))*t,y=p-h;return f<=y?{x:h+f,y:d,angle:0}:(f-=y,y=m-d,f<=y?{x:p,y:d+f,angle:90}:(f-=y,y=p-h,f<=y?{x:p-f,y:m,angle:180}:(f-=y,{x:h,y:m-f,angle:270})))}function Of(s){return Mf.some(e=>s[e]?s[e]!=="none":!1)||(s.containerType?s.containerType!=="normal":!1)||(s.backdropFilter?s.backdropFilter!=="none":!1)||(s.filter?s.filter!=="none":!1)||Nf.some(e=>(s.willChange||"").includes(e))||Lf.some(e=>(s.contain||"").includes(e))}function Bn(s){return s.assignedSlot?s.assignedSlot:s.parentNode instanceof ShadowRoot?s.parentNode.host:s.parentNode}function Pp(s,e){for(let t=e;t;t=Bn(t))if(t===s)return!0;return!1}function Vf(s){let e=new Set,t=s.getRootNode();for(;t;)e.add(t),t=t.parentNode?t.parentNode.getRootNode():null;return e}function Wl(s){for(let e=s;e;e=Bn(e))if(e instanceof Element&&me(e).display==="none")return null;for(let e=Bn(s);e;e=Bn(e)){if(!(e instanceof Element))continue;let t=me(e);if(t.display!=="contents"&&(t.position!=="static"||Of(t)||e.tagName==="BODY"))return e}return null}function Ap(s,e){let t=s[e],i=Wl(s),r=Vf(s);for(;i&&!r.has(i.getRootNode());)t-=i[e],i=Wl(i);return t}var yt,je,Lt,dr,Hn,Mf,Nf,Lf,_t=g(()=>{"use strict";Hn=0;Mf=["transform","translate","scale","rotate","perspective"],Nf=["transform","translate","scale","rotate","perspective","filter"],Lf=["paint","layout","strict","content"]});var Gn,Xl=g(()=>{"use strict";he();zl();le();_t();Pe();re();Gn=class extends z{_startPos;_circle;_circle2;_oldValue;_offsetInControl;constructor(e,t,i){super(e,t,i)}_getTransformOriginCanvasPoint(){let t=getComputedStyle(this.extendedItem.element).transformOrigin.split(" ");return Ue(this.extendedItem.element,this.designerCanvas.canvas,this.designerCanvas.iframes).transformPoint(new DOMPoint(parseFloat(t[0]),parseFloat(t[1])))}refresh(e,t){let i=this._getTransformOriginCanvasPoint();this._valuesHaveChanges(i.x,i.y,this.designerCanvas.zoomFactor)&&(this._removeAllOverlays(),this._circle=this._drawCircle(i.x,i.y,5/this.designerCanvas.zoomFactor,"svg-transform-origin"),this._circle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._circle.style.cursor="pointer",this._circle2=this._drawCircle(i.x,i.y,1/this.designerCanvas.zoomFactor,"svg-transform-origin"),this._circle2.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._circle2.style.pointerEvents="none",this._circle.addEventListener(C.PointerDown,r=>this.pointerEvent(r)),this._circle.addEventListener(C.PointerMove,r=>this.pointerEvent(r)),this._circle.addEventListener(C.PointerUp,r=>this.pointerEvent(r)))}extend(e,t){let i=this._getTransformOriginCanvasPoint();if(isNaN(i.x)||isNaN(i.y)){this.remove();return}else{let r=this.extendedItem.getStyleFromSheetOrLocal("transform-origin");r&&(this._oldValue=r),this.refresh(e,t)}}pointerEvent(e){e.stopPropagation();let t=getComputedStyle(this.extendedItem.element),i=t.transformOrigin.split(" "),r=[];r[0]=parseFloat(i[0])/parseFloat(this.extendedItem.element.style.width),r[1]=parseFloat(i[1])/parseFloat(this.extendedItem.element.style.height);let n=this._getTransformOriginCanvasPoint(),o=this.designerCanvas.getNormalizedEventCoordinates(e),a=this.extendedItem.element.convertPointFromNode(o,this.designerCanvas.canvas),l=this.designerCanvas.getNormalizedEventCoordinates(e);switch(e.type){case C.PointerDown:e.target.setPointerCapture(e.pointerId);let c=Y(e.target);this._offsetInControl={x:c.width/2+(c.x-e.x),y:c.height/2+(c.y-e.y)},this._startPos={x:l.x,y:l.y};break;case C.PointerMove:if(this._startPos&&e.buttons>0){let h=l.x-this._startPos.x,d=l.y-this._startPos.y;this._circle.setAttribute("cx",n.x+h),this._circle.setAttribute("cy",n.y+d),this._circle2.setAttribute("cx",n.x+h),this._circle2.setAttribute("cy",n.y+d)}break;case C.PointerUp:if(e.target.releasePointerCapture(e.pointerId),this._startPos){a.x+=this._offsetInControl.x,a.y+=this._offsetInControl.y;let h=this.extendedItem.openGroup("change transform-origin"),d=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.rootDesignItem.element})[0];if(this._oldValue)try{let u=this._oldValue.split(" "),f=Ei(a.x,this.extendedItem.element,"width",Kt(u[0]),v=>N(this.extendedItem,v)),y=Ei(a.x,this.extendedItem.element,"width",Kt(u[0]),v=>N(this.extendedItem,v));u.length>1&&(y=Ei(a.y,this.extendedItem.element,"height",Kt(u[1]),v=>N(this.extendedItem,v))),this.extendedItem.updateStyleInSheetOrLocal("transform-origin",f+" "+y)}catch{this.extendedItem.updateStyleInSheetOrLocal("transform-origin",N(this.extendedItem,a.x)+"px "+N(this.extendedItem,a.y)+"px")}else this.extendedItem.updateStyleInSheetOrLocal("transform-origin",N(this.extendedItem,a.x)+"px "+N(this.extendedItem,a.y)+"px");xt();let p=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.rootDesignItem.element})[0],m={x:d.p1.x-p.p1.x,y:d.p1.y-p.p1.y};t.translate&&t.translate!=="none"&&(m.x+=parseFloat(t.translate.split(" ")[0]),t.translate.split(" ").length===1?m.y+=parseFloat(t.translate.split(" ")[0]):m.y+=parseFloat(t.translate.split(" ")[1])),this.extendedItem.updateStyleInSheetOrLocal("translate",N(this.extendedItem,m.x)+"px "+N(this.extendedItem,m.y)+"px"),h.commit(),this.refresh(null,null),this._startPos=null}break}}dispose(){this._removeAllOverlays()}}});import{css as Rf}from"@node-projects/base-custom-webcomponent";var Wn,Kl=g(()=>{"use strict";Xl();le();Wn=class{showOnlyWhenSet;constructor(e=!0){this.showOnlyWhenSet=e}shouldExtend(e,t,i){if(!i.isRootItem&&i.node instanceof HTMLElement||i.node instanceof SVGElement&&i.node.localName==="svg"){if(!this.showOnlyWhenSet||i.hasStyle("transformOrigin"))return!0;let r=getComputedStyle(i.element);if(r.display!="inline"&&i.element.getBoundingClientRect){let n=Y(i.element),o=r.transformOrigin.split(" "),a=parseFloat(o[0])-n.width/2,l=parseFloat(o[1])-n.height/2;if(a>.5||a<-.5||l>.5||l<-.5)return!0}}return!1}getExtension(e,t,i){return new Gn(e,t,i)}static style=Rf`.svg-transform-origin{stroke:#3899ec;fill:#000;pointer-events:auto}`}});var jn,$l=g(()=>{"use strict";re();ie();jn=class extends z{constructor(e,t,i){super(e,t,i)}_path;_path2;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=getComputedStyle(this.extendedItem.element);if(i.margin!=="0px"){let r=Number.parseFloat(i.marginLeft.replace("px","")),n=Number.parseFloat(i.marginTop.replace("px","")),o=Number.parseFloat(i.marginRight.replace("px","")),a=Number.parseFloat(i.marginBottom.replace("px",""));if(!isNaN(r)&&!isNaN(n)&&!isNaN(o)&&!isNaN(a)){let l=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(l.p1.x)&&this._valuesHaveChanges(r,n,o,a,l.p1.x,l.p1.y,l.p2.x,l.p2.y,l.p3.x,l.p3.y,l.p4.x,l.p4.y)){let c=this.extendedItem.element.getBoxQuads({box:"margin",relativeTo:this.designerCanvas.canvas})[0],h="M"+[l.p1,l.p2,l.p3,l.p4].map(d=>d.x+","+d.y).join(" ")+"Z ";h+="M"+[c.p1,c.p2,c.p3,c.p4].map(d=>d.x+","+d.y).join(" ")+"Z ",this._path=this._drawPath(h,"svg-margin-fill",this._path,T.Background),this._path2=this._drawPath(h,"svg-margin",this._path2,T.Background)}}}}dispose(){this._removeAllOverlays()}}});function Np(s){let e=s;for(;e;){if(e instanceof(e.ownerDocument.defaultView??window).SVGSVGElement)return!0;if(e instanceof(e.ownerDocument.defaultView??window).SVGDefsElement||e instanceof(e.ownerDocument.defaultView??window).SVGMetadataElement)return!1;e=e.parentElement}return!0}function Pi(s,...e){return s[0]}var pr=g(()=>{"use strict"});import{css as zf}from"@node-projects/base-custom-webcomponent";var Un,Zl=g(()=>{"use strict";$l();q();pr();Un=class{shouldExtend(e,t,i){return i.nodeType==I.Element}getExtension(e,t,i){return new jn(e,t,i)}style=zf`.svg-margin-fill{fill:color(display-p3 1 0 1 / 15%);fill-rule:evenodd}.svg-margin{fill:color(display-p3 1 0 1 / 80%);fill-rule:evenodd;mask:url(#mask-stripe-margin)}`;static svgDefs=Pi`<pattern id="pattern-stripe-margin" patternUnits="userSpaceOnUse" width="10" height="10" patternTransform="rotate(45)" class="pattern"><line x1="0" y="0" x2="0" y2="10" stroke="color(display-p3 1 0 1 / 80%)" stroke-width="1"></line></pattern><mask id="mask-stripe-margin"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-margin)"></mask>`}});var Yn,Ql=g(()=>{"use strict";re();Yn=class extends z{_line1;_line2;_line3;_line4;_textX;_textY;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}_oldValues=[];refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element),t=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.parent.element);if(this._valuesHaveChanges(this.designerCanvas.scaleFactor,e.x,e.y,t.x,t.y,e.height,e.width,t.height,t.width)){this._line1=this._drawLine(t.x,e.y+e.height/2,e.x,e.y+e.height/2,"svg-position",this._line1),this._line2=this._drawLine(t.x+t.width,e.y+e.height/2,e.x+e.width,e.y+e.height/2,"svg-position",this._line2),this._line3=this._drawLine(e.x+e.width/2,t.y,e.x+e.width/2,e.y,"svg-position",this._line3),this._line4=this._drawLine(e.x+e.width/2,t.y+t.height,e.x+e.width/2,e.y+e.height,"svg-position",this._line4),this._line1.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line2.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line3.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line4.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line1.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line2.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line3.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line4.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor;let i,r;if(this.extendedItem.element.computedStyleMap){let n=this.extendedItem.element.computedStyleMap();i=n.get("right")instanceof CSSUnitValue,r=n.get("bottom")instanceof CSSUnitValue}else i=!!this.extendedItem.element?.style?.right,r=!!this.extendedItem.element?.style?.bottom;if(i){let n=Math.round(t.x+t.width-(e.x+e.width));this._textX=this._drawTextWithBackground(""+n,t.x+t.width-n/2,e.y+e.height/2,"white","svg-position-text",this._textX),this._textX[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textX[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}else{let n=Math.round(e.x-t.x);this._textX=this._drawTextWithBackground(""+n,t.x+n/2,e.y+e.height/2,"white","svg-position-text",this._textX),this._textX[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textX[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}if(r){let n=Math.round(t.y+t.height-(e.y+e.height));this._textY=this._drawTextWithBackground(""+n,e.x+e.width/2,t.y+t.height-n/2,"white","svg-position-text",this._textY),this._textY[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textY[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}else{let n=Math.round(e.y-t.y);this._textY=this._drawTextWithBackground(""+n,e.x+e.width/2,t.y+n/2,"white","svg-position-text",this._textY),this._textY[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textY[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}}}dispose(){this._removeAllOverlays()}}});import{css as Ff}from"@node-projects/base-custom-webcomponent";var Xn,ql=g(()=>{"use strict";Ql();Xn=class{shouldExtend(e,t,i){if(!i?.parent||i.element instanceof HTMLTemplateElement)return!1;let r=getComputedStyle(i.element);return r.position==="relative"||r.position==="absolute"}getExtension(e,t,i){return new Yn(e,t,i)}static style=Ff`.svg-position-text{text-anchor:middle;alignment-baseline:central}`}});var Kn,Jl=g(()=>{"use strict";re();ie();Kn=class extends z{_rect;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];isNaN(e.p1.x)||(this._rect=this._drawTransformedRect(e,"svg-hover",this._rect,T.Background),this._rect.style.strokeWidth=(3/this.designerCanvas.scaleFactor).toString())}dispose(){this._removeAllOverlays()}}});import{css as Bf}from"@node-projects/base-custom-webcomponent";var $n,ec=g(()=>{"use strict";Jl();$n=class{shouldExtend(e,t,i){return!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Kn(e,t,i)}static style=Bf`.svg-hover{stroke:#90caf966;fill:none}`}});var xe,tc=g(()=>{"use strict";(function(s){s.DragOrSelect="DragOrSelect",s.Drag="Drag",s.Resize="Resize",s.Rotate="Rotate",s.DrawSelection="DrawSelection",s.DrawingSelection="DrawingSelection"})(xe||(xe={}))});var Zn,ic=g(()=>{"use strict";he();tc();ne();$e();gt();Fe();Zn=class s{cursor="default";_minMoveOffset=5;_movedSinceStartedAction=!1;_initialPoint;_actionType;_actionStartedDesignItem;_actionStartedClickDesignItem;_actionStartedDesignItems;_clonedItems;_copiedItemsInserted=!1;_previousEventName;_dragOverExtensionItem;_dragParentExtensionItem;_moveItemsOffset={x:0,y:0};_initialOffset;_started=!1;_holdTimeout;_firstTimeInMove;_secondTimeInMove;_changeGroup;constructor(){}activated(e){}dispose(){}_showContextMenu(e,t){if(e.preventDefault(),!W(e)){let i=t.elementsFromPoint(e.x,e.y);for(let o of t.instanceServiceContainer.selectionService.selectedElements)if(i.indexOf(o.element)>=0){t.showDesignItemContextMenu(t.instanceServiceContainer.selectionService.primarySelection,e);return}let r=t.serviceContainer.elementAtPointService.getElementAtPoint(t,{x:e.x,y:e.y}),n=M.GetOrCreateDesignItem(r,r,t.serviceContainer,t.instanceServiceContainer);t.instanceServiceContainer.selectionService.isSelected(n)||t.instanceServiceContainer.selectionService.setSelectedElements([n],e),t.showDesignItemContextMenu(n,e)}}pointerEventHandler(e,t,i){W(t)?this.cursor="copy":this.cursor="default";let r=e.serviceContainer.elementInteractionServices;if(r){for(let a of r)if(a.stopEventHandling(e,t,i))return}if(t.button==2&&t.type==C.PointerDown){this._showContextMenu(t,e);return}if(W(t)&&t.shiftKey||t.buttons==4){let a=e.serviceContainer.designerTools.get(K.Pan);if(a){a.pointerEventHandler(e,t,i);return}}switch(t.type){case C.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._movedSinceStartedAction=!1,this._copiedItemsInserted=!1,this._clonedItems=null,this._firstTimeInMove=!1,this._secondTimeInMove=!1;break;case C.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool(),this._copiedItemsInserted=!1,this._clonedItems=null,this._firstTimeInMove=!1,this._secondTimeInMove=!1;break;case C.PointerMove:this._firstTimeInMove&&(this._secondTimeInMove=!0),this._secondTimeInMove?this._firstTimeInMove=!1:this._firstTimeInMove=!0;break}if(!i)return;let n=e.getNormalizedEventCoordinates(t),o=M.GetOrCreateDesignItem(i,i,e.serviceContainer,e.instanceServiceContainer);this._actionType==null&&(this._initialPoint=n,t.shiftKey?(t.preventDefault(),this._actionType=xe.DrawSelection):t.type==C.PointerDown&&(this._actionStartedDesignItem=o,this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.snapLines.clearSnaplines(),o!==e.rootDesignItem?this._actionType=xe.Drag:i===e||i===e.rootDesignItem.element||i==null?this._actionType=xe.DrawSelection:this._actionType=xe.DragOrSelect)),t.type===C.PointerMove&&(this._movedSinceStartedAction=this._movedSinceStartedAction||Math.abs(n.x-this._initialPoint.x)>this._minMoveOffset||Math.abs(n.y-this._initialPoint.y)>this._minMoveOffset,this._actionType==xe.DrawSelection&&(this._actionType=xe.DrawingSelection)),this._actionType==xe.DrawSelection||this._actionType==xe.DrawingSelection?this._pointerActionTypeDrawSelection(e,t,i):(this._actionType==xe.DragOrSelect||this._actionType==xe.Drag)&&this._pointerActionTypeDragOrSelect(e,t,o,n),t.type==C.PointerUp&&(e.snapLines.clearSnaplines(),this._actionType==xe.DrawSelection&&o!==e.rootDesignItem&&e.instanceServiceContainer.selectionService.setSelectedElements([o],t),this._resetTool()),this._previousEventName=t.type}_resetTool(){this._actionType=null,this._actionStartedDesignItem=null,this._actionStartedClickDesignItem=null,this._actionStartedDesignItems=null,this._movedSinceStartedAction=!1,this._initialPoint=null,this._initialOffset=null}_pointerActionTypeDrawSelection(e,t,i){let r=e.serviceContainer.designerTools.get(K.DrawSelection);r&&(this._resetTool(),r.pointerEventHandler(e,t,i))}async _pointerActionTypeDragOrSelect(e,t,i,r,n=!1){this._holdTimeout&&(clearTimeout(this._holdTimeout),this._holdTimeout=null);let o=i;if(t.altKey){if(t.type==C.PointerDown){let a=e.instanceServiceContainer.selectionService.primarySelection;if(a){let l=e.elementsFromPoint(t.x,t.y),c=l.indexOf(a.element);c>=0&&c++;let h=l[c];h&&(i=M.GetOrCreateDesignItem(h,h,e.serviceContainer,e.instanceServiceContainer))}}o=i}else t.type==C.PointerDown&&(i=this._getDesignItemToStartDrag(e,i,r));switch(t.type){case C.PointerDown:{this._actionStartedClickDesignItem=o,this._actionStartedDesignItem=i,this._initialOffset=e.getNormalizedOffsetInElement(t,this._actionStartedDesignItem.element),this._moveItemsOffset={x:0,y:0},this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.alignOnSnap&&e.snapLines.calculateSnaplines(e.instanceServiceContainer.selectionService.selectedElements);break}case C.PointerMove:{if(t.buttons==0)return;if(this._firstTimeInMove){let l=this._actionStartedDesignItem??i;l.instanceServiceContainer.selectionService.selectedElements.includes(l)||(W(t)?l.instanceServiceContainer.selectionService.setSelectedElements([...l.instanceServiceContainer.selectionService.selectedElements,l],t):l.instanceServiceContainer.selectionService.setSelectedElements([l],t),this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.alignOnSnap&&e.snapLines.calculateSnaplines(e.instanceServiceContainer.selectionService.selectedElements))}if(e.readOnly)return;if(!this._clonedItems){this._clonedItems=[];for(let l of this._actionStartedDesignItems){let c=await l.clone();this._clonedItems&&c&&this._clonedItems.push(c)}}if(!this._actionStartedDesignItem)return;if(this._changeGroup||(this._changeGroup=e.rootDesignItem.openGroup("Move Elements"),window.addEventListener("pointerup",()=>{this._changeGroup?.abort(),this._changeGroup=null},{once:!0})),W(t)&&!this._copiedItemsInserted){this._changeGroup.title="Copy Elements",this._copiedItemsInserted=!0;for(let l=0;l<this._clonedItems.length;l++)this._actionStartedDesignItems[l].insertAdjacentElement(this._clonedItems[l],"beforebegin")}else if(!W(t)&&this._copiedItemsInserted){this._changeGroup.title="Move Elements";for(let l of this._clonedItems)l.remove();this._copiedItemsInserted=!1}let a=r.x!=this._initialPoint.x||r.y!=this._initialPoint.y;if(this._actionType!=xe.Drag&&a&&(this._actionType=xe.Drag),this._movedSinceStartedAction){let l=getComputedStyle(this._actionStartedDesignItem.parent.element),c=e.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(this._actionStartedDesignItem.parent,l,this._actionStartedDesignItem));if(c){let h=this._actionStartedDesignItem.parent;this._dragParentExtensionItem!=h?(e.extensionManager.removeExtension(this._dragParentExtensionItem,P.ContainerDrag),e.extensionManager.applyExtension(h,P.ContainerDrag,t),this._dragParentExtensionItem=h):e.extensionManager.refreshExtension(h,P.ContainerDrag);let d=c.canLeave(this._actionStartedDesignItem.parent,this._actionStartedDesignItems),p=null,m=null;if(d&&([p,m]=s.FindPossibleContainer(this._actionStartedDesignItem,this._actionStartedDesignItems,t),p!=null?this._dragOverExtensionItem!=p?(e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerDragOverAndCanBeEntered),e.extensionManager.applyExtension(p,P.ContainerDragOverAndCanBeEntered,t),this._dragOverExtensionItem=p):e.extensionManager.refreshExtension(p,P.ContainerDragOverAndCanBeEntered,t):this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null)),m&&(this._holdTimeout=setTimeout(()=>{this._pointerActionTypeDragOrSelect(e,t,i,r,!0)},1e3)),m&&(t.altKey||n)){let u=c.getElementOffset(this._actionStartedDesignItem.parent,this._actionStartedDesignItem),f=m.getElementOffset(p,this._actionStartedDesignItem);this._moveItemsOffset={x:f.x-u.x+this._moveItemsOffset.x,y:f.y-u.y+this._moveItemsOffset.y},c.leaveContainer(this._actionStartedDesignItem.parent,this._actionStartedDesignItems);let y={x:r.x-this._moveItemsOffset.x,y:r.y-this._moveItemsOffset.y};m.enterContainer(p,this._actionStartedDesignItems,"normal"),m.place(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,y,this._actionStartedDesignItems),e.extensionManager.removeExtension(this._dragParentExtensionItem,P.ContainerDrag),e.extensionManager.applyExtension(p,P.ContainerDrag,t),this._dragParentExtensionItem=p,e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null,e.extensionManager.refreshAllAppliedExtentions()}else{let u={x:r.x-this._moveItemsOffset.x,y:r.y-this._moveItemsOffset.y};if(this._started)c.place(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,u,this._actionStartedDesignItems);else if(!c.startPlacementAllowed||c.startPlacementAllowed(t,e,this._actionStartedDesignItem.parent,this._actionStartedDesignItems)){for(let f of this._actionStartedDesignItems)e.extensionManager.removeExtension(f,P.Placement),e.extensionManager.removeExtension(f,P.MouseOver),e.extensionManager.applyExtension(f,P.Placement,t);c.startPlace(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,u,this._actionStartedDesignItems),this._started=!0}}e.extensionManager.refreshExtensions(this._actionStartedDesignItems,null,t,null,20)}}break}case C.PointerUp:{if(this._started=!1,!this._movedSinceStartedAction||this._actionType==xe.DragOrSelect){this._previousEventName==C.PointerDown&&!W(t)?e.instanceServiceContainer.selectionService.setSelectedElements([this._actionStartedClickDesignItem??this._actionStartedDesignItem],t):this.checkSelectElement(t,e,i);return}if(this._movedSinceStartedAction){let a=getComputedStyle(this._actionStartedDesignItem.parent.element),l=e.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(this._actionStartedDesignItem.parent,a,this._actionStartedDesignItem)),c={x:r.x-this._moveItemsOffset.x,y:r.y-this._moveItemsOffset.y};if(l){this._changeGroup||(this._changeGroup=e.rootDesignItem.openGroup("Move Elements"));try{l.finishPlace(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,c,e.instanceServiceContainer.selectionService.selectedElements),this._changeGroup.commit(),this._changeGroup=null}catch(d){console.error(d),this._changeGroup.abort()}this._changeGroup=null;let h=e.elementsFromPoint(t.x,t.y);for(let d of this._actionStartedDesignItems)h.includes(d.element)&&e.extensionManager.applyExtension(d,P.MouseOver,t),e.extensionManager.removeExtension(d,P.Placement)}else this._changeGroup&&this._changeGroup.abort(),this._changeGroup=null;e.extensionManager.removeExtension(this._dragParentExtensionItem,P.ContainerDrag),this._dragParentExtensionItem=null,e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null,this._moveItemsOffset={x:0,y:0}}e.extensionManager.refreshExtensions(e.instanceServiceContainer.selectionService.selectedElements,null,t,null,20),this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null);break}}}_getDesignItemToStartDrag(e,t,i){let r=e.instanceServiceContainer.selectionService.selectedElements;if(!r?.length||t.isRootItem||r.includes(t))return t;for(let n of r)if(!(!n||n.isRootItem||n===t)&&this._isPointInsideDesignItemQuad(e,n,i))return n;return t}_isPointInsideDesignItemQuad(e,t,i){let r=t.element.getBoxQuads({box:"border",relativeTo:e.canvas,iframes:e.iframes})[0];return r?this._isPointInsideQuad(i,r):!1}_isPointInsideQuad(e,t){let i=[t.p1,t.p2,t.p3,t.p4];for(let n=0;n<i.length;n++){let o=i[n],a=i[(n+1)%i.length];if(this._isPointOnSegment(e,o,a))return!0}let r=!1;for(let n=0,o=i.length-1;n<i.length;o=n++){let a=i[n],l=i[o];a.y>e.y!=l.y>e.y&&e.x<(l.x-a.x)*(e.y-a.y)/(l.y-a.y||Number.EPSILON)+a.x&&(r=!r)}return r}_isPointOnSegment(e,t,i){let n=(e.y-t.y)*(i.x-t.x)-(e.x-t.x)*(i.y-t.y);if(Math.abs(n)>1e-4)return!1;let o=(e.x-t.x)*(i.x-t.x)+(e.y-t.y)*(i.y-t.y);if(o<-1e-4)return!1;let a=(i.x-t.x)*(i.x-t.x)+(i.y-t.y)*(i.y-t.y);return o<=a+1e-4}checkSelectElement(e,t,i){if(W(e)){let r=t.instanceServiceContainer.selectionService.selectedElements.indexOf(i);if(r>=0){let n=t.instanceServiceContainer.selectionService.selectedElements.slice(0);n.splice(r,1),t.instanceServiceContainer.selectionService.setSelectedElements(n,e)}else{let n=t.instanceServiceContainer.selectionService.selectedElements.slice(0);n.push(i),t.instanceServiceContainer.selectionService.setSelectedElements(n,e)}}else t.instanceServiceContainer.selectionService.selectedElements.indexOf(i)<0&&t.instanceServiceContainer.selectionService.setSelectedElements([i],e)}static FindPossibleContainer(e,t,i){let r=null,n=null,o=e.instanceServiceContainer.designerCanvas,a=o.elementsFromPoint(i.x,i.y);a.push(o.rootDesignItem.element);for(let l of a)if(l!=e.element){if(l==e.parent.element)break;if(l==o.rootDesignItem.element){r=o.rootDesignItem;let c=getComputedStyle(r.element);if(n=o.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(r,c,e)),n){if(n.canEnter(r,t))break;r=null,n=null;break}break}else{r=M.GetOrCreateDesignItem(l,l,o.serviceContainer,o.instanceServiceContainer);let c=getComputedStyle(r.element);if(n=o.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(r,c,e)),n){if(n.canEnter(r,t))break;r=null,n=null;continue}}}return[r,n]}keyboardEventHandler(e,t,i){}}});var ve,st=g(()=>{"use strict";ve=class{constructor(e,t,i){this.title="Insert Item",this.containerItem=e,this.index=t,this.newItem=i}title;get affectedItems(){return[this.containerItem,this.newItem]}undo(){return this.newItem.parent._removeChildInternal(this.newItem),[{changeType:"removed",designItems:[this.newItem]}]}do(){return this.containerItem._insertChildInternal(this.newItem,this.index),[{changeType:"added",designItems:[this.newItem]}]}containerItem;index;newItem;mergeWith(e){return!1}}});var Qn,qn,rc=g(()=>{"use strict";he();Qe();st();ne();ie();Qn=10,qn=class{cursor="crosshair";_pathD;_path;_samePoint=!1;_p2pMode=!1;_dragMode=!1;_pointerMoved=!1;_eventStarted=!1;_lastPoint;_startPoint;_captureElement;_pointerId;_angleStep;constructor(e){e?.angleStep!==void 0&&(this._angleStep=e.angleStep)}activated(e){}dispose(){}pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t);switch(t.type){case C.PointerDown:e.clickOverlay.focus(),this._eventStarted=!0,this._p2pMode||(this._captureElement=t.target,this._pointerId=t.pointerId,this._captureElement.setPointerCapture(this._pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._pathD="M "+r.x+" "+r.y+" ",this._path.setAttribute("d",this._pathD),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),e.overlayLayer.addOverlay(this.constructor.name,this._path,T.Foreground),this._startPoint=r),this._lastPoint!=null&&this._lastPoint.x===r.x&&this._lastPoint.y===r.y&&!this._samePoint&&(this._samePoint=!0),this._lastPoint==null&&(this._lastPoint=r),this._startPoint==null&&(this._startPoint=r);break;case C.PointerMove:if(this._eventStarted&&(this._pointerMoved=!0),!this._p2pMode)this._dragMode=!0,this._path&&(this._pathD+="L "+r.x+" "+r.y+" ",this._path.setAttribute("d",this._pathD));else if(this._path){let n=r;t.shiftKey&&(n=ft(this._lastPoint,r)),this._path.setAttribute("d",this._pathD+"L "+n.x+" "+n.y)+""}break;case C.PointerUp:if(this._eventStarted&&!this._pointerMoved&&(this._p2pMode=!0),this._p2pMode&&!this._samePoint&&this._startPoint.x!=r.x&&this._startPoint.y!=r.y&&this._path)if(t.shiftKey||this._angleStep){let n=ft(this._lastPoint,r,this._angleStep??45);this._pathD+="L "+n.x+" "+n.y+" ",this._path.setAttribute("d",this._pathD),this._lastPoint=n}else this._pathD+="L "+r.x+" "+r.y+" ",this._path.setAttribute("d",this._pathD),this._lastPoint=r;(this._samePoint&&this._p2pMode||this._dragMode&&!this._p2pMode)&&this._finalizePath(e);break}t.preventDefault(),t.stopPropagation()}keyboardEventHandler(e,t,i){t.key==="Escape"&&this._finalizePath(e)}_finalizePath(e){this._captureElement?.releasePointerCapture(this._pointerId),this._captureElement=void 0,e.releaseActiveTool(),this._eventStarted=!1,this._p2pMode=!1,this._pointerMoved=!1,this._samePoint=!1,this._dragMode=!1;let t=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let i=document.createElementNS("http://www.w3.org/2000/svg","svg"),r=t.x-Qn,n=t.y-Qn;this._path.setAttribute("d",this._pathD);let o=gp(this._path,r,n);this._path.setAttribute("d",o),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),i.appendChild(this._path),i.style.left=r+"px",i.style.top=n+"px",i.style.position="absolute",i.style.width=Math.round(t.width+2*Qn)+"px",i.style.height=Math.round(t.height+2*Qn)+"px",i.style.overflow="visible",i.style.stroke=e.serviceContainer.globalContext.strokeColor,i.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=void 0,this._pathD=void 0,this._lastPoint=void 0;let a=M.createDesignItemFromInstance(i,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,a)),e.serviceContainer.globalContext.finishedWithTool(this)}}});var Jn,nc=g(()=>{"use strict";re();Jn=class extends z{_line1;_line2;_line3;_line4;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i){if(isNaN(i.p1.x)||isNaN(i.p2.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._line1=this._drawLine(i.p1.x,i.p1.y,i.p2.x,i.p2.y,"svg-selection",this._line1),this._line2=this._drawLine(i.p1.x,i.p1.y,i.p4.x,i.p4.y,"svg-selection",this._line2),this._line3=this._drawLine(i.p2.x,i.p2.y,i.p3.x,i.p3.y,"svg-selection",this._line3),this._line4=this._drawLine(i.p4.x,i.p4.y,i.p3.x,i.p3.y,"svg-selection",this._line4),this._line1.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line2.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line3.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line4.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString())}}dispose(){this._removeAllOverlays()}}});import{css as Hf}from"@node-projects/base-custom-webcomponent";var es,sc=g(()=>{"use strict";nc();q();es=class{shouldExtend(e,t,i){return!i.isRootItem&&i.nodeType!=I.Comment&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Jn(e,t,i)}static style=Hf`.svg-selection{stroke:#3899ec;fill:transparent;stroke-width:2}`}});function Ai(s){let e=getComputedStyle(s),t=1,i=1;return e.gridRowEnd=="auto"?t=1:e.gridRowEnd.startsWith("span")?t=parseInt(e.gridRowEnd.substring(4)):t=parseInt(e.gridRowEnd)-parseInt(e.gridRowStart),e.gridColumnEnd=="auto"?i=1:e.gridColumnEnd.startsWith("span")?i=parseInt(e.gridColumnEnd.substring(4)):i=parseInt(e.gridColumnEnd)-parseInt(e.gridColumnStart),{colSpan:i,rowSpan:t}}function mr(s,e){let t=s.instanceServiceContainer.designerCanvas,i=s.element.convertPointFromNode(new DOMPoint(e.x,e.y),t.canvas,{iframes:t.iframes});return{x:i.x,y:i.y}}function Ii(s){let e=s.instanceServiceContainer.designerCanvas,t=e.canvas.convertPointFromNode(new DOMPoint(0,0),s.element,{iframes:e.iframes}),i=e.canvas.convertPointFromNode(new DOMPoint(1,0),s.element,{iframes:e.iframes}),r=e.canvas.convertPointFromNode(new DOMPoint(0,1),s.element,{iframes:e.iframes});return new DOMMatrix([i.x-t.x,i.y-t.y,r.x-t.x,r.y-t.y,t.x,t.y])}function Lp(s,e){let t=s.cells[0];if(!t?.length||!Number.isFinite(e))return 0;let i=0;for(let r=0;r<t.length;r++){let n=t[r];e>n.localX+n.width/2&&(i=r)}return i}function Op(s,e){let t=s.cells[0];if(!t?.length||!Number.isFinite(e))return 1;let i=1;for(let r=0;r<t.length;r++){let n=t[r];e>n.localX+n.width/2&&(i=r+2)}return i}function Vp(s,e){if(!s.cells.length||!Number.isFinite(e))return 0;let t=0;for(let i=0;i<s.cells.length;i++){let r=s.cells[i][0];e>r.localY+r.height/2&&(t=i)}return t}function Rp(s,e){if(!s.cells.length||!Number.isFinite(e))return 1;let t=1;for(let i=0;i<s.cells.length;i++){let r=s.cells[i][0];e>r.localY+r.height/2&&(t=i+2)}return t}function ur(s,e,t=qe(s)){let i=mr(s,e);if(!Number.isFinite(i.x)||!Number.isFinite(i.y))return null;for(let r=0;r<t.cells.length;r++)for(let n=0;n<t.cells[r].length;n++){let o=t.cells[r][n];if(i.x>=o.localX&&i.x<=o.localX+o.width&&i.y>=o.localY&&i.y<=o.localY+o.height)return{row:r,column:n,cell:o,localPoint:i}}return null}function qe(s){let e=s.instanceServiceContainer.designerCanvas,t=s.element.getBoxQuads({relativeTo:e.canvas,iframes:e.iframes})[0],i=Le(s.element),r=getComputedStyle(s.element),n=r.gridTemplateRows.split(" "),o=r.gridTemplateColumns.split(" "),a=Number.parseFloat(r.paddingLeft),l=Number.parseFloat(r.paddingTop),c=Number.parseFloat(r.borderLeftWidth),h=Number.parseFloat(r.borderTopWidth),d=0,p=0,m=0,u=0,f=t.p1.x+c,y=t.p1.y+h,v=c,b=h,E=null;r.gridTemplateAreas&&r.gridTemplateAreas!=="none"&&(E=r.gridTemplateAreas.split('"')),r.columnGap&&r.columnGap!="normal"&&(p=Number.parseFloat(r.columnGap.replace("px",""))),r.rowGap&&r.rowGap!="normal"&&(m=Number.parseFloat(r.rowGap.replace("px","")));let S=0,D=0;for(let k of o){let U=Number.parseFloat(k.replace("px",""));S+=U+p}S-=p;for(let k of n){let U=Number.parseFloat(k.replace("px",""));D+=U+m}if(D-=m,r.justifyContent=="center"){let k=(i.width-S)/2;f+=k,v+=k}else if(r.justifyContent=="end"){let k=i.width-S;f+=k,v+=k}else if(r.justifyContent=="space-between")p+=(i.width-S)/(o.length-1);else if(r.justifyContent=="space-around"){let k=(i.width-S)/(o.length*2);p+=k*2,f+=k,v+=k}else if(r.justifyContent=="space-evenly"){let k=(i.width-S)/(o.length+1);p+=k,f+=k,v+=k}if(r.alignContent=="center"){let k=(i.height-D)/2;y+=k,b+=k}else if(r.alignContent=="end"){let k=i.height-D;y+=k,b+=k}else if(r.alignContent=="space-between")m+=(i.height-D)/(n.length-1);else if(r.alignContent=="space-around"){let k=(i.height-D)/(n.length*2);m+=k*2,y+=k,b+=k}else if(r.alignContent=="space-evenly"){let k=(i.height-D)/(n.length+1);m+=k,y+=k,b+=k}let O={cells:[],gaps:[],xGap:p,yGap:m};for(let k=0;k<n.length;k++){let U=n[k],$=null;E&&E[u+1]&&($=E[u+1].split(" "));let V=0,j=0,X=Number.parseFloat(U.replace("px","")),Z=[];O.cells.push(Z);for(let oe=0;oe<o.length;oe++){let ye=o[oe];oe>0&&(O.gaps.push({x:V+f+a,y:d+y+l,width:p,height:X,localX:V+v+a,localY:d+b+l,column:oe,row:k,type:"v"}),V+=p);let De=Number.parseFloat(ye.replace("px",""));k>0&&O.gaps.push({x:V+f+a,y:d+y-m+l,width:De,height:m,localX:V+v+a,localY:d+b-m+l,column:oe,row:k,type:"h"});let ue=null;if($&&$[j]){let ae=$[j].trim();ae!="."&&(ue=ae)}let J={x:V+f+a,y:d+y+l,width:De,height:X,name:ue,localX:V+v+a,localY:d+b+l};Z.push(J),V+=De,j++}d+=X+m,u+=2}return O}var $t=g(()=>{"use strict";_t()});function ki(s,e){switch(e){case"left":let t=getComputedStyle(s).left;return s.style.removeProperty("right"),s.style.left=t,t;case"top":let i=getComputedStyle(s).top;return s.style.removeProperty("bottom"),s.style.top=i,i}}var ts,oc=g(()=>{"use strict";he();le();$t();Pe();_t();re();ts=class extends z{resizeAllSelected;_initialSizes=null;_actionModeStarted;_initialPoint=null;_offsetPoint;_circle1;_circle2;_circle3;_circle4;_circle5;_circle6;_circle7;_circle8;_initialHandleCanvasPoint=null;_initialLocalToCanvasMatrix=null;_initialBorderBoxSize=null;_initialFixedResizeAnchor=null;constructor(e,t,i,r){super(e,t,i),this.resizeAllSelected=r}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i){if(isNaN(i.p1.x)||isNaN(i.p1.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._circle1=this._drawResizerOverlay(i.p1.x,i.p1.y,"nw-resize",this._circle1),this._circle2=this._drawResizerOverlay(i.p1.x+(i.p2.x-i.p1.x)/2,i.p1.y+(i.p2.y-i.p1.y)/2,"n-resize",this._circle2),this._circle3=this._drawResizerOverlay(i.p2.x,i.p2.y,"ne-resize",this._circle3),this._circle4=this._drawResizerOverlay(i.p1.x+(i.p4.x-i.p1.x)/2,i.p1.y+(i.p4.y-i.p1.y)/2,"w-resize",this._circle4),this._circle5=this._drawResizerOverlay(i.p4.x,i.p4.y,"sw-resize",this._circle5),this._circle6=this._drawResizerOverlay(i.p4.x+(i.p3.x-i.p4.x)/2,i.p4.y+(i.p3.y-i.p4.y)/2,"s-resize",this._circle6),this._circle8=this._drawResizerOverlay(i.p2.x+(i.p3.x-i.p2.x)/2,i.p2.y+(i.p3.y-i.p2.y)/2,"e-resize",this._circle8),this._circle7=this._drawResizerOverlay(i.p3.x,i.p3.y,"se-resize",this._circle7))}}_drawResizerOverlay(e,t,i,r){let n=this._drawCircle(e,t,this.designerCanvas.serviceContainer.options.resizerPixelSize/this.designerCanvas.zoomFactor,"svg-primary-resizer",r);return n.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),r||(n.addEventListener(C.PointerDown,o=>this._pointerActionTypeResize(n,o,i)),n.addEventListener(C.PointerMove,o=>this._pointerActionTypeResize(n,o,i)),n.addEventListener(C.PointerUp,o=>this._pointerActionTypeResize(n,o,i))),n.style.cursor=i,n}_pointerActionTypeResize(e,t,i){t.stopPropagation();let r=this.designerCanvas.getNormalizedEventCoordinates(t);switch(t.type){case C.PointerDown:let n=parseFloat(e.getAttribute("cx")??"0"),o=parseFloat(e.getAttribute("cy")??"0");if(this._offsetPoint={x:n-r.x,y:o-r.y},t.target.setPointerCapture(t.pointerId),this._initialPoint=r,this._initialHandleCanvasPoint=new DOMPoint(n,o),this._initialLocalToCanvasMatrix=Ii(this.extendedItem),this._initialBorderBoxSize=Le(this.extendedItem.element),this._initialFixedResizeAnchor=this._getFixedResizeAnchor(this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas,iframes:this.designerCanvas.iframes})[0],i),this._initialSizes=[],this._actionModeStarted=i,this._initialSizes.push(this._getInitialSize(this.extendedItem.element)),this.resizeAllSelected)for(let l of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)this._initialSizes.push(this._getInitialSize(l.element));if(this.designerCanvas.alignOnSnap&&this.designerCanvas.snapLines.calculateSnaplines(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),this.prepareResize(this.extendedItem,this._actionModeStarted),this.resizeAllSelected)for(let l of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)l!==this.extendedItem&&this.prepareResize(l,this._actionModeStarted);break;case C.PointerMove:if(this._initialPoint){if(!this._initialSizes||!this._initialHandleCanvasPoint||!this._initialLocalToCanvasMatrix||!this._initialBorderBoxSize)return;let l=getComputedStyle(this.extendedItem.parent.element),h=this.designerCanvas.serviceContainer.getLastServiceWhere("containerService",S=>S.serviceForContainer(this.extendedItem.parent,l)).placePoint(t,this.designerCanvas,this.extendedItem.parent,this._initialPoint,{x:0,y:0},r,this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),d=new DOMPoint(h.x+this._offsetPoint.x,h.y+this._offsetPoint.y),p=this._getLocalHandleDelta(d);if(!p)return;let m=p.x,u=p.y;t.shiftKey&&(m=m<u?m:u,u=m);let f=0,y=null,v=null;switch(this._actionModeStarted){case"e-resize":if(y=this._initialSizes[f].width+m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width+m)+"px")}break;case"se-resize":if(y=this._initialSizes[f].width+m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height+u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width+m)+"px",S.element.style.height=N(this.extendedItem,this._initialSizes[f].height+u)+"px")}break;case"s-resize":if(v=this._initialSizes[f].height+u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.height=N(this.extendedItem,this._initialSizes[f].height+u)+"px")}break;case"sw-resize":if(y=this._initialSizes[f].width-m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height+u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width-m)+"px",S.element.style.height=N(this.extendedItem,this._initialSizes[f].height+u)+"px")}break;case"w-resize":if(y=this._initialSizes[f].width-m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width-m)+"px")}break;case"nw-resize":if(y=this._initialSizes[f].width-m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height-u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width-m)+"px",S.element.style.height=N(this.extendedItem,this._initialSizes[f].height-u)+"px")}break;case"n-resize":if(v=this._initialSizes[f].height-u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.height=N(this.extendedItem,this._initialSizes[f].height-u)+"px")}break;case"ne-resize":if(y=this._initialSizes[f].width+m,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height-u,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let S of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)S!==this.extendedItem&&(S.element.style.width=N(this.extendedItem,this._initialSizes[f].width+m)+"px",S.element.style.height=N(this.extendedItem,this._initialSizes[f].height-u)+"px")}break}let b=this._getCurrentBorderBoxSize(m,u);if(!b)return;this._applyAnchorCorrection(b);let E=[this.extendedItem,this.extendedItem.parent];this.resizeAllSelected&&E.push(...this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),this.extensionManager.refreshExtensions(E),this.designerCanvas?.raiseDesignItemsChanged(E,"resize",!1)}break;case C.PointerUp:if(t.target.releasePointerCapture(t.pointerId),!this._initialPoint)return;let a=this.extendedItem.openGroup(this.resizeAllSelected&&this.designerCanvas.instanceServiceContainer.selectionService.selectedElements.length>1?"Resize Elements":"Resize &lt;"+this.extendedItem.name+"&gt;");try{let l=this.extendedItem.element;this.extendedItem.setStyle("width",this.extendedItem.element.style.width),this.extendedItem.setStyle("height",this.extendedItem.element.style.height);let c=parseFloat(ki(l,"left")),h=parseFloat(ki(l,"top")),d=this._getAnchorCorrectionInParent(Le(this.extendedItem.element));if(d&&(c+=d.x,h+=d.y,l.style.left=N(this.extendedItem,c)+"px",l.style.top=N(this.extendedItem,h)+"px"),this.extendedItem.setStyle("left",N(this.extendedItem,c)+"px"),this.extendedItem.setStyle("top",N(this.extendedItem,h)+"px"),this.resizeAllSelected){for(let p of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)p!==this.extendedItem&&(p.setStyle("width",p.element.style.width),p.setStyle("height",p.element.style.height),p.setStyle("left",N(this.extendedItem,parseFloat(ki(p.element,"left")))+"px"),p.setStyle("top",N(this.extendedItem,parseFloat(ki(p.element,"top")))+"px"));this.designerCanvas?.raiseDesignItemsChanged(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements,"resize",!0)}else this.designerCanvas?.raiseDesignItemsChanged([this.extendedItem],"resize",!0);a.commit()}catch(l){a.abort(),console.error(l)}this._initialSizes=null,this._initialPoint=null,this._initialHandleCanvasPoint=null,this._initialLocalToCanvasMatrix=null,this._initialBorderBoxSize=null,this._initialFixedResizeAnchor=null;break}}_getLocalHandleDelta(e){if(!this._initialHandleCanvasPoint||!this._initialLocalToCanvasMatrix)return null;let t=new DOMMatrix([this._initialLocalToCanvasMatrix.a,this._initialLocalToCanvasMatrix.b,this._initialLocalToCanvasMatrix.c,this._initialLocalToCanvasMatrix.d,0,0]);if(!t.is2D)return null;let i=new DOMPoint(e.x-this._initialHandleCanvasPoint.x,e.y-this._initialHandleCanvasPoint.y);return t.inverse().transformPoint(i)}_getCurrentBorderBoxSize(e,t){if(!this._initialBorderBoxSize)return null;let i=this._initialBorderBoxSize.width,r=this._initialBorderBoxSize.height;switch(this._actionModeStarted){case"e-resize":case"se-resize":case"ne-resize":i+=e;break;case"w-resize":case"sw-resize":case"nw-resize":i-=e;break}switch(this._actionModeStarted){case"s-resize":case"se-resize":case"sw-resize":r+=t;break;case"n-resize":case"ne-resize":case"nw-resize":r-=t;break}return{width:i,height:r}}_getInitialSize(e){let t=Le(e),i={x:0,y:0};return getComputedStyle(e).boxSizing=="content-box"&&(i=Kd(e)),{width:t.width-i.x,height:t.height-i.y}}_getFixedResizeAnchor(e,t){if(!e)return null;switch(t){case"e-resize":return new DOMPoint((e.p1.x+e.p4.x)/2,(e.p1.y+e.p4.y)/2);case"se-resize":return new DOMPoint(e.p1.x,e.p1.y);case"s-resize":return new DOMPoint((e.p1.x+e.p2.x)/2,(e.p1.y+e.p2.y)/2);case"sw-resize":return new DOMPoint(e.p2.x,e.p2.y);case"w-resize":return new DOMPoint((e.p2.x+e.p3.x)/2,(e.p2.y+e.p3.y)/2);case"nw-resize":return new DOMPoint(e.p3.x,e.p3.y);case"n-resize":return new DOMPoint((e.p4.x+e.p3.x)/2,(e.p4.y+e.p3.y)/2);case"ne-resize":return new DOMPoint(e.p4.x,e.p4.y);default:return null}}_getFixedResizeAnchorLocal(e,t){switch(t){case"e-resize":return new DOMPoint(0,e.height/2);case"se-resize":return new DOMPoint(0,0);case"s-resize":return new DOMPoint(e.width/2,0);case"sw-resize":return new DOMPoint(e.width,0);case"w-resize":return new DOMPoint(e.width,e.height/2);case"nw-resize":return new DOMPoint(e.width,e.height);case"n-resize":return new DOMPoint(e.width/2,e.height);case"ne-resize":return new DOMPoint(0,e.height);default:return null}}_getAnchorCorrectionInParent(e){if(!this._initialFixedResizeAnchor)return null;let t=this._getFixedResizeAnchorLocal(e,this._actionModeStarted);if(!t)return null;let i=this.extendedItem.parent.element.convertPointFromNode(this._initialFixedResizeAnchor,this.designerCanvas.canvas,{iframes:this.designerCanvas.iframes}),r=this.designerCanvas.canvas.convertPointFromNode(t,this.extendedItem.element,{iframes:this.designerCanvas.iframes}),n=this.extendedItem.parent.element.convertPointFromNode(r,this.designerCanvas.canvas,{iframes:this.designerCanvas.iframes});return{x:i.x-n.x,y:i.y-n.y}}_applyAnchorCorrection(e){let t=this._getAnchorCorrectionInParent(e);if(!t)return;let i=this.extendedItem.element,r=parseFloat(ki(i,"left"))+t.x,n=parseFloat(ki(i,"top"))+t.y;i.style.left=N(this.extendedItem,r)+"px",i.style.top=N(this.extendedItem,n)+"px"}prepareResize(e,t){let i=null,r=null,n=null,o=null;switch(this._actionModeStarted){case"e-resize":n=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=n;break;case"se-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i,n=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=n;break;case"s-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i;break;case"sw-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i,o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"w-resize":o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"nw-resize":r=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=r,o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"n-resize":r=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=r;break;case"ne-resize":r=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=r,n=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=n;break}}dispose(){this._removeAllOverlays()}}});import{css as Gf}from"@node-projects/base-custom-webcomponent";var is,ac=g(()=>{"use strict";oc();q();is=class{resizeAllSelected;constructor(e=!1){this.resizeAllSelected=e}shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem&&i.nodeType==I.Element}getExtension(e,t,i){return new ts(e,t,i,this.resizeAllSelected)}static style=Gf`.svg-primary-resizer{stroke:#3899ec;fill:#fff;pointer-events:auto}`}});function zp(s){let e=Math.hypot(s.x,s.y);return e<1e-8?{x:0,y:0}:{x:s.x/e,y:s.y/e}}function Di(s){return{x:(s.p1.x+s.p2.x+s.p3.x+s.p4.x)/4,y:(s.p1.y+s.p2.y+s.p3.y+s.p4.y)/4}}function Fp(s,e){return{x:(s.x+e.x)/2,y:(s.y+e.y)/2}}function Wf(s,e,t,i){let r=e.x-s.x,n=e.y-s.y,o=zp({x:-n,y:r});o.x===0&&o.y===0&&(o=zp(i));let a=Fp(s,e),l={x:t.x-a.x,y:t.y-a.y};return o.x*l.x+o.y*l.y>0&&(o={x:-o.x,y:-o.y}),o}function Oe(s,e,t,i,r){let n=Fp(s,e),o=Wf(s,e,t,r);return{x:n.x+o.x*i,y:n.y+o.y*i}}var rs=g(()=>{"use strict"});var ns,lc=g(()=>{"use strict";Fe();Pe();_t();re();rs();ns=class extends z{_rotateLine;_rotateCircle;_startPoint=null;_rotateCirclePosition={x:0,y:0};constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let r=[i.p1,i.p2,i.p3,i.p4];if(r.some(c=>!Number.isFinite(c.x)||!Number.isFinite(c.y))){this.remove();return}if(!this._valuesHaveChanges(this.designerCanvas.zoomFactor,...r.flatMap(c=>[c.x,c.y])))return;let n=Di(i),o=Oe(i.p1,i.p2,n,30/this.designerCanvas.zoomFactor,{x:0,y:-1}),a=Oe(i.p1,i.p2,n,22/this.designerCanvas.zoomFactor,{x:0,y:-1}),l=Oe(i.p1,i.p2,n,6/this.designerCanvas.zoomFactor,{x:0,y:-1});this._rotateLine=this._drawLine(a.x,a.y,l.x,l.y,"svg-primary-rotate-line",this._rotateLine),this._rotateLine.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle?(this._rotateCircle=this._drawCircle(o.x,o.y,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString()):(this._rotateCircle=this._drawCircle(o.x,o.y,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle.addEventListener("pointerdown",c=>{c.stopPropagation(),this._rotateCirclePosition=this._getRotateReferencePoint(),c.target.setPointerCapture(c.pointerId);let h=this.designerCanvas.getNormalizedEventCoordinates(c);this._startPoint=this.extendedItem.element.convertPointFromNode({x:h.x,y:h.y},this.designerCanvas.canvas)}),this._rotateCircle.addEventListener("pointermove",c=>{c.stopPropagation(),this._startPoint&&(this.extendedItem.element.style.rotate="none",this.extendedItem.element.style.rotate=this.getAngle(c)+"deg")}),this._rotateCircle.addEventListener("pointerup",c=>{c.stopPropagation(),c.target.releasePointerCapture(c.pointerId),this._startPoint=null,this.extendedItem.element.style.rotate="none",this.extendedItem.setStyle("rotate",this.getAngle(c)+"deg")}))}_getRotateReferencePoint(){let e=this.extendedItem.element,i={x:Le(this.extendedItem.element).width/2,y:-30/this.designerCanvas.zoomFactor},r=e.style.rotate;try{e.style.rotate="none";let n=e.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!n)return i;let o=Di(n),a=Oe(n.p1,n.p2,o,30/this.designerCanvas.zoomFactor,{x:0,y:-1}),l=e.convertPointFromNode(a,this.designerCanvas.canvas);return!Number.isFinite(l.x)||!Number.isFinite(l.y)?i:{x:l.x,y:l.y}}finally{e.style.rotate=r}}getAngle(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e),i={x:t.x,y:t.y},r=this.extendedItem.element.convertPointFromNode(i,this.designerCanvas.canvas),o=getComputedStyle(this.extendedItem.element).transformOrigin.split(" "),a={x:parseFloat(o[0]),y:parseFloat(o[1])},l=Math.atan2(this._rotateCirclePosition.y-a.y,this._rotateCirclePosition.x-a.x)*180/Math.PI+90,c=Math.atan2(r.y-a.y,r.x-a.x)*180/Math.PI+90-l;return W(e)||(c=Math.round(c/15)*15),N(this.extendedItem,c)}dispose(){this._removeAllOverlays()}}});import{css as jf}from"@node-projects/base-custom-webcomponent";var ss,cc=g(()=>{"use strict";lc();ss=class{type;constructor(e="center-top"){this.type=e}shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new ns(e,t,i)}static style=jf`.svg-primary-rotate{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto;cursor:alias}.svg-primary-rotate-transparent{fill:transparent;pointer-events:auto;cursor:alias}.svg-primary-rotate-line{stroke:#3899ec;fill:#3899ec;stroke-width:1}`}});var os,hc=g(()=>{"use strict";Fe();Pe();le();re();os=class extends z{_rotateLine;_rotateCircle;_rectLine1;_rectLine2;_rectLine3;_rectLine4;_initialCorners;_startAngle;_groupCenter;_initialHandleX;_initialHandleY;_initialLineX1;_initialLineY1;_initialLineX2;_initialLineY2;_currentDelta=0;_elementStartStates;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=ce(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);if(i.length<2)return;let r,n,o,a,l,c;if(this._elementStartStates){let h=this._currentDelta*Math.PI/180,d=Math.cos(h),p=Math.sin(h),m=(b,E)=>this._groupCenter.x+(b-this._groupCenter.x)*d-(E-this._groupCenter.y)*p,u=(b,E)=>this._groupCenter.y+(b-this._groupCenter.x)*p+(E-this._groupCenter.y)*d;r=m(this._initialHandleX,this._initialHandleY),n=u(this._initialHandleX,this._initialHandleY),o=m(this._initialLineX1,this._initialLineY1),a=u(this._initialLineX1,this._initialLineY1),l=m(this._initialLineX2,this._initialLineY2),c=u(this._initialLineX2,this._initialLineY2);let y=this._initialCorners.map(b=>({x:m(b.x,b.y),y:u(b.x,b.y)})),v=(2/this.designerCanvas.zoomFactor).toString();this._rectLine1=this._drawLine(y[0].x,y[0].y,y[1].x,y[1].y,"svg-rotate-group-rect",this._rectLine1),this._rectLine2=this._drawLine(y[1].x,y[1].y,y[2].x,y[2].y,"svg-rotate-group-rect",this._rectLine2),this._rectLine3=this._drawLine(y[2].x,y[2].y,y[3].x,y[3].y,"svg-rotate-group-rect",this._rectLine3),this._rectLine4=this._drawLine(y[3].x,y[3].y,y[0].x,y[0].y,"svg-rotate-group-rect",this._rectLine4),this._rectLine1.style.strokeWidth=v,this._rectLine2.style.strokeWidth=v,this._rectLine3.style.strokeWidth=v,this._rectLine4.style.strokeWidth=v}else{this._rectLine1&&(this._rectLine1.style.display="none",this._rectLine2.style.display="none",this._rectLine3.style.display="none",this._rectLine4.style.display="none");let h=Gt(i,this.designerCanvas),d=h.x+h.width/2,p=h.y;r=d,n=p-30/this.designerCanvas.zoomFactor,o=d,a=p-22/this.designerCanvas.zoomFactor,l=d,c=p-6/this.designerCanvas.zoomFactor}this._rotateLine=this._drawLine(o,a,l,c,"svg-primary-rotate-line",this._rotateLine),this._rotateLine.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle?(this._rotateCircle=this._drawCircle(r,n,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString()):(this._rotateCircle=this._drawCircle(r,n,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle.addEventListener("pointerdown",h=>{h.stopPropagation(),h.target.setPointerCapture(h.pointerId);let d=ce(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),p=Gt(d,this.designerCanvas),m=p.x+p.width/2,u=p.y;this._groupCenter={x:m,y:p.y+p.height/2},this._initialHandleX=m,this._initialHandleY=u-30/this.designerCanvas.zoomFactor,this._initialLineX1=m,this._initialLineY1=u-22/this.designerCanvas.zoomFactor,this._initialLineX2=m,this._initialLineY2=u-6/this.designerCanvas.zoomFactor,this._initialCorners=[{x:p.x,y:p.y},{x:p.x+p.width,y:p.y},{x:p.x+p.width,y:p.y+p.height},{x:p.x,y:p.y+p.height}],this._rectLine1&&(this._rectLine1.style.display="",this._rectLine2.style.display="",this._rectLine3.style.display="",this._rectLine4.style.display="");let f=this.designerCanvas.getNormalizedEventCoordinates(h);this._startAngle=Math.atan2(f.y-this._groupCenter.y,f.x-this._groupCenter.x),this._currentDelta=0,this._elementStartStates=d.map(y=>{let v=this.designerCanvas.getNormalizedElementCoordinates(y.element),b=this.designerCanvas.getNormalizedElementCoordinates(y.parent.element),E=y.getStyle("rotate")??"0deg",S=parseFloat(E)||0,D=getComputedStyle(y.element),O=parseFloat(D.width)/2,k=parseFloat(D.height)/2;return{item:y,rotation:S,centerX:v.x+v.width/2,centerY:v.y+v.height/2,cssHalfWidth:O,cssHalfHeight:k,parentX:b.x,parentY:b.y,parentWidth:b.width,parentHeight:b.height,usesRight:y.hasStyle("right")&&!y.hasStyle("left"),usesBottom:y.hasStyle("bottom")&&!y.hasStyle("top")}})}),this._rotateCircle.addEventListener("pointermove",h=>{if(h.stopPropagation(),!!this._elementStartStates){this._currentDelta=this._getDelta(h);for(let d of this._elementStartStates)this._applyRotation(d,this._currentDelta,!1)}}),this._rotateCircle.addEventListener("pointerup",h=>{if(h.stopPropagation(),h.target.releasePointerCapture(h.pointerId),!this._elementStartStates)return;let d=this._getDelta(h),p=this.designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup("rotateGroup");for(let m of this._elementStartStates)this._applyRotation(m,d,!0);p.commit(),this._elementStartStates=null,this._currentDelta=0}))}_getDelta(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e),r=(Math.atan2(t.y-this._groupCenter.y,t.x-this._groupCenter.x)-this._startAngle)*180/Math.PI;return r=((r+180)%360+360)%360-180,W(e)||(r=Math.round(r/15)*15),r}_applyRotation(e,t,i){let r=t*Math.PI/180,n=Math.cos(r),o=Math.sin(r),a=e.centerX-this._groupCenter.x,l=e.centerY-this._groupCenter.y,c=this._groupCenter.x+a*n-l*o,h=this._groupCenter.y+a*o+l*n,d=N(e.item,e.rotation+t),p=c-e.cssHalfWidth-e.parentX,m=h-e.cssHalfHeight-e.parentY,u=e.parentX+e.parentWidth-c-e.cssHalfWidth,f=e.parentY+e.parentHeight-h-e.cssHalfHeight;if(i)e.usesRight?e.item.setStyle("right",u+"px"):e.item.setStyle("left",p+"px"),e.usesBottom?e.item.setStyle("bottom",f+"px"):e.item.setStyle("top",m+"px"),e.item.setStyle("rotate",d+"deg");else{let y=e.item.element;e.usesRight?y.style.right=u+"px":y.style.left=p+"px",e.usesBottom?y.style.bottom=f+"px":y.style.top=m+"px",y.style.rotate=d+"deg"}}dispose(){this._removeAllOverlays()}}});import{css as Uf}from"@node-projects/base-custom-webcomponent";var as,dc=g(()=>{"use strict";hc();as=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new os(e,t,i)}static style=Uf`.svg-primary-rotate{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto;cursor:alias}.svg-primary-rotate-line{stroke:#3899ec;fill:#3899ec;stroke-width:1}.svg-rotate-group-rect{stroke:#3899ec;fill:transparent;stroke-width:2;stroke-dasharray:5 3}`}});var ls,pc=g(()=>{"use strict";he();ie();ls=class{cursor="zoom-in";_rect;_startPoint;_endPoint;_pointerMovementTolerance=5;_zoomStepSize=.2;activated(e){}pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t);switch(t.type){case C.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._startPoint=r,this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect")),this._rect.setAttribute("class","svg-selector"),this._rect.setAttribute("x",this._startPoint.x*e.zoomFactor),this._rect.setAttribute("y",this._startPoint.y*e.zoomFactor),this._rect.setAttribute("width",0),this._rect.setAttribute("height",0),this._rect.style.strokeWidth=""+1/e.scaleFactor,this._rect.style.strokeDasharray=""+2/e.scaleFactor,e.overlayLayer.addOverlay(this.constructor.name,this._rect,T.Foreground);break;case C.PointerMove:if(this._startPoint){let o=r.x-this._startPoint.x,a=r.y-this._startPoint.y;o>=0?(this._rect.setAttribute("x",this._startPoint.x),this._rect.setAttribute("width",o)):(this._rect.setAttribute("x",r.x),this._rect.setAttribute("width",-1*o)),a>=0?(this._rect.setAttribute("y",this._startPoint.y),this._rect.setAttribute("height",a)):(this._rect.setAttribute("y",r.y),this._rect.setAttribute("height",-1*a))}break;case C.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool(),this._endPoint=r;let n=t.button==0;switch(t.button){case 0:case 2:this._zoomOnto(n,this._startPoint,this._endPoint,e);break}e.overlayLayer.removeOverlay(this._rect),this._rect=null,this._startPoint=null;break}}_zoomOnto(e,t,i,r){if(this._isPositionEqual(t,i)){let n=r.zoomFactor,o=e?n+this._zoomStepSize:n-this._zoomStepSize;r.zoomTowardsPoint(i,o)}else r.zoomOntoRectangle(t,i)}_isPositionEqual(e,t){let i=this._pointerMovementTolerance;return Math.abs(e.x-t.x)<=i&&Math.abs(e.y-t.y)<=i}keyboardEventHandler(e,t,i){}dispose(){}}});var cs,mc=g(()=>{"use strict";he();cs=class{cursor="grab";pointerEventHandler(e,t,i){switch(t.type){case C.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this);break;case C.PointerMove:(t.buttons==1||t.buttons==4)&&(e.canvasOffset={x:e.canvasOffset.x+t.movementX/e.zoomFactor,y:e.canvasOffset.y+t.movementY/e.zoomFactor});break;case C.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();break}}keyboardEventHandler(e,t,i){}activated(e){}dispose(){}}});var A,bt=g(()=>{"use strict";(function(s){s.copy="copy",s.paste="paste",s.cut="cut",s.delete="delete",s.undo="undo",s.redo="redo",s.holdUndo="holdUndo",s.holdRedo="holdRedo",s.rotateCounterClockwise="rotateCounterClockwise",s.rotateClockwise="rotateClockwise",s.mirrorHorizontal="mirrorHorizontal",s.mirrorVertical="mirrorVertical",s.selectAll="selectAll",s.moveToFront="moveToFront",s.moveForward="moveForward",s.moveBackward="moveBackward",s.moveToBack="moveToBack",s.arrangeLeft="arrangeLeft",s.arrangeCenter="arrangeCenter",s.arrangeRight="arrangeRight",s.arrangeTop="arrangeTop",s.arrangeMiddle="arrangeMiddle",s.arrangeBottom="arrangeBottom",s.unifyWidth="unifyWidth",s.unifyHeight="unifyHeight",s.distributeHorizontal="distributeHorizontaly",s.distributeVertical="distributeVertical",s.setTool="setTool",s.setStrokeColor="setStrokeColor",s.setFillBrush="setFillBrush",s.setStrokeThickness="setStrokeThickness",s.screenshot="screenshot"})(A||(A={}))});var hs,uc=g(()=>{"use strict";bt();se();hs=class{shouldProvideContextmenu(e,t,i,r){return!0}provideContextMenuItems(e,t,i){return t.readOnly?[{title:"copy",icon:`<img src="${w+"icons/copy.svg"}">`,action:()=>{t.executeCommand({type:A.copy})},shortCut:"Ctrl + C",disabled:i===null}]:[{title:"copy",icon:`<img src="${w+"icons/copy.svg"}">`,action:()=>{t.executeCommand({type:A.copy})},shortCut:"Ctrl + C",disabled:i===null},{title:"cut",icon:`<img src="${w+"icons/cut.svg"}">`,action:()=>{t.executeCommand({type:A.cut})},shortCut:"Ctrl + X",disabled:i===null},{title:"paste",icon:`<img src="${w+"icons/paste.svg"}">`,action:()=>{t.executeCommand({type:A.paste})},shortCut:"Ctrl + V"},{title:"delete",icon:`<img src="${w+"icons/delete.svg"}">`,action:()=>{t.executeCommand({type:A.delete})},shortCut:"Del",disabled:i===null}]}}});function Kf(s){return s.startsWith("border")}function $f(s){return s.startsWith("background")}function Zf(s){return s==="transform"||s.startsWith("transform-")||Xf.has(s)}function Qf(s){return s.startsWith("font")||s.startsWith("text")||Yf.has(s)}function qf(s,e){let t=[],i=new Set;for(let r=0;r<s.length;r++){let n=R.camelToDashCase(s[r]);if(!n||i.has(n)||!e(n))continue;let o=s.getPropertyValue(n)?.trim();o&&(i.add(n),t.push({name:n,value:o}))}return t}function Bp(s){let e=s.filter(a=>Kf(a.name)),t=s.filter(a=>$f(a.name)),i=s.filter(a=>Zf(a.name)),r=s.filter(a=>Qf(a.name)),n=[],o=new Set;for(let a of[e,t,i,r])for(let l of a)o.has(l.name)||(o.add(l.name),n.push(l));return{all:n,border:e,background:t,transform:i,text:r}}function oC(s){let e=qf(s,()=>!0);return Bp(e)}function Hp(s){let e=[],t=new Set;for(let[i,r]of s){let n=i?.trim().toLowerCase(),o=r?.trim();!n||!o||t.has(n)||(t.add(n),e.push({name:n,value:o}))}return e.length?Bp(e):null}function Gp(s,e){return s[e]}var sC,Yf,Xf,fc=g(()=>{"use strict";_e();sC=["all","border","background","transform","text"],Yf=new Set(["color","caret-color","line-height","letter-spacing","word-spacing","white-space","word-break","overflow-wrap","hyphens","tab-size","direction","writing-mode","unicode-bidi"]),Xf=new Set(["translate","rotate","scale"])});var ds,gc=g(()=>{"use strict";q();fc();ds=class{shouldProvideContextmenu(e,t,i,r){return!t.readOnly&&this._getTargetDesignItems(t).length>0}provideContextMenuItems(e,t,i){return[{title:"paste format",children:[this._createPasteFormatItem(t,"all"),{title:"-"},this._createPasteFormatItem(t,"border"),this._createPasteFormatItem(t,"background"),this._createPasteFormatItem(t,"transform"),this._createPasteFormatItem(t,"text")]}]}_createPasteFormatItem(e,t){return{title:t,action:()=>{this._pasteFormat(e,t)}}}_getTargetDesignItems(e){return e.instanceServiceContainer.selectionService.selectedElements?.filter(t=>t?.nodeType===I.Element&&!t.isRootItem)??[]}async _pasteFormat(e,t){let[i]=await e.serviceContainer.copyPasteService.getPasteItems(e.serviceContainer,e.instanceServiceContainer),r=i?.find(h=>h?.nodeType===I.Element&&h.hasStyles&&!h.isRootItem),n=r?Hp(r.styles()):null;if(!n)return;let o=Gp(n,t),a=this._getTargetDesignItems(e);if(!o.length||!a.length)return;let l=a[0].openGroup(`paste format: ${t}`),c=!1;for(let h of a)for(let d of o)h.getStyle(d.name)!==d.value&&(h.setStyle(d.name,d.value),c=!0);c?l.commit():l.abort()}}});var ps,yc=g(()=>{"use strict";bt();q();se();ps=class{shouldProvideContextmenu(e,t,i,r){return t.readOnly?!1:!i?.isRootItem&&i?.nodeType==I.Element}provideContextMenuItems(e,t,i){return[{title:"to front",icon:`<img style="rotate: 90deg" src="${w+"icons/moveFirst.svg"}">`,action:()=>{t.executeCommand({type:A.moveToFront})}},{title:"move forward",icon:`<img style="rotate: 90deg" src="${w+"icons/moveLeft.svg"}">`,action:()=>{t.executeCommand({type:A.moveForward})}},{title:"move backward",icon:`<img style="rotate: 270deg" src="${w+"icons/moveLeft.svg"}">`,action:()=>{t.executeCommand({type:A.moveBackward})}},{title:"to back",icon:`<img style="rotate: 270deg" src="${w+"icons/moveFirst.svg"}">`,action:()=>{t.executeCommand({type:A.moveToBack})}}]}}});function Wp(s,e,t=!1,i=0){for(let p of s)if(p==e||p.element.contains(e.element)){console.warn("could not move items into of itself or a child");return}let r=s[0],n=r.openGroup("switchContainerHelper"),o=r.instanceServiceContainer.designerCanvas,a=Number.MAX_VALUE,l=Number.MAX_VALUE,c=0,h=0;for(let p of s){let m=o.getNormalizedElementCoordinates(p.element);m.x<a&&(a=m.x),m.y<l&&(l=m.y),m.x+m.width>c&&(c=m.x+m.width),m.y+m.height>h&&(h=m.y+m.height)}let d=o.getNormalizedElementCoordinates(e.element);for(let p of s){let m=o.getNormalizedElementCoordinates(p.element);p.nodeType==I.Element&&(t?(p.setStyle("left",(m.x-a+i).toString()+"px"),p.setStyle("top",(m.y-l+i).toString()+"px")):(p.setStyle("left",(m.x-d.x).toString()+"px"),p.setStyle("top",(m.y-d.y).toString()+"px"))),e.insertChild(p)}t&&(e.setStyle("position","absolute"),e.setStyle("left",(a-i).toString()+"px"),e.setStyle("top",(l-i).toString()+"px"),e.setStyle("width",(c-a+2*i).toString()+"px"),e.setStyle("height",(h-l+2*i).toString()+"px")),n.commit()}var vc=g(()=>{"use strict";q()});var ms,xc=g(()=>{"use strict";vc();ne();ms=class{orderIndex=60;shouldProvideContextmenu(e,t,i,r){return i?.instanceServiceContainer.selectionService.selectedElements.length>1}provideContextMenuItems(e,t,i){return[{title:"wrap in",children:[{title:"div",action:()=>{let r=i.openGroup("wrap in Div"),n=i.instanceServiceContainer.selectionService.selectedElements,o=document.createElement("div"),a=M.createDesignItemFromInstance(o,i.serviceContainer,i.instanceServiceContainer);n[0].insertAdjacentElement(a,"beforebegin"),Wp(n,a,!0,10),r.commit(),i.instanceServiceContainer.selectionService.setSelectedElements([a])}}]}]}}});var fr,_c=g(()=>{"use strict";he();Fe();ne();ie();fr=class{cursor="progress";_rect;_initialPoint;activated(e){}pointerEventHandler(e,t,i){W(t)||t.shiftKey?this.cursor="copy":t.altKey?this.cursor="default":this.cursor="default";let r=e.getNormalizedEventCoordinates(t);switch(t.type){case C.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._initialPoint=r,this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect")),this._rect.setAttribute("class","svg-selector"),this._rect.setAttribute("x",this._initialPoint.x*e.scaleFactor),this._rect.setAttribute("y",this._initialPoint.y*e.scaleFactor),this._rect.setAttribute("width",0),this._rect.setAttribute("height",0),this._rect.style.strokeWidth=""+1/e.scaleFactor,this._rect.style.strokeDasharray=""+2/e.scaleFactor,e.overlayLayer.addOverlay(this.constructor.name,this._rect,T.Foreground);break;case C.PointerMove:if(this._initialPoint){let l=r.x-this._initialPoint.x,c=r.y-this._initialPoint.y;l>=0?(this._rect.setAttribute("x",this._initialPoint.x),this._rect.setAttribute("width",l)):(this._rect.setAttribute("x",r.x),this._rect.setAttribute("width",-1*l)),c>=0?(this._rect.setAttribute("y",this._initialPoint.y),this._rect.setAttribute("height",c)):(this._rect.setAttribute("y",r.y),this._rect.setAttribute("height",-1*c))}break;case C.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let n=e.rootDesignItem.querySelectorAll("*"),o=[];(W(t)||t.shiftKey||t.altKey)&&e.instanceServiceContainer.selectionService.selectedElements&&o.push(...e.instanceServiceContainer.selectionService.selectedElements);let a=e.overlayLayer.createPoint();for(let l of n){let c=e.getNormalizedElementCoordinates(l);a.x=c.x,a.y=c.y;let h=this._rect.isPointInFill(a);a.x=c.x+c.width,a.y=c.y;let d=h&&this._rect.isPointInFill(a);a.x=c.x,a.y=c.y+c.height;let p=d&&this._rect.isPointInFill(a);if(a.x=c.x+c.width,a.y=c.y+c.height,p&&this._rect.isPointInFill(a)){let u=M.GetOrCreateDesignItem(l,l,e.serviceContainer,e.instanceServiceContainer);if(!o.includes(u)&&!t.altKey)o.push(u);else if(t.altKey){let f=o.indexOf(u);o.splice(f,1)}}}e.overlayLayer.removeOverlay(this._rect),this._rect=null,this._initialPoint=null,e.instanceServiceContainer.selectionService.setSelectedElements(o,t),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}dispose(){}}});var us,bc=g(()=>{"use strict";he();Fe();ne();ie();us=class{cursor="progress";_pathD;_path;pointerEventHandler(e,t,i){W(t)?this.cursor="copy":t.altKey?this.cursor="default":this.cursor="default";let r=e.getNormalizedEventCoordinates(t);switch(t.type){case C.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-selector"),this._path.style.strokeWidth=""+1/e.scaleFactor,this._path.style.strokeDasharray=""+2/e.scaleFactor,this._pathD="M"+r.x+" "+r.y,this._path.setAttribute("D",this._pathD),e.overlayLayer.addOverlay(this.constructor.name,this._path,T.Foreground);break;case C.PointerMove:this._path&&(this._pathD+="L"+r.x+" "+r.y,this._path.setAttribute("d",this._pathD+"Z"));break;case C.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let n=e.rootDesignItem.querySelectorAll("*"),o=[];(W(t)||t.altKey)&&e.instanceServiceContainer.selectionService.selectedElements&&o.push(...e.instanceServiceContainer.selectionService.selectedElements);let a=e.overlayLayer.createPoint();for(let l of n){let c=e.getNormalizedElementCoordinates(l);a.x=c.x,a.y=c.y;let h=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x+c.width,a.y=c.y;let d=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x,a.y=c.y+c.height;let p=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x+c.width,a.y=c.y+c.height;let m=this._path.isPointInFill(a)||this._path.isPointInStroke(a);if(h&&d&&p&&m){let u=M.GetOrCreateDesignItem(l,l,e.serviceContainer,e.instanceServiceContainer);if(!o.includes(u)&&!t.altKey)o.push(u);else if(t.altKey){let f=o.indexOf(u);o.splice(f,1)}}}e.overlayLayer.removeOverlay(this._path),this._path=null,this._pathD=null,e.instanceServiceContainer.selectionService.setSelectedElements(o),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}activated(e){}dispose(){}}});var fs,Sc=g(()=>{"use strict";fs=class{cursor="crosshair";async activated(e){try{let r=(await new EyeDropper().open()).sRGBHex;e.globalContext.strokeColor=r}finally{e.globalContext.finishedWithTool(this)}}async pointerEventHandler(e,t,i){}keyboardEventHandler(e,t,i){}dispose(){}}});function wc(s){let e=document.getSelection();return s.getSelection?e=s.getSelection():e.getComposedRanges&&(e=e.getComposedRanges(s)),e}function jp(s,e){function t(o){let a=o.parentNode;if(!a)return;let l=document.createElement("span");e.push(l),a.insertBefore(l,o),l.appendChild(o)}function i(o){return o instanceof HTMLSpanElement&&Array.from(o.childNodes).every(a=>a.nodeType===Node.TEXT_NODE)}function r(o){switch(o.nodeType){case Node.TEXT_NODE:t(o);break;case Node.DOCUMENT_FRAGMENT_NODE:case Node.ELEMENT_NODE:if(i(o)){e.push(o);break}Array.from(o.childNodes).forEach(r);break}}let n=s.extractContents();r(n),s.insertNode(n)}function Jf(s){let e=document.createRange();return e.setStart(s.startContainer,s.startOffset),e.setEnd(s.endContainer,s.endOffset),e}function Up(s){let e=[];if("getRangeAt"in s){if(!s.rangeCount)return e;let t=s.getRangeAt(0);jp(t,e)}else{let t=s[0];if(!t)return e;jp(Jf(t),e)}return"removeAllRanges"in s&&s.removeAllRanges&&s.removeAllRanges(),e}var Cc=g(()=>{"use strict"});import{html as eg}from"@node-projects/base-custom-webcomponent";var Ti,gs=g(()=>{"use strict";re();ie();Cc();ul();le();Ti=class s extends z{static template=eg`<div style="height:100%;display:flex;gap:2px;width:100%"><button data-command="font-weight" data-command-parameter="800" style="pointer-events:auto;height:24px;width:24px;padding:0;font-weight:900">b</button> <button data-command="font-style" data-command-parameter="italic" style="pointer-events:auto;height:24px;width:24px;padding:0"><em>i</em></button> <button data-command="text-decoration" data-command-parameter="underline" style="pointer-events:auto;height:24px;width:24px;padding:0"><ins>u</ins></button> <button data-command="text-decoration" data-command-parameter="line-through" style="pointer-events:auto;height:24px;width:24px;padding:0"><del>s</del></button> <button data-command="text-decoration" data-command-parameter="overline" style="pointer-events:auto;height:24px;width:24px;padding:0"><span style="text-decoration:overline">o</span></button> <select data-command="fontSize" style="pointer-events:auto;height:24px;width:60px;padding:0"><option>8px</option><option>9px</option><option>10px</option><option>11px</option><option>12px</option><option>14px</option><option>16px</option><option>18px</option><option>20px</option><option>24px</option><option>28px</option><option>32px</option><option>36px</option></select> <select id="fontFamily" data-command="font-family" style="pointer-events:auto;height:24px;width:90px;padding:0"></select></div>`;_path;_toolbar;_selectionChangedListener;_toolbarStateAnimationFrame;constructor(e,t,i){super(e,t,i),this._keyDown=this._keyDown.bind(this),this._scheduleToolbarStateRefresh=this._scheduleToolbarStateRefresh.bind(this)}_keyDown(e){e.key==="Escape"&&this.dispose()}extend(){this.extendedItem.instanceServiceContainer.selectionService.clearSelectedElements(),this.extendedItem.removeDesignerAttributesAndStylesFromChildren(),window.addEventListener("keydown",this._keyDown,!0),this.extendedItem.editContent(),this._selectionChangedListener=this.extendedItem.instanceServiceContainer.selectionService.onSelectionChanged.on(()=>{this.commitchanges(),this.extensionManager.removeExtensionInstance(this.extendedItem,this)}),this.extendedItem.element.focus();let e=Y(this.extendedItem.element);this._toolbar=this.createToolbar(s.template,300,24),this._toolbar.updatePosition({x:(e.x-this.designerCanvas.containerBoundingRect.x)/this.designerCanvas.scaleFactor,y:(e.y-this.designerCanvas.containerBoundingRect.y)/this.designerCanvas.scaleFactor-36}),xi.addFontsToSelect(this._toolbar.getById("fontFamily")),this._toolbar.querySelectorAll("button").forEach(t=>t.onpointerdown=i=>{let r=t.dataset.command;r&&this._formatSelection(r,t.dataset.commandParameter)}),this._toolbar.querySelectorAll("select").forEach(t=>t.onchange=()=>{let i=t.dataset.command;i&&this._formatSelection(i,t.value)}),document.addEventListener("selectionchange",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("keyup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("pointerup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("input",this._scheduleToolbarStateRefresh,!0),this.designerCanvas.clickOverlay.style.pointerEvents="none",this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-edit-text-clickoutside"),this._path.setAttribute("fill-rule","evenodd"),this._path.style.pointerEvents="auto",this._path.onpointerdown=t=>{this.designerCanvas.ignoreEvent(t),this.commitchanges(),this.extensionManager.removeExtensionInstance(this.extendedItem,this)},this._addOverlay(this._path,T.Background),this.refresh(),this._refreshToolbarState()}refresh(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(this._valuesHaveChanges(this.designerCanvas.containerBoundingRect.width,this.designerCanvas.containerBoundingRect.height,this.designerCanvas.scaleFactor,e.p1.x,e.p1.y,e.p2.x,e.p2.y,e.p3.x,e.p3.y,e.p4.x,e.p4.y)){let t={width:this.designerCanvas.containerBoundingRect.width/this.designerCanvas.scaleFactor,height:this.designerCanvas.containerBoundingRect.height/this.designerCanvas.scaleFactor},i="M0 0 L"+t.width+" 0 L"+t.width+" "+t.height+" L0 "+t.height+" Z ";i+="M"+[e.p1,e.p2,e.p3,e.p4].map(r=>r.x+","+r.y).join(" ")+"Z ",this._path.setAttribute("d",i)}}dispose(){window.removeEventListener("keydown",this._keyDown,!0),document.removeEventListener("selectionchange",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("keyup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("pointerup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("input",this._scheduleToolbarStateRefresh,!0),this._toolbarStateAnimationFrame!=null&&cancelAnimationFrame(this._toolbarStateAnimationFrame),this._selectionChangedListener?.dispose(),this._removeAllOverlays(),this.extendedItem.editContentFinish(),this.designerCanvas.clickOverlay.style.pointerEvents="auto"}commitchanges(){this._removeAllOverlays(),this.extendedItem.element.normalize(),this._cleanupFormattingMarkup(this.extendedItem.element),this.extendedItem.element.normalize();let e=!1;e:for(;!e;){for(let i of this.extendedItem.element.querySelectorAll("*"))if(i.childNodes.length==0){i.remove();continue e}e=!0}this._cleanupFormattingMarkup(this.extendedItem.element),this.extendedItem.element.normalize();let t=this.extendedItem.element.innerHTML;this.extendedItem.editContentFinish(),this.extendedItem.innerHTML=t,this.designerCanvas.clickOverlay.style.pointerEvents="auto"}_cleanupFormattingMarkup(e){let t=!1;do t=this._cleanupFormattingNode(e),e.normalize();while(t)}_cleanupFormattingNode(e){let t=!1;for(let i of Array.from(e.childNodes))t=this._cleanupFormattingNode(i)||t;if(e instanceof HTMLElement&&e.localName==="span"){let i=e;if(this._isRedundantSpan(i))return this._unwrapElement(i),!0;let r=i.parentElement;if(r instanceof HTMLElement&&r.localName==="span"&&this._haveSameAttributes(r,i))return this._unwrapElement(i),!0}return this._mergeAdjacentSpans(e)||t}_mergeAdjacentSpans(e){let t=!1,i=e.firstChild;for(;i;){if(i instanceof HTMLElement&&i.localName==="span"){let r=i.nextSibling;for(;r instanceof HTMLElement&&r.localName==="span"&&this._haveSameAttributes(i,r);){for(;r.firstChild;)i.appendChild(r.firstChild);r.remove(),t=!0,r=i.nextSibling}}i=i.nextSibling}return t}_isRedundantSpan(e){return this._getAttributeSignature(e)===""}_haveSameAttributes(e,t){return this._getAttributeSignature(e)===this._getAttributeSignature(t)}_getAttributeSignature(e){return Array.from(e.attributes).filter(t=>t.name!=="style"||t.value.trim()!=="").sort((t,i)=>t.name.localeCompare(i.name)).map(t=>`${t.name}=${t.value}`).join(";")}_unwrapElement(e){let t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);e.remove()}}handlesPointerEvent(e,t,i){let r=t.composedPath(),n=this._toolbar?.querySelector("stylo-editor");return n!=null&&r.indexOf(n)>=0}_formatSelection(e,t){let i=this.designerCanvas.rootDesignItem.element.shadowRoot;if(!i)return;let r=wc(i);if(!r)return;let n=this._isFormatApplied(r,e,t),o=Up(r);if(o.length){for(let a of o)if(n){let l=this._findFormatTargets(a,e,t);if(l.length)for(let c of l)this._unsetFormat(c,e,t);else this._unsetFormat(a,e,t)}else this._setFormat(a,e,t);this.extendedItem.element.focus(),this._restoreSelection(o),this._refreshToolbarState()}}_scheduleToolbarStateRefresh(){this._toolbarStateAnimationFrame!=null&&cancelAnimationFrame(this._toolbarStateAnimationFrame),this._toolbarStateAnimationFrame=requestAnimationFrame(()=>{this._toolbarStateAnimationFrame=void 0,this._refreshToolbarState()})}_refreshToolbarState(){let e=this._getToolbarStateElement(),t=getComputedStyle(e),i=this._getTextDecorationValues(t.textDecorationLine||t.textDecoration);this._setToolbarButtonState("font-weight","800",this._isComputedFormatApplied(t,"font-weight","800")),this._setToolbarButtonState("font-style","italic",this._isComputedFormatApplied(t,"font-style","italic")),this._setToolbarButtonState("text-decoration","underline",i.includes("underline")),this._setToolbarButtonState("text-decoration","line-through",i.includes("line-through")),this._setToolbarButtonState("text-decoration","overline",i.includes("overline")),this._setToolbarSelectValue(this._getToolbarSelect("fontSize"),t.fontSize),this._setToolbarFontFamilyValue(this._getToolbarSelect("font-family"),t.fontFamily)}_getToolbarStateElement(){let e=this._getEditableSelection(),t=e?this._getFirstSelectedElement(e):null;return t&&this.extendedItem.element.contains(t)?t:this.extendedItem.element}_isComputedFormatApplied(e,t,i){switch(t){case"font-weight":{if(e.fontWeight==="bold")return!0;let r=parseFloat(e.fontWeight);return Number.isNaN(r)?!1:i?r>=parseFloat(i):r>=600}case"font-style":return e.fontStyle===i;case"text-decoration":return!!i&&this._getTextDecorationValues(e.textDecorationLine).includes(i);case"fontSize":return e.fontSize===i;case"font-family":return!!i&&this._normalizeFontFamily(e.fontFamily)===this._normalizeFontFamily(i);default:return i!=null&&e.getPropertyValue(t)===i}}_getToolbarSelect(e){return this._toolbar.querySelector(`select[data-command="${e}"]`)}_setToolbarButtonState(e,t,i){let r=this._toolbar.querySelector(`button[data-command="${e}"][data-command-parameter="${t}"]`);r&&(r.toggleAttribute("data-active",i),r.ariaPressed=String(i),r.style.backgroundColor=i?"rgb(191, 219, 254)":"",r.style.boxShadow=i?"inset 0 0 0 1px rgb(59, 130, 246)":"")}_setToolbarSelectValue(e,t){if(!e)return;this._removeTemporarySelectOptions(e);let i=Array.from(e.options).find(n=>n.value===t);if(i){e.value=i.value;return}if(!t){e.selectedIndex=-1;return}let r=document.createElement("option");r.value=t,r.text=t,r.dataset.temporaryToolbarValue="true",e.appendChild(r),e.value=t}_setToolbarFontFamilyValue(e,t){if(!e)return;let i=this._getPrimaryFontFamily(t),r=this._normalizeFontFamily(i);this._removeTemporarySelectOptions(e);let n=Array.from(e.options).find(a=>this._normalizeFontFamily(a.value)===r);if(n){e.value=n.value;return}if(!i){e.selectedIndex=-1;return}let o=document.createElement("option");o.value=i,o.text=i,o.dataset.temporaryToolbarValue="true",e.appendChild(o),e.value=i}_removeTemporarySelectOptions(e){Array.from(e.options).filter(t=>t.dataset.temporaryToolbarValue==="true").forEach(t=>t.remove())}_getPrimaryFontFamily(e){return e.replaceAll(/['"]/g,"").split(",")[0].trim()}_restoreSelection(e){let t=this._getEditableSelection();if(!t)return;let i=document.createRange();i.setStartBefore(e[0]),i.setEndAfter(e[e.length-1]),t.removeAllRanges(),t.addRange(i)}_getEditableSelection(){let e=this.designerCanvas.rootDesignItem.element.shadowRoot;if(!e)return document.getSelection();let t=wc(e);return t&&"addRange"in t&&"removeAllRanges"in t?t:document.getSelection()}_isFormatApplied(e,t,i){let r=this._getFirstSelectedElement(e);return r?this._isComputedFormatApplied(getComputedStyle(r),t,i):!1}_getFirstSelectedElement(e){let t=this._getSelectionRange(e);if(!t)return null;if(t.startContainer.nodeType===Node.TEXT_NODE)return t.startContainer.parentElement;let i=t.commonAncestorContainer.nodeType===Node.TEXT_NODE?t.commonAncestorContainer.parentNode:t.commonAncestorContainer;if(!i)return t.startContainer instanceof HTMLElement?t.startContainer:null;let r=document.createTreeWalker(i,NodeFilter.SHOW_TEXT,{acceptNode:o=>{let a=o;return a.textContent?.length&&t.intersectsNode(a)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}}),n=i.nodeType===Node.TEXT_NODE&&t.intersectsNode(i)?i:r.nextNode();return n?.parentElement?n.parentElement:t.startContainer instanceof HTMLElement?t.startContainer:t.startContainer.parentElement}_getSelectionRange(e){if("getRangeAt"in e)return e.rangeCount?e.getRangeAt(0):null;let t=e[0];if(!t)return null;let i=document.createRange();return i.setStart(t.startContainer,t.startOffset),i.setEnd(t.endContainer,t.endOffset),i}_findFormatTargets(e,t,i){let r=[],n=e;for(;n&&n!==this.extendedItem.element;)this._hasInlineFormat(n,t,i)&&r.push(n),n=n.parentElement;return r}_hasInlineFormat(e,t,i){switch(t){case"font-weight":return e.style.fontWeight!=="";case"font-style":return e.style.fontStyle!=="";case"text-decoration":return!!i&&this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration).includes(i);case"fontSize":return e.style.fontSize!=="";case"font-family":return e.style.fontFamily!=="";default:return e.style.getPropertyValue(t)!==""}}_setFormat(e,t,i){switch(t){case"font-weight":e.style.fontWeight=i??"";break;case"font-style":e.style.fontStyle=i??"";break;case"text-decoration":{let r=this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration);i&&!r.includes(i)&&r.push(i),e.style.textDecorationLine=r.join(" ");break}case"fontSize":e.style.fontSize=i??"";break;case"font-family":e.style.fontFamily=i??"";break;default:i==null?e.style.removeProperty(t):e.style.setProperty(t,i);break}}_unsetFormat(e,t,i){switch(t){case"font-weight":e.style.removeProperty("font-weight");break;case"font-style":e.style.removeProperty("font-style");break;case"text-decoration":{let r=this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration).filter(n=>n!==i);r.length?e.style.textDecorationLine=r.join(" "):(e.style.removeProperty("text-decoration-line"),e.style.removeProperty("text-decoration"));break}case"fontSize":e.style.removeProperty("font-size");break;case"font-family":e.style.removeProperty("font-family");break;default:e.style.removeProperty(t);break}}_getTextDecorationValues(e){return e?e.split(" ").map(t=>t.trim()).filter(t=>t.length>0&&t!=="none"&&t!=="solid"):[]}_normalizeFontFamily(e){return e.replaceAll(/['"]/g,"").split(",")[0].trim().toLowerCase()}}});var ys,Ec=g(()=>{"use strict";he();ne();st();gs();ys=class{_textEditExtensions;constructor(e){e&&(this._editExistingText=!0)}activated(e){this._textCreated=!1}dispose(){}cursor="text";_textCreated=!1;_editExistingText=!1;pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t);switch(t.type){case C.PointerDown:if(!this._textCreated&&!this._editExistingText){this._textCreated=!0;let n=document.createElement("span"),o=M.createDesignItemFromInstance(n,e.serviceContainer,e.instanceServiceContainer);o.setStyle("position","absolute"),o.setStyle("left",r.x+"px"),o.setStyle("top",r.y+"px"),e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,o)),e.extensionManager.applyExtensionInstance(o,new Ti(e.extensionManager,e,o)),e.serviceContainer.globalContext.finishedWithTool(this),setTimeout(()=>{n.focus()},50)}else for(let n of this._textEditExtensions)n.handlesPointerEvent&&(n.handlesPointerEvent(e,t,i)||e.serviceContainer.globalContext.finishedWithTool(this));break}}keyboardEventHandler(e,t,i){}}});var vs,Pc=g(()=>{"use strict";re();ie();vs=class extends z{_path;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){this._path||(this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-gray-out"),this._path.setAttribute("fill-rule","evenodd"),this._addOverlay(this._path,T.Background));let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0],t={width:this.designerCanvas.containerBoundingRect.width/this.designerCanvas.scaleFactor,height:this.designerCanvas.containerBoundingRect.height/this.designerCanvas.scaleFactor},i="M0 0 L"+t.width+" 0 L"+t.width+" "+t.height+" L0 "+t.height+" Z ";i+="M"+e.p1.x+" "+e.p1.y+" L"+e.p2.x+" "+e.p2.y+" L"+e.p3.x+" "+e.p3.y+" L"+e.p4.x+" "+e.p4.y+" Z",this._path.setAttribute("d",i)}dispose(){this._removeAllOverlays(),this._path=null}}});import{css as tg}from"@node-projects/base-custom-webcomponent";var xs,Ac=g(()=>{"use strict";Pc();xs=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new vs(e,t,i)}style=tg`.svg-gray-out{stroke:transparent;fill:rgba(211,211,211,.8);pointer-events:none}`}});var _s,Ic=g(()=>{"use strict";re();ie();_s=class extends z{_text;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);this._text=this._drawText("Press ALT (or hold) to enter container",e.x+5,e.y+12,"svg-text-enter-container",this._text,T.Foreground),this._text.style.fontSize=14/this.designerCanvas.scaleFactor+"px",this._text.setAttribute("x",""+(e.x+5/this.designerCanvas.scaleFactor)),this._text.setAttribute("y",""+(e.y+12/this.designerCanvas.scaleFactor))}dispose(){this._removeAllOverlays()}}});import{css as ig}from"@node-projects/base-custom-webcomponent";var bs,kc=g(()=>{"use strict";Ic();bs=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new _s(e,t,i)}static style=ig`.svg-text-enter-container{stroke:none;fill:#000;stroke-width:1;font-weight:800;font-family:monospace}`}});var Ss,Dc=g(()=>{"use strict";re();ie();Ss=class extends z{_rect;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._valuesHaveChanges(i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._rect=this._drawTransformedRect(i,"svg-invisible-div",this._rect,T.Background))}dispose(){this._removeAllOverlays()}}});import{css as rg}from"@node-projects/base-custom-webcomponent";var Tc,ws,Cs=g(()=>{"use strict";Dc();Tc="invisibleElementExtensionShowOverlay",ws=class{elementFilter;constructor(e=t=>t.name=="div"&&window.getComputedStyle(t.element).display!="inline"){this.elementFilter=e}shouldExtend(e,t,i){if(t.instanceServiceContainer.designContext.extensionOptions[Tc]!==!1&&this.elementFilter(i)){let r=window.getComputedStyle(i.element);return r.backgroundColor=="rgba(0, 0, 0, 0)"&&r.borderStyle=="none"}return!1}getExtension(e,t,i){return new Ss(e,t,i)}static style=rg`.svg-invisible-div{stroke:#d3d3d3;fill:transparent;stroke-width:1}`}});var Es,Mc=g(()=>{"use strict";ne();Es=class{shouldProvideContextmenu(e,t,i,r){return r=="designer"}provideContextMenuItems(e,t,i){let r=t.elementsFromPoint(e.x,e.y);return r.length>0?[{title:"items below",children:[...r.map(n=>({title:"select: "+n.localName+(n.id?" (#"+n.id+")":""),action:()=>this._select(t,n)}))]}]:[]}_select(e,t){let i=M.GetOrCreateDesignItem(t,t,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.selectionService.setSelectedElements([i])}}});var Ps,Nc=g(()=>{"use strict";$t();wi();le();Ps=class{_basePlacementService;constructor(e){this._basePlacementService=e??new nt}enterContainer(e,t,i){for(let r of t)e.insertChild(r),r.removeStyle("position"),r.removeStyle("left"),r.removeStyle("top"),r.removeStyle("right"),r.removeStyle("width"),r.removeStyle("height"),r.removeStyle("transform")}leaveContainer(e,t){for(let i of t)if(!i.lastContainerSize){let r=Y(i.element);i.lastContainerSize={width:r.width,height:r.height}}}serviceForContainer(e,t,i){return t.display=="grid"||t.display=="inline-grid"?!(i!=null&&i.getComputedStyle()?.position=="absolute"):!1}isEnterableContainer(e){return this._basePlacementService.isEnterableContainer(e)}canEnter(e,t){return e.instanceServiceContainer.designerCanvas.readOnly?!1:this._basePlacementService.canEnter(e,t)}canLeave(e,t){return!0}getElementOffset(e,t){return Y(e.element)}placePoint(e,t,i,r,n,o,a){return i.serviceContainer.getLastServiceWhere("containerService",c=>c instanceof nt).placePoint(e,t,i,r,n,o,a)}startPlace(e,t,i,r,n,o,a){}place(e,t,i,r,n,o,a){let l=qe(i),c=t.getNormalizedEventCoordinates(e),h=ur(i,c,l);if(h){let{row:d,column:p,cell:m}=h,u=Ai(a[0].element);m.name?(a[0].element.style.gridColumn="",a[0].element.style.gridRow="",a[0].element.style.gridArea=m.name):(a[0].element.style.gridArea="",u.colSpan<=1?(a[0].element.style.gridColumn=""+(p+1),a[0].element.style.gridRow=""+(d+1)):(a[0].element.style.gridColumnStart=""+(p+1),a[0].element.style.gridRowStart=""+(d+1),a[0].element.style.gridColumnEnd=""+(p+u.colSpan+1),a[0].element.style.gridRowEnd=""+(d+u.rowSpan+1)))}t.extensionManager.refreshAllExtensions([i])}finishPlace(e,t,i,r,n,o,a){let l=qe(i),c=t.getNormalizedEventCoordinates(e),h=ur(i,c,l);if(h){let{row:d,column:p,cell:m}=h,u=Ai(a[0].element);m.name?(a[0].setStyle("grid-area",m.name),a[0].removeStyle("grid-row-start"),a[0].removeStyle("grid-row-end"),a[0].removeStyle("grid-column-start"),a[0].removeStyle("grid-column-end"),a[0].removeStyle("grid-column"),a[0].removeStyle("grid-row"),a[0].setStyle("grid-area",m.name)):u.colSpan<=1?(a[0].removeStyle("grid-area"),a[0].removeStyle("grid-row-start"),a[0].removeStyle("grid-row-end"),a[0].removeStyle("grid-column-start"),a[0].removeStyle("grid-column-end"),a[0].setStyle("grid-column",""+(p+1)),a[0].setStyle("grid-row",""+(d+1))):(a[0].removeStyle("grid-area"),a[0].removeStyle("grid-column"),a[0].removeStyle("grid-row"),a[0].setStyle("grid-column-start",""+(p+1)),a[0].setStyle("grid-row-start",""+(d+1)),a[0].setStyle("grid-column-end",""+(p+u.colSpan+1)),a[0].setStyle("grid-row-end",""+(d+u.rowSpan+1)))}t.extensionManager.refreshAllExtensions([i])}moveElements(e,t,i){}}});var As,Lc=g(()=>{"use strict";As=class{getElementAtPoint(e,t){return e.getElementAtPoint(t)}}});var Is,Oc=g(()=>{"use strict";le();wi();Is=class{_basePlacementService;constructor(e){this._basePlacementService=e??new nt}enterContainer(e,t,i){for(let r of t)e.insertChild(r),r.removeStyle("position"),r.removeStyle("left"),r.removeStyle("top"),r.removeStyle("right"),r.removeStyle("transform")}leaveContainer(e,t){for(let i of t)if(!i.lastContainerSize){let r=Y(i.element);i.lastContainerSize={width:r.width,height:r.height}}}serviceForContainer(e,t,i){return t.display=="flex"||t.display=="inline-flex"?!(i!=null&&i.getComputedStyle()?.position=="absolute"):!1}isEnterableContainer(e){return this._basePlacementService.isEnterableContainer(e)}canEnter(e,t){return e.instanceServiceContainer.designerCanvas.readOnly?!1:this._basePlacementService.canEnter(e,t)}canLeave(e,t){return!0}getElementOffset(e,t){return Y(e.element)}placePoint(e,t,i,r,n,o,a){return i.serviceContainer.getLastServiceWhere("containerService",c=>c instanceof nt).placePoint(e,t,i,r,n,o,a)}startPlace(e,t,i,r,n,o,a){}place(e,t,i,r,n,o,a){let l=t.getNormalizedEventCoordinates(e),c=getComputedStyle(i.element),h=Array.from(i.children()).filter(d=>!d.isEmptyTextNode).map(d=>[d,t.getNormalizedElementCoordinates(d.element)]);if(c.flexDirection=="row"||c.flexDirection=="row-reverse"){h.sort(u=>u[1].x);let d=null;for(let u of h)if(u[1].x+u[1].width/2<l.x&&(d=u,c.flexDirection=="row-reverse"))break;let p=h.indexOf(d),m=h.indexOf(h.find(u=>u[0]==a[0]));if(d&&d[0]!=a[0]){if(c.flexDirection=="row-reverse"&&p-1===m||c.flexDirection=="row"&&p+1===m)return;let u=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="row-reverse"?d[0].insertAdjacentElement(a[0],"beforebegin"):d[0].insertAdjacentElement(a[0],"afterend"),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(u)}else if(d==null){if(m==0)return;let u=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="row-reverse"?i.insertChild(a[0]):i.insertChild(a[0],0),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(u)}}else if(c.flexDirection=="column"||c.flexDirection=="column-reverse"){h.sort(u=>u[1].y);let d=null;for(let u of h)if(u[1].y+u[1].height/2<l.y&&(d=u,c.flexDirection=="column-reverse"))break;let p=h.indexOf(d),m=h.indexOf(h.find(u=>u[0]==a[0]));if(d&&d[0]!=a[0]){if(c.flexDirection=="column-reverse"&&p-1===m||c.flexDirection=="column"&&p+1===m)return;let u=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="column-reverse"?d[0].insertAdjacentElement(a[0],"beforebegin"):d[0].insertAdjacentElement(a[0],"afterend"),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(u)}else if(d==null){if(m==0)return;let u=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="column-reverse"?i.insertChild(a[0]):i.insertChild(a[0],0),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(u)}}t.extensionManager.refreshAllExtensions([i])}finishPlace(e,t,i,r,n,o,a){}moveElements(e,t,i){}}});var ng,sg,ks,Vc=g(()=>{"use strict";le();ng="provideSnaplinesWithDistance",sg="provideSnaplinesWithDistanceDistance",ks=class{provideSnaplines(e,t){{let i=e.instanceServiceContainer.designerCanvas,r=new Map(t.map(u=>[u.element,u])),n=Y(e.element),o=i.instanceServiceContainer.designContext.extensionOptions[ng]!==!1,a=i.instanceServiceContainer.designContext.extensionOptions[sg]??5,l=[],c=[],h=[],d=[],p=e.document.createTreeWalker(e.usableContainer,NodeFilter.SHOW_ELEMENT),m=p.nextNode();for(;m!=null;)if(r.has(m))m=p.nextSibling();else{let u=Y(m),f=(u.x-n.x)/i.scaleFactor,y=(u.x-n.x+u.width/2)/i.scaleFactor,v=(u.x-n.x+u.width)/i.scaleFactor,b=(u.y-n.y)/i.scaleFactor,E=(u.y-n.y+u.height/2)/i.scaleFactor,S=(u.y-n.y+u.height)/i.scaleFactor,D={x:f+n.x,y:b+n.y,width:u.width/i.scaleFactor,height:u.height/i.scaleFactor};o&&l.push([f-a,D]),l.push([f,D]),c.push([y,D]),l.push([v,D]),o&&l.push([v+a,D]),o&&h.push([b-a,D]),h.push([b,D]),d.push([E,D]),h.push([S,D]),o&&h.push([S+a,D]),m=p.nextNode()}return l.push([0,{x:0,y:0,width:0,height:0}]),l.sort((u,f)=>u[0]-f[0]),c.sort((u,f)=>u[0]-f[0]),h.push([0,{x:0,y:0,width:0,height:0}]),h.sort((u,f)=>u[0]-f[0]),d.sort((u,f)=>u[0]-f[0]),{outerRect:n,positionsH:l,positionsMiddleH:c,positionsV:h,positionsMiddleV:d}}}}});var Ds,Rc=g(()=>{"use strict";ne();st();Ds=class{dragOver(e,t){return e.readOnly?"none":t.dataTransfer.items[0].type.startsWith("image/")?"copy":"none"}async drop(e,t){if(t.dataTransfer.files[0].type.startsWith("image/")){let i=await M.createDesignItemFromImageBlob(e.serviceContainer,e.instanceServiceContainer,t.dataTransfer.files[0]),r=i.openGroup("Insert of &lt;img&gt;");i.setStyle("position","absolute");let n=e.getNormalizedEventCoordinates(t);i.setStyle("top",n.y+"px"),i.setStyle("left",n.x+"px"),e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,i)),r.commit(),requestAnimationFrame(()=>e.instanceServiceContainer.selectionService.setSelectedElements([i]))}}}});import{css as og}from"@node-projects/base-custom-webcomponent";var Ts,zc=g(()=>{"use strict";gs();Ts=class{shouldExtend(e,t,i){return!(i.isRootItem||i.name==="input")}getExtension(e,t,i){return new Ti(e,t,i)}static style=og`.svg-edit-text-clickoutside{stroke:transparent;fill:#d3d3d3;opacity:.7}`}});async function P0(s){gr([["text/plain",s]])}async function gr(s){if(navigator.clipboard){try{let e=[];for(let t of s)e.push(new ClipboardItem({[t[0]]:new Blob([t[1]],{type:t[0]})}));await navigator.clipboard.write(e)}catch{await navigator.clipboard.writeText(s[0][1]),Fc=s[0][1]}console.info("Copy to clipboard successful")}else{let e=document.activeElement;for(;e?.shadowRoot?.activeElement;)e=e.shadowRoot.activeElement;Fc=s[0][1];let t=document.createElement("textarea");t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.width="2em",t.style.height="2em",t.style.padding="0",t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",t.value=s[0][1],document.body.appendChild(t),t.select();try{document.execCommand("copy")}catch{try{document.execCommand("copy")}catch(r){console.error(r)}}document.body.removeChild(t),e.focus()}}async function Ms(){return navigator.clipboard?new Promise(async(s,e)=>{let t=await navigator.clipboard.readText();s(t)}):new Promise(async(s,e)=>{let t=document.createElement("textarea");t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.width="2em",t.style.height="2em",t.style.padding="0",t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",document.body.appendChild(t),t.focus(),t.select(),document.execCommand("paste");let i=t.value;i||(i=Fc),document.body.removeChild(t),s(i)})}async function Ns(){return navigator.clipboard?await navigator.clipboard.read():null}var Fc,Ls=g(()=>{"use strict";Fc=null});var Yp,Os,Bc=g(()=>{"use strict";Ze();Ls();Pe();Yp="web text/positions",Os=class{async copyItems(e){let t=ce(e),i=Q.ConvertToString(t,!1),r=t.map(n=>n.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(n.element));gr([["text/html",i],[Yp,JSON.stringify(r)]])}async getPasteItems(e,t){let i="",r=null,n=await Ns();if(n!=null){try{i=await(await n[0].getType("text/html"))?.text()}catch{}i||(i=await(await n[0].getType("text/plain"))?.text());try{let a=await(await n[0].getType(Yp))?.text();r=JSON.parse(a)}catch{}}else i=await Ms();return[await e.htmlParserService.parse(i,e,t,!0),r??void 0]}}});var we,Hc=g(()=>{"use strict";(function(s){s[s.TOP=0]="TOP",s[s.RIGHT=1]="RIGHT",s[s.BOTTOM=2]="BOTTOM",s[s.LEFT=3]="LEFT",s[s.VERTICAL_CENTER=4]="VERTICAL_CENTER",s[s.HORIZONTAL_CENTER=5]="HORIZONTAL_CENTER"})(we||(we={}))});var St,Ot,Xp=g(()=>{"use strict";Hc();St=class{static arrangeElements(e,t,i){switch(e){case we.TOP:{let r=this.formGroup(Ot.TOP,t),o=t.getNormalizedElementCoordinates(i[0].element).y;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o-l.height;this.arrange(a,"bottom",h+"px")}else{let h=o-c.y;this.arrange(a,"top",h+"px")}}}r.commit();break}case we.BOTTOM:{let r=this.formGroup(Ot.BOTTOM,t),n=t.getNormalizedElementCoordinates(i[0].element),o=n.y+n.height;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y+l.height){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o;this.arrange(a,"bottom",h+"px")}else{let h=o-l.height-c.y;this.arrange(a,"top",h+"px")}}}r.commit();break}case we.LEFT:{let r=this.formGroup(Ot.LEFT,t),o=t.getNormalizedElementCoordinates(i[0].element).x;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o-l.width;this.arrange(a,"right",h+"px")}else{let h=o-c.x;this.arrange(a,"left",h+"px")}}}r.commit();break}case we.RIGHT:{let r=this.formGroup(Ot.RIGHT,t),n=t.getNormalizedElementCoordinates(i[0].element),o=n.x+n.width;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x+l.width){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o;this.arrange(a,"right",h+"px")}else{let h=o-l.width-c.x;this.arrange(a,"left",h+"px")}}}r.commit();break}case we.VERTICAL_CENTER:{let r=this.formGroup(Ot.VERTICAL_CENTER,t),n=t.getNormalizedElementCoordinates(i[0].element),o=n.y+n.height/2;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y+l.height/2){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o-l.height/2;this.arrange(a,"bottom",h+"px")}else{let h=o-l.height/2-c.y;this.arrange(a,"top",h+"px")}}}r.commit();break}case we.HORIZONTAL_CENTER:{let r=this.formGroup(Ot.HORIZONTAL_CENTER,t),n=t.getNormalizedElementCoordinates(i[0].element),o=n.x+n.width/2;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x+l.width/2){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o-l.width/2;this.arrange(a,"right",h+"px")}else{let h=o-l.width/2-c.x;this.arrange(a,"left",h+"px")}}}r.commit();break}}}static arrange(e,t,i){e.setStyle(t,i)}static formGroup(e,t){return t.instanceServiceContainer.selectionService.primarySelection.openGroup(e)}};(function(s){s.TOP="arrangeTop",s.RIGHT="arrangeRight",s.BOTTOM="arrangeBottom",s.LEFT="arrangeLeft",s.HORIZONTAL_CENTER="arrangeHorizontalCenter",s.VERTICAL_CENTER="arrangeVerticalCenter"})(Ot||(Ot={}))});var Vs,Gc=g(()=>{"use strict";bt();Xp();Hc();Vs=class{canExecuteCommand(e,t,i){return t.type==A.moveBackward||t.type==A.moveForward||t.type==A.moveToBack||t.type==A.moveToFront?e.instanceServiceContainer.selectionService.primarySelection!=null&&!e.instanceServiceContainer.selectionService.primarySelection.isRootItem:t.type==A.arrangeBottom||t.type==A.arrangeCenter||t.type==A.arrangeLeft||t.type==A.arrangeMiddle||t.type==A.arrangeRight||t.type==A.arrangeTop||t.type==A.unifyHeight||t.type==A.unifyWidth?e.instanceServiceContainer.selectionService.selectedElements.length>1:t.type==A.rotateCounterClockwise||t.type==A.rotateClockwise||t.type==A.mirrorHorizontal||t.type==A.mirrorVertical?e.instanceServiceContainer.selectionService.selectedElements.length>0&&!e.instanceServiceContainer.selectionService.primarySelection.isRootItem:null}async executeCommand(e,t,i){i=i??[...e.instanceServiceContainer.selectionService.selectedElements];let r=i[0];if(t.type==A.moveBackward){let o=r.parent.indexOf(r)-1;o>=0&&r.parent.insertChild(r,o)}else if(t.type==A.moveForward){let o=r.parent.indexOf(r)+1;o<r.parent.childCount&&r.parent.insertChild(r,o)}else if(t.type==A.moveToBack)r.parent.insertChild(r,0);else if(t.type==A.moveToFront)r.parent.insertChild(r);else if(t.type==A.arrangeTop)St.arrangeElements(we.TOP,e,i);else if(t.type==A.arrangeRight)St.arrangeElements(we.RIGHT,e,i);else if(t.type==A.arrangeLeft)St.arrangeElements(we.LEFT,e,i);else if(t.type==A.arrangeBottom)St.arrangeElements(we.BOTTOM,e,i);else if(t.type==A.arrangeCenter)St.arrangeElements(we.HORIZONTAL_CENTER,e,i);else if(t.type==A.arrangeMiddle)St.arrangeElements(we.VERTICAL_CENTER,e,i);else if(t.type==A.unifyHeight){let o=r.openGroup("unifyHeight"),a=r.getStyle("height");for(let l of i)l.setStyle("height",a);o.commit()}else if(t.type==A.unifyWidth){let o=r.openGroup("unifyWidth"),a=r.getStyle("width");for(let l of i)l.setStyle("width",a);o.commit()}else if(t.type==A.rotateCounterClockwise){let o=r.openGroup("rotateCounterClockwise");var n=r.getStyle("transform");let a=0,l="";if(n!=null)try{n.includes("-")?a=parseInt(n.match(/\d+/)[0])*-1:a=parseInt(n.match(/\d+/)[0]),l="rotate("+(a-90)+"deg)"}catch{l="rotate(-90deg)"}else l="rotate(-90deg)";for(let c of i)c.setStyle("transform",l);o.commit()}else if(t.type==A.rotateClockwise){let o=r.openGroup("rotateClockwise");var n=r.getStyle("transform");let l=0,c="";if(n!=null)try{n.includes("-")?l=parseInt(n.match(/\d+/)[0])*-1:l=parseInt(n.match(/\d+/)[0]),c="rotate("+(l+90)+"deg)"}catch{c="rotate(90deg)"}else c="rotate(90deg)";for(let h of i)h.setStyle("transform",c);o.commit()}else if(t.type==A.mirrorHorizontal){let o=r.openGroup("mirrorHorizontal");for(let a of i)a.setStyle("transform","scaleX(-1)");o.commit()}else if(t.type==A.mirrorVertical){let o=r.openGroup("mirrorVertical");for(let a of i)a.setStyle("transform","scaleY(-1)");o.commit()}else return null;return!0}}});var wt,Wc=g(()=>{"use strict";wt=class{_space;constructor(e){this._space=e}provideButtons(e,t){let i=document.createElement("div");return i.style.width=this._space+"px",i.oncontextmenu=r=>{r.preventDefault()},[i]}}});var Rs,jc=g(()=>{"use strict";$t();re();ie();Rs=class extends z{_cells;_texts;_gaps;_group;gridInformation;gridInformationString;_lastEvent;gridColor;gridFillColor;constructor(e,t,i,r,n){super(e,t,i),this.gridColor=r,this.gridFillColor=n}extend(e,t){this._initSVGArrays(),this.refresh(t)}refresh(e,t){this.gridInformation=qe(this.extendedItem);let i=JSON.stringify(this.gridInformation);if(i!==this.gridInformationString||t!=null&&this._lastEvent!==t){t&&(this._lastEvent=t),this.gridInformationString=i;let r=this.gridInformation.cells,n=this._lastEvent&&this._lastEvent instanceof MouseEvent?ur(this.extendedItem,this.designerCanvas.getNormalizedEventCoordinates(this._lastEvent),this.gridInformation):null;r[0][0]&&!isNaN(r[0][0].height)&&!isNaN(r[0][0].width)&&((this.gridInformation.cells.length!=this._cells.length||this.gridInformation.cells[0].length!=this._cells[0].length)&&this._initSVGArrays(),this._group||(this._group=this._drawGroup(null,this._group,T.Background),this._group.style.transformOrigin="0 0",this._group.style.setProperty("--svg-grid-stroke-color",this.gridColor),this._group.style.setProperty("--svg-grid-fill-color",this.gridFillColor)),this._group.style.transform=Ii(this.extendedItem).toString(),this.gridInformation.gaps.forEach((o,a)=>{this._gaps[a]=this._drawRect(o.localX,o.localY,o.width,o.height,"svg-grid-gap",this._gaps[a],T.Background),this._group.appendChild(this._gaps[a])}),r.forEach((o,a)=>{o.forEach((l,c)=>{this._cells[a][c]=this._drawRect(l.localX,l.localY,l.width,l.height,"svg-grid",this._cells[a][c],T.Background),this._group.appendChild(this._cells[a][c]),l.name&&(this._texts[a][c]=this._drawText(l.name,l.localX,l.localY,"svg-grid-area",this._texts[a][c],T.Background),this._texts[a][c].setAttribute("dominant-baseline","hanging")),n?.row===a&&n?.column===c&&this._cells[a][c].setAttribute("class","svg-grid-current-cell")})}))}}dispose(){this._removeAllOverlays()}_initSVGArrays(){this._removeAllOverlays(),this._group=null,this.gridInformation=qe(this.extendedItem),this._cells=new Array(this.gridInformation.cells.length),this.gridInformation.cells.forEach((e,t)=>this._cells[t]=new Array(e.length)),this._texts=new Array(this.gridInformation.cells.length),this.gridInformation.cells.forEach((e,t)=>this._texts[t]=new Array(e.length)),this._gaps=new Array(this.gridInformation.gaps.length)}}});import{css as ag}from"@node-projects/base-custom-webcomponent";var yr,Zt,vr=g(()=>{"use strict";jc();pr();yr="gridExtensionShowOverlay",Zt=class{gridColor;gridFillColor;constructor(e="orange",t="#ff944722"){this.gridColor=e,this.gridFillColor=t}shouldExtend(e,t,i){let r=getComputedStyle(i.element).display;return r=="grid"||r=="inline-grid"?t.instanceServiceContainer.designContext.extensionOptions[yr]!==!1:!1}getExtension(e,t,i){return new Rs(e,t,i,this.gridColor,this.gridFillColor)}static style=ag`.svg-grid{stroke:var(--svg-grid-stroke-color);stroke-dasharray:5;fill:var(--svg-grid-fill-color)}.svg-grid-current-cell{stroke:var(--svg-grid-stroke-color);stroke-dasharray:5;fill:#e3ff4722}.svg-grid-area{font-size:8px}.svg-grid-gap{stroke:transparent;fill:var(--svg-grid-stroke-color);opacity:.3;mask:url(#mask-stripe-grid)}.svg-grid-header{fill:var(--svg-grid-fill-color);stroke:var(--svg-grid-stroke-color)}.svg-grid-plus-sign{stroke:#000}`;static svgDefs=Pi`<pattern id="pattern-stripe-grid" width="4" height="4" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1" height="4" transform="translate(0,0)" fill="white"></rect></pattern><mask id="mask-stripe-grid"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-grid)"></mask>`}});var zs,Uc=g(()=>{"use strict";vr();Wt();zs=class extends We{constructor(){super(yr,"G","show grid overlay")}}});var Fs,Yc=g(()=>{"use strict";he();ie();Qe();ne();st();Fe();Fs=class{cursor="crosshair";_path;_startPoint;_minX;_minY;_maxX;_maxY;_px;_py;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t),n=10;switch(t.type){case C.PointerDown:this._startPoint=r,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("x",r.x.toString()),this._path.setAttribute("y",r.y.toString()),this._path.setAttribute("width","0"),this._path.setAttribute("height","0"),e.overlayLayer.addOverlay(this.constructor.name,this._path,T.Foreground);break;case C.PointerMove:if(this._path)if(this._minX=r.x<this._startPoint.x?r.x:this._startPoint.x,this._maxX=r.x>this._startPoint.x?r.x:this._startPoint.x,this._minY=r.y<this._startPoint.y?r.y:this._startPoint.y,this._maxY=r.y>this._startPoint.y?r.y:this._startPoint.y,W(t)){if(t.shiftKey){let d=2*bi(this._startPoint,r);this._px=this._startPoint.x-d/2,this._py=this._startPoint.y-d/2,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",d.toString())}else{let d=2*(this._maxX-this._minX),p=2*(this._maxY-this._minY);this._px=r.x<this._startPoint.x?r.x:this._startPoint.x-d/2,this._py=r.y<this._startPoint.y?r.y:this._startPoint.y-p/2,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",p.toString())}this._path.setAttribute("x",this._px.toString()),this._path.setAttribute("y",this._py.toString())}else{if(t.shiftKey){let d=bi(this._startPoint,r);this._px=r.x<this._startPoint.x?this._startPoint.x-d:this._startPoint.x,this._py=r.y<this._startPoint.y?this._startPoint.y-d:this._startPoint.y,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",d.toString())}else this._px=r.x<this._startPoint.x?r.x:this._startPoint.x,this._py=r.y<this._startPoint.y?r.y:this._startPoint.y,this._path.setAttribute("width",(this._maxX-this._minX).toString()),this._path.setAttribute("height",(this._maxY-this._minY).toString());this._path.setAttribute("x",this._px.toString()),this._path.setAttribute("y",this._py.toString())}break;case C.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-n,c=o.y-n;this._path.setAttribute("x",(this._px-l).toString()),this._path.setAttribute("y",(this._py-c).toString()),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.appendChild(this._path),a.style.left=l+"px",a.style.top=c+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*n)+"px",a.style.height=Math.round(o.height+2*n)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let h=M.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,h)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var Bs,Xc=g(()=>{"use strict";he();ie();Qe();ne();st();Fe();Bs=class{cursor="crosshair";_path;_startPoint;_radius;_cx;_cy;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t),n=10;switch(t.type){case C.PointerDown:this._startPoint=r,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","ellipse"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("cx",r.x.toString()),this._path.setAttribute("cy",r.y.toString()),this._path.setAttribute("rx","0"),this._path.setAttribute("ry","0"),e.overlayLayer.addOverlay(this.constructor.name,this._path,T.Foreground);break;case C.PointerMove:if(this._path)if(this._radius={x:Math.abs(r.x-this._startPoint.x),y:Math.abs(r.y-this._startPoint.y)},W(t))if(this._path.setAttribute("cx",this._startPoint.x.toString()),this._path.setAttribute("cy",this._startPoint.y.toString()),this._cx=this._startPoint.x,this._cy=this._startPoint.y,t.shiftKey){let d=bi(this._startPoint,r);this._path.setAttribute("rx",d.toString()),this._path.setAttribute("ry",d.toString())}else this._path.setAttribute("rx",this._radius.x.toString()),this._path.setAttribute("ry",this._radius.y.toString());else{if(t.shiftKey){let d=bi(this._startPoint,r);this._radius={x:d,y:d}}this._cx=r.x<this._startPoint.x?this._startPoint.x-this._radius.x/2:this._startPoint.x+this._radius.x/2,this._cy=r.y<this._startPoint.y?this._startPoint.y-this._radius.y/2:this._startPoint.y+this._radius.y/2,this._path.setAttribute("cx",this._cx.toString()),this._path.setAttribute("cy",this._cy.toString()),this._path.setAttribute("rx",(this._radius.x/2).toString()),this._path.setAttribute("ry",(this._radius.y/2).toString())}break;case C.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-n,c=o.y-n;a.appendChild(this._path),this._path.setAttribute("cx",(this._cx-l).toString()),this._path.setAttribute("cy",(this._cy-c).toString()),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.style.left=l+"px",a.style.top=c+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*n)+"px",a.style.height=Math.round(o.height+2*n)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let h=M.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,h)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var Hs,Kc=g(()=>{"use strict";he();ie();Qe();ne();st();Hs=class{cursor="crosshair";_path;_startPoint;_endPoint;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let r=e.getNormalizedEventCoordinates(t),n=10;switch(t.type){case C.PointerDown:this._startPoint=r,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","line"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("x1",r.x.toString()),this._path.setAttribute("y1",r.y.toString()),this._path.setAttribute("x2",r.x.toString()),this._path.setAttribute("y2",r.y.toString()),e.overlayLayer.addOverlay(this.constructor.name,this._path,T.Foreground);break;case C.PointerMove:if(this._path)if(t.shiftKey){let d=ft(this._startPoint,r);this._path.setAttribute("x2",d.x.toString()),this._path.setAttribute("y2",d.y.toString()),this._endPoint=d}else this._path.setAttribute("x2",r.x.toString()),this._path.setAttribute("y2",r.y.toString()),this._endPoint=r;break;case C.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-n,c=o.y-n;this._path.setAttribute("x1",(this._startPoint.x-l).toString()),this._path.setAttribute("y1",(this._startPoint.y-c).toString()),this._path.setAttribute("x2",(this._endPoint.x-l).toString()),this._path.setAttribute("y2",(this._endPoint.y-c).toString()),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.appendChild(this._path),a.style.left=l+"px",a.style.top=c+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*n)+"px",a.style.height=Math.round(o.height+2*n)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let h=M.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new ve(e.rootDesignItem,e.rootDesignItem.childCount,h)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var Mi,Gs=g(()=>{"use strict";Mi=class s{static _helperElement=document.createElement("div");static combine(e,t){if(s.applyStylesToHelper(e),s.combineBorder(e),s.combineMargin(e),s.combinePadding(e),s.combineInset(e),s.combineBackground(e),s.combineFont(e),e=s.combineBrowserSupportedShorthands(e),t)for(let i of t)e.has(i[0])&&e.get(i[0])===i[1]&&e.delete(i[0]);return e}static applyStylesToHelper(e){let t=s._helperElement;t.setAttribute("style","");for(let i of e)i[0].startsWith("--")||i[0].includes("-")?t.style.setProperty(i[0],i[1]):t.style[i[0]]=i[1];return t}static combineBrowserSupportedShorthands(e){let t=s.getNormalizedStyleValues(e),i=new Map(e);for(;;){let r=s.parseStyleDeclarationList(s.applyStylesToHelper(i).style.cssText),n=null,o=0;for(let a of r){let l=s.getCandidateCoverage(i,t,a[0],a[1]);if(l.length===0)continue;let c=new Map(i);for(let d of l)c.delete(d);c.set(a[0],a[1]);let h=s.getSerializedSize(i)-s.getSerializedSize(c);h<=0||s.matchesNormalizedStyleValues(c,t)&&h>o&&(o=h,n=c)}if(!n)return i;i=n}}static getNormalizedStyleValues(e){let t=s.applyStylesToHelper(e),i=new Map;for(let r of e)i.set(r[0],s.readStyleValue(t.style,r[0]));return i}static getCandidateCoverage(e,t,i,r){let n=s.applyStylesToHelper(new Map([[i,r]])),o=[];for(let a of e){let l=t.get(a[0]);l&&s.readStyleValue(n.style,a[0])===l&&o.push(a[0])}return o}static matchesNormalizedStyleValues(e,t){let i=s.applyStylesToHelper(e);for(let r of t)if(s.readStyleValue(i.style,r[0])!==r[1])return!1;return!0}static readStyleValue(e,t){return t.startsWith("--")||t.includes("-")?e.getPropertyValue(t).trim():String(e[t]??"").trim()}static getSerializedSize(e){let t=0;for(let i of e)t+=i[0].length+i[1].length+2;return t}static parseStyleDeclarationList(e){let t=new Map,i=0,r=null,n=0;for(let o=0;o<e.length;o++){let a=e[o];if(r){a===r&&e[o-1]!=="\\"&&(r=null);continue}if(a==='"'||a==="'"){r=a;continue}if(a==="("){n++;continue}if(a===")"&&n>0){n--;continue}a===";"&&n===0&&(s.addStyleDeclaration(t,e.substring(i,o)),i=o+1)}return s.addStyleDeclaration(t,e.substring(i)),t}static addStyleDeclaration(e,t){let i=t.trim();if(!i)return;let r=null,n=0;for(let o=0;o<i.length;o++){let a=i[o];if(r){a===r&&i[o-1]!=="\\"&&(r=null);continue}if(a==='"'||a==="'"){r=a;continue}if(a==="("){n++;continue}if(a===")"&&n>0){n--;continue}if(a===":"&&n===0){let l=i.substring(0,o).trim(),c=i.substring(o+1).trim();l&&e.set(l,c);return}}}static combineBorder(e){if(!s.checkIfStyleIsCombinable(e,"border-left-style")||!s.checkIfStyleIsCombinable(e,"border-right-style")||!s.checkIfStyleIsCombinable(e,"border-top-style")||!s.checkIfStyleIsCombinable(e,"border-bottom-style")||!s.checkIfStyleIsCombinable(e,"border-left-color")||!s.checkIfStyleIsCombinable(e,"border-right-color")||!s.checkIfStyleIsCombinable(e,"border-top-color")||!s.checkIfStyleIsCombinable(e,"border-bottom-color")||!s.checkIfStyleIsCombinable(e,"border-left-width")||!s.checkIfStyleIsCombinable(e,"border-right-width")||!s.checkIfStyleIsCombinable(e,"border-top-width")||!s.checkIfStyleIsCombinable(e,"border-bottom-width")||!s.checkIfStyleIsCombinable(e,"border-width")||!s.checkIfStyleIsCombinable(e,"border-style")||!s.checkIfStyleIsCombinable(e,"border-color")||!s.checkIfStyleIsCombinable(e,"border-top")||!s.checkIfStyleIsCombinable(e,"border-right")||!s.checkIfStyleIsCombinable(e,"border-left")||!s.checkIfStyleIsCombinable(e,"border-bottom")||!s.checkIfStyleIsCombinable(e,"border-width"))return;let t=s._helperElement,i=t.style.borderLeftStyle,r=t.style.borderLeftColor;if(i&&r&&t.style.borderRightStyle===i&&t.style.borderTopStyle===i&&t.style.borderBottomStyle===i&&t.style.borderRightColor===r&&t.style.borderTopColor===r&&t.style.borderBottomColor===r){let n=t.style.borderTopWidth,o=t.style.borderRightWidth,a=t.style.borderBottomWidth,l=t.style.borderLeftWidth;e.delete("border-left-style"),e.delete("border-right-style"),e.delete("border-top-style"),e.delete("border-bottom-style"),e.delete("border-left-color"),e.delete("border-right-color"),e.delete("border-top-color"),e.delete("border-bottom-color"),e.delete("border-left-width"),e.delete("border-right-width"),e.delete("border-top-width"),e.delete("border-bottom-width"),e.delete("border-width"),e.delete("border-style"),e.delete("border-color"),e.delete("border-top"),e.delete("border-right"),e.delete("border-left"),e.delete("border-bottom"),t.style.borderRightWidth==l&&t.style.borderTopWidth===l&&t.style.borderBottomWidth===l?e.set("border",l+" "+i+" "+r):(e.set("border",i+" "+r),n===a&&o===l?e.set("border-width",n+" "+o):e.set("border-width",n+" "+o+" "+a+" "+l))}t.style.borderImageSource==="initial"&&e.delete("border-image-source"),t.style.borderImageSlice==="initial"&&e.delete("border-image-slice"),t.style.borderImageWidth==="initial"&&e.delete("border-image-width"),t.style.borderImageOutset==="initial"&&e.delete("border-image-outset"),t.style.borderImageRepeat==="initial"&&e.delete("border-image-repeat")}static combineMargin(e){if(!s.checkIfStyleIsCombinable(e,"margin-top")||!s.checkIfStyleIsCombinable(e,"margin-right")||!s.checkIfStyleIsCombinable(e,"margin-bottom")||!s.checkIfStyleIsCombinable(e,"margin-left")||!s.checkIfStyleIsCombinable(e,"margin"))return;let t=s._helperElement;t.style.marginTop&&t.style.marginRight&&t.style.marginBottom&&t.style.marginLeft&&(e.delete("margin-top"),e.delete("margin-right"),e.delete("margin-bottom"),e.delete("margin-left"),t.style.marginTop==t.style.marginRight&&t.style.marginTop==t.style.marginBottom&&t.style.marginTop==t.style.marginLeft?e.set("margin",t.style.marginTop):e.set("margin",t.style.marginTop+" "+t.style.marginRight+" "+t.style.marginBottom+" "+t.style.marginLeft))}static combinePadding(e){if(!s.checkIfStyleIsCombinable(e,"padding-top")||!s.checkIfStyleIsCombinable(e,"padding-right")||!s.checkIfStyleIsCombinable(e,"padding-bottom")||!s.checkIfStyleIsCombinable(e,"padding-left")||!s.checkIfStyleIsCombinable(e,"padding"))return;let t=s._helperElement;t.style.paddingTop&&t.style.paddingRight&&t.style.paddingBottom&&t.style.paddingLeft&&(e.delete("padding-top"),e.delete("padding-right"),e.delete("padding-bottom"),e.delete("padding-left"),t.style.paddingTop==t.style.paddingRight&&t.style.paddingTop==t.style.paddingBottom&&t.style.paddingTop==t.style.paddingLeft?e.set("padding",t.style.paddingTop):e.set("padding",t.style.paddingTop+" "+t.style.paddingRight+" "+t.style.paddingBottom+" "+t.style.paddingLeft))}static combineInset(e){if(!s.checkIfStyleIsCombinable(e,"top")||!s.checkIfStyleIsCombinable(e,"right")||!s.checkIfStyleIsCombinable(e,"bottom")||!s.checkIfStyleIsCombinable(e,"left")||!s.checkIfStyleIsCombinable(e,"inset"))return;let t=s._helperElement;t.style.top&&t.style.right&&t.style.bottom&&t.style.left&&(e.delete("top"),e.delete("right"),e.delete("bottom"),e.delete("left"),e.set("inset",t.style.top+" "+t.style.right+" "+t.style.bottom+" "+t.style.left))}static combineBackground(e){if(!s.checkIfStyleIsCombinable(e,"background-image")||!s.checkIfStyleIsCombinable(e,"background-position")||!s.checkIfStyleIsCombinable(e,"background-position-x")||!s.checkIfStyleIsCombinable(e,"background-position-y")||!s.checkIfStyleIsCombinable(e,"background-size")||!s.checkIfStyleIsCombinable(e,"background-repeat")||!s.checkIfStyleIsCombinable(e,"background-repeat-x")||!s.checkIfStyleIsCombinable(e,"background-repeat-y")||!s.checkIfStyleIsCombinable(e,"background-attachment")||!s.checkIfStyleIsCombinable(e,"background-origin")||!s.checkIfStyleIsCombinable(e,"background-clip")||!s.checkIfStyleIsCombinable(e,"background-color")||!s.checkIfStyleIsCombinable(e,"background"))return;let t=s._helperElement;e.delete("background-image"),e.delete("background-position"),e.delete("background-position-x"),e.delete("background-position-y"),e.delete("background-size"),e.delete("background-repeat"),e.delete("background-repeat-x"),e.delete("background-repeat-y"),e.delete("background-attachment"),e.delete("background-origin"),e.delete("background-clip"),e.delete("background-color"),e.delete("background");let i="";t.style.backgroundImage&&t.style.backgroundImage!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundImage),t.style.backgroundPosition&&t.style.backgroundPosition!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundPosition),t.style.backgroundSize&&t.style.backgroundSize!=="initial"&&(i+=(i===""?"":" / ")+t.style.backgroundSize),t.style.backgroundRepeat&&t.style.backgroundRepeat!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundRepeat),t.style.backgroundAttachment&&t.style.backgroundAttachment!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundAttachment),t.style.backgroundOrigin&&t.style.backgroundOrigin!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundOrigin),t.style.backgroundClip&&t.style.backgroundClip!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundClip),t.style.backgroundColor&&t.style.backgroundColor!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundColor),i&&e.set("background",i)}static combineFont(e){if(!s.checkIfStyleIsCombinable(e,"font-style")||!s.checkIfStyleIsCombinable(e,"font-weight")||!s.checkIfStyleIsCombinable(e,"font-size")||!s.checkIfStyleIsCombinable(e,"line-height")||!s.checkIfStyleIsCombinable(e,"font-family")||!s.checkIfStyleIsCombinable(e,"font"))return;let t=s._helperElement;if(t.style.fontFamily){e.delete("font-style"),e.delete("font-weight"),e.delete("font-size"),e.delete("line-height"),e.delete("font-family"),e.delete("font");let i="";t.style.fontStyle&&(i+=(i===""?"":" ")+t.style.fontStyle),t.style.fontWeight&&(i+=(i===""?"":" ")+t.style.fontWeight),t.style.fontSize&&(i+=(i===""?"":" ")+t.style.fontSize),t.style.lineHeight&&(i+="/"+t.style.lineHeight),t.style.fontFamily&&(i+=(i===""?"":" ")+t.style.fontFamily),e.set("font",i)}}static checkIfStyleIsCombinable(e,t){if(e.has(t)){let i=e.get(t);return typeof i=="string"?!i.startsWith("var("):!1}return!0}}});var Ws,$c=g(()=>{"use strict";Ze();Gs();_e();Ws=class{options;constructor(e){this.options=e??{},this.options.beautifyOutput??=!0,this.options.compressCssToShorthandProperties??=!0,this.options.writeDesignerProperties??=!0,this.options.parseJsonInAttributes??=!0,this.options.jsonWriteMode??="min"}writeAttributes(e,t){if(t.hasAttributes)for(let i of t.attributes())if(e.write(" "),typeof i[1]=="string")if(i[1]==="")e.write(i[0]);else{if(this.options.parseJsonInAttributes&&(i[1].startsWith("{")&&!i[1].startsWith("{{")&&i[1].endsWith("}")||i[1].startsWith("[")&&!i[1].startsWith("[[")&&i[1].endsWith("]")))try{let n=JSON.parse(i[1]),o;this.options.jsonWriteMode=="beauty"?o=JSON.stringify(n,null,2):o=JSON.stringify(n),e.write(i[0]+"='"+Q.normalizeAttributeValue(o,!0)+"'");continue}catch{}let r=Q.normalizeAttributeValue(i[1]);if(r.indexOf("&quot;")){let n=Q.normalizeAttributeValue(i[1],!0);n.length<r.length?e.write(i[0]+"='"+n+"'"):e.write(i[0]+'="'+r+'"')}else e.write(i[0]+'="'+r+'"')}else i[1]||e.write(i[0])}writeStyles(e,t){if(t.hasStyles){e.write(' style="');let i=t.styles();this.options.compressCssToShorthandProperties&&(i=Mi.combine(new Map(i)));for(let r of i)r[0]&&(r[0].startsWith("--")?e.write(r[0]+":"+Q.normalizeAttributeValue(r[1])+";"):e.write(R.camelToDashCase(r[0])+":"+Q.normalizeAttributeValue(r[1])+";"));e.write('"')}}}});var js,Zc=g(()=>{"use strict";Ze();q();le();$c();js=class extends Ws{constructor(e){super(e)}_conditionalyWriteIndent(e,t,i){i||(t.element instanceof t.window.HTMLElement&&!Ht(t.element)||t.element.previousElementSibling instanceof t.window.HTMLElement&&!kt(t.element.previousElementSibling)||t.element.previousElementSibling==null&&!this._isInlineElement(t.element.parentElement)&&(t.element.previousSibling==null||Gr(t.element.previousSibling))||t.element instanceof t.window.SVGElement)&&e.writeIndent()}_conditionalyWriteIndentBefore(e,t,i){i||(t.element.previousElementSibling instanceof t.window.HTMLElement&&!kt(t.element.previousElementSibling)||t.element.previousElementSibling==null&&!this._isInlineElement(t.element.parentElement)&&(t.element.previousSibling==null||Gr(t.element.previousSibling))||t.element instanceof t.window.SVGElement)&&e.writeIndent()}_conditionalyWriteNewline(e,t,i){i||(t.element instanceof t.window.HTMLElement&&!Ht(t.element)||t.element.nextElementSibling instanceof t.window.HTMLElement&&!kt(t.element.nextElementSibling)||t.element instanceof t.window.SVGElement)&&e.writeNewline()}write(e,t,i,r=!1){for(let n of t)this.internalWrite(e,n,r,!1)}internalWrite(e,t,i,r){let n=e.position,o=e.position,a=r||this._isInlineContainer(t);if(t.nodeType==I.TextNode)Gr(t.element)&&(t.element.previousSibling instanceof t.window.HTMLElement&&!Ht(t.element.previousSibling)||t.element.nextSibling instanceof t.window.HTMLElement&&!kt(t.element.nextSibling))||this.writeTextNode(e,t,!0,!0,a),o=e.position;else if(t.nodeType==I.Comment)this._conditionalyWriteIndent(e,t,a),n=e.position,e.write("<!--"+t.content+"-->"),o=e.position,this._conditionalyWriteNewline(e,t,a);else{this._conditionalyWriteIndentBefore(e,t,a),n=e.position,e.write("<"+t.name),this.writeAttributes(e,t),this.writeStyles(e,t),e.write(">");let l=!1;if(t.hasChildren){let c=t.children();if(l=t.childCount===1&&t.firstChild.nodeType===I.TextNode,l){let h=t.name=="script"||t.name=="style"||t.name=="pre";this.writeTextNode(e,t,!1,!h,a)}else{!a&&(t.element instanceof t.window.HTMLElement&&!Ht(t.element)||t.element instanceof t.window.SVGElement)&&(e.writeNewline(),e.levelRaise());for(let h of c)this.internalWrite(e,h,i,a),h.childCount===1&&h.firstChild.nodeType===I.TextNode&&(e.isLastCharNewline()||this._conditionalyWriteNewline(e,h,a));!a&&(t.element instanceof t.window.HTMLElement&&!Ht(t.element)||t.element instanceof t.window.SVGElement)&&(e.levelShrink(),e.isLastCharNewline()||e.writeNewline(),e.writeIndent())}}else t.hasContent&&e.write(Q.normalizeContentValue(t.content));o=e.position,Q.IsSelfClosingElement(t.name)||e.write("</"+t.name+">"),o=e.position,!a&&!e.isLastCharNewline()&&(!t.parent||!Ht(t.parent.element))&&this._conditionalyWriteNewline(e,t,a)}i&&t.instanceServiceContainer.designItemDocumentPositionService&&t.instanceServiceContainer.designItemDocumentPositionService.setPosition(t,{start:n,length:o-n})}writeTextNode(e,t,i,r=!0,n=!1){let o=e.position,a=e.position,l=Q.normalizeContentValue(t.content);n||this._hasInlineParent(t)?l=this._normalizeInlineTextContent(l):r&&(l=l.trim()),l&&(i&&this._conditionalyWriteIndent(e,t,n),e.write(l),i&&this._conditionalyWriteNewline(e,t,n)),a=e.position;for(let c of t.children())t.instanceServiceContainer.designItemDocumentPositionService.setPosition(c,{start:o,length:a-o})}_hasInlineParent(e){return e.parent?.element instanceof e.window.HTMLElement&&kt(e.parent.element)}_normalizeInlineTextContent(e){if(!e?.trim())return"";let t=/^\s/.test(e),i=/\s$/.test(e),r=e.replaceAll(/[\t\r\n ]+/g," ").trim();return`${t?" ":""}${r}${i?" ":""}`}_isInlineContainer(e){return e.nodeType===I.Element&&e.element instanceof e.window.HTMLElement&&kt(e.element)}_isInlineElement(e){return e instanceof HTMLElement&&kt(e)}}});var Us,Qc=g(()=>{"use strict";ne();st();Us=class{shouldProvideContextmenu(e,t,i,r){return i?.element instanceof SVGRectElement}provideContextMenuItems(e,t,i){return[{title:"convert to path",action:()=>{let r=i.element,n="";n+="M"+r.x.baseVal.value+" "+r.y.baseVal.value+"L"+(r.x.baseVal.value+r.width.baseVal.value)+" "+r.y.baseVal.value+"L"+(r.x.baseVal.value+r.width.baseVal.value)+" "+(r.y.baseVal.value+r.height.baseVal.value)+"L"+r.x.baseVal.value+" "+(r.y.baseVal.value+r.height.baseVal.value)+"Z";let o=document.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d",n),o.setAttribute("stroke",r.getAttribute("stroke")),o.setAttribute("fill",r.getAttribute("fill")),o.setAttribute("stroke-width",r.getAttribute("stroke-width"));let a=M.createDesignItemFromInstance(o,t.serviceContainer,t.instanceServiceContainer);t.instanceServiceContainer.undoService.execute(new ve(i.parent,i.childCount,a)),t.serviceContainer.deletionService.removeItems([i])}}]}}});var Ys,qc=g(()=>{"use strict";Qe();Ys=class{shouldProvideContextmenu(e,t,i,r){return i?.element instanceof SVGPathElement}provideContextMenuItems(e,t,i){let r=i.node.getPathData({normalize:!0}),n=[],o=r[r.length-1].type;return n.push({title:"-"}),o=="z"||o=="Z"?n.push({title:"open path ",action:()=>{r.splice(r.length-1,1),i.setAttribute("d",ar(r))}}):n.push({title:"close path ",action:()=>{r.push({type:"Z"}),i.setAttribute("d",ar(r))}}),n}}});var Ie,Xs=g(()=>{"use strict";Ie=class{shouldProvideContextmenu(e,t,i,r){return!0}provideContextMenuItems(e,t,i){return[{title:"-"}]}}});var Ks,$s,Jc=g(()=>{"use strict";se();Ks=10,$s=class{shouldProvideContextmenu(e,t,i,r){return i!==null}provideContextMenuItems(e,t,i){return[{title:"zoom to",icon:`<img src="${w+"icons/zoomIn.svg"}">`,action:()=>{let r=t.getNormalizedElementCoordinates(i.element),n={x:r.x-Ks,y:r.y-Ks},o={x:r.x+r.width+Ks,y:r.y+r.height+Ks},a={x:n.x<o.x?n.x:o.x,y:n.y<o.y?n.y:o.y,width:Math.abs(n.x-o.x),height:Math.abs(n.y-o.y)},l=t.outerRect.width/a.width,c=t.outerRect.height/a.height,h=l>=c?c:l;t.zoomPoint({x:r.x+r.width/2,y:r.y+r.height/2},h)}}]}}});var Zs,eh=g(()=>{"use strict";bt();q();se();Zs=class{shouldProvideContextmenu(e,t,i,r){return t.readOnly?!1:!i?.isRootItem&&i?.nodeType==I.Element}provideContextMenuItems(e,t,i){return[{title:"rotate right",icon:`<img src="${w+"icons/rotateRight.svg"}">`,action:()=>{t.executeCommand({type:A.rotateClockwise})},shortCut:"Ctrl + R"},{title:"rotate left",icon:`<img src="${w+"icons/rotateLeft.svg"}">`,action:()=>{t.executeCommand({type:A.rotateCounterClockwise})},shortCut:"Ctrl + Shift + R"}]}}});var Qs,th=g(()=>{"use strict";q();Qs=class{shouldProvideContextmenu(e,t,i,r){return i?.hasChildren}provideContextMenuItems(e,t,i){return[{title:"select all Children",action:()=>{t.instanceServiceContainer.selectionService.setSelectedElements(Array.from(i.children()).filter(r=>r.nodeType==I.Element))}}]}}});import{BaseCustomWebComponentConstructorAppend as lg,css as cg,html as hg}from"@node-projects/base-custom-webcomponent";var ge,ot=g(()=>{"use strict";ge=class extends lg{static style=cg`div{width:24px;height:24px;display:flex;justify-content:center;align-items:center;background-color:inherit}div:hover{background-color:#a9a9a9}img{width:calc(100% - 4px);height:calc(100% - 4px);-webkit-user-drag:none}`;static template=hg`<div id="div"><img id="img"></div>`;tools;popup;currentToolOnButton;_img;_div;_longPress;constructor(e,t){super(),this.tools=t,this._img=this._getDomElement("img"),this._div=this._getDomElement("div"),this._div.onpointerdown=()=>{this.currentToolOnButton?(this.getRootNode().host.setTool(this.currentToolOnButton),setTimeout(()=>{e.clickOverlay.focus()},50),this.popup&&(this._longPress=setTimeout(()=>{this._longPress=null,this.getRootNode().host.showPopup(this)},200))):this.popup&&this.getRootNode().host.showPopup(this)},this._div.onpointerup=()=>{this._longPress&&(clearTimeout(this._longPress),this._longPress=null)},this.showTool(Object.getOwnPropertyNames(t)[0])}showTool(e){let t=this.tools[e];t&&(this._img.title=e,this._img.src=t.icon,this.currentToolOnButton=e)}setActiveTool(e){this.showTool(e),this.tools[e]?this._div.style.backgroundColor="lightgreen":this._div.style.backgroundColor=""}};customElements.define("node-projects-designer-toolbar-button",ge)});import{BaseCustomWebComponentConstructorAppend as dg,css as pg}from"@node-projects/base-custom-webcomponent";var Vt,xr=g(()=>{"use strict";Vt=class extends dg{static style=pg`.container{width:120px;min-height:100px;color:#fff;background-color:#404040;border:1px solid #000}header{text-align:center}.tool{height:32px;width:32px;background-color:#fff;background-size:65%;background-repeat:no-repeat;background-position:center center;flex-shrink:0;border-bottom:1px solid #000}.tools{display:flex;flex-wrap:wrap;margin-bottom:5px;gap:3px}`;constructor(){super();for(let e of[...this.shadowRoot.querySelectorAll("div.tool")]){let t=e;t.onclick=()=>this.getRootNode().host.setTool(t.dataset.commandParameter)}}}});import{html as mg}from"@node-projects/base-custom-webcomponent";var _r,ih=g(()=>{"use strict";se();xr();_r=class extends Vt{static template=mg`<div class="container"><header><h2 id="title" style="margin:0">Selection</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="Pointer" title="Pointer" style="background-image:url('${w}images/tools/PointerTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="Pan" title="Pan" style="background-image:url('${w}images/tools/PanTool.svg')"></div></div></main></div>`};customElements.define("node-projects-designer-pointer-tool-popup",_r)});var qs,rh=g(()=>{"use strict";ot();se();ih();qs=class{provideButton(e){let t=new ge(e,{Pointer:{icon:w+"images/tools/PointerTool.svg"}});return t.popup=_r,t}}});var at,nh=g(()=>{"use strict";at=class{constructor(e){this.distance=e}distance;provideButton(e){let t=document.createElement("div");return t.style.marginTop=this.distance+"px",t}}});var Js,sh=g(()=>{"use strict";ot();se();Js=class{provideButton(e){return new ge(e,{Zoom:{icon:w+"images/tools/ZoomTool.svg"}})}}});import{html as ug,css as fg}from"@node-projects/base-custom-webcomponent";var br,oh=g(()=>{"use strict";se();xr();br=class extends Vt{static style=[super.style,fg`.container{width:220px;min-height:300px}.inputs{float:left;margin-top:5px;align-items:center}.input{display:flex;align-items:center;margin-top:5px}.text{margin-left:5px;font-size:14px}.strokecolor{float:both}.fillbrush{float:both}.strokethickness{float:both}`];static template=ug`<div class="container"><header><h2 id="title" style="margin:0">Draw</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="DrawLine" title="Draw Line" style="background-image:url('${w}images/tools/DrawLineTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawPath" title="Pointer Tool" style="background-image:url('${w}images/tools/DrawPathTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawRect" title="Draw Rectangle" style="background-image:url('${w}images/tools/DrawRectTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawEllipsis" title="Draw Ellipsis" style="background-image:url('${w}images/tools/DrawEllipTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="PickColor" title="Pick Color" style="background-image:url('${w}images/tools/ColorPickerTool.svg')"></div></div><div class="inputs"><div class="input"><input id="strokecolor" class="strokecolor" type="color" title="stroke color" value="#000000" style="padding:0;width:31px;height:31px"><text class="text">Stroke Color</text></div><div class="input"><input id="fillbrush" class="fillbrush" type="color" title="fill brush" value="#ffffff" style="padding:0;width:31px;height:31px"><text class="text">Fill Brush</text></div><div class="input"><input id="strokethickness" class="strokethickness" type="range" title="stroke thickness" min="1" max="20" value="3" style="padding:0;width:80px;height:20px;margin-right:5px"><text class="text">Stroke Thickness</text></div></div></main></div>`;constructor(){if(super(),this.shadowRoot.querySelector("input.strokecolor")){let e=this._getDomElement("strokecolor");e.onchange=()=>this.getRootNode().host.setStrokeColor(e.value)}if(this.shadowRoot.querySelector("input.fillbrush")){let e=this._getDomElement("fillbrush");e.onchange=()=>this.getRootNode().host.setFillBrush(e.value)}if(this.shadowRoot.querySelector("input.strokethickness")){let e=this._getDomElement("strokethickness");e.onchange=()=>this.getRootNode().host.setStrokeThickness(e.value)}}};customElements.define("node-projects-designer-draw-tool-popup",br)});var eo,ah=g(()=>{"use strict";ot();se();oh();eo=class{provideButton(e){let t=new ge(e,{DrawLine:{icon:w+"images/tools/DrawLineTool.svg"},DrawPath:{icon:w+"images/tools/DrawPathTool.svg"},DrawRect:{icon:w+"images/tools/DrawRectTool.svg"},DrawEllipsis:{icon:w+"images/tools/DrawEllipTool.svg"},PickColor:{icon:w+"images/tools/ColorPickerTool.svg"}});return t.popup=br,t}}});var to,lh=g(()=>{"use strict";ot();se();to=class{provideButton(e){return new ge(e,{Text:{icon:w+"images/tools/TextTool.svg"}})}}});import{html as gg}from"@node-projects/base-custom-webcomponent";var Sr,ch=g(()=>{"use strict";se();xr();Sr=class extends Vt{static template=gg`<div class="container"><header><h2 id="title" style="margin:0">Selection</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="RectangleSelector" title="Rectangle Selector" style="background-image:url('${w}images/tools/SelectRectTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="MagicWandSelector" title="Magic Wand Selector" style="background-image:url('${w}images/tools/MagicWandTool.svg')"></div></div></main></div>`};customElements.define("node-projects-designer-selection-tool-popup",Sr)});var io,hh=g(()=>{"use strict";ot();se();ch();io=class{provideButton(e){let t=new ge(e,{RectangleSelector:{icon:w+"images/tools/SelectRectTool.svg"},MagicWandSelector:{icon:w+"images/tools/MagicWandTool.svg"}});return t.popup=Sr,t}}});var ro,dh=g(()=>{"use strict";re();ie();ro=class extends z{_rect;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._rect=this._drawTransformedRect(e,"svg-rect-enter-container",this._rect,T.Background)}dispose(){this._removeAllOverlays()}}});import{css as yg}from"@node-projects/base-custom-webcomponent";var wr,ph=g(()=>{"use strict";dh();wr=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new ro(e,t,i)}static style=yg`.svg-rect-enter-container{stroke:none;fill:#aa00ff2e}`}});var no,mh=g(()=>{"use strict";Me();de();no=class extends ee{name="attached";getRefreshMode(e){return B.full}isHandledElement(e){return e.serviceContainer.forSomeServicesTillResult("attachedPropertyService",t=>t.isHandledElement(e))}async getProperties(e){let t=[];if(e.serviceContainer.attachedPropertyServices)for(let i of e.serviceContainer.attachedPropertyServices)i.isHandledElement(e)&&t.push(...await i.getProperties(e));return t}}});var Ni,uh=g(()=>{"use strict";de();pt();Ke();fe();_e();Me();Ni=class extends ee{name="attributes";getRefreshMode(e){return B.fullOnValueChange}isHandledElement(e){return!e.isRootItem}async getProperty(e,t){return{name:t,type:"string",service:this,propertyType:x.attribute}}async getProperties(e){if(e){let t=[];for(let i of e.attributes())t.push({name:i[0],renamable:!0,type:"string",service:this,propertyType:x.attribute});return t.push({name:"",type:"addNew",service:this,propertyType:x.complex}),t}return null}async setValue(e,t,i){let r=e[0].openGroup("properties changed");for(let n of e)n.setAttribute(t.name,i);r.commit()}getPropertyTarget(e,t){return L.attribute}clearValue(e,t){for(let i of e)i.removeAttribute(t.name),i.serviceContainer.forSomeServicesTillResult("bindingService",r=>r.clearBinding(i,t.name,this.getPropertyTarget(i,t)))}isSet(e,t){let i=!0,r=!1;if(e!=null&&e.length!==0){if(e.length==1&&typeof e[0].getAttribute(t.name)=="object")return G.bound;let n=R.dashToCamelCase(t.name),o=t.name;e.forEach(l=>{let c=l.hasAttribute(o);i=i&&c,r=r||c});let a=ee.getOrBuildCachedBindings(e[0]);if(a&&a.find(l=>l.target==L.attribute&&l.targetName==n))return G.bound}else return G.none;return i?G.all:r?G.some:G.none}getValue(e,t){if(e!=null&&e.length!==0){let i=t.name,r=e[0].getAttribute(i);return typeof r=="object"?r.rawValue:r}return null}getBinding(e,t){return ee.getOrBuildCachedBindings(e[0]).find(r=>(r.target==L.property||r.target==L.explicitProperty||r.target==L.attribute)&&r.targetName==t.name)}getUnsetValue(e,t){return t.defaultValue}}});var so,fh=g(()=>{"use strict";Ee();$t();so=class extends te{_root;constructor(e){super(e),this._root=document.createElement("div"),this._root.style.display="grid",this._root.style.padding="4px 0px",this._root.style.boxSizing="border-box",this._root.style.minHeight="50px",this.element=this._root}refreshValue(e,t){if(this._root.innerHTML="",this.designItems!=null&&this.designItems.length){let i=this.designItems[0].element.parentElement;if(i){let r=getComputedStyle(i),n=Ai(this.designItems[0].element),o=getComputedStyle(this.designItems[0].element),a=r.gridTemplateColumns.split(" ").length,l=r.gridTemplateRows.split(" ").length;this._root.style.gridTemplateColumns="repeat("+a+", 1fr)",this._root.style.gridTemplateRows="repeat("+l+", 1fr)";let c=parseInt(o.gridRowStart),h=c+n.rowSpan,d=parseInt(o.gridColumnStart),p=d+n.colSpan;for(let m=1;m<=l;m++)for(let u=1;u<=a;u++){let f=document.createElement("button");f.style.minHeight="10px",f.onclick=()=>{let y=Ai(this.designItems[0].element),v=this.designItems[0].openGroup("Change grid row/column");this.designItems[0].setStyle("grid-row",m+" / "+(m+y.rowSpan)),this.designItems[0].setStyle("grid-column",u+" / "+(u+y.colSpan)),v.commit()},m>=c&&m<h&&u>=d&&u<p&&(f.style.backgroundColor="coral"),this._root.appendChild(f)}}}}}});import{BaseCustomWebComponentConstructorAppend as vg,css as xg,html as _g}from"@node-projects/base-custom-webcomponent";var Cr,Kp=g(()=>{"use strict";Cr=class extends vg{static style=xg`:host{justify-content:center;display:flex;margin:10px;line-height:12px;min-width:120px}*{font-size:12px;font-family:monospace;color:#000}.top{display:inline-block}.left{display:inline-block;vertical-align:middle}.right{display:inline-block;vertical-align:middle}.bottom{display:inline-block}div.ct{width:280px;height:120px}div span{font-size:10px;position:absolute;top:0;left:0}div.ct{position:relative;background:#fff;display:inline-block;border:dotted 1px gray;text-align:center;vertical-align:middle}div.ct.box{border:dotted 2px #000}div.ct>div.ct{left:0;top:0;background:#f9cc9f;width:calc(100% - 20px);height:calc(100% - 26px);border-style:dashed}div.ct>div.ct>div.ct{background:#fedc9b;border-style:solid}div.ct>div.ct>div.ct>div.ct{background:#c4cf8c;border-style:dashed}div.ct>div.ct>div.ct>div.ct>div.ct{background:#8cb6c2;border-style:solid;display:inline-flex;justify-content:center;align-items:center}span{width:30%;overflow:hidden;text-overflow:ellipsis}`;static template=_g`<div id="position" class="ct"><span title="position">position</span><div data-style="position" @keydown="onKeyDown" @dblclick="onDoubleClick" class="top">-</div><br><div data-style="position" @keydown="onKeyDown" @dblclick="onDoubleClick" class="left">-</div><div id="margin" class="ct"><span title="margin">margin</span><div data-style="margin" @keydown="onKeyDown" @dblclick="onDoubleClick" class="top">-</div><br><div @keydown="onKeyDown" @dblclick="onDoubleClick" class="left">-</div><div id="border" class="ct"><span title="border">border</span><div data-style="border" @keydown="onKeyDown" @dblclick="onDoubleClick" class="top">-</div><br><div @keydown="onKeyDown" @dblclick="onDoubleClick" class="left">-</div><div id="padding" class="ct"><span title="padding">padding</span><div data-style="padding" @keydown="onKeyDown" @dblclick="onDoubleClick" class="top">-</div><br><div @keydown="onKeyDown" @dblclick="onDoubleClick" class="left">-</div><div id="element" class="ct" style="font-size:6px"><div data-style="element" @keydown="onKeyDown" @dblclick="onDoubleClick" class="left">-</div> x <div data-style="element" @keydown="onKeyDown" @dblclick="onDoubleClick" class="right">-</div></div><div data-style="padding" @keydown="onKeyDown" @dblclick="onDoubleClick" class="right">-</div><br><div data-style="padding" @keydown="onKeyDown" @dblclick="onDoubleClick" class="bottom">-</div></div><div data-style="border" @keydown="onKeyDown" @dblclick="onDoubleClick" class="right">-</div><br><div data-style="border" @keydown="onKeyDown" @dblclick="onDoubleClick" class="bottom">-</div></div><div data-style="margin" @keydown="onKeyDown" @dblclick="onDoubleClick" class="right">-</div><br><div data-style="margin" @keydown="onKeyDown" @dblclick="onDoubleClick" class="bottom">-</div></div><div data-style="position" @keydown="onKeyDown" @dblclick="onDoubleClick" class="right">-</div><br><div data-style="position" @keydown="onKeyDown" @dblclick="onDoubleClick" class="bottom">-</div></div>`;property;unsetValue;_borderDiv;_elementDiv;constructor(){super(),this._restoreCachedInititalValues(),this._borderDiv=this._getDomElement("border"),this._elementDiv=this._getDomElement("element")}ready(){this._parseAttributesToProperties(),this._assignEvents()}onDoubleClick(e){let t=e.target;t.setAttribute("contentEditable","");let i=document.createRange(),r=window.getSelection();i.setStart(t.firstChild,0),i.setEndAfter(t.lastChild),r.removeAllRanges(),r.addRange(i)}onKeyDown(e){let t=e.target;if(e.key=="Enter"){t.removeAttribute("contentEditable");let i=t.innerHTML,r=new CustomEvent("value-changed",{detail:{style:t.dataset.style,value:i}});this.dispatchEvent(r)}}refresh(e){this._elementDiv.classList.remove("box"),this._borderDiv.classList.remove("box"),e&&(getComputedStyle(e).boxSizing=="content-box"?this._elementDiv.classList.add("box"):this._borderDiv.classList.add("box"))}};customElements.define("node-projects-metrics-editor",Cr)});var oo,gh=g(()=>{"use strict";Ee();Kp();oo=class extends te{constructor(e){super(e);let t=new Cr;t.property=e.name,this.element=t}refreshValue(e,t){this.element.refresh(this.designItems?.[0]?.element)}}});var ao,$p=g(()=>{ao={accentColor:{type:"color"},additiveSymbols:{},alignContent:{type:"list",values:["start","end","flex-start","flex-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignItems:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignSelf:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignmentBaseline:{},all:{},animation:{},animationDelay:{type:"time"},animationDirection:{},animationDuration:{type:"time"},animationFillMode:{},animationIterationCount:{},animationName:{},animationPlayState:{},animationTimingFunction:{},appRegion:{},appearance:{},ascentOverride:{},aspectRatio:{},backdropFilter:{},backfaceVisibility:{},background:{},backgroundAttachment:{},backgroundBlendMode:{},backgroundClip:{},backgroundColor:{type:"color"},backgroundImage:{},backgroundOrigin:{},backgroundPosition:{},backgroundPositionX:{},backgroundPositionY:{},backgroundRepeat:{},backgroundRepeatX:{},backgroundRepeatY:{},backgroundSize:{},basePalette:{},baselineShift:{},blockSize:{type:"length"},border:{},borderBlock:{},borderBlockColor:{type:"color"},borderBlockEnd:{},borderBlockEndColor:{type:"color"},borderBlockEndStyle:{},borderBlockEndWidth:{},borderBlockStart:{},borderBlockStartColor:{type:"color"},borderBlockStartStyle:{},borderBlockStartWidth:{},borderBlockStyle:{},borderBlockWidth:{},borderBottom:{},borderBottomColor:{type:"color"},borderBottomLeftRadius:{},borderBottomRightRadius:{},borderBottomStyle:{},borderBottomWidth:{},borderCollapse:{},borderColor:{type:"color"},borderEndEndRadius:{},borderEndStartRadius:{},borderImage:{},borderImageOutset:{},borderImageRepeat:{},borderImageSlice:{},borderImageSource:{},borderImageWidth:{},borderInline:{},borderInlineColor:{type:"color"},borderInlineEnd:{},borderInlineEndColor:{type:"color"},borderInlineEndStyle:{},borderInlineEndWidth:{},borderInlineStart:{},borderInlineStartColor:{type:"color"},borderInlineStartStyle:{},borderInlineStartWidth:{},borderInlineStyle:{},borderInlineWidth:{},borderLeft:{},borderLeftColor:{type:"color"},borderLeftStyle:{},borderLeftWidth:{},borderRadius:{},borderRight:{},borderRightColor:{type:"color"},borderRightStyle:{},borderRightWidth:{},borderSpacing:{},borderStartEndRadius:{},borderStartStartRadius:{},borderStyle:{},borderTop:{},borderTopColor:{type:"color"},borderTopLeftRadius:{},borderTopRightRadius:{},borderTopStyle:{},borderTopWidth:{},borderWidth:{type:"length",values:["medium","thin","thick"]},bottom:{type:"length"},boxShadow:{},boxSizing:{type:"list",values:["border-box","content-box"]},breakAfter:{},breakBefore:{},breakInside:{},bufferedRendering:{},captionSide:{},caretColor:{type:"color"},clear:{},clip:{},clipPath:{},clipRule:{},color:{type:"color"},colorInterpolation:{},colorInterpolationFilters:{},colorRendering:{},colorScheme:{},columnCount:{},columnFill:{},columnGap:{type:"length"},columnRule:{},columnRuleColor:{type:"color"},columnRuleStyle:{},columnRuleWidth:{},columnSpan:{},columnWidth:{},columns:{},contain:{},containIntrinsicBlockSize:{},containIntrinsicHeight:{},containIntrinsicInlineSize:{},containIntrinsicSize:{},containIntrinsicWidth:{},container:{},containerName:{},containerType:{},content:{},contentVisibility:{},counterIncrement:{},counterReset:{},counterSet:{},cursor:{},cx:{},cy:{},d:{},descentOverride:{},direction:{},display:{type:"list",values:["block","inline","inline-block","flex","inline-flex","contents","grid","inline-grid","inline-table","list-item","run-in","table","table-caption","table-column-group","table-header-group","table-footer-group","tabl-row-group","table-cell","table-column","table-row","inherit","initial","none"]},dominantBaseline:{},emptyCells:{},fallback:{},fill:{type:"color"},fillOpacity:{},fillRule:{},filter:{},flex:{},flexBasis:{type:"length"},flexDirection:{type:"list",values:["row","column","row-reverse","column-reverse"]},flexFlow:{},flexGrow:{type:"number"},flexShrink:{type:"number"},flexWrap:{type:"list",values:["nowrap","wrap","wrap-reverse"]},fieldSizing:{},float:{type:"list",values:["none","left","right","inline-start","inline-end"]},floodColor:{type:"color"},floodOpacity:{},font:{},fontDisplay:{},fontFamily:{type:"font"},fontFeatureSettings:{},fontKerning:{},fontOpticalSizing:{},fontPalette:{},fontSize:{type:"length"},fontSizeAdjust:{},fontStretch:{},fontStyle:{},fontSynthesis:{},fontSynthesisSmallCaps:{},fontSynthesisStyle:{},fontSynthesisWeight:{},fontVariant:{},fontVariantCaps:{},fontVariantEastAsian:{},fontVariantLigatures:{},fontVariantNumeric:{},fontVariationSettings:{},fontWeight:{},forcedColorAdjust:{},gap:{type:"length"},grid:{},gridArea:{},gridAutoColumns:{},gridAutoFlow:{},gridAutoRows:{},gridColumn:{},gridColumnEnd:{},gridColumnGap:{type:"length"},gridColumnStart:{},gridGap:{type:"length"},gridRow:{},gridRowEnd:{},gridRowGap:{type:"length"},gridRowStart:{},gridTemplate:{},gridTemplateAreas:{},gridTemplateColumns:{},gridTemplateRows:{},height:{type:"length"},hyphenateCharacter:{},hyphens:{},imageOrientation:{},imageRendering:{},imageResolution:{type:"resolution"},inherits:{},initialValue:{},inlineSize:{type:"length"},inset:{},insetBlock:{},insetBlockEnd:{},insetBlockStart:{},insetInline:{},insetInlineEnd:{},insetInlineStart:{},isolation:{},justifyContent:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},justifyItems:{type:"list",values:["start","end","flex-start","flex-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},justifySelf:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},left:{type:"length"},letterSpacing:{type:"length"},lightingColor:{type:"color"},lineBreak:{},lineGapOverride:{},lineHeight:{type:"length"},listStyle:{},listStyleImage:{},listStylePosition:{},listStyleType:{},margin:{},marginBlock:{},marginBlockEnd:{type:"length"},marginBlockStart:{type:"length"},marginBottom:{type:"length"},marginInline:{},marginInlineEnd:{type:"length"},marginInlineStart:{type:"length"},marginLeft:{type:"length"},marginRight:{type:"length"},marginTop:{type:"length"},marker:{},markerEnd:{},markerMid:{},markerStart:{},mask:{},maskType:{},maxBlockSize:{type:"length"},maxHeight:{type:"length"},maxInlineSize:{type:"length"},maxWidth:{type:"length"},minBlockSize:{type:"length"},minHeight:{type:"length"},minInlineSize:{type:"length"},minWidth:{type:"length"},mixBlendMode:{},negative:{},objectFit:{},objectPosition:{type:"position"},objectViewBox:{},offset:{},offsetDistance:{},offsetPath:{},offsetRotate:{type:"angle"},opacity:{type:"number"},order:{},orphans:{},outline:{},outlineColor:{type:"color"},outlineOffset:{type:"length"},outlineStyle:{},outlineWidth:{type:"length",values:["medium","thin","thick"]},overflow:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overflowAnchor:{},overflowClipMargin:{},overflowWrap:{},overflowX:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overflowY:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overrideColors:{},overscrollBehavior:{},overscrollBehaviorBlock:{},overscrollBehaviorInline:{},overscrollBehaviorX:{},overscrollBehaviorY:{},pad:{},padding:{},paddingBlock:{},paddingBlockEnd:{},paddingBlockStart:{},paddingBottom:{},paddingInline:{},paddingInlineEnd:{},paddingInlineStart:{},paddingLeft:{},paddingRight:{},paddingTop:{},page:{},pageBreakAfter:{},pageBreakBefore:{},pageBreakInside:{},pageOrientation:{},paintOrder:{},perspective:{type:"length"},perspectiveOrigin:{},placeContent:{},placeItems:{},placeSelf:{},pointerEvents:{},position:{type:"list",values:["static","relative","absolute","fixed","sticky"]},prefix:{},quotes:{},r:{},range:{},resize:{},right:{type:"length"},rotate:{type:"angle"},rowGap:{type:"length"},rubyAlign:{},rubyPosition:{},rx:{},ry:{},scale:{type:"scale"},scrollbarColor:{},scrollbarGutter:{type:"list",values:["auto","stable","stable both-edges"]},scrollbarWidth:{},scrollBehavior:{},scrollMargin:{},scrollMarginBlock:{},scrollMarginBlockEnd:{},scrollMarginBlockStart:{},scrollMarginBottom:{},scrollMarginInline:{},scrollMarginInlineEnd:{},scrollMarginInlineStart:{},scrollMarginLeft:{},scrollMarginRight:{},scrollMarginTop:{},scrollPadding:{},scrollPaddingBlock:{},scrollPaddingBlockEnd:{},scrollPaddingBlockStart:{},scrollPaddingBottom:{},scrollPaddingInline:{},scrollPaddingInlineEnd:{},scrollPaddingInlineStart:{},scrollPaddingLeft:{},scrollPaddingRight:{},scrollPaddingTop:{},scrollSnapAlign:{},scrollSnapStop:{},scrollSnapType:{},shapeImageThreshold:{},shapeMargin:{},shapeOutside:{},shapeRendering:{type:"list",values:["auto","optimizeSpeed","crispEdges","geometricPrecision"]},size:{},sizeAdjust:{},speak:{},speakAs:{},src:{},stopColor:{type:"color"},stopOpacity:{},stroke:{type:"color"},strokeDasharray:{},strokeDashoffset:{},strokeLinecap:{},strokeLinejoin:{},strokeMiterlimit:{},strokeOpacity:{},strokeWidth:{type:"number"},suffix:{},symbols:{},syntax:{},system:{},tabSize:{},tableLayout:{},textAlign:{type:"list",values:["start","end","left","right","center","justify","justify-all","match-parent"]},textAlignLast:{},textAnchor:{},textCombineUpright:{},textDecoration:{},textDecorationColor:{type:"color"},textDecorationLine:{},textDecorationSkipInk:{},textDecorationStyle:{},textDecorationThickness:{},textEmphasis:{},textEmphasisColor:{type:"color"},textEmphasisPosition:{},textEmphasisStyle:{},textIndent:{type:"length"},textOrientation:{},textOverflow:{},textRendering:{},textShadow:{},textSizeAdjust:{},textTransform:{},textUnderlineOffset:{},textUnderlinePosition:{},textWrap:{},textWrapMode:{type:"list",values:["wrap","nowrap"]},textWrapStyle:{type:"list",values:["auto","balance","pretty","stable"]},top:{type:"length"},touchAction:{},transform:{},transformBox:{},transformOrigin:{},transformStyle:{},transition:{},transitionDelay:{type:"time"},transitionBehavior:{},transitionDuration:{type:"time"},transitionProperty:{},transitionTimingFunction:{},translate:{},unicodeBidi:{},unicodeRange:{},userSelect:{},vectorEffect:{},verticalAlign:{},visibility:{},whiteSpace:{},widows:{},width:{type:"length"},willChange:{},wordBreak:{},wordSpacing:{type:"length"},wordWrap:{},writingMode:{},x:{},y:{},zIndex:{},zoom:{type:"scale"}}});var Li,lo=g(()=>{"use strict";li();de();_e();xn();Li=class extends Ge{_enrichCssProperty(e){return mp(e)}getRefreshMode(e){return B.none}async previewValue(e,t,i){let r=t.propertyName??t.name;r.startsWith("--")||(r=R.camelToDashCase(r));for(let n of e)n.element.style.setProperty(r,i)}async removePreviewValue(e,t){let i=t.propertyName??t.name;i.startsWith("--")||(i=R.camelToDashCase(i));for(let r of e)r.hasStyle(i)?r.element.style.setProperty(i,r.getStyle(i)):r.element.style.setProperty(i,"")}constructor(){super(!1)}}});var Ve,co=g(()=>{"use strict";Ke();fe();de();_e();fh();gh();$p();lo();Ve=class extends Li{getRefreshMode(e){return B.none}layout={common:["display","color","background-color","box-sizing","border","box-shadow","opacity","position","align-content"],font:["font-family","font-size","font-weight"],layout:["inset","margin","border","padding","overflow","metrics"]};grid=["display","position","grid-template-columns","grid-template-rows","gap","column-gap","row-gap","align-content","justify-content","align-items","justify-items"];gridChild=["grid-row","grid-column","assigned-row-column","align-self","justify-self"];flex=["display","position","flex-direction","flex-wrap","align-content","justify-content","align-items","gap"];flexChild=["align-self","justify-self"];svg=["fill","fill-rule","fill-opacity","stroke","stroke-width","stroke-dasharray","stroke-dashoffset","stroke-opacity"];layoutSvgChild={common:["display","fill","fill-rule","fill-opacity","stroke","stroke-width","stroke-dasharray","stroke-dashoffset","stroke-opacity"]};constructor(e){super(),this.name=e}isHandledElement(e){return!0}async getProperty(e,t){return this._getPropertyDef(t)}async getProperties(e){let t=this[this.name];if(Array.isArray(t))return t.map(r=>this._getPropertyDef(r));{let i=[];for(let r in t){let n={name:r,properties:t[r].map(o=>this._getPropertyDef(o))};i.push(n)}return i}}getPropertyNameSuggestions(e){return Object.keys(ao).map(t=>R.camelToDashCase(t))}_getPropertyType(e){let t=ao[e]?.type;return t?"css-"+t:"string"}_getPropertyValues(e){return ao[e]?.values}_getPropertyDef(e){let t=R.dashToCamelCase(e);switch(t){case"assignedRowColumn":return{name:e,service:this,propertyType:x.complex,createEditor:i=>new so(i)};case"metrics":return{name:e,service:this,propertyType:x.complex,createEditor:i=>new oo(i)};default:return this._enrichCssProperty({name:e,type:this._getPropertyType(t),values:this._getPropertyValues(t),service:this,propertyType:x.cssValue})}}getPropertyTarget(e,t){return L.css}}});var Sg,Qt,yh=g(()=>{"use strict";fe();de();pt();q();Ke();_e();Me();co();Sg="&lt;local&gt;",Qt=class extends Ve{getRefreshMode(e){return B.fullOnValueChange}constructor(){super(null),this.name="styles"}isHandledElement(e){return!0}async getProperty(e,t){let i=R.dashToCamelCase(t);return this._enrichCssProperty({name:t,type:this._getPropertyType(i),values:this._getPropertyValues(i),service:this,propertyType:x.cssValue})}async getProperties(e){if(!e||e.nodeType!=I.Element)return[];let t=e.getAllStyles().reverse().sort((o,a)=>o.specificity==null?-1:a.specificity==null?1:o.specificity.A>a.specificity.A||o.specificity.A===a.specificity.A&&o.specificity.B>a.specificity.B||o.specificity.A===a.specificity.A&&o.specificity.B===a.specificity.B&&o.specificity.C>a.specificity.C?-1:o.specificity.A===a.specificity.A&&o.specificity.B===a.specificity.B&&o.specificity.C===a.specificity.C?0:1),i=ee.getOrBuildCachedBindings(e),r=t.find(o=>o.selector===null);for(let o of i)o.target===L.css&&(r.declarations.find(a=>a.name==o.targetName)||r.declarations.push({name:o.targetName,value:null,important:!1,parent:null}));return t.map(o=>({name:(o.selector??Sg)+(o.specificity?" ("+o.specificity.A+"-"+o.specificity.B+"-"+o.specificity.C+")":""),description:o.stylesheetName??"",properties:[...o.declarations.map(a=>{let l=R.dashToCamelCase(a.name);return this._enrichCssProperty({name:a.name,renamable:!0,type:this._getPropertyType(l),values:this._getPropertyValues(l),service:this,propertyType:x.cssValue,styleRule:o,styleDeclaration:a})}),{name:"",type:"addNew",service:this,propertyType:x.complex,styleRule:o}]}))}async setValue(e,t,i){if(t.styleRule?.selector!==null&&t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.updateDeclarationValue(t.styleDeclaration,i,!1),this._notifyChangedProperty(e[0],t,i);return}if(t.styleRule?.selector!==null&&!t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(t.styleRule,t.name,i,!1),this._notifyChangedProperty(e[0],t,i);return}for(let r of e)r.setStyle(t.name,i),r.element.setAttribute("style",r.element.getAttribute("style"))}clearValue(e,t,i){if(t.styleRule?.selector!==null&&t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.removeDeclarationFromRule(t.styleRule,t.styleDeclaration.name);return}super.clearValue(e,t,i)}getValue(e,t){return t.styleRule?.selector&&t.styleDeclaration?t.styleDeclaration.value:super.getValue(e,t)}getUnsetValue(e,t){return t.styleRule?.selector&&t.styleDeclaration?t.styleDeclaration.value:super.getUnsetValue(e,t)}isSet(e,t){return t.styleRule?.selector&&t.styleDeclaration?e[0].hasStyle(t.name)?G.none:G.fromStylesheet:super.isSet(e,t)}getPropertyTarget(e,t){return t.name.startsWith("--")?L.cssvar:L.css}}});var qt,vh=g(()=>{"use strict";fe();de();pt();Ke();lo();qt=class extends Li{removeInheritedCustomProperties;constructor(e=!0){super(),this.name="customProperties",this.removeInheritedCustomProperties=e}getRefreshMode(e){return B.fullOnValueChange}isHandledElement(e){return!0}async getProperty(e,t){return this._enrichCssProperty({name:t,type:"string",service:this,propertyType:x.cssValue})}async getProperties(e){if(e?.element?.computedStyleMap){let n=Array.from(e.instanceServiceContainer.designerCanvas.computedStyleMap()).map(l=>l[0]).filter(l=>l.startsWith("--")),o=Array.from(e.element.computedStyleMap()).map(l=>l[0]).filter(l=>l.startsWith("--"));return this.removeInheritedCustomProperties&&(o=o.filter(l=>!n.includes(l))),o.map(l=>({name:l,service:this,propertyType:x.cssValue})).map(l=>this._enrichCssProperty(l))}let t=Array.from(getComputedStyle(e.instanceServiceContainer.designerCanvas)).map(n=>n[0]).filter(n=>n.startsWith("--")),i=Array.from(getComputedStyle(e.element)).map(n=>n[0]).filter(n=>n.startsWith("--"));return this.removeInheritedCustomProperties&&(i=i.filter(n=>!t.includes(n))),i.map(n=>({name:n,service:this,propertyType:x.cssValue})).map(n=>this._enrichCssProperty(n))}clearValue(e,t,i){super.clearValue(e,t,i)}getValue(e,t){let i=e[0].getStyle(t.name);return i||getComputedStyle(e[0].element).getPropertyValue(t.name)}getUnsetValue(e,t){return e?.[0].element?.computedStyleMap?e[0].element.computedStyleMap().get(t.name)?.[0]:getComputedStyle(e[0].element).getPropertyValue(t.name)}isSet(e,t){return super.isSet(e,t)==G.bound?G.bound:e[0].hasStyle(t.name)?G.all:G.none}getPropertyTarget(e,t){return L.cssvar}}});var ho,xh=g(()=>{"use strict";q();mh();uh();li();yh();vh();co();ho=class{_attachedPropertiesService=new no;_rootPgList=[{name:"styles",propertiesService:new Qt},{name:"css vars",propertiesService:new qt},{name:"layout",propertiesService:new Ve("layout")}];_pgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ni},{name:"common",propertiesService:new Ge},{name:"styles",propertiesService:new Qt},{name:"css vars",propertiesService:new qt},{name:"layout",propertiesService:new Ve("layout")}];_svgPgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ni},{name:"common",propertiesService:new Ge},{name:"styles",propertiesService:new Qt},{name:"css vars",propertiesService:new qt},{name:"layout",propertiesService:new Ve("layout")},{name:"svg",propertiesService:new Ve("svg")}];_svgChildPgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ni},{name:"common",propertiesService:new Ge},{name:"styles",propertiesService:new Qt},{name:"css vars",propertiesService:new qt},{name:"layout",propertiesService:new Ve("layoutSvgChild")}];_gridChild=[{name:"gridChild",propertiesService:new Ve("gridChild")}];_grid=[{name:"grid",propertiesService:new Ve("grid")}];_flexChild=[{name:"flexChild",propertiesService:new Ve("flexChild")}];_flex=[{name:"flex",propertiesService:new Ve("flex")}];getPropertygroups(e){if(e==null||e.length==0)return[];if(e[0].nodeType==I.TextNode||e[0].nodeType==I.Comment)return[];if(e[0].isRootItem){let r=e[0].getComputedStyle(),n=this._rootPgList;return r.display.includes("grid")?n=[...n,...this._grid]:r.display.includes("flex")&&(n=[...n,...this._flex]),n}this._svgChildPgList[0].propertiesService=this._svgPgList[0].propertiesService=this._pgList[0].propertiesService=e[0].serviceContainer.getLastServiceWhere("propertyService",r=>r.isHandledElement(e[0]));let t=this._pgList;e[0].element instanceof e[0].window.SVGElement&&(e[0].element instanceof e[0].window.SVGSVGElement?t=this._svgPgList:t=this._svgChildPgList);let i=e[0].getComputedStyle();if(i.display.includes("grid")?t=[...t,...this._grid]:i.display.includes("flex")&&(t=[...t,...this._flex]),e[0].parent){let r=e[0].parent.getComputedStyle();r.display.includes("grid")?t=[...t,...this._gridChild]:r.display.includes("flex")&&(t=[...t,...this._flexChild])}return t}}});var po,_h=g(()=>{"use strict";re();po=class extends z{_rect;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element),t=getComputedStyle(this.extendedItem.element),i=Number.parseFloat(t.marginLeft.replace("px","")),r=Number.parseFloat(t.marginTop.replace("px","")),n=Number.parseFloat(t.marginRight.replace("px","")),o=Number.parseFloat(t.marginBottom.replace("px",""));this._rect=this._drawRect(e.x-i,e.y-r,i+e.width+n,r+e.height+o,"svg-placement",this._rect)}dispose(){this._removeAllOverlays()}}});import{css as wg}from"@node-projects/base-custom-webcomponent";var mo,bh=g(()=>{"use strict";_h();mo=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new po(e,t,i)}static style=wg`.svg-placement{stroke:#90caf9;fill:none}`}});var uo,Sh=g(()=>{"use strict";re();ie();uo=class extends z{_path;constructor(e,t,i){super(e,t,i)}extend(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._path=this._drawTransformedRect(e,"svg-flexbox",this._path,T.Background)}refresh(){this._removeAllOverlays(),this.extend()}dispose(){this._removeAllOverlays()}}});import{css as Cg}from"@node-projects/base-custom-webcomponent";var wh,Er,fo=g(()=>{"use strict";Sh();wh="flexboxExtensionShowOverlay",Er=class{shouldExtend(e,t,i){let r=getComputedStyle(i.element).display;return r=="flex"||r=="inline-flex"?t.instanceServiceContainer.designContext.extensionOptions[wh]!==!1:!1}getExtension(e,t,i){return new uo(e,t,i)}style=Cg`.svg-flexbox{stroke:orange;fill:#9a47ff22}`}});var go,Ch=g(()=>{"use strict";fo();Wt();go=class extends We{constructor(){super(wh,"F","show flexbox overlay")}}});var yo,Eh=g(()=>{"use strict";Cs();Wt();yo=class extends We{constructor(){super(Tc,"I","show invisible div overlay")}}});var vo,Ph=g(()=>{"use strict";vo=class{redoBranches;source;_contentChanges=[];title;get affectedItems(){let e=new Set;for(let t of this.undoStack)for(let i of t.affectedItems)e.add(i);for(let t of this.redoStack)for(let i of t.affectedItems)e.add(i);return[...e.values()]}commitHandler;abortHandler;constructor(e,t,i,r="local"){this.title=e,this.commitHandler=t,this.abortHandler=i,this.source=r}get contentChanges(){return this._contentChanges.length>0?this._contentChanges:null}do(){let e=null,t=[];for(;e=this.redoStack.pop();)try{let i=e.do();i&&t.push(...i),this.undoStack.push(e)}catch(i){throw i}return t.length>0?t:null}undo(){let e=null,t=[];for(;e=this.undoStack.pop();)try{let i=e.undo();i&&t.push(...i),this.redoStack.push(e)}catch(i){throw i}return t.length>0?t:null}commit(){this.commitHandler(this)}abort(){this.abortHandler(this)}mergeWith(e){return!1}addCommitedSubchangeGroup(e){this.undoStack.push(e),this._recordContentChanges(e.contentChanges)}undoStack=[];redoStack=[];execute(e){let t=e.do();this._recordContentChanges(t);for(let i of this.undoStack)if(i.mergeWith(e))return t;return this.undoStack.push(e),t}_recordContentChanges(e){e?.length&&this._contentChanges.push(...e)}}});import{TypedEvent as Eg}from"@node-projects/base-custom-webcomponent";var xo,Ah=g(()=>{"use strict";Ph();xo=class{_undoStack=[];_redoStack=[];_transactionStack=[];_designerCanvas;_storeRedoBranches;constructor(e,t=!1){this._designerCanvas=e,this._storeRedoBranches=t}openGroup(e,t="local"){let i=new vo(e,r=>this.commitTransactionItem(r),r=>this.abortTransactionItem(r),t);return this._transactionStack.push(i),i}commitTransactionItem(e){let t=this._transactionStack.pop();if(t!==e)throw this.clear(),"UndoService - Commited Transaction was not the last";t.undoStack.length&&(this._transactionStack.length>0?this._transactionStack[this._transactionStack.length-1].addCommitedSubchangeGroup(t):(this._storeRedoBranches&&this._redoStack.length&&(t.redoBranches==null&&(t.redoBranches=[]),t.redoBranches.push(this._redoStack)),this._redoStack=[],this._undoStack.push(t))),this._transactionStack.length==0&&(this._designerCanvas.extensionManager.refreshAllExtensions(e.affectedItems),this.emitTransaction(e,"execute",e.source??"local"),e.contentChanges&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(e.contentChanges))}abortTransactionItem(e){if(this._transactionStack.length>0){let t=this._transactionStack.pop();if(t!==e)throw this.clear(),"UndoService - Aborted Transaction was not the last";t.undo()}}execute(e,t="local"){let i=null;this._transactionStack.length==0?(i=e.do(),this._storeRedoBranches&&this._redoStack.length&&(e.redoBranches==null&&(e.redoBranches=[]),e.redoBranches.push(this._redoStack)),this._redoStack=[],this._undoStack.push(e)):i=this._transactionStack[this._transactionStack.length-1].execute(e),this._transactionStack.length==0&&(this._designerCanvas.extensionManager.refreshAllExtensions(e.affectedItems),this.emitTransaction(e,"execute",t),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i))}clear(){this._undoStack=[],this._redoStack=[],this._transactionStack=[]}clearTransactionstackIfNotEmpty(){this._transactionStack.length&&(console.error("transactionStack was not empty, but should be",this._transactionStack),this._transactionStack=[])}undo(e="local"){if(!this.canUndo())return;if(this._transactionStack.length!=0)throw"Cannot Undo while transaction is running";let t=this._undoStack.pop(),i=null;try{i=t.undo(),this._redoStack.push(t)}catch(r){throw this.clear(),r}this._designerCanvas.extensionManager.refreshAllExtensions(t.affectedItems),this.emitTransaction(t,"undo",e),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i)}redo(e="local"){if(!this.canRedo())return;if(this._transactionStack.length!=0)throw"Cannot Redo while transaction is running";let t=this._redoStack.pop(),i=null;try{i=t.do(),this._undoStack.push(t)}catch(r){throw this.clear(),r}this._designerCanvas.extensionManager.refreshAllExtensions(t.affectedItems),this.emitTransaction(t,"redo",e),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i)}redoTo(e){this._redoStack=e.toReversed();for(let t=0;t<e.length;t++)this.redo()}canUndo(){return this._undoStack.length>0}canRedo(){return this._redoStack.length>0}get undoCount(){return this._undoStack.length}get redoCount(){return this._redoStack.length}*getUndoEntryNames(e=999){for(let t=Math.min(this._undoStack.length,e)-1;t>=0;t--)yield this._undoStack[t].title}*getUndoEntries(e=999){for(let t=Math.min(this._undoStack.length,e)-1;t>=0;t--)yield this._undoStack[t]}*getRedoEntryNames(e=999){for(let t=Math.min(this._redoStack.length,e)-1;t>=0;t--)yield this._redoStack[t].title}*getRedoEntries(e=999){for(let t=Math.min(this._redoStack.length,e)-1;t>=0;t--)yield this._redoStack[t]}onTransaction=new Eg;emitTransaction(e,t,i){this.onTransaction.emit({item:e,kind:t,source:i})}}});var _o,Zp=g(()=>{"use strict";_o=class{constructor(e,t,i){this.title="Change Selection",this.oldSelection=e,this.newSelection=t,this.selectionService=i}title;get affectedItems(){return this.oldSelection&&this.newSelection?[...this.oldSelection,...this.newSelection]:this.oldSelection?[...this.oldSelection]:[...this.newSelection]}undo(){return this.selectionService._withoutUndoSetSelectedElements(this.oldSelection),null}do(){return this.selectionService._withoutUndoSetSelectedElements(this.newSelection),null}oldSelection;newSelection;selectionService;mergeWith(e){return!1}}});import{TypedEvent as Qp}from"@node-projects/base-custom-webcomponent";function qp(s,e){let t=null;if(s.hasChildren)for(let i of s.children()){let r=s.instanceServiceContainer.designItemDocumentPositionService.getPosition(i);r&&r.start<=e&&r.start+r.length>=e&&(t=i)}return t?qp(t,e):s}var bo,Ih=g(()=>{"use strict";Zp();bo=class{primarySelection;selectedElements=[];_designerCanvas;_undoSelectionChanges;constructor(e,t){this._designerCanvas=e,this._undoSelectionChanges=t}setSelectedElements(e,t){if((e===null||e.length===0)&&(e=[this._designerCanvas.rootDesignItem]),this.selectedElements!=e&&!(this.selectedElements.length===0&&(e==null||e.length===0))){if(this.selectedElements?.length===1&&e?.length===1&&e[0]===this.selectedElements[0]){this.onSelectionRefresh.emit({selectedElements:this.selectedElements,event:t});return}if(this._undoSelectionChanges){let i=new _o(this.selectedElements,e,this);this._designerCanvas.instanceServiceContainer.undoService.execute(i)}else this._withoutUndoSetSelectedElements(e,t)}}setSelectionByTextRange(e,t){let i=qp(this._designerCanvas.rootDesignItem,e);i&&(this.selectedElements.length!=1||this.primarySelection!=i)&&this.setSelectedElements([i])}_withoutUndoSetSelectedElements(e,t){let i=this.selectedElements;if(!e)this.selectedElements=[],this.primarySelection=null;else{let r=[];for(let n of e)n&&(e.length==1||n!==n.instanceServiceContainer.designerCanvas.rootDesignItem)&&r.push(n);this.selectedElements=r,r&&r.length>0?this.primarySelection=r[0]:this.primarySelection=null}this.onSelectionChanged.emit({selectedElements:this.selectedElements,oldSelectedElements:i,event:t})}clearSelectedElements(){this.setSelectedElements([])}isSelected(e){return this.selectedElements.indexOf(e)>=0}onSelectionChanged=new Qp;onSelectionRefresh=new Qp}});var So,kh=g(()=>{"use strict";se();So=class{shouldProvideContextmenu(e,t,i,r){return i!==null}provideContextMenuItems(e,t,i){return[{title:"jump to",icon:`<img src="${w+"icons/jump.svg"}">`,action:()=>{let r=t.getNormalizedElementCoordinates(i.element);t.zoomPoint({x:r.x+r.width/2,y:r.y+r.height/2},t.zoomFactor)}}]}}});var wo,Dh=g(()=>{"use strict";he();zl();le();$t();re();ie();wo=class extends z{gridInformation;_resizers=[];_initalPos;_initialSizes;_group;_hasChanged;constructor(e,t,i){super(e,t,i)}extend(e,t){this._group=this._drawGroup(null,this._group,T.Background),this._group.style.transformOrigin="0 0",this.refresh(t)}refresh(e,t){this.gridInformation=qe(this.extendedItem),this._group.style.transform=Ii(this.extendedItem).toString(),this.gridInformation.gaps.forEach((i,r)=>{i.width<3&&(i.width=3,i.x--,i.localX--),i.height<3&&(i.height=3,i.y--,i.localY--);let n=this._drawRect(i.localX,i.localY,i.width,i.height,"svg-grid-resizer-"+i.type,this._resizers[r],T.Normal);this._resizers[r]||(this._resizers[r]=n,n.addEventListener(C.PointerDown,o=>this._pointerActionTypeResize(o,n,i)),n.addEventListener(C.PointerMove,o=>this._pointerActionTypeResize(o,n,i)),n.addEventListener(C.PointerUp,o=>this._pointerActionTypeResize(o,n,i)),this._group.appendChild(n))})}_pointerActionTypeResize(e,t,i){e.stopPropagation();let r=i.type=="h"?"gridTemplateRows":"gridTemplateColumns",n=(i.type=="h"?i.row:i.column)-1,o=i.type=="h"?"height":"width",a=this._getAxisLocalPosition(e,i.type);switch(e.type){case C.PointerDown:t.setPointerCapture(e.pointerId),this._initalPos=a,this._initialSizes=getComputedStyle(this.extendedItem.element)[r];break;case C.PointerMove:if(this._initialSizes){let c=a-this._initalPos;if(Math.abs(c)>5||this._hasChanged){this._hasChanged=!0;let h=this._initialSizes.split(" ");h[n]=parseFloat(h[n])+c+"px",h[n+1]=parseFloat(h[n+1])-c+"px",this.extendedItem.element.style[r]=h.join(" "),this.extensionManager.refreshExtensions([this.extendedItem],null,e)}}break;case C.PointerUp:t.releasePointerCapture(e.pointerId);let l=a-this._initalPos;if(this._hasChanged){this._hasChanged=!1;let c=this.extendedItem.getStyleFromSheetOrLocalOrComputed(r),h=this._initialSizes.split(" "),d=Sp(c);d.length!=h.length&&(d=h.map(u=>Kt(u))),this.extendedItem.element.style[r]="";let p=h.map(u=>parseFloat(u));p[n]+=l,p[n+1]-=l;let m=this._convertCssUnits(p,d,this.extendedItem.element,o);this.extendedItem.updateStyleInSheetOrLocal(r,m.join(" "),null,!0)}this._initalPos=null,this._initialSizes=null,this.extensionManager.refreshExtensions([this.extendedItem]);break}}_getAxisLocalPosition(e,t){let i=mr(this.extendedItem,this.designerCanvas.getNormalizedEventCoordinates(e));return t=="h"?i.y:i.x}_convertCssUnits(e,t,i,r){let n=getComputedStyle(i),a=Y(i)[r],l=r=="height"?this.gridInformation.cells.length-1:this.gridInformation.cells[0].length-1,c=r=="width"?n.columnGap:n.rowGap;c=="normal"&&(c="0px");let h=Rl(c,i,r)??0,p=a-h*l;for(let u=0;u<e.length;u++)t[u]!="fr"&&(p-=e[u]);let m=[];for(let u=0;u<e.length;u++)t[u]!="fr"?m.push(Ei(e[u],i,r,t[u])):m.push((e[u]/p*10).toFixed(2)+"fr");return m}dispose(){this._removeAllOverlays()}}});import{css as Pg}from"@node-projects/base-custom-webcomponent";var Co,Th=g(()=>{"use strict";Dh();vr();Co=class{shouldExtend(e,t,i){let r=getComputedStyle(i.element).display;return r=="grid"||r=="inline-grid"?t.instanceServiceContainer.designContext.extensionOptions[yr]!==!1:!1}getExtension(e,t,i){return new wo(e,t,i)}static style=Pg`.svg-grid-resizer-v{fill:transparent;cursor:ew-resize;pointer-events:auto}.svg-grid-resizer-v:hover{fill:#ff7f5052}.svg-grid-resizer-h{fill:transparent;cursor:ns-resize;pointer-events:auto}.svg-grid-resizer-h:hover{fill:#ff7f5052}`}});var Oi,Mh=g(()=>{"use strict";Oi=class{extensions;extIndex;style;svgDefs;constructor(...e){this.extensions=e;for(let t of e)t.style&&(this.style||(this.style=[]),Array.isArray(t.style)?this.style.push(...t.style):this.style.push(t.style)),t.constructor.style&&(this.style||(this.style=[]),Array.isArray(t.constructor.style)?this.style.push(...t.constructor.style):this.style.push(t.constructor.style)),t.svgDefs&&(this.svgDefs||(this.svgDefs=[]),Array.isArray(t.svgDefs)?this.svgDefs.push(...t.svgDefs):this.svgDefs.push(t.svgDefs)),t.constructor.svgDefs&&(this.svgDefs||(this.svgDefs=[]),Array.isArray(t.constructor.svgDefs)?this.svgDefs.push(...t.svgDefs):this.svgDefs.push(t.constructor.svgDefs))}shouldExtend(e,t,i){for(this.extIndex=0;this.extIndex<this.extensions.length;this.extIndex++)if(this.extensions[this.extIndex].shouldExtend(e,t,i))return!0;return!1}getExtension(e,t,i){return this.extensions[this.extIndex].getExtension(e,t,i)}}});var Eo,Nh=g(()=>{"use strict";Eo=class{_designItemsAssignmentList=new WeakMap;constructor(e){}setPosition(e,t){this._designItemsAssignmentList.set(e,t)}getPosition(e){return this._designItemsAssignmentList.get(e)}}});import{html as Ag,BaseCustomWebComponentConstructorAppend as Ig,css as kg}from"@node-projects/base-custom-webcomponent";var Pr,Lh=g(()=>{"use strict";Pe();le();Pr=class extends Ig{_designerView;_previousSelectionRect;_selectionChanged;_relativeButton;_absoluteButton;_applyButton;_inputX;_inputY;_inputR;_inputSpacingX;_inputSpacingY;_originTopLeft;_originTopMid;_originTopRight;_originMidLeft;_originMidMid;_originMidRight;_originBotLeft;_originBotMid;_originBotRight;_transformMode;_transformOrigin;static style=kg`.container{width:220px;min-height:200px;color:#fff;background-color:#404040;border:1px solid #000}header{text-align:center}.inputs{float:left;margin-top:5px;align-items:center}.input{display:flex;align-items:center;margin-top:5px}.text{margin-left:5px;font-size:14px}.strokecolor{float:both}.fillbrush{float:both}.strokethickness{float:both}#input-div{display:grid;grid-template-columns:1fr 9fr;grid-template-rows:25px 25px 25px;grid-row-gap:2px;font-size:small;margin:10px}#button-div{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:25px;font-size:small;margin:10px;grid-column-gap:5px}#apply-div{font-size:small;justify-content:center;width:100%;margin-top:10px;margin-bottom:10px;display:flex}#cube{display:grid;grid-template-columns:20px 20px 20px;grid-template-rows:20px 20px 20px;grid-gap:10px;padding:10px;top:-80px;position:relative}#cube-background{width:60px;height:60px;background:gray;margin-top:20px;margin-left:20px}#spacing-div{display:inline-grid;grid-template-rows:20px 20px;grid-template-columns:95px 95px;gap:5px;justify-content:center;align-items:center;width:100%}`;static template=Ag`<div class="container"><header><h2 id="title" style="margin:0">Transform</h2></header><main id="content-area"><div id="input-div"><span>X:</span> <input type="number" id="transform-input-x"> <span>Y:</span> <input type="number" id="transform-input-y"> <span>R:</span> <input type="number" id="transform-input-r"></div><div id="button-div"><button id="transform-button-absolute">absolute</button> <button id="transform-button-relative">relative</button></div><div id="spacing-div"><span>X spacing</span> <span>Y spacing</span> <input type="number" id="spacing-input-x"> <input type="number" id="spacing-input-y"></div><div style="justify-content:center;display:grid;height:100px"><div id="cube-background"></div><div id="cube"><input id="origin-top-left" type="radio" name="origin-radio"> <input id="origin-top-mid" type="radio" name="origin-radio"> <input id="origin-top-right" type="radio" name="origin-radio"> <input id="origin-mid-left" type="radio" name="origin-radio"> <input id="origin-mid-mid" type="radio" name="origin-radio" checked="checked"> <input id="origin-mid-right" type="radio" name="origin-radio"> <input id="origin-bot-left" type="radio" name="origin-radio"> <input id="origin-bot-mid" type="radio" name="origin-radio"> <input id="origin-bot-right" type="radio" name="origin-radio"></div></div><div id="apply-div"><button id="transform-button-apply" style="width:100px">apply</button></div></main></div>`;constructor(){super(),this._relativeButton=this._getDomElement("transform-button-relative"),this._absoluteButton=this._getDomElement("transform-button-absolute"),this._applyButton=this._getDomElement("transform-button-apply"),this._inputX=this._getDomElement("transform-input-x"),this._inputY=this._getDomElement("transform-input-y"),this._inputR=this._getDomElement("transform-input-r"),this._inputSpacingX=this._getDomElement("spacing-input-x"),this._inputSpacingY=this._getDomElement("spacing-input-y"),this._originTopLeft=this._getDomElement("origin-top-left"),this._originTopMid=this._getDomElement("origin-top-mid"),this._originTopRight=this._getDomElement("origin-top-right"),this._originMidLeft=this._getDomElement("origin-mid-left"),this._originMidMid=this._getDomElement("origin-mid-mid"),this._originMidRight=this._getDomElement("origin-mid-right"),this._originBotLeft=this._getDomElement("origin-bot-left"),this._originBotMid=this._getDomElement("origin-bot-mid"),this._originBotRight=this._getDomElement("origin-bot-right"),this._relativeButton.onclick=()=>this._changePositionMode("relative"),this._absoluteButton.onclick=()=>this._changePositionMode("absolute"),this._applyButton.onclick=()=>this._applyTransform(),this._transformMode="relative",this._changePositionMode(this._transformMode)}_changePositionMode(e){e=="relative"?(this._relativeButton.style.backgroundColor="#6F8A9D",this._relativeButton.style.color="black",this._absoluteButton.style.backgroundColor="#A4B5C1",this._absoluteButton.style.color="#77716E"):(this._absoluteButton.style.backgroundColor="#6F8A9D",this._absoluteButton.style.color="black",this._relativeButton.style.backgroundColor="#A4B5C1",this._relativeButton.style.color="#77716E"),this._transformMode=e}_applyTransform(){this._checkOrigin(),this._designerView=this.getRootNode().host.designerView;let e=this._designerView.instanceServiceContainer.selectionService.selectedElements;if(e=ce(e),this._selectionChanged=!1,this._designerView.instanceServiceContainer.selectionService.onSelectionChanged.once(()=>{this._selectionChanged=!0,this._previousSelectionRect=null}),e.length!=0){let t={x:isNaN(this._inputX.valueAsNumber)?null:this._inputX.valueAsNumber,y:isNaN(this._inputY.valueAsNumber)?null:this._inputY.valueAsNumber},i=this._inputR.valueAsNumber?this._inputR.valueAsNumber:0,r=e[0].openGroup("Transform selection");(!this._previousSelectionRect||this._selectionChanged)&&(this._previousSelectionRect=Gt(e,this._designerView.designerCanvas));let n=this._calculateTransformOriginPosition(this._previousSelectionRect);for(let o of e){let a={x:parseFloat(o.getStyle("left")),y:parseFloat(o.getStyle("top")),width:parseFloat(o.getStyle("width")),height:parseFloat(o.getStyle("height"))},l=o.getStyle("transform"),c=0;l&&(c=parseFloat(o.getStyle("transform").replaceAll("rotate(","").replaceAll("deg)","")));let h=this._calculateTransform(this._previousSelectionRect,n,a,i,t,this._transformMode);o.setStyle("left",h.x.toString()+"px"),o.setStyle("top",h.y.toString()+"px");let d;for(this._transformMode=="relative"?d=c+i:d=i;d>=360;)d-=360;d!=0?o.setStyle("transform","rotate("+d+"deg)"):o.removeStyle("transform")}this._applySpacing(e),r.commit()}}_calculateTransformOriginPosition(e){switch(this._transformOrigin){case"topLeft":return{x:e.x,y:e.y};case"topMid":return{x:e.x+e.width/2,y:e.y};case"topRight":return{x:e.x+e.width,y:e.y};case"midLeft":return{x:e.x,y:e.y+e.height/2};case"midMid":return{x:e.x+e.width/2,y:e.y+e.height/2};case"midRight":return{x:e.x+e.width,y:e.y+e.height/2};case"botLeft":return{x:e.x,y:e.y+e.height};case"botMid":return{x:e.x+e.width/2,y:e.y+e.height};case"botRight":return{x:e.x+e.width,y:e.y+e.height}}}_checkOrigin(){this._originTopLeft.checked?this._transformOrigin="topLeft":this._originTopMid.checked?this._transformOrigin="topMid":this._originTopRight.checked?this._transformOrigin="topRight":this._originMidLeft.checked?this._transformOrigin="midLeft":this._originMidMid.checked?this._transformOrigin="midMid":this._originMidRight.checked?this._transformOrigin="midRight":this._originBotLeft.checked?this._transformOrigin="botLeft":this._originBotMid.checked?this._transformOrigin="botMid":this._originBotRight.checked&&(this._transformOrigin="botRight")}_calculateTransform(e,t,i,r,n,o){let a;r=r*(Math.PI/180),o=="absolute"&&(n.x&&(n.x=n.x-e.x),n.y&&(n.y=n.y-e.y)),t={x:t.x-i.width/2,y:t.y-i.height/2};let l={x:i.x-t.x,y:i.y-t.y};return a={x:Math.cos(r)*l.x-Math.sin(r)*l.y+t.x+n.x,y:Math.sin(r)*l.x+Math.cos(r)*l.y+t.y+n.y},a}_applySpacing(e){let t=this._inputSpacingX.valueAsNumber,i=this._inputSpacingY.valueAsNumber;if(!isNaN(t)){let r=e.sort((o,a)=>parseFloat(o.getStyle("left"))-parseFloat(a.getStyle("left"))),n=parseFloat(r[0].getStyle("left"));for(let o=0;o<r.length;o++)r[o].setStyle("left",o*t+n+"px")}if(!isNaN(i)){let r=e.sort((o,a)=>parseFloat(o.getStyle("top"))-parseFloat(a.getStyle("top"))),n=parseFloat(r[0].getStyle("top"));for(let o=0;o<r.length;o++)r[o].setStyle("top",o*i+n+"px")}}};customElements.define("node-projects-designer-transform-tool-popup",Pr)});var Po,Oh=g(()=>{"use strict";ot();se();Lh();Po=class{provideButton(e){let t=new ge(e,{"":{icon:w+"images/tools/TransformTool.svg"}});return t.popup=Pr,t}}});var Ao,Vh=g(()=>{"use strict";le();Pe();re();ie();Ao=class extends z{_line1;_line2;_line3;_line4;_designerView;constructor(e,t,i){super(e,t,i),this._designerView=t}extend(){this.refresh()}refresh(){let e=this._designerView.instanceServiceContainer.selectionService.selectedElements;if(e.length>1){e=ce(e);let t=Gt(e,this._designerView);this._line1=this._drawLine(t.x,t.y,t.x+t.width,t.y,"svg-multiple-rect-selection",this._line1,T.Background),this._line2=this._drawLine(t.x+t.width,t.y,t.x+t.width,t.y+t.height,"svg-multiple-rect-selection",this._line2,T.Background),this._line3=this._drawLine(t.x+t.width,t.y+t.height,t.x,t.y+t.height,"svg-multiple-rect-selection",this._line3,T.Background),this._line4=this._drawLine(t.x,t.y+t.height,t.x,t.y,"svg-multiple-rect-selection",this._line4,T.Background),this._line1.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line2.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line3.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line4.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString()}}dispose(){this._removeAllOverlays()}}});import{css as Dg}from"@node-projects/base-custom-webcomponent";var Io,Rh=g(()=>{"use strict";Vh();Io=class{shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Ao(e,t,i)}static style=Dg`.svg-multiple-rect-selection{stroke:#909090;stroke-dasharray:3;fill:transparent;stroke-width:2}`}});var ko,zh=g(()=>{"use strict";ne();$e();se();ko=class{_dragOverExtensionItem;_oldX;_oldY;_currentDragDropFormatNameElementDefinition;constructor(){window.addEventListener("dragstart",e=>{let t=e.dataTransfer;if(!t)return;let i=t.setData.bind(t);t.setData=(r,n)=>(r==vi&&(this._currentDragDropFormatNameElementDefinition=n),i(r,n))},!0),window.addEventListener("dragend",e=>{this._currentDragDropFormatNameElementDefinition=null},!0)}dragEnter(e,t){}dragLeave(e,t){this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerExternalDragOverAndCanBeEntered),this._dragOverExtensionItem=null)}async dragOver(e,t){if(e.readOnly){t.dataTransfer.dropEffect="none";return}let i=null,r=t.dataTransfer.getData(vi);if(r||(r=this._currentDragDropFormatNameElementDefinition),r){let o=JSON.parse(r);o&&(i=await e.serviceContainer.forSomeServicesTillResult("instanceService",a=>a.getElement(o,e.serviceContainer,e.instanceServiceContainer)))}let[n]=this.getPossibleContainerForDragDrop(e,t,i?[i]:null);n||(n=e.rootDesignItem),this._dragOverExtensionItem!=n?(e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerExternalDragOverAndCanBeEntered),e.extensionManager.applyExtension(n,P.ContainerExternalDragOverAndCanBeEntered,t),this._dragOverExtensionItem=n):t.x!=this._oldX&&t.y!=this._oldY&&(this._oldX=t.x,this._oldY=t.y,e.extensionManager.refreshExtension(n,P.ContainerExternalDragOverAndCanBeEntered,t))}async drop(e,t){this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,P.ContainerExternalDragOverAndCanBeEntered),this._dragOverExtensionItem=null);let i=t.dataTransfer.getData(vi),r=JSON.parse(i),n=await e.serviceContainer.forSomeServicesTillResult("instanceService",m=>m.getElement(r,e.serviceContainer,e.instanceServiceContainer)),[o]=this.getPossibleContainerForDragDrop(e,t,[n]);o||(o=e.rootDesignItem);let a=n.openGroup("Insert of &lt;"+n.name+"&gt;"),l=e.serviceContainer.getLastServiceWhere("containerService",m=>m.serviceForContainer(o,o.getComputedStyle(),n));l.enterContainer(o,[n],"drop");let c=e.getNormalizedElementCoordinates(o.element),h=e.getNormalizedEventCoordinates(t),d={x:h.x-c.x,y:h.y-c.y},p={x:0,y:0};r.mouseOffset&&(p=r.mouseOffset),l.place(t,e,o,p,{x:0,y:0},d,[n]),l.finishPlace(t,e,o,p,{x:0,y:0},d,[n]),requestAnimationFrame(()=>{e.instanceServiceContainer.selectionService.setSelectedElements([n],t),a.commit()})}getPossibleContainerForDragDrop(e,t,i){let r=null,n=null,o=e.elementsFromPoint(t.clientX,t.clientY);for(let a of o)if(a==e.rootDesignItem.element){r=e.rootDesignItem;let l=getComputedStyle(r.element);n=e.serviceContainer.getLastServiceWhere("containerService",c=>c.serviceForContainer(r,l));break}else{r=M.GetOrCreateDesignItem(a,a,e.serviceContainer,e.instanceServiceContainer);let l=getComputedStyle(r.element);if(n=e.serviceContainer.getLastServiceWhere("containerService",c=>c.serviceForContainer(r,l)),n){if(i&&n.canEnter(r,i)&&!(r.element instanceof r.window.SVGElement))break;if(!i&&n.isEnterableContainer(r)&&!(r.element instanceof r.window.SVGElement))break;r=null,n=null;continue}}return[r,n]}}});var ke,Ar=g(()=>{"use strict";ke=class s{constructor(){}static _windowEvents=[{name:"afterprint",propertyName:"onafterprint",eventObjectName:"Event"},{name:"beforeprint",propertyName:"onbeforeprint",eventObjectName:"Event"},{name:"beforeunload",propertyName:"onbeforeunload",eventObjectName:"Event"},{name:"error",propertyName:"onerror",eventObjectName:"Event"},{name:"load",propertyName:"onload",eventObjectName:"Event"},{name:"hashchange",propertyName:"onhashchange",eventObjectName:"Event"},{name:"message",propertyName:"onmessage",eventObjectName:"Event"},{name:"offline",propertyName:"onoffline",eventObjectName:"Event"},{name:"online",propertyName:"ononline",eventObjectName:"Event"},{name:"pageshow",propertyName:"onpageshow",eventObjectName:"Event"},{name:"popstate",propertyName:"onpopstate",eventObjectName:"Event"},{name:"resize",propertyName:"onresize",eventObjectName:"Event"},{name:"storage",propertyName:"onstorage",eventObjectName:"Event"},{name:"unload",propertyName:"onunload",eventObjectName:"Event"}];static _allElements=[{name:"contextmenu",propertyName:"oncontextmenu",eventObjectName:"PointerEvent"}];static _focusableEvents=[{name:"blur",propertyName:"onblur",eventObjectName:"FocusEvent"},{name:"focus",propertyName:"onfocus",eventObjectName:"FocusEvent"},{name:"keydown",propertyName:"onkeydown",eventObjectName:"KeyboardEvent"},{name:"keyup",propertyName:"onkeyup",eventObjectName:"KeyboardEvent"}];static _simpleForm=[{name:"input",propertyName:"oninput",eventObjectName:"InputEvent"},{name:"change",propertyName:"onchange",eventObjectName:"Event"}];static _form=[{name:"beforeinput",propertyName:"onbeforeinput",eventObjectName:"InputEvent"},{name:"invalid",propertyName:"oninvalid",eventObjectName:"Event"},{name:"reset",propertyName:"onreset",eventObjectName:"Event"},{name:"select",propertyName:"onselect",eventObjectName:"Event"},{name:"submit",propertyName:"onsubmit",eventObjectName:"SubmitEvent"}];static _simpleMouseEvents=[{name:"click",propertyName:"onclick",eventObjectName:"PointerEvent"},{name:"dblclick",propertyName:"ondblclick",eventObjectName:"MouseEvent"},{name:"wheel",propertyName:"onwheel",eventObjectName:"WheelEvent"},{name:"scroll",propertyName:"onscroll",eventObjectName:"Event"}];static _mouseEvents=[{name:"mousedown",propertyName:"onmousedown",eventObjectName:"MouseEvent"},{name:"mouseup",propertyName:"onmouseup",eventObjectName:"MouseEvent"},{name:"mousemove",propertyName:"onmousemove",eventObjectName:"MouseEvent"},{name:"mouseover",propertyName:"onmouseover",eventObjectName:"MouseEvent"},{name:"mouseout",propertyName:"onmouseout",eventObjectName:"MouseEvent"}];static _pointerEvents=[{name:"pointerdown",propertyName:"onpointerdown",eventObjectName:"PointerEvent"},{name:"pointerup",propertyName:"onpointerup",eventObjectName:"PointerEvent"},{name:"pointerenter",propertyName:"onpointerenter",eventObjectName:"PointerEvent"},{name:"pointerleave",propertyName:"onpointerleave",eventObjectName:"PointerEvent"},{name:"pointermove",propertyName:"onpointermove",eventObjectName:"PointerEvent"},{name:"pointerover",propertyName:"onpointerover",eventObjectName:"PointerEvent"},{name:"pointerout",propertyName:"onpointerout",eventObjectName:"PointerEvent"},{name:"pointercancel",propertyName:"onpointercancel",eventObjectName:"PointerEvent"}];static _touchEvents=[{name:"touchstart",propertyName:"ontouchstart",eventObjectName:"TouchEvent"},{name:"touchend",propertyName:"ontouchend",eventObjectName:"TouchEvent"},{name:"touchmove",propertyName:"ontouchmove",eventObjectName:"TouchEvent"},{name:"touchcancel",propertyName:"ontouchcancel",eventObjectName:"TouchEvent"}];static _dragEvents=[{name:"drag",propertyName:"ondrag",eventObjectName:"DragEvent"},{name:"dragend",propertyName:"ondragend",eventObjectName:"DragEvent"},{name:"dragenter",propertyName:"ondragenter",eventObjectName:"DragEvent"},{name:"dragleave",propertyName:"ondragleave",eventObjectName:"DragEvent"},{name:"dragover",propertyName:"ondragover",eventObjectName:"DragEvent"},{name:"dragstart",propertyName:"ondragstart",eventObjectName:"DragEvent"},{name:"drop",propertyName:"ondrop",eventObjectName:"DragEvent"}];static _clipboard=[{name:"copy",propertyName:"oncopy",eventObjectName:"ClipboardEvent"},{name:"cut",propertyName:"oncut",eventObjectName:"ClipboardEvent"},{name:"paste",propertyName:"onpaste",eventObjectName:"ClipboardEvent"}];static _details=[{name:"toggle",propertyName:"ontoggle",eventObjectName:"Event"}];static _allEvents=[...s._windowEvents,...s._form,...s._simpleMouseEvents,...s._mouseEvents,...s._pointerEvents,...s._touchEvents,...s._allElements,...s._focusableEvents,...s._dragEvents,...s._clipboard,...s._dragEvents];isHandledElementFromEventsService(e){return!0}getPossibleEvents(e){return e.element instanceof e.window.HTMLInputElement||e.element instanceof e.window.HTMLTextAreaElement||e.element instanceof e.window.HTMLSelectElement?[...s._simpleForm,...s._simpleMouseEvents,...s._form,...s._pointerEvents,...s._allElements,...s._focusableEvents]:[...s._simpleMouseEvents,...s._pointerEvents,...s._allElements,...s._focusableEvents]}getEvent(e,t){return s._allEvents.find(r=>r.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}}});import{DomHelper as Tg,cssFromString as Mg}from"@node-projects/base-custom-webcomponent";var Do,Fh=g(()=>{"use strict";Do=class{async provideDemo(e,t,i,r){let n=document.createElement("div"),o=n.attachShadow({mode:"open",serializable:!0});n.style.width="100%",n.style.height="100%",n.style.border="none",n.style.display="none",n.style.overflow="auto",n.style.position="absolute",e.style.position="relative",Tg.removeAllChildnodes(e),e.appendChild(n);let a=[];i.designerCanvas.additionalStyles&&a.push(...i.designerCanvas.additionalStyles),i.stylesheetService&&a.push(...i.stylesheetService.getStylesheets().map(l=>Mg(l.content))),o.adoptedStyleSheets=a,o.innerHTML="","setHTMLUnsafe"in o?o.setHTMLUnsafe(r):o.innerHTML=r,n.style.display=""}}});var To,Bh=g(()=>{"use strict";he();Pe();ie();To=class{_elementDefinition;_createdItem;_startPosition;_changeGroup;cursor="crosshair";_rect;constructor(e){this._elementDefinition=e}activated(e){}dispose(){this._createdItem&&this._createdItem.element.parentElement.removeChild(this._createdItem.element)}pointerEventHandler(e,t,i){switch(t.type){case C.PointerDown:this._onPointerDown(e,t);break;case C.PointerMove:this._onPointerMove(e,t);break;case C.PointerUp:this._onPointerUp(e,t);break}}keyboardEventHandler(e,t,i){}sizeOverlapThreshold=!1;async _onPointerDown(e,t){let i=e.getNormalizedEventCoordinates(t);t.preventDefault(),this._startPosition={x:i.x,y:i.y},this._changeGroup=e.rootDesignItem.openGroup("Insert Item"),this._createdItem=await e.serviceContainer.forSomeServicesTillResult("instanceService",r=>r.getElement(this._elementDefinition,e.serviceContainer,e.instanceServiceContainer)),this._createdItem.setStyle("position","absolute"),this._createdItem.setStyle("left",N(this._createdItem,i.x)+"px"),this._createdItem.setStyle("top",N(this._createdItem,i.y)+"px"),this._createdItem.setStyle("width","0"),this._createdItem.setStyle("height","0"),e.rootDesignItem.insertChild(this._createdItem),e.instanceServiceContainer.selectionService.clearSelectedElements()}async _onPointerMove(e,t){let i=e.getNormalizedEventCoordinates(t);if(this._createdItem){this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect"),e.overlayLayer.addOverlay(this.constructor.name,this._rect,T.Foreground),this._rect.setAttribute("class","svg-draw-new-element"),this._rect.setAttribute("x",N(this._createdItem,this._startPosition.x)),this._rect.setAttribute("y",N(this._createdItem,this._startPosition.y)));let r=N(this._createdItem,i.x-this._startPosition.x),n=N(this._createdItem,i.y-this._startPosition.y);parseFloat(""+r)>=0&&(this._rect.setAttribute("width",r),this._createdItem.setStyle("width",r+"px")),parseFloat(""+n)>=0&&(this._rect.setAttribute("height",n),this._createdItem.setStyle("height",n+"px")),(parseFloat(""+r)>5||parseFloat(""+n)>5)&&(this.sizeOverlapThreshold=!0)}}async _onPointerUp(e,t){this.sizeOverlapThreshold?(this._changeGroup.commit(),e.instanceServiceContainer.selectionService.setSelectedElements([this._createdItem],t)):this._changeGroup.abort(),e.overlayLayer.removeOverlay(this._rect),this._startPosition=null,this._rect=null,this._createdItem=null,e.serviceContainer.globalContext.finishedWithTool(this)}}});var Mo,Hh=g(()=>{"use strict";Mo=class{constructor(){}provideButtons(e,t){let i=document.createElement("div");i.className="toolbar-control",i.title="round pixels to";let r=document.createElement("input");return r.type="number",r.step="1",r.min="-1",r.valueAsNumber=e.serviceContainer.options.roundPixelsToDecimalPlaces,r.onchange=()=>e.serviceContainer.options.roundPixelsToDecimalPlaces=r.valueAsNumber,i.appendChild(r),[i]}}});var No,Gh=g(()=>{"use strict";li();fe();de();No=class extends Ge{commonMathProperties=[{name:"displaystyle",type:"boolean",service:this,defaultValue:!0,propertyType:x.propertyAndAttribute}];mathProperties=[{name:"display",type:"list",values:["block","inline"],service:this,defaultValue:"text",propertyType:x.propertyAndAttribute}];mfracProperties=[{name:"denomalign",type:"list",values:["left","center","right"],service:this,defaultValue:"center",propertyType:x.propertyAndAttribute},{name:"linethickness",type:"string",service:this,propertyType:x.propertyAndAttribute},{name:"numalign",type:"list",values:["left","center","right"],service:this,defaultValue:"center",propertyType:x.propertyAndAttribute}];name="mathml";getRefreshMode(e){return B.full}isHandledElement(e){return e.element instanceof e.window.MathMLElement}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){if(!this.isHandledElement(e))return null;switch(e.element.localName){case"math":return[...this.commonMathProperties,...this.mathProperties];case"merror":return[...this.commonMathProperties];case"mfrac":return[...this.commonMathProperties,...this.mfracProperties];default:return[...this.commonMathProperties]}}}});var Lo,Wh=g(()=>{"use strict";re();he();Tt();ie();ze();Si();Dl();Lo=class extends z{_geometry=null;_reader;_dragState=null;_options;_overlayStructureSignature=null;_eventCleanups=[];_overlayCircles=new Map;_overlayLines=[];constructor(e,t,i,r,n){super(e,t,i),this._reader=r??Mt(i.element),this._options=n??{}}extend(){this.refresh()}refresh(){if(!this._reader){this._cleanupAll();return}if(this._geometry=this._reader.read(this.extendedItem.element),!this._geometry){this._cleanupAll();return}let e=this._getOverlayStructureSignature(this._geometry);if(this._overlayStructureSignature!==e||this._hasOverlayStructureMismatch(this._geometry)){this._cleanupAll(),this._overlayStructureSignature=e,this._drawOverlays();return}this._valuesHaveChanges(...this._getRefreshValues(this._geometry))&&(this._updateOverlayAppearance(),this._updateOverlayPositions())}dispose(){this._cleanupAll(),this._geometry=null,this._dragState=null}_cleanupAll(){for(let e of this._eventCleanups)try{e()}catch{}this._eventCleanups=[],this._overlayStructureSignature=null,this._overlayCircles.clear(),this._overlayLines=[],this._removeAllOverlays()}_getOverlayStructureSignature(e){return e.segments.map(t=>`${t.type}:${t.cp1?1:0}:${t.cp2?1:0}`).join("|")}_hasOverlayStructureMismatch(e){let t=0,i=0;for(let r=0;r<e.segments.length;r++){let n=e.segments[r];n.type!==_.Close&&(this._shouldRenderAnchorHandle(r,n,e)&&i++,n.cp1&&(i++,t++,n.type===_.QuadraticBezier&&t++),n.cp2&&(i++,t++))}return this._overlayCircles.size!==i||this._overlayLines.length!==t}_getRefreshValues(e){let t=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0],i=[this.designerCanvas.zoomFactor,this.designerCanvas.scaleFactor,this._overlayStructureSignature??""];t&&i.push(t.p1.x,t.p1.y,t.p2.x,t.p2.y,t.p3.x,t.p3.y,t.p4.x,t.p4.y);for(let r of e.segments)i.push(r.type,r.point.x,r.point.y),r.cp1?i.push(r.cp1.x,r.cp1.y):i.push("cp1:none"),r.cp2?i.push(r.cp2.x,r.cp2.y):i.push("cp2:none");return i}_toOverlay(e){let t=this._getSvgOverlayTransform();if(t&&t.bbox.width!==0&&t.bbox.height!==0)return this._mapSvgPointToOverlay(e,t);let i=this._toElementReferenceBoxPoint(e),r=this.designerCanvas.canvas.convertPointFromNode(i,this.extendedItem.element);return{x:r.x,y:r.y}}_fromOverlay(e){let t=this._getSvgOverlayTransform();if(t&&t.bbox.width!==0&&t.bbox.height!==0)return this._mapOverlayPointToSvg(e,t);let i=this.extendedItem.element.convertPointFromNode({x:e.x,y:e.y},this.designerCanvas.canvas);return this._fromElementReferenceBoxPoint({x:i.x,y:i.y})}_getSvgOverlayTransform(){let e=this.extendedItem.element;if(!(e instanceof SVGGraphicsElement)||e instanceof SVGSVGElement)return null;let t=e.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];return t?{bbox:e.getBBox(),quad:t}:null}_mapSvgPointToOverlay(e,t){let{bbox:i,quad:r}=t,n=(e.x-i.x)/i.width,o=(e.y-i.y)/i.height;return{x:r.p1.x+(r.p2.x-r.p1.x)*n+(r.p4.x-r.p1.x)*o,y:r.p1.y+(r.p2.y-r.p1.y)*n+(r.p4.y-r.p1.y)*o}}_mapOverlayPointToSvg(e,t){let{bbox:i,quad:r}=t,n={x:r.p2.x-r.p1.x,y:r.p2.y-r.p1.y},o={x:r.p4.x-r.p1.x,y:r.p4.y-r.p1.y},a=e.x-r.p1.x,l=e.y-r.p1.y,c=n.x*o.y-n.y*o.x;if(Math.abs(c)<1e-10)return this._fromElementReferenceBoxPoint(this.extendedItem.element.convertPointFromNode({x:e.x,y:e.y},this.designerCanvas.canvas));let h=(a*o.y-l*o.x)/c,d=(l*n.x-a*n.y)/c;return{x:i.x+h*i.width,y:i.y+d*i.height}}_toElementReferenceBoxPoint(e){let t=this._getSvgGeometryBBoxOffset();return{x:e.x-t.x,y:e.y-t.y}}_fromElementReferenceBoxPoint(e){let t=this._getSvgGeometryBBoxOffset();return{x:e.x+t.x,y:e.y+t.y}}_getSvgGeometryBBoxOffset(){let e=this.extendedItem.element;if(!(e instanceof SVGGraphicsElement)||e instanceof SVGSVGElement)return{x:0,y:0};let t=e.getBBox();return{x:t.x,y:t.y}}_drawOverlays(){if(!this._geometry)return;let e=null;for(let t=0;t<this._geometry.segments.length;t++){let i=this._geometry.segments[t];if(i.type===_.Close){e=this._geometry.segments[0]?.point??null;continue}if(i.cp1){let r=this._toOverlay(i.cp1);if(e){let n=this._toOverlay(e),o=this._drawLine(n.x,n.y,r.x,r.y,"svg-control-line");this._overlayLines.push(o)}if(i.type===_.QuadraticBezier){let n=this._toOverlay(i.point),o=this._drawLine(n.x,n.y,r.x,r.y,"svg-control-line");this._overlayLines.push(o)}this._drawControlCircle(r,t,"cp1")}if(i.cp2){let r=this._toOverlay(i.cp2),n=this._toOverlay(i.point),o=this._drawLine(n.x,n.y,r.x,r.y,"svg-control-line");this._overlayLines.push(o),this._drawControlCircle(r,t,"cp2")}if(this._shouldRenderAnchorHandle(t,i,this._geometry)){let r=this._toOverlay(i.point);this._drawAnchorCircle(r,t,i)}e=i.point}this._updateOverlayAppearance()}_updateOverlayAppearance(){let e=5/this.designerCanvas.scaleFactor,t=4/this.designerCanvas.scaleFactor,i=(1/this.designerCanvas.zoomFactor).toString(),r=(4/this.designerCanvas.scaleFactor).toString();for(let[n,o]of this._overlayCircles)o.setAttribute("r",(n.startsWith("anchor-")?e:t).toString()),o.style.strokeWidth=i;for(let n of this._overlayLines)n.style.strokeDasharray=r,n.style.strokeWidth=i}_addTrackedListener(e,t,i){e.addEventListener(t,i),this._eventCleanups.push(()=>e.removeEventListener(t,i))}_drawAnchorCircle(e,t,i){let r=5/this.designerCanvas.scaleFactor,n=this._drawCircle(e.x,e.y,r,"svg-path",void 0,T.Foreground);n.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),n.style.cursor="move",this._overlayCircles.set(`anchor-${t}`,n);let o=h=>this._onPointerDown(h,n,t,"anchor"),a=h=>this._onPointerMove(h,n,t,"anchor"),l=h=>this._onPointerUp(h,t),c=h=>{h.preventDefault(),this._showContextMenu(h,t,i)};this._addTrackedListener(n,C.PointerDown,o),this._addTrackedListener(n,C.PointerMove,a),this._addTrackedListener(n,C.PointerUp,l),this._addTrackedListener(n,C.ContextMenu,c)}_drawControlCircle(e,t,i){let r=4/this.designerCanvas.scaleFactor,n=this._drawCircle(e.x,e.y,r,"svg-control-point",void 0,T.Foreground);n.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),n.style.cursor="move",this._overlayCircles.set(`${i}-${t}`,n);let o=c=>this._onPointerDown(c,n,t,i),a=c=>this._onPointerMove(c,n,t,i),l=c=>this._onPointerUp(c,t);this._addTrackedListener(n,C.PointerDown,o),this._addTrackedListener(n,C.PointerMove,a),this._addTrackedListener(n,C.PointerUp,l)}_onPointerDown(e,t,i,r){e.stopPropagation(),e.preventDefault(),e.target.setPointerCapture(e.pointerId);let n=this.designerCanvas.getNormalizedEventCoordinates(e);if(!this._geometry)return;let o=this._geometry.segments[i],a;r==="anchor"?a={...o.point}:r==="cp1"?a={...o.cp1}:a={...o.cp2};let l=this._geometry.segments.map(c=>({point:{...c.point},cp1:c.cp1?{...c.cp1}:void 0,cp2:c.cp2?{...c.cp2}:void 0}));this._dragState={startCursorPos:n,segmentIndex:i,handleType:r,originalPoint:a,originalSegments:l,startScrollOffset:this.designerCanvas.canvasOffset}}_onPointerMove(e,t,i,r){if(e.stopPropagation(),e.preventDefault(),!this._dragState||!this._geometry||e.buttons===0||this._dragState.segmentIndex!==i||this._dragState.handleType!==r)return;let n=this.designerCanvas.getNormalizedEventCoordinates(e),o=n.x-this._dragState.startCursorPos.x,a=n.y-this._dragState.startCursorPos.y;e.shiftKey&&(Math.abs(o)>=Math.abs(a)?a=0:o=0),e.altKey&&r==="anchor"&&this._options.allowShapeDrag!==!1?this._dragWholeShape(o,a):this._dragSingleHandle(i,r,o,a),this._applyGeometryToElement(),this._updateOverlayPositions(),this.designerCanvas.extensionManager.refreshAllExtensions([this.extendedItem],this)}_dragSingleHandle(e,t,i,r){let n=this._toOverlay(this._dragState.originalPoint),o={x:n.x+i,y:n.y+r},a=this._fromOverlay(o),l=this._geometry.segments[e];if(t==="anchor"){if(this.extendedItem.element instanceof SVGRectElement&&this._dragRectCorner(e,a)||this.extendedItem.element instanceof SVGCircleElement&&this._dragCircleCardinal(e,a)||this.extendedItem.element instanceof SVGEllipseElement&&this._dragEllipseCardinal(e,a))return;l.point.x=a.x,l.point.y=a.y}else t==="cp1"?(l.cp1.x=a.x,l.cp1.y=a.y):(l.cp2.x=a.x,l.cp2.y=a.y)}_dragRectCorner(e,t){if(!this._geometry||!this._dragState?.originalSegments||this._geometry.segments.length<4||e<0||e>3)return!1;let i=this._dragState.originalSegments;switch(e){case 0:this._setRectCornerPoints(t,{x:i[2].point.x,y:t.y},{...i[2].point},{x:t.x,y:i[2].point.y});break;case 1:this._setRectCornerPoints({x:i[3].point.x,y:t.y},t,{x:t.x,y:i[3].point.y},{...i[3].point});break;case 2:this._setRectCornerPoints({...i[0].point},{x:t.x,y:i[0].point.y},t,{x:i[0].point.x,y:t.y});break;case 3:this._setRectCornerPoints({x:t.x,y:i[1].point.y},{...i[1].point},{x:i[1].point.x,y:t.y},t);break;default:return!1}let r=this._geometry.segments[4];return r?.type===_.Close&&(r.point={...this._geometry.segments[0].point}),!0}_setRectCornerPoints(e,t,i,r){this._geometry.segments[0].point={...e},this._geometry.segments[1].point={...t},this._geometry.segments[2].point={...i},this._geometry.segments[3].point={...r}}_dragCircleCardinal(e,t){if(!this._geometry||!this._dragState?.originalSegments)return!1;let i=this._normalizeCardinalIndex(e);if(i===null)return!1;let r=this._dragState.originalSegments,n=(r[1].point.x+r[3].point.x)/2,o=(r[0].point.y+r[2].point.y)/2,a=n,l=o,c=Math.abs(r[1].point.x-r[3].point.x)/2;switch(i){case 0:{let h=r[2].point.y;l=(t.y+h)/2,c=Math.abs(h-t.y)/2;break}case 1:{let h=r[3].point.x;a=(t.x+h)/2,c=Math.abs(t.x-h)/2;break}case 2:{let h=r[0].point.y;l=(r[0].point.y+t.y)/2,c=Math.abs(t.y-h)/2;break}case 3:{let h=r[1].point.x;a=(h+t.x)/2,c=Math.abs(h-t.x)/2;break}default:return!1}return this._setCardinalArcPoints(a,l,c,c),!0}_dragEllipseCardinal(e,t){if(!this._geometry||!this._dragState?.originalSegments)return!1;let i=this._normalizeCardinalIndex(e);if(i===null)return!1;let r=this._dragState.originalSegments,n=(r[1].point.x+r[3].point.x)/2,o=(r[0].point.y+r[2].point.y)/2,a=Math.abs(r[1].point.x-r[3].point.x)/2,l=Math.abs(r[2].point.y-r[0].point.y)/2;switch(i){case 0:{let c=r[2].point.y;o=(t.y+c)/2,l=Math.abs(c-t.y)/2;break}case 1:{let c=r[3].point.x;n=(t.x+c)/2,a=Math.abs(t.x-c)/2;break}case 2:{let c=r[0].point.y;o=(c+t.y)/2,l=Math.abs(t.y-c)/2;break}case 3:{let c=r[1].point.x;n=(c+t.x)/2,a=Math.abs(c-t.x)/2;break}default:return!1}return this._setCardinalArcPoints(n,o,a,l),!0}_normalizeCardinalIndex(e){return e>=0&&e<=3?e:e===4?0:null}_setCardinalArcPoints(e,t,i,r){this._geometry&&(this._geometry.segments[0].point={x:e,y:t-r},this._geometry.segments[1].point={x:e+i,y:t},this._geometry.segments[2].point={x:e,y:t+r},this._geometry.segments[3].point={x:e-i,y:t},this._geometry.segments[1].arc&&(this._geometry.segments[1].arc.rx=i,this._geometry.segments[1].arc.ry=r),this._geometry.segments[2].arc&&(this._geometry.segments[2].arc.rx=i,this._geometry.segments[2].arc.ry=r),this._geometry.segments[3].arc&&(this._geometry.segments[3].arc.rx=i,this._geometry.segments[3].arc.ry=r),this._geometry.segments[4]?.arc&&(this._geometry.segments[4].point={x:e,y:t-r},this._geometry.segments[4].arc.rx=i,this._geometry.segments[4].arc.ry=r),this._geometry.segments[5]?.type===_.Close&&(this._geometry.segments[5].point={x:e,y:t-r}))}_shouldRenderAnchorHandle(e,t,i){if(!(this.extendedItem.element instanceof SVGCircleElement)&&!(this.extendedItem.element instanceof SVGEllipseElement)||e!==4)return!0;let r=i.segments[0];return t.point.x!==r?.point.x||t.point.y!==r?.point.y}_dragWholeShape(e,t){if(!(!this._dragState?.originalSegments||!this._geometry))for(let i=0;i<this._geometry.segments.length;i++){let r=this._dragState.originalSegments[i],n=this._geometry.segments[i],o=this._toOverlay(r.point),a={x:o.x+e,y:o.y+t},l=this._fromOverlay(a);if(n.point.x=l.x,n.point.y=l.y,n.cp1&&r.cp1){let c=this._toOverlay(r.cp1),h={x:c.x+e,y:c.y+t},d=this._fromOverlay(h);n.cp1.x=d.x,n.cp1.y=d.y}if(n.cp2&&r.cp2){let c=this._toOverlay(r.cp2),h={x:c.x+e,y:c.y+t},d=this._fromOverlay(h);n.cp2.x=d.x,n.cp2.y=d.y}}}_updateOverlayPositions(){if(!this._geometry)return;let e=null,t=0;for(let i=0;i<this._geometry.segments.length;i++){let r=this._geometry.segments[i];if(r.type===_.Close){e=this._geometry.segments[0]?.point??null;continue}if(r.cp1){let n=this._toOverlay(r.cp1);if(e&&t<this._overlayLines.length){let a=this._toOverlay(e),l=this._overlayLines[t++];l.setAttribute("x1",a.x.toString()),l.setAttribute("y1",a.y.toString()),l.setAttribute("x2",n.x.toString()),l.setAttribute("y2",n.y.toString())}if(r.type===_.QuadraticBezier&&t<this._overlayLines.length){let a=this._toOverlay(r.point),l=this._overlayLines[t++];l.setAttribute("x1",a.x.toString()),l.setAttribute("y1",a.y.toString()),l.setAttribute("x2",n.x.toString()),l.setAttribute("y2",n.y.toString())}let o=this._overlayCircles.get(`cp1-${i}`);o&&(o.setAttribute("cx",n.x.toString()),o.setAttribute("cy",n.y.toString()))}if(r.cp2){let n=this._toOverlay(r.cp2),o=this._toOverlay(r.point);if(t<this._overlayLines.length){let l=this._overlayLines[t++];l.setAttribute("x1",o.x.toString()),l.setAttribute("y1",o.y.toString()),l.setAttribute("x2",n.x.toString()),l.setAttribute("y2",n.y.toString())}let a=this._overlayCircles.get(`cp2-${i}`);a&&(a.setAttribute("cx",n.x.toString()),a.setAttribute("cy",n.y.toString()))}if(this._shouldRenderAnchorHandle(i,r,this._geometry)){let n=this._toOverlay(r.point),o=this._overlayCircles.get(`anchor-${i}`);o&&(o.setAttribute("cx",n.x.toString()),o.setAttribute("cy",n.y.toString()))}e=r.point}}_onPointerUp(e,t){e.stopPropagation(),e.target.releasePointerCapture(e.pointerId),this._dragState&&this._geometry&&(this._commitGeometryChange(),this._dragState=null)}_applyGeometryToElement(){if(!this._reader||!this._geometry)return;let e=this._reader.serialize(this._geometry);vp(this.extendedItem.element,e)}_commitGeometryChange(){if(!this._reader||!this._geometry)return;let e=this._reader.serialize(this._geometry),t=this.extendedItem.openGroup("editGeometry");Tn(this.extendedItem,e),t.commit()}_showContextMenu(e,t,i){if(!this._geometry)return;let r=[],n=this.extendedItem.element instanceof SVGPathElement;if(this._geometry.segments.filter(a=>a.type!==_.Close).length>2&&r.push({title:"Delete point",action:()=>{this._geometry&&(this._geometry.segments.splice(t,1),t===0&&this._geometry.segments.length>0&&this._geometry.segments[0].type!==_.Close&&(this._geometry.segments[0].type=_.Move),this._applyGeometryToElement(),this._commitGeometryChange())}}),n&&this._findNextNonCloseSegment(t)!==null&&r.push({title:"Insert point after",action:()=>{this._insertPointAfter(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),n&&this._geometry.segments.length>0){let a=this._geometry.segments.some(c=>c.type===_.Close),l=this._findLastNonCloseIndex();(t===l||a&&i.type!==_.Close)&&(r.push({title:"---"}),a?r.push({title:"Open path",action:()=>{this._geometry&&(this._geometry.segments=this._geometry.segments.filter(c=>c.type!==_.Close),this._geometry.closed=!1,this._applyGeometryToElement(),this._commitGeometryChange())}}):r.push({title:"Close path",action:()=>{this._geometry&&(this._geometry.segments.push({type:_.Close,relative:!1,point:this._geometry.segments[0].point}),this._geometry.closed=!0,this._applyGeometryToElement(),this._commitGeometryChange())}}))}n&&t>0&&i.type!==_.Move&&i.type!==_.Close&&(r.push({title:"---"}),i.type!==_.Line&&i.type!==_.HorizontalLine&&i.type!==_.VerticalLine&&r.push({title:"Convert to line",action:()=>{this._convertToLine(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==_.QuadraticBezier&&r.push({title:"Convert to quadratic b\xE9zier",action:()=>{this._convertToQuadratic(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==_.CubicBezier&&r.push({title:"Convert to cubic b\xE9zier",action:()=>{this._convertToCubic(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==_.Arc?(r.push({title:"Convert to arc",action:()=>{this._convertToArc(t,!1),this._applyGeometryToElement(),this._commitGeometryChange()}}),r.push({title:"Convert to inverted arc",action:()=>{this._convertToArc(t,!0),this._applyGeometryToElement(),this._commitGeometryChange()}})):r.push({title:"Invert arc",action:()=>{this._invertArc(t),this._applyGeometryToElement(),this._commitGeometryChange()}})),r.length>0&&be.show(r,e)}_findLastNonCloseIndex(){if(!this._geometry)return-1;for(let e=this._geometry.segments.length-1;e>=0;e--)if(this._geometry.segments[e].type!==_.Close)return e;return-1}_findNextNonCloseSegment(e){if(!this._geometry)return null;for(let t=e+1;t<this._geometry.segments.length;t++)if(this._geometry.segments[t].type!==_.Close)return t;return null}_findPreviousAnchor(e){if(!this._geometry)return null;for(let t=e-1;t>=0;t--){let i=this._geometry.segments[t];if(i.type!==_.Close)return i.point}return null}_insertPointAfter(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findNextNonCloseSegment(e);if(i===null)return;let r=this._geometry.segments[i],n;switch(r.type){case _.CubicBezier:{let a=t.point,l=r.cp1,c=r.cp2,h=r.point;n=this._evalCubicBezier(a,l,c,h,.5);break}case _.QuadraticBezier:{let a=t.point,l=r.cp1,c=r.point;n=this._evalQuadraticBezier(a,l,c,.5);break}default:{n={x:(t.point.x+r.point.x)/2,y:(t.point.y+r.point.y)/2};break}}let o={type:_.Line,relative:t.relative,point:n};this._geometry.segments.splice(e+1,0,o)}_convertToLine(e){if(!this._geometry)return;let t=this._geometry.segments[e];t.type=_.Line,delete t.cp1,delete t.cp2,delete t.arc}_convertToQuadratic(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);if(!i)return;let r=t.point,n=(i.x+r.x)/2,o=(i.y+r.y)/2,a=Math.sqrt(Math.pow(r.x-i.x,2)+Math.pow(r.y-i.y,2)),l=Math.max(20,a*.25),c=Math.atan2(r.y-i.y,r.x-i.x)-Math.PI/2;t.type=_.QuadraticBezier,t.cp1={x:n+l*Math.cos(c),y:o+l*Math.sin(c)},delete t.cp2,delete t.arc}_convertToCubic(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);if(!i)return;let r=t.point;if(t.type===_.QuadraticBezier&&t.cp1){t.type=_.CubicBezier;let n=t.cp1;t.cp1={x:i.x+2/3*(n.x-i.x),y:i.y+2/3*(n.y-i.y)},t.cp2={x:r.x+2/3*(n.x-r.x),y:r.y+2/3*(n.y-r.y)}}else t.type=_.CubicBezier,t.cp1={x:i.x+(r.x-i.x)/3,y:i.y+(r.y-i.y)/3},t.cp2={x:i.x+2*(r.x-i.x)/3,y:i.y+2*(r.y-i.y)/3};delete t.arc}_convertToArc(e,t=!1){if(!this._geometry)return;let i=this._geometry.segments[e],r=this._findPreviousAnchor(e);if(!r)return;let n=i.point,o=n.x-r.x,a=n.y-r.y,l=Math.sqrt(o*o+a*a),c=Math.max(1,l/2);i.type=_.Arc,i.arc={rx:c,ry:c,rotation:0,largeArc:!1,sweep:!t},delete i.cp1,delete i.cp2}_invertArc(e){if(!this._geometry)return;let t=this._geometry.segments[e];t.type!==_.Arc||!t.arc||(t.arc.sweep=!t.arc.sweep)}_evalCubicBezier(e,t,i,r,n){let o=1-n;return{x:o*o*o*e.x+3*o*o*n*t.x+3*o*n*n*i.x+n*n*n*r.x,y:o*o*o*e.y+3*o*o*n*t.y+3*o*n*n*i.y+n*n*n*r.y}}_evalQuadraticBezier(e,t,i,r){let n=1-r;return{x:n*n*e.x+2*n*r*t.x+r*r*i.x,y:n*n*e.y+2*n*r*t.y+r*r*i.y}}}});import{css as Ng}from"@node-projects/base-custom-webcomponent";var Oo,jh=g(()=>{"use strict";Wh();pr();Oo=class{_customReader;constructor(e){this._customReader=e}shouldExtend(e,t,i){if(this._customReader)return!0;let r=i.node;return r instanceof SVGPathElement||r instanceof SVGRectElement||r instanceof SVGLineElement||r instanceof SVGEllipseElement||r instanceof SVGCircleElement||r instanceof SVGPolygonElement||r instanceof SVGPolylineElement?Np(r):!1}getExtension(e,t,i){return new Lo(e,t,i,this._customReader)}style=Ng`.svg-control-line{stroke:#3899ec;fill:none;stroke-dasharray:4;pointer-events:none;opacity:.9}.svg-control-point{stroke:#3899ec;fill:#fff;pointer-events:auto}`}});var Ct,Uh=g(()=>{"use strict";Ct=class{constructor(e,t,i=!1){this.extensionProvider=e,this.condition=t,this.style=e.style??e.constructor.style,this.svgDefs=e.svgDefs??e.constructor.svgDefs}extensionProvider;condition;style;svgDefs;shouldExtend(e,t,i){return this.condition(i,t)?this.extensionProvider.shouldExtend(e,t,i):!1}getExtension(e,t,i){return this.extensionProvider.getExtension(e,t,i)}}});var lt,Be,Je=g(()=>{"use strict";se();re();Ne();lt="basicStackedToolbarExtensionShowOverlay",Be=class s extends z{static basicTemplate=Zd`<select title="position" id="position" style="pointer-events:auto;height:24px;width:80px;padding:0;font-weight:900;text-transform:uppercase;margin-left:5px;margin-right:10px"><option>static</option><option>relative</option><option>absolute</option><option>fixed</option></select><node-projects-image-button-list-selector id="inline" no-value-in-header property="inline"><img data-value="block" title="block" src="${w}images/display/block.svg"> <img data-value="inline" title="inline" src="${w}images/display/inline.svg"></node-projects-image-button-list-selector><select title="display" id="displayType" style="pointer-events:auto;height:24px;width:80px;padding:0;font-weight:900;text-transform:uppercase;margin-left:5px;margin-right:10px"><option>block</option><option>flex</option><option>grid</option></select>`;static toolBars=[];_toolbar;_size={width:220,height:30};_display;_inline;constructor(e,t,i){super(e,t,i)}extend(e,t){let i=getComputedStyle(this.extendedItem.element);this._display=i.display.replace("inline-","").replace("inline","block"),this._inline=i.display.startsWith("inline")?"inline":"block",this._toolbar=this.createToolbar(this.constructor.template,this._size.width,this._size.height),s.toolBars.push(this._toolbar);let r=this._toolbar.getById("position");r&&(r.value=i.position,r.onchange=async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync("position",r.value),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])});let n=this._toolbar.getById("displayType");n&&(n.value=this._display,n.onchange=async()=>{this._display=n.value,await this.updateDisplayValue(),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])});let o=this._toolbar.getById("inline");o&&(o.value=this._inline,o.addEventListener("value-changed",async()=>{this._inline=o.value,this._inline&&i.position==="absolute"&&this.extendedItem.setStyle("position","static"),await this.updateDisplayValue(),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])}))}async updateDisplayValue(){let e=(this._inline=="inline"?"inline ":"")+this._display;e==="inline block"&&(e="inline"),await this.extendedItem.updateStyleInSheetOrLocalAsync("display",e)}refresh(e,t){if(t){let i=this.designerCanvas.getNormalizedEventCoordinates(t),r=0;for(let n=0;n<s.toolBars.length-1&&s.toolBars[n]!==this._toolbar;n++)r+=this._toolbar.children[0].getBoundingClientRect().height+4;this._toolbar.updatePosition({x:i.x-16/this.designerCanvas.zoomFactor,y:i.y-r-(this._size.height+14)/this.designerCanvas.zoomFactor})}}_addStyleButton(e){let t=getComputedStyle(this.extendedItem.element),i=this._toolbar.getById(e);i.addEventListener("value-changed",async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync(e,i.value)}),i.value=t[e]}dispose(){s.toolBars.splice(s.toolBars.indexOf(this._toolbar),1),this._removeAllOverlays()}}});import{html as Lg}from"@node-projects/base-custom-webcomponent";var Vo,Yh=g(()=>{"use strict";Je();se();Vo=class extends Be{static template=Lg`<div style="height:100%;width:100%">${Be.basicTemplate} <select title="display" id="gridType" style="pointer-events:auto;height:24px;width:60px;padding:0;margin-right:10px"><option>1x1</option><option>1x16</option><option>2x8</option><option>4x4</option><option>8x2</option><option>16x1</option><option>custom</option></select><node-projects-image-button-list-selector property="align-content" no-value-in-header id="align-content"><img title="center" data-value="center" src="${w}images/chromeDevtools/align-content-center-icon.svg"> <img title="space-around" data-value="space-around" src="${w}images/chromeDevtools/align-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${w}images/chromeDevtools/align-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${w}images/chromeDevtools/align-content-space-between-icon.svg"> <img title="stretch" data-value="stretch" src="${w}images/chromeDevtools/align-content-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-content" no-value-in-header id="justify-content"><img title="start" data-value="start" src="${w}images/chromeDevtools/justify-content-start-icon.svg"> <img title="center" data-value="center" src="${w}images/chromeDevtools/justify-content-center-icon.svg"> <img title="end" data-value="end" src="${w}images/chromeDevtools/justify-content-end-icon.svg"> <img title="space-around" data-value="space-around" src="${w}images/chromeDevtools/justify-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${w}images/chromeDevtools/justify-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${w}images/chromeDevtools/justify-content-space-between-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-items" no-value-in-header id="align-items"><img title="start" data-value="start" src="${w}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${w}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${w}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${w}images/chromeDevtools/align-items-stretch-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${w}images/chromeDevtools/align-items-baseline-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-items" no-value-in-header id="justify-items"><img title="start" data-value="start" src="${w}images/chromeDevtools/justify-items-start-icon.svg"> <img title="center" data-value="center" src="${w}images/chromeDevtools/justify-items-center-icon.svg"> <img title="end" data-value="end" src="${w}images/chromeDevtools/justify-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${w}images/chromeDevtools/justify-items-stretch-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=624}extend(e,t){super.extend(e,t);let i=getComputedStyle(this.extendedItem.element),r=this._toolbar.getById("gridType"),n=document.createElement("option");n.innerText=i.gridTemplateColumns.split(" ").length+"x"+i.gridTemplateRows.split(" ").length,r.insertAdjacentElement("afterbegin",n),r.selectedIndex=0,r.onchange=async()=>{if(r.value=="custom"){let o=prompt("Number of columns?","4");if(!o)return;let a=prompt("Number of rows?","4");if(!a)return;let l=this.extendedItem.openGroup("change grid type");await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-columns","repeat("+o+", 1fr)"),await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-rows","repeat("+a+", 1fr)"),l.commit()}else{let o=r.value.split("x"),a=this.extendedItem.openGroup("change grid type");await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-columns","repeat("+o[0]+", 1fr)"),await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-rows","repeat("+o[1]+", 1fr)"),a.commit()}},this._addStyleButton("align-content"),this._addStyleButton("justify-content"),this._addStyleButton("align-items"),this._addStyleButton("justify-items"),this.refresh(e,t)}}});var Ro,Xh=g(()=>{"use strict";Yh();q();Je();Ro=class{shouldExtend(e,t,i){if(i.nodeType===I.Element){let r=getComputedStyle(i.element).display;if(r==="grid"||r==="inline-grid")return t.instanceServiceContainer.designContext.extensionOptions[lt]!==!1}return!1}getExtension(e,t,i){return new Vo(e,t,i)}}});import{html as Og}from"@node-projects/base-custom-webcomponent";var zo,Kh=g(()=>{"use strict";se();Je();zo=class extends Be{static template=Og`<div style="height:100%;width:100%">${Be.basicTemplate}<node-projects-image-button-list-selector property="direction" no-value-in-header id="flex-direction"><img title="row" data-value="row" src="${w}images/chromeDevtools/flex-direction-row-icon.svg"> <img title="column" data-value="column" src="${w}images/chromeDevtools/flex-direction-column-icon.svg"> <img title="row-reverse" data-value="row-reverse" style="transform:scaleX(-1)" src="${w}images/chromeDevtools/flex-direction-row-icon.svg"> <img title="column-reverse" data-value="column-reverse" style="transform:scaleY(-1)" src="${w}images/chromeDevtools/flex-direction-column-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="wrap" no-value-in-header id="flex-wrap"><img title="nowrap" data-value="nowrap" src="${w}images/chromeDevtools/flex-wrap-nowrap-icon.svg"> <img title="wrap" data-value="wrap" src="${w}images/chromeDevtools/flex-wrap-wrap-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-content" no-value-in-header id="align-content"><img title="start" data-value="start" src="${w}images/chromeDevtools/align-content-flex-start-icon.svg"> <img title="center" data-value="center" src="${w}images/chromeDevtools/align-content-center-icon.svg"> <img title="end" data-value="end" src="${w}images/chromeDevtools/align-content-flex-end-icon.svg"> <img title="space-around" data-value="space-around" src="${w}images/chromeDevtools/align-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${w}images/chromeDevtools/align-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${w}images/chromeDevtools/align-content-space-between-icon.svg"> <img title="stretch" data-value="stretch" src="${w}images/chromeDevtools/align-content-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-content" no-value-in-header id="justify-content"><img title="start" data-value="start" src="${w}images/chromeDevtools/justify-content-start-icon.svg"> <img title="center" data-value="center" src="${w}images/chromeDevtools/justify-content-center-icon.svg"> <img title="end" data-value="end" src="${w}images/chromeDevtools/justify-content-end-icon.svg"> <img title="space-around" data-value="space-around" src="${w}images/chromeDevtools/justify-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${w}images/chromeDevtools/justify-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${w}images/chromeDevtools/justify-content-space-between-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-items" no-value-in-header id="align-items"><img title="start" data-value="start" src="${w}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${w}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${w}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${w}images/chromeDevtools/align-items-stretch-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${w}images/chromeDevtools/align-items-baseline-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=625}extend(e,t){super.extend(e,t),this._addFlexDirectionButton(),this._addStyleButton("flex-wrap"),this._addStyleButton("align-content"),this._addStyleButton("justify-content"),this._addStyleButton("align-items"),this.refresh(e,t)}_addFlexDirectionButton(){let e=getComputedStyle(this.extendedItem.element),t=this._toolbar.getById("flex-direction");t.addEventListener("value-changed",async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync("flex-direction",t.value),this.rotateImagesAcordingFlexDirection(t.value)}),t.value=e["flex-direction"],this.rotateImagesAcordingFlexDirection(t.value)}rotateImagesAcordingFlexDirection(e){let t=0;(e=="column"||e=="column-reverse")&&(t=-90),this._toolbar.getById("flex-wrap").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("align-content").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("justify-content").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("align-items").querySelectorAll("img:nth-child(-n+4)").forEach(i=>i.style.rotate=t+"deg")}}});var Fo,$h=g(()=>{"use strict";Kh();q();Je();Fo=class{shouldExtend(e,t,i){if(i.nodeType===I.Element){let r=getComputedStyle(i.element).display;if(r==="flex"||r==="inline-flex")return t.instanceServiceContainer.designContext.extensionOptions[lt]!==!1}return!1}getExtension(e,t,i){return new zo(e,t,i)}}});import{html as Vg}from"@node-projects/base-custom-webcomponent";var Bo,Zh=g(()=>{"use strict";Je();Bo=class extends Be{static template=Vg`<div style="height:100%;width:100%">${Be.basicTemplate}</div>`;constructor(e,t,i){super(e,t,i)}extend(e,t){super.extend(e,t),this.refresh(e,t)}}});var Ho,Qh=g(()=>{"use strict";Zh();q();Je();Ho=class{shouldExtend(e,t,i){if(i.nodeType===I.Element){let r=getComputedStyle(i.element).display;if(r==="block"||r==="inline"||r==="inline-block")return t.instanceServiceContainer.designContext.extensionOptions[lt]!==!1}return!1}getExtension(e,t,i){return new Bo(e,t,i)}}});var Jt,qh=g(()=>{"use strict";Xs();Jt=class{_title;_contextMenus;constructor(e,...t){this._title=e,this._contextMenus=t}shouldProvideContextmenu(e,t,i,r){return this._contextMenus.some(n=>!(n instanceof Ie)&&n.shouldProvideContextmenu(e,t,i,r))}provideContextMenuItems(e,t,i,r){return[{title:this._title,children:this._contextMenus.map(n=>n.shouldProvideContextmenu(e,t,i,r)?n.provideContextMenuItems(e,t,i,r):[]).flat()}]}}});import{html as Rg}from"@node-projects/base-custom-webcomponent";var Go,Jh=g(()=>{"use strict";se();Je();Go=class extends Be{static template=Rg`<div style="height:100%;width:100%"><div style="display:flex;flex-direction:column"><span style="font-size:10px;color:#00aff0">column:</span> <input type="text" title="column" id="gridColumn" style="pointer-events:auto;height:12px;width:45px;padding:0;margin-right:5px"></div><div style="display:flex;flex-direction:column"><span style="font-size:10px;color:#00aff0">row:</span> <input type="text" title="column" id="gridRow" style="pointer-events:auto;height:12px;width:45px;padding:0;margin-right:10px"></div><node-projects-image-button-list-selector property="align-self" no-value-in-header id="align-self"><img title="start" data-value="start" src="${w}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${w}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${w}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${w}images/chromeDevtools/align-items-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-self" no-value-in-header id="justify-self"><img title="start" data-value="start" src="${w}images/chromeDevtools/justify-items-start-icon.svg"> <img title="center" data-value="center" src="${w}images/chromeDevtools/justify-items-center-icon.svg"> <img title="end" data-value="end" src="${w}images/chromeDevtools/justify-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${w}images/chromeDevtools/justify-items-stretch-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=250}extend(e,t){super.extend(e,t);let i=getComputedStyle(this.extendedItem.element),r=this._toolbar.getById("gridColumn");r&&(r.value=i.gridColumn,r.onkeyup=async o=>{o.key==="Enter"&&await this.extendedItem.updateStyleInSheetOrLocalAsync("gridColumn",r.value)});let n=this._toolbar.getById("gridRow");n&&(n.value=i.gridColumn,n.onkeyup=async o=>{o.key==="Enter"&&await this.extendedItem.updateStyleInSheetOrLocalAsync("gridRow",n.value)}),this._addStyleButton("align-self"),this._addStyleButton("justify-self"),this.refresh(e,t)}}});var Wo,ed=g(()=>{"use strict";q();Jh();Je();Wo=class{shouldExtend(e,t,i){if(i.nodeType===I.Element&&i.parent){let r=i.parent?.getComputedStyle();if(r!=null&&(r.display==="grid"||r.display==="inline-grid"))return t.instanceServiceContainer.designContext.extensionOptions[lt]!==!1}return!1}getExtension(e,t,i){return new Go(e,t,i)}}});var jo,td=g(()=>{"use strict";Je();Wt();jo=class extends We{constructor(){super(lt,"T","show Toolbars")}}});var Uo,id=g(()=>{"use strict";re();ie();Uo=class extends z{constructor(e,t,i){super(e,t,i)}_path;_path2;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=getComputedStyle(this.extendedItem.element);if(i.padding!=="0px"){let r=Number.parseFloat(i.paddingLeft.replace("px","")),n=Number.parseFloat(i.paddingTop.replace("px","")),o=Number.parseFloat(i.paddingRight.replace("px","")),a=Number.parseFloat(i.paddingBottom.replace("px",""));if(r+=Number.parseFloat(i.borderLeftWidth.replace("px","")),n+=Number.parseFloat(i.borderTopWidth.replace("px","")),o+=Number.parseFloat(i.borderRightWidth.replace("px","")),a+=Number.parseFloat(i.borderBottomWidth.replace("px","")),!isNaN(r)&&!isNaN(n)&&!isNaN(o)&&!isNaN(a)){let l=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(l.p1.x)&&this._valuesHaveChanges(r,n,o,a,l.p1.x,l.p1.y,l.p2.x,l.p2.y,l.p3.x,l.p3.y,l.p4.x,l.p4.y)){let c=this.extendedItem.element.getBoxQuads({box:"content",relativeTo:this.designerCanvas.canvas})[0],h="M"+[l.p1,l.p2,l.p3,l.p4].map(d=>d.x+","+d.y).join(" ")+"Z ";h+="M"+[c.p1,c.p2,c.p3,c.p4].map(d=>d.x+","+d.y).join(" ")+"Z ",this._path=this._drawPath(h,"svg-padding-fill",this._path,T.Background),this._path2=this._drawPath(h,"svg-padding",this._path2,T.Background)}}}}dispose(){this._removeAllOverlays()}}});import{css as Jp}from"@node-projects/base-custom-webcomponent";var Yo,rd=g(()=>{"use strict";q();id();pr();Yo=class{shouldExtend(e,t,i){return i.nodeType==I.Element}getExtension(e,t,i){return new Uo(e,t,i)}static style=Jp`.svg-padding{fill:#32cd3266;fill-rule:evenodd}`;style=Jp`.svg-padding-fill{fill:#32cd3266;fill-rule:evenodd}.svg-padding{fill:#32cd32FF;fill-rule:evenodd;mask:url(#mask-stripe-padding)}`;static svgDefs=Pi`<pattern id="pattern-stripe-padding" patternUnits="userSpaceOnUse" width="10" height="10" patternTransform="rotate(45)" class="pattern"><line x1="0" y="0" x2="0" y2="10" stroke="color(display-p3 1 0 1 / 80%)" stroke-width="1"></line></pattern><mask id="mask-stripe-padding"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-padding)"></mask>`}});var Xo,nd=g(()=>{"use strict";he();$t();re();Xo=class extends z{_actionModeStarted;_initialPoint;_circle1;_circle2;_circle3;_circle4;_circle5;_circle6;_circle7;_circle8;_initialComputedTransformOrigins;_initialTransformOrigins;_styleBackup;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(isNaN(i.p1.x)||isNaN(i.p2.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p4.x,i.p4.y,i.p3.x,i.p3.y)&&(this._circle1=this._drawResizerOverlay(i.p1.x,i.p1.y,"nw-resize",this._circle1),this._circle2=this._drawResizerOverlay(i.p1.x+(i.p2.x-i.p1.x)/2,i.p1.y+(i.p2.y-i.p1.y)/2,"n-resize",this._circle2),this._circle3=this._drawResizerOverlay(i.p2.x,i.p2.y,"ne-resize",this._circle3),this._circle4=this._drawResizerOverlay(i.p1.x+(i.p4.x-i.p1.x)/2,i.p1.y+(i.p4.y-i.p1.y)/2,"w-resize",this._circle4),this._circle5=this._drawResizerOverlay(i.p4.x,i.p4.y,"sw-resize",this._circle5),this._circle6=this._drawResizerOverlay(i.p4.x+(i.p3.x-i.p4.x)/2,i.p4.y+(i.p3.y-i.p4.y)/2,"s-resize",this._circle6),this._circle8=this._drawResizerOverlay(i.p2.x+(i.p3.x-i.p2.x)/2,i.p2.y+(i.p3.y-i.p2.y)/2,"e-resize",this._circle8),this._circle7=this._drawResizerOverlay(i.p3.x,i.p3.y,"se-resize",this._circle7))}_drawResizerOverlay(e,t,i,r){let n=this._drawCircle(e,t,this.designerCanvas.serviceContainer.options.resizerPixelSize/this.designerCanvas.zoomFactor,"svg-grid-resizer",r);return n.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),r||(n.addEventListener(C.PointerDown,o=>this._pointerActionTypeResize(n,o,i)),n.addEventListener(C.PointerMove,o=>this._pointerActionTypeResize(n,o,i)),n.addEventListener(C.PointerUp,o=>this._pointerActionTypeResize(n,o,i))),n.style.cursor=i,n}_pointerActionTypeResize(e,t,i){t.stopPropagation();let r=this.designerCanvas.getNormalizedEventCoordinates(t);switch(t.type){case C.PointerDown:this._styleBackup=this.extendedItem.element.getAttribute("style"),t.target.setPointerCapture(t.pointerId),this._initialPoint=r,this._actionModeStarted=i,this._initialComputedTransformOrigins=[],this._initialTransformOrigins=[];let n=getComputedStyle(this.extendedItem.element).transformOrigin.split(" ").map(m=>parseFloat(m.replace("px",""))),o=new DOMPoint(n[0],n[1]);this._initialComputedTransformOrigins.push(o),this._initialTransformOrigins.push(this.extendedItem.element.style.transformOrigin);break;case C.PointerMove:if(this._initialPoint){let m=0,u=0,f=qe(this.extendedItem.parent),y=mr(this.extendedItem.parent,this.designerCanvas.getNormalizedEventCoordinates(t)),v=getComputedStyle(this.extendedItem.element);this.extendedItem.element.style.gridColumnStart=v.gridColumnStart,this.extendedItem.element.style.gridColumnEnd=v.gridColumnEnd==="auto"?""+(parseInt(v.gridColumnStart)+1):v.gridColumnEnd,this.extendedItem.element.style.gridRowStart=v.gridRowStart,this.extendedItem.element.style.gridRowEnd=v.gridRowEnd==="auto"?""+(parseInt(v.gridRowStart)+1):v.gridRowEnd,(this._actionModeStarted=="nw-resize"||this._actionModeStarted=="w-resize"||this._actionModeStarted=="sw-resize")&&(this.extendedItem.element.style.gridColumnStart=""+Op(f,y.x)),(this._actionModeStarted=="nw-resize"||this._actionModeStarted=="n-resize"||this._actionModeStarted=="ne-resize")&&(this.extendedItem.element.style.gridRowStart=""+Rp(f,y.y)),(this._actionModeStarted=="se-resize"||this._actionModeStarted=="e-resize"||this._actionModeStarted=="ne-resize")&&(m=Lp(f,y.x),this.extendedItem.element.style.gridColumnEnd=""+(m+2)),(this._actionModeStarted=="sw-resize"||this._actionModeStarted=="s-resize"||this._actionModeStarted=="se-resize")&&(u=Vp(f,y.y),this.extendedItem.element.style.gridRowEnd=""+(u+2));let b=[this.extendedItem,this.extendedItem.parent];this.extensionManager.refreshExtensions(b)}break;case C.PointerUp:t.target.releasePointerCapture(t.pointerId);let a=getComputedStyle(this.extendedItem.element),l=a.gridColumnStart,c=a.gridColumnEnd,h=a.gridRowStart,d=a.gridRowEnd;this._styleBackup?this.extendedItem.element.setAttribute("style",this._styleBackup):this.extendedItem.element.removeAttribute("style");let p=this.extendedItem.openGroup("Resize &lt;"+this.extendedItem.name+"&gt;");this.extendedItem.setStyle("gridColumnStart",l),this.extendedItem.setStyle("gridColumnEnd",c),this.extendedItem.setStyle("gridRowStart",h),this.extendedItem.setStyle("gridRowEnd",d),p.commit(),this._initialPoint=null;break}}dispose(){this._removeAllOverlays()}}});import{css as zg}from"@node-projects/base-custom-webcomponent";var Ko,sd=g(()=>{"use strict";q();nd();Ko=class{shouldExtend(e,t,i){return i.nodeType===I.Element&&i.parent?.nodeType===I.Element&&getComputedStyle(i.parent.element).display==="grid"}getExtension(e,t,i){return new Xo(e,t,i)}static style=zg`.svg-grid-resizer{stroke:#3899ec;fill:#fff;pointer-events:auto}`}});var $o,od=g(()=>{"use strict";bt();q();se();$o=class{shouldProvideContextmenu(e,t,i,r){return t.readOnly?!1:i?.instanceServiceContainer.selectionService.selectedElements.length>1?!i?.isRootItem&&i?.nodeType==I.Element:!1}provideContextMenuItems(e,t,i){return[{title:"align left",icon:`<img src="${w+"icons/alignHorizontalLeft.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeLeft})}},{title:"align center",icon:`<img src="${w+"icons/alignHorizontalCenter.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeCenter})}},{title:"align right",icon:`<img src="${w+"icons/alignHorizontalRight.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeRight})}},{title:"distribute horizontal",icon:`<img src="${w+"icons/horizontalDistribute.svg"}">`,action:()=>{t.executeCommand({type:A.distributeHorizontal})}},{title:"align top",icon:`<img src="${w+"icons/alignVerticalTop.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeTop})}},{title:"align middle",icon:`<img src="${w+"icons/alignVerticalCenter.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeMiddle})}},{title:"align bottom",icon:`<img src="${w+"icons/alignVerticalBottom.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeBottom})}},{title:"distribute vertical",icon:`<img src="${w+"icons/verticalDistribute.svg"}">`,action:()=>{t.executeCommand({type:A.distributeVertical})}}]}}});var Zo,ad=g(()=>{"use strict";fe();de();Me();_e();Zo=class extends ee{name="webcomponent";getRefreshMode(e){return B.full}isHandledElement(e){let t=e.element.constructor?.observedAttributes;return!!(t&&t.length>0)}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){return(e.element.constructor?.observedAttributes).map(i=>({name:R.dashToCamelCase(i),type:"string",service:this,propertyType:x.propertyAndAttribute}))}}});var Qo,ld=g(()=>{"use strict";re();Qo=class extends z{constructor(e,t,i){super(e,t,i)}_path;_rect;_clickRect;_g;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i&&!isNaN(i.p2.x)&&this._valuesHaveChanges(i.p1.x,i.p1.y,i.p2.x,i.p2.y,this.designerCanvas.scaleFactor)){let r=Math.atan2(i.p2.y-i.p1.y,i.p2.x-i.p1.x)*180/Math.PI,n=15/this.designerCanvas.scaleFactor;this._rect=this._drawRect(0,0,n,n,"svg-previous-select",this._rect),this._clickRect=this._drawRect(0,0,n,n,"svg-invisible",this._clickRect),this._g||(this._g=document.createElementNS("http://www.w3.org/2000/svg","g"),this._g.setAttribute("class","svg-previous-select"),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("d","m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"),this._g.appendChild(this._rect),this._g.appendChild(this._path),this._addOverlay(this._g),this._clickRect.onpointerdown=o=>{o.preventDefault(),o.stopPropagation(),this.extendedItem.instanceServiceContainer.selectionService.setSelectedElements([this.extendedItem.parent])},this._clickRect.onpointermove=o=>{o.preventDefault(),o.stopPropagation()},this._g.appendChild(this._clickRect)),this._path.style.scale=(.6/this.designerCanvas.scaleFactor).toString(),this._g.style.translate=i.p2.x-14.5/this.designerCanvas.scaleFactor+"px "+(i.p2.y-15/this.designerCanvas.scaleFactor)+"px",this._g.style.rotate=r+"deg",this._g.style.transformOrigin="100% 100%",this._g.style.transformBox="fill-box"}}dispose(){this._removeAllOverlays()}}});import{css as Fg}from"@node-projects/base-custom-webcomponent";var qo,cd=g(()=>{"use strict";ld();qo=class{shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Qo(e,t,i)}static style=Fg`rect.svg-previous-select{stroke:none;fill:#3899ec;pointer-events:auto}g.svg-previous-select{fill:#fff;pointer-events:auto}`}});var Jo,hd=g(()=>{"use strict";q();Jo=class{shouldProvideContextmenu(e,t,i,r){return i!=null&&i.nodeType==I.Element}provideContextMenuItems(e,t,i){return[{title:":hover",action:()=>{i.cssForceHover=!i.cssForceHover},checked:i.cssForceHover},{title:":active",action:()=>{i.cssForceActive=!i.cssForceActive},checked:i.cssForceActive},{title:":visited",action:()=>{i.cssForceVisited=!i.cssForceVisited},checked:i.cssForceVisited},{title:":focus",action:()=>{i.cssForceFocus=!i.cssForceFocus},checked:i.cssForceFocus},{title:":focus-within",action:()=>{i.cssForceFocusWithin=!i.cssForceFocusWithin},checked:i.cssForceFocusWithin},{title:":focus-visible",action:()=>{i.cssForceFocusVisible=!i.cssForceFocusVisible},checked:i.cssForceFocusVisible}]}}});var ea,dd=g(()=>{"use strict";Tt();ea=class{constructor(){}provideButtons(e,t){let i=document.createElement("div");return i.innerHTML="O",i.title="options",i.className="toolbar-control",i.onclick=r=>{this.showCtxMenu(r,t)},i.oncontextmenu=r=>{r.preventDefault(),this.showCtxMenu(r,t)},[i]}prepareContextMenu(e,t){return[{title:"simulate hover on hover",checked:t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover,action:()=>{t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover=!t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover}},{title:"select unhitable elements",checked:t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements,action:()=>{t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements=!t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements}},{title:"pause animations",checked:t.pauseAnimations,action:()=>{t.pauseAnimations=!t.pauseAnimations}},{title:"hide overflowing content",checked:t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent,action:()=>{if(t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent=!t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent,t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent)for(let r of t.rootDesignItem.children(!0))r.element instanceof HTMLElement&&(r.element.style.overflow="hidden",r.element.style.whiteSpace="nowrap");else for(let r of t.rootDesignItem.children(!0))r.element instanceof HTMLElement&&(r.element.style.overflow=r.hasStyle("overflow")?r.getStyle("overflow"):"",r.element.style.whiteSpace=r.hasStyle("white-space")?r.getStyle("white-space"):"")}}]}showCtxMenu(e,t){be.show(this.prepareContextMenu(e,t),e)}}});var ta,pd=g(()=>{"use strict";ne();ta=class{shouldProvideContextmenu(e,t,i,r){return r=="designer"}provideContextMenuItems(e,t,i){if(i){let r=[...i.element.children];if(r.length>0)return[{title:"children",children:[...r.map(n=>({title:"select: "+n.localName+(n.id?" (#"+n.id+")":""),action:()=>this._select(t,n)}))]}]}return[]}_select(e,t){let i=M.GetOrCreateDesignItem(t,t,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.selectionService.setSelectedElements([i])}}});var Vi,md=g(()=>{"use strict";he();gt();Vi=class{cursor="pointer";_changeGroup;pointerEventHandler(e,t,i){e.serviceContainer.designerTools.get(K.Pointer).pointerEventHandler(e,t,i)}keyboardEventHandler(e,t,i){t.preventDefault();let r=e.instanceServiceContainer.selectionService.primarySelection,n=getComputedStyle(r.element),o="";switch(t.key){case"ArrowLeft":o="margin-left";break;case"ArrowRight":o="margin-right";break;case"ArrowUp":o="margin-top";break;case"ArrowDown":o="margin-bottom";break}o&&(t.type==C.KeyDown&&!this._changeGroup&&(this._changeGroup=r.openGroup("change margin")),this._changeGroup&&(r.setStyleAsync(o,parseFloat(n[o])+(t.altKey?-1:1)+"px"),t.type==C.KeyUp&&(this._changeGroup.commit(),this._changeGroup=null)))}activated(e){}dispose(){this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null)}}});var Ir,ud=g(()=>{"use strict";ot();Ir=class{_name;_icon;constructor(e,t){this._name=e,this._icon=t}provideButton(e){let t={};return t[this._name]={icon:this._icon},new ge(e,t)}}});var Ri,fd=g(()=>{"use strict";he();gt();Ri=class{cursor="pointer";_changeGroup;pointerEventHandler(e,t,i){e.serviceContainer.designerTools.get(K.Pointer).pointerEventHandler(e,t,i)}keyboardEventHandler(e,t,i){t.preventDefault();let r=e.instanceServiceContainer.selectionService.primarySelection,n=getComputedStyle(r.element),o="";switch(t.key){case"ArrowLeft":o="padding-left";break;case"ArrowRight":o="padding-right";break;case"ArrowUp":o="padding-top";break;case"ArrowDown":o="padding-bottom";break}o&&(t.type==C.KeyDown&&!this._changeGroup&&(this._changeGroup=r.openGroup("change padding")),this._changeGroup&&(r.setStyleAsync(o,parseFloat(n[o])+(t.altKey?-1:1)+"px"),t.type==C.KeyUp&&(this._changeGroup.commit(),this._changeGroup=null)))}activated(e){}dispose(){this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null)}}});var zi,ia=g(()=>{"use strict";ne();zi=class{createDesignItem(e,t,i,r){return new M(e,t,i,r)}handleSpecialAttributes(e,t){e==fi?(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(fi)?t.element.style.display="none":t.element.style.display=t.getStyle("display")??""):e==gi?(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(gi)?t.element.style.opacity="0.3":t.element.style.opacity=t.getStyle("opacity")??""):e==Ut&&(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(Ut)?t.element.style.pointerEvents="none":requestAnimationFrame(()=>t.element.style.pointerEvents="auto"))}}});import{DomHelper as Bg}from"@node-projects/base-custom-webcomponent";var ra,gd=g(()=>{"use strict";ra=class{constructor(e){this.title="Delete Items",this.deletedItems=e}title;get affectedItems(){return this.deletedItems}undo(){for(let e=0;e<this.deletedItems.length;e++)this._parentItems[e]._insertChildInternal(this.deletedItems[e],this._parentIndexes[e]);return[{changeType:"added",designItems:this.deletedItems}]}do(){this._parentItems=[],this._parentIndexes=[];for(let e=0;e<this.deletedItems.length;e++)this._parentItems.push(this.deletedItems[e].parent),this._parentIndexes.push(Bg.nodeIndex(this.deletedItems[e].element));for(let e=0;e<this.deletedItems.length;e++)this.deletedItems[e].parent._removeChildInternal(this.deletedItems[e]);return[{changeType:"removed",designItems:this.deletedItems}]}deletedItems;_parentItems;_parentIndexes;mergeWith(e){return!1}}});var na,yd=g(()=>{"use strict";gd();na=class{removeItems(e){e[0].instanceServiceContainer.undoService.execute(new ra(e)),e[0].serviceContainer.referencesChangedService&&e[0].serviceContainer.referencesChangedService.notifyReferencesChanged(e.map(t=>({designItem:t,type:"deleted"})))}}});var sa,vd=g(()=>{"use strict";sa=class{async provideMiniatureView(e){let t=document.createDocumentFragment();for(let i of e.rootDesignItem.children())t.appendChild(i.element.cloneNode(!0));return t}}});var ei,oa=g(()=>{"use strict";le();ei=class s{static _canvas;static _context;static _video;static _captureStream;static _disableStream(){s._captureStream.getTracks().forEach(e=>e.stop()),s._canvas=null}static get screenshotsEnabled(){return s._captureStream&&s._captureStream.active}static async enableScreenshots(e=document.body){if(s._captureStream&&!s._captureStream.active&&s._disableStream(),s._canvas==null){s._canvas=document.createElement("canvas"),s._context=s._canvas.getContext("2d"),s._video=document.createElement("video");let t={video:{cursor:"never",displaySurface:"browser"},audio:!1,selfBrowserSurface:"include",preferCurrentTab:!0};s._video.style.display="none",e.appendChild(s._video);try{s._captureStream=await navigator.mediaDevices.getDisplayMedia(t)}catch(r){throw s._canvas=null,r}if(s._captureStream.getVideoTracks()[0].getSettings().displaySurface!="browser")throw s._disableStream(),alert("You need to share the current Tab, for the screenshot API to work"),"You need to share the current Tab, for the screenshot API to work";s._video.srcObject=s._captureStream,s._video.play(),await s._sleep(2e3)}}static async takeScreenshot(e,t=100,i=100,r=document.body){await s.enableScreenshots(r);let n=Y(e);s._canvas.width=t,s._canvas.height=i,s._context.drawImage(s._video,0,0,1,1,0,0,t,i);let o=s._video.videoWidth/window.innerWidth,a=s._video.videoHeight/window.innerHeight;return s._context.drawImage(s._video,n.left*o,n.top*a,n.width*o,n.height*a,0,0,t,i),s._canvas.toDataURL("image/png")}static _sleep(e){let t=null,i=new Promise(r=>t=r);return window.setTimeout(t,e),i}}});var aa,xd=g(()=>{"use strict";oa();Ne();aa=class{async takePng(e,t){if(!e||e.length===0)return null;let i=e[0].instanceServiceContainer.designerCanvas,r=e[0].instanceServiceContainer.selectionService,n=i.zoomFactor,o=i.canvasOffset,a=r.selectedElements;try{await ei.enableScreenshots(),i.disableBackgroud(),i.zoomFactor=1,t?.removeSelection&&r.setSelectedElements([]),i.canvasOffset={x:0,y:0},await tr();let l=1/0,c=1/0,h=-1/0,d=-1/0;for(let J of e){let ae=i.getNormalizedElementCoordinates(J.element);l=Math.min(l,ae.x),c=Math.min(c,ae.y),h=Math.max(h,ae.x+ae.width),d=Math.max(d,ae.y+ae.height)}let p=t?.margin??0;l-=p,c-=p,h+=p,d+=p;let m=Math.ceil(h-l),u=Math.ceil(d-c),f=i.outercanvas2,y=f.offsetWidth,v=f.offsetHeight,b=1,E=y-2*b,S=v-2*b,D=Math.ceil(m/E),O=Math.ceil(u/S),k=window.devicePixelRatio||1,U=Math.ceil(y*k),$=Math.ceil(v*k),V=Math.ceil(b*k),j=U-2*V,X=$-2*V,Z=document.createElement("canvas");Z.width=Math.ceil(m*k),Z.height=Math.ceil(u*k);let oe=Z.getContext("2d"),ye=1e3;for(let J=0;J<O;J++)for(let ae=0;ae<D;ae++){let Ye=l+ae*E,Ce=c+J*S;i.canvasOffset={x:-(Ye-b),y:-(Ce-b)},await mt(ye),ye=300;let ct=await ei.takeScreenshot(f,U,$),tt=await this._loadImage(ct);oe.drawImage(tt,V,V,j,X,ae*j,J*X,j,X)}let ue=await(await new Promise(J=>Z.toBlob(J,"image/png"))).arrayBuffer();return new Uint8Array(ue)}finally{i.zoomFactor=n,i.canvasOffset=o,i.enableBackground(),t?.removeSelection&&r.setSelectedElements(a)}}_loadImage(e){return new Promise((t,i)=>{let r=new Image;r.onload=()=>t(r),r.onerror=i,r.src=e})}}});var la,_d=g(()=>{"use strict";ne();la=class{async search(e,t,i){if(t!=""){let r=e.rootDesignItem.querySelectorAll(t),n=[];for(let o=0;o<r.length;o++){let a=M.GetDesignItem(r[o]);a&&n.push({designItem:a})}return n}return null}}});var ca,bd=g(()=>{"use strict";ca=class{_item;_shouldProvide;constructor(e,t){this._item=e,this._shouldProvide=t||(()=>!0)}shouldProvideContextmenu(e,t,i,r){return this._shouldProvide(e,t,i,r)}provideContextMenuItems(e,t,i,r){return[{...this._item,action:n=>this._item.action?.(n,t,i,r)}]}}});var Fi,ha=g(()=>{"use strict";he();_t();re();Fi=class extends z{_outline;_handles=[];_handleCrossHorizontalLines=[];_handleCrossVerticalLines=[];_activeHandleIndex=null;_baseTransform="";_projectiveTransform="";_targetPoints=[];constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let r=[i.p1,i.p2,i.p3,i.p4];if(r.some(n=>!Number.isFinite(n.x)||!Number.isFinite(n.y))){this.remove();return}if(this._valuesHaveChanges(this.designerCanvas.zoomFactor,...r.flatMap(n=>[n.x,n.y]))){this._outline=this._drawTransformedRect(i,"svg-primary-projective-outline",this._outline),this._outline.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._outline.style.pointerEvents="none";let n=5/this.designerCanvas.zoomFactor,o=n*.55;for(let a=0;a<r.length;a++){let l=a,c=r[a],h=this._handles[a];h?(h=this._drawCircle(c.x,c.y,n,"svg-primary-projective-handle",h),this._handles[a]=h):(h=this._drawCircle(c.x,c.y,n,"svg-primary-projective-handle"),h.addEventListener(C.PointerDown,m=>this._handlePointerEvent(l,m)),h.addEventListener(C.PointerMove,m=>this._handlePointerEvent(l,m)),h.addEventListener(C.PointerUp,m=>this._handlePointerEvent(l,m)),this._handles[a]=h),h.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),h.style.cursor="move";let d=this._handleCrossHorizontalLines[a];d=this._drawLine(c.x-o,c.y,c.x+o,c.y,"svg-primary-projective-handle-cross",d),d.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),d.style.pointerEvents="none",this._handleCrossHorizontalLines[a]=d;let p=this._handleCrossVerticalLines[a];p=this._drawLine(c.x,c.y-o,c.x,c.y+o,"svg-primary-projective-handle-cross",p),p.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),p.style.pointerEvents="none",this._handleCrossVerticalLines[a]=p}}}dispose(){this._activeHandleIndex=null,this._restorePersistedTransform(),this._removeAllOverlays()}_handlePointerEvent(e,t){t.stopPropagation();let i=t.target;switch(t.type){case C.PointerDown:if(!this._startDrag(e))return;i.setPointerCapture(t.pointerId),this._activeHandleIndex=e;break;case C.PointerMove:if(this._activeHandleIndex===e&&t.buttons>0){let r=this._getLocalPointerPoint(t);if(!r)return;this._targetPoints[e]=r,this._applyPreviewTransform()}break;case C.PointerUp:if(this._activeHandleIndex===e){let r=this._getLocalPointerPoint(t);r&&(this._targetPoints[e]=r,this._applyPreviewTransform()),i.releasePointerCapture(t.pointerId),this._commitTransform(),this._activeHandleIndex=null}break}}_startDrag(e){let{baseTransform:t,projectiveTransform:i}=this._parseTransform(this.extendedItem.getStyleFromSheetOrLocal("transform")??"");this._baseTransform=t,this._projectiveTransform=i;let r=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!r)return!1;let n=this.extendedItem.element;return n.style.transform=this._buildTransform(this._baseTransform,""),this._targetPoints=this._convertQuadToLocalPoints(r),this._targetPoints.length!==4||this._targetPoints.some(o=>!Number.isFinite(o.x)||!Number.isFinite(o.y))?(this._restorePersistedTransform(),!1):(n.style.transform=this._buildTransform(this._baseTransform,this._projectiveTransform),this._targetPoints[e]!=null)}_convertQuadToLocalPoints(e){return[e.p1,e.p2,e.p3,e.p4].map(t=>{let i=this.extendedItem.element.convertPointFromNode({x:t.x,y:t.y},this.designerCanvas.canvas);return{x:i.x,y:i.y}})}_getLocalPointerPoint(e){let t=this.extendedItem.element,i=t.style.transform;t.style.transform=this._buildTransform(this._baseTransform,"");let r=this.designerCanvas.getNormalizedEventCoordinates(e),n=t.convertPointFromNode({x:r.x,y:r.y},this.designerCanvas.canvas);return t.style.transform=i,!Number.isFinite(n.x)||!Number.isFinite(n.y)?null:{x:n.x,y:n.y}}_applyPreviewTransform(){let e=this._buildProjectiveTransform(this._targetPoints);e!=null&&(this._projectiveTransform=e,this.extendedItem.element.style.transform=this._buildTransform(this._baseTransform,this._projectiveTransform))}_commitTransform(){let e=this._buildProjectiveTransform(this._targetPoints);e!=null&&(this._projectiveTransform=e);let t=this._buildTransform(this._baseTransform,this._projectiveTransform);t?this.extendedItem.updateStyleInSheetOrLocal("transform",t):this.extendedItem.hasStyle("transform")?this.extendedItem.removeStyle("transform"):this.extendedItem.updateStyleInSheetOrLocal("transform",null),this._restorePersistedTransform()}_restorePersistedTransform(){let e=this.extendedItem.element;this.extendedItem.hasStyle("transform")?e.style.transform=this.extendedItem.getStyle("transform")??"":e.style.transform=""}_buildProjectiveTransform(e){let t=Le(this.extendedItem.element);if(!t.width||!t.height||e.length!==4)return"";let i=[{x:0,y:0},{x:t.width,y:0},{x:t.width,y:t.height},{x:0,y:t.height}];if(this._pointsApproximatelyEqual(e,i))return"";let r=this._createProjectiveMatrix(e,t.width,t.height);if(!r)return null;let n=getComputedStyle(this.extendedItem.element).transformOrigin.split(" "),o={x:parseFloat(n[0])||0,y:parseFloat(n[1])||0},a=new DOMMatrix().translate(-o.x,-o.y).multiply(r).multiply(new DOMMatrix().translate(o.x,o.y));return this._serializeMatrix3d(a)}_createProjectiveMatrix(e,t,i){let[r,n,o,a]=e,l=n.x-o.x,c=a.x-o.x,h=r.x-n.x+o.x-a.x,d=n.y-o.y,p=a.y-o.y,m=r.y-n.y+o.y-a.y,u,f,y,v,b,E;if(Math.abs(h)<1e-8&&Math.abs(m)<1e-8)u=n.x-r.x,f=a.x-r.x,y=n.y-r.y,v=a.y-r.y,b=0,E=0;else{let O=l*p-c*d;if(Math.abs(O)<1e-8)return null;b=(h*p-c*m)/O,E=(l*m-h*d)/O,u=n.x-r.x+b*n.x,f=a.x-r.x+E*a.x,y=n.y-r.y+b*n.y,v=a.y-r.y+E*a.y}let S=new DOMMatrix([u/t,y/t,0,b/t,f/i,v/i,0,E/i,0,0,1,0,r.x,r.y,0,1]);return[S.m11,S.m12,S.m13,S.m14,S.m21,S.m22,S.m23,S.m24,S.m31,S.m32,S.m33,S.m34,S.m41,S.m42,S.m43,S.m44].some(O=>!Number.isFinite(O))?null:S}_serializeMatrix3d(e){return`matrix3d(${[e.m11,e.m12,e.m13,e.m14,e.m21,e.m22,e.m23,e.m24,e.m31,e.m32,e.m33,e.m34,e.m41,e.m42,e.m43,e.m44].map(i=>this._formatMatrixNumber(i)).join(", ")})`}_formatMatrixNumber(e){if(Math.abs(e)<1e-10)return"0";let t=e.toFixed(8);return t.includes(".")&&(t=t.replace(/0+$/,"").replace(/\.$/,"")),t==="-0"?"0":t}_buildTransform(e,t){let i=[];return e?.trim()&&i.push(e.trim()),t?.trim()&&i.push(t.trim()),i.join(" ").trim()}_parseTransform(e){if(!e||e==="none")return{baseTransform:"",projectiveTransform:""};let t=this._splitTransformFunctions(e);if(!t.length)return{baseTransform:e.trim(),projectiveTransform:""};let i=t[t.length-1],r=i.slice(0,i.indexOf("(")).trim().toLowerCase();return r==="matrix"||r==="matrix3d"?{baseTransform:t.slice(0,-1).join(" ").trim(),projectiveTransform:i.trim()}:{baseTransform:e.trim(),projectiveTransform:""}}_splitTransformFunctions(e){let t=[],i=-1,r=0;for(let n=0;n<e.length;n++){let o=e[n];o==="("?r++:o===")"?(r--,r===0&&i!==-1&&(t.push(e.slice(i,n+1).trim()),i=-1)):r===0&&i===-1&&o.trim()&&(i=n)}return!t.length&&e.trim()&&t.push(e.trim()),t}_pointsApproximatelyEqual(e,t){return e.length!==t.length?!1:e.every((i,r)=>{let n=t[r];return Math.abs(i.x-n.x)<.01&&Math.abs(i.y-n.y)<.01})}}});import{css as Hg}from"@node-projects/base-custom-webcomponent";var da,Sd=g(()=>{"use strict";ha();da=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new Fi(e,t,i)}static style=Hg`.svg-primary-projective-handle{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto}.svg-primary-projective-handle-cross{stroke:#3899ec;fill:none;stroke-width:1;stroke-linecap:round;pointer-events:none}.svg-primary-projective-outline{stroke:#3899ec;fill:none;stroke-width:1;stroke-dasharray:4 2}`}});var im={};Rd(im,{createDefaultServiceContainer:()=>em,default:()=>tm});function em(){let s=new Br,e=new nt;return s.register("containerService",e),s.register("containerService",new Ps(e)),s.register("containerService",new Is(e)),s.register("propertyService",new Zo),s.register("propertyService",new jr),s.register("propertyService",new Ur),s.register("propertyService",new Yr),s.register("propertyService",new Xr),s.register("propertyService",new No),s.register("propertyService",new Ln),s.register("propertyService",new Sn),s.register("propertyGroupsService",new ho),s.register("instanceService",new on),s.register("editorTypesService",new bn),s.register("htmlWriterService",new js),s.register("snaplinesProviderService",new ks),s.register("htmlParserService",new Nt),s.register("elementAtPointService",new As),s.register("externalDragDropService",new Ds),s.register("dragDropService",new ko),s.register("copyPasteService",new Os),s.register("modelCommandService",new Vs),s.register("demoProviderService",new Do),s.register("eventsService",new ke),s.register("designItemService",new zi),s.register("deletionService",new na),s.register("miniatureViewService",new sa),s.register("pngCreatorService",new aa),s.register("searchService",new la),s.register("undoService",t=>new xo(t)),s.register("selectionService",t=>new bo(t,!1)),s.register("designItemDocumentPositionService",t=>new Eo(t)),s.designerExtensions.set(P.Permanent,[new ws]),s.designerExtensions.set(P.PrimarySelection,[new Ct(new Io,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement)]),s.designerExtensions.set(P.Selection,[new Ct(new es,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement)]),s.designerExtensions.set(P.OnlyOneItemSelected,[new Ct(new Vn,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement),new Ct(new qo,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement),new Ct(new Un,(t,i)=>i.activeTool instanceof Vi||i.activeTool instanceof Ri,!0),new Ct(new Yo,(t,i)=>i.activeTool instanceof Vi||i.activeTool instanceof Ri,!0),new Xn,new Oo,new Oi(new Ko,new is(!0)),new Wn(!0),new ss]),s.designerExtensions.set(P.MultipleItemsSelected,[new as]),s.designerExtensions.set(P.PrimarySelectionRefreshed,[new Wo,new Ro,new Fo,new Ho]),s.designerExtensions.set(P.PrimarySelectionAndCanBeEntered,[new Zt,new Co,new Er]),s.designerExtensions.set(P.PrimarySelectionContainerAndCanBeEntered,[new Zt("lightgray","#8080802b"),new Er]),s.designerExtensions.set(P.MouseOver,[new $n]),s.designerExtensions.set(P.Placement,[new mo]),s.designerExtensions.set(P.ContainerDrag,[new xs]),s.designerExtensions.set(P.ContainerDragOverAndCanBeEntered,[new Oi(new Zt,new wr),new bs]),s.designerExtensions.set(P.ContainerExternalDragOverAndCanBeEntered,[new Oi(new Zt,new wr)]),s.designerExtensions.set(P.Doubleclick,[new Ts]),s.designerExtensions.set(P.ManualApplied,[new da]),s.designerPointerExtensions.push(),s.designerTools.set(K.Pointer,new Zn),s.designerTools.set(K.DrawSelection,new fr),s.designerTools.set(K.DrawPath,new qn),s.designerTools.set(K.DrawRect,new Fs),s.designerTools.set(K.DrawEllipsis,new Bs),s.designerTools.set(K.DrawLine,new Hs),s.designerTools.set(K.Zoom,new ls),s.designerTools.set(K.Pan,new cs),s.designerTools.set(K.RectangleSelector,new fr),s.designerTools.set(K.MagicWandSelector,new us),s.designerTools.set(K.PickColor,new fs),s.designerTools.set(K.Text,new ys),s.designerTools.set(K.DrawElementTool,To),s.designerTools.set(K.Margin,new Vi),s.designerTools.set(K.Padding,new Ri),s.designViewConfigButtons.push(new wt(20),new zs,new go,new wt(10),new yo,new wt(10),new qr,new wt(10),new jo,new wt(30),new Mo,new wt(30),new ea),s.designViewToolbarButtons.push(new qs,new at(22),new io,new at(22),new Ir("Margin",w+"images/tools/Margin.svg"),new at(22),new Ir("Padding",w+"images/tools/Padding.svg"),new at(22),new Js,new at(22),new eo,new at(22),new to,new at(22),new Po),s.designerContextMenuExtensions=[new Jt("edit",new hs,new Ie,new ds),new Ie,new Jt("modify",new Zs,new Ie,new ps,new Ie,new $o,new Ie,new ca({title:"3D transform",action:(t,i,r)=>{i.extensionManager.removeExtensions([r],!1,P.PrimarySelection),i.extensionManager.removeExtensions([r],!1,P.OnlyOneItemSelected),i.extensionManager.applyExtensionInstance(r,new Fi(i.extensionManager,i,r),P.OnlyOneItemSelected)}})),new Ie,new Jt("view",new So,new $s),new Ie,new Jt("force",new Jo),new Ie,new ms,new Ys,new Us,new Ie,new Qs,new Ie,new Es,new ta],s}var tm,pa=g(()=>{"use strict";Ha();Ga();Wa();ja();Ua();il();_l();bl();wi();hr();Ml();$e();Vl();Kl();Zl();ql();ec();gt();ic();rc();sc();ac();cc();dc();pc();mc();uc();gc();yc();xc();_c();bc();Sc();Ec();Ac();kc();Cs();Mc();Nc();Lc();Oc();Vc();Rc();zc();Bc();Gc();Wc();Uc();Yc();Xc();Kc();Zc();Qc();qc();Xs();Jc();eh();th();rh();nh();sh();ah();lh();hh();ph();xh();bh();fo();Ch();Eh();Ah();Ih();en();kh();Th();vr();Mh();Nh();Oh();Rh();zh();Ar();Fh();Bh();Hh();Gh();jh();Uh();Xh();$h();Qh();qh();ed();td();rd();sd();od();ad();cd();hd();dd();pd();md();ud();se();fd();ia();yd();vd();xd();_d();bd();ha();Sd();tm=em});import{BaseCustomWebComponentLazyAppend as Zm,css as Qm,TypedEvent as qm,DomHelper as Fd}from"@node-projects/base-custom-webcomponent";var dt=class extends Zm{_selectedIndex=-1;_panels;_headerDiv;_moreDiv;_moreContainer;_elementMap=new WeakMap;_firstConnect=!0;static style=Qm`:host{height:100%}.outer{display:flex;flex-direction:column;height:100%;position:relative;overflow:hidden}.header{display:inline-flex;user-select:none;-webkit-user-select:none;flex-direction:row;cursor:pointer;height:30px;width:calc(100% - 30px);background-color:var(--dark-grey,#232733);overflow-x:auto;scrollbar-width:none}.header-more{right:0;top:0;width:30px;position:absolute;color:#fff;display:flex;justify-content:center;align-items:center;font-family:math}.header-more:hover{background:var(--light-grey,#383f52)}.more-container{z-index:1;user-select:none;-webkit-user-select:none;background-color:var(--dark-grey,#232733);right:0;top:30px;position:absolute;color:#fff;display:flex;flex-direction:column;align-items:flex-start;cursor:pointer}.more-container .tab-header{width:100%}.header::-webkit-scrollbar{display:none}.tab-header{height:30px;font-family:Arial;display:flex;justify-content:center;align-items:center;text-transform:uppercase;box-sizing:content-box;padding-left:5px;padding-right:5px;color:#fff;font-size:12px;font-weight:500;line-height:1.5;letter-spacing:1px;white-space:nowrap}.tab-header:hover{background:var(--light-grey,#383f52)}.selected{background:var(--medium-grey,#2f3545);box-shadow:inset 0 3px 0 var(--highlight-pink,#e91e63)}.panels{z-index:0;background:var(--medium-grey,#2f3545);height:calc(100% - 30px)}`;constructor(){super();let e=document.createElement("div");e.className="outer",this.shadowRoot.appendChild(e),this._headerDiv=document.createElement("div"),this._headerDiv.className="header",e.appendChild(this._headerDiv),this._moreDiv=document.createElement("div"),this._moreDiv.className="header header-more",this._moreDiv.innerText="<<",e.appendChild(this._moreDiv),this._moreContainer=document.createElement("div"),this._moreContainer.className="more-container",this._moreContainer.style.visibility="hidden",e.appendChild(this._moreContainer),this._moreDiv.onclick=()=>{this._moreContainer.children.length&&this._moreContainer.style.visibility=="hidden"?this._moreContainer.style.visibility="":this._moreContainer.style.visibility="hidden"},this._panels=document.createElement("div"),this._panels.className="panels",e.appendChild(this._panels);let t=document.createElement("slot");t.name="panels",this._panels.appendChild(t),new ResizeObserver(r=>{this._showHideHeaderItems()}).observe(this._headerDiv)}_showHideHeaderItems(){this._moreContainer.style.visibility="hidden";let e=0;Fd.removeAllChildnodes(this._moreContainer),Fd.removeAllChildnodes(this._headerDiv);let t=!0;for(let i of this.children)if(i.style.display!="none"){let r=i;!this._elementMap.has(r)&&t&&(this.refreshItems(),t=!1);let n=this._elementMap.get(r);this._moreContainer.appendChild(n),(this._headerDiv.children.length==0||e+n.clientWidth/2<this._headerDiv.clientWidth)&&(this._headerDiv.appendChild(n),e+=n.clientWidth)}}connectedCallback(){if(this._firstConnect){this.refreshItems(),this._firstConnect=!1;let e=this.getAttribute("selected-index");e&&(this.selectedIndex=parseInt(e))}}get selectedIndex(){return this._firstConnect?-1:this._selectedIndex}set selectedIndex(e){let t=this._selectedIndex;this._selectedIndex=e,this.children.length&&t!=this._selectedIndex&&this._selectedIndexChanged(t)}refreshItems(){this._headerDiv.innerHTML="";let e=0;for(let t of this.children)if(t.style.display!="none"){let i=t,r=document.createElement("div");r.innerText=i.dataset.title||i.title,r.title=i.dataset.title||i.title,r.className="tab-header";let n=e;r.onpointerdown=()=>{let o=this._selectedIndex;this._selectedIndex=n,this._headerDiv.children.length&&this._selectedIndexChanged(o,!0),this._moreContainer.style.visibility="hidden"},this._elementMap.set(i,r),this._headerDiv.appendChild(r),e++}this._showHideHeaderItems(),this._selectedIndexChanged()}_selectedIndexChanged(e,t=!1){let i=-1;for(let r of this.children)if(r.style.display!="none")if(i++,i==this._selectedIndex){r.slot!="panels"&&(r.slot="panels");let n=this._elementMap.get(r);n&&(n.classList.add("selected"),r.activated&&r.activated())}else{r.removeAttribute("slot");let n=this._elementMap.get(r);n&&n.classList.remove("selected")}this.onSelectedTabChanged.emit({newIndex:this._selectedIndex,oldIndex:e,changedViaClick:t}),this._moreContainer.style.visibility="hidden"}onSelectedTabChanged=new qm};customElements.define("node-projects-designer-tab-control",dt);Va();import{css as ru,html as nu}from"@node-projects/base-custom-webcomponent";var Ra=class{host;root;trough;button1;button2;thumb;isConnected=!1;thumbSize=.3;value=0;orientation=!1;clickRepeatDelay=300;clickRepeatInterval=100;defaultThumbMinSize=25;dragStartPos;dragStartValue;eventTimeoutId;pointerCaptureId;pointerCaptureElement;thumbDragging;button1Active;button2Active;troughActive;constructor(e){this.host=e,e.attachShadow({mode:"open"});let t=e.shadowRoot;t.appendChild(au.content.cloneNode(!0)),t.adoptedStyleSheets=[ou],this.root=t.querySelector("#root"),this.trough=t.querySelector("#trough"),this.button1=t.querySelector("#button1"),this.button2=t.querySelector("#button2"),this.thumb=t.querySelector("#thumb"),this.trough.addEventListener("pointerdown",this.onTroughPointerDown),this.trough.addEventListener("pointerup",this.onPointerUp),this.trough.addEventListener("pointercancel",this.onPointerUp),this.button1.addEventListener("pointerdown",i=>this.onButtonPointerDown(i,1)),this.button1.addEventListener("pointerup",this.onPointerUp),this.button1.addEventListener("pointercancel",this.onPointerUp),this.button1.addEventListener("contextmenu",i=>i.preventDefault()),this.button2.addEventListener("pointerdown",i=>this.onButtonPointerDown(i,2)),this.button2.addEventListener("pointerup",this.onPointerUp),this.button2.addEventListener("pointercancel",this.onPointerUp),this.button2.addEventListener("contextmenu",i=>i.preventDefault()),this.thumb.addEventListener("pointerdown",this.onThumbPointerDown),this.thumb.addEventListener("pointerup",this.onPointerUp),this.thumb.addEventListener("pointercancel",this.onPointerUp),this.thumb.addEventListener("pointermove",this.onThumbPointerMove),this.resetInteractionState()}resetInteractionState(){this.thumbDragging=!1,this.button1Active=!1,this.button2Active=!1,this.troughActive=!1}connectedCallback(){this.isConnected=!0,this.resetInteractionState(),this.updateLayout(),this.updateStyle()}disconnectedCallback(){this.isConnected=!1,this.resetInteractionState(),this.stopEventRepetition(),this.stopPointerCapture()}updateLayout(){this.isConnected&&(this.root.classList.toggle("horizontal",!this.orientation),this.root.classList.toggle("vertical",this.orientation),this.thumb.style.display=this.thumbSize==0?"none":"",this.thumb.style.height=this.orientation?Vr(this.getEffectiveThumbSize()):"",this.thumb.style.width=this.orientation?"":Vr(this.getEffectiveThumbSize()),this.thumb.style.top="",this.thumb.style.left="",this.updateThumbPosition())}updateStyle(){this.isConnected&&(this.thumb.classList.toggle("active",this.thumbDragging),this.button1.classList.toggle("active",this.button1Active),this.button2.classList.toggle("active",this.button2Active),this.troughActive)}updateThumbPosition(){let e=(1-this.getEffectiveThumbSize())*this.value;this.orientation?this.thumb.style.top=Vr(e):this.thumb.style.left=Vr(e)}getThroughSize(){return this.orientation?this.trough.clientHeight:this.trough.clientWidth}computeThumbMoveValue(e){let t=this.getThroughSize()*(1-this.getEffectiveThumbSize());return t<su?0:e/t}setThumbSize(e){let t=Math.max(0,Math.min(1,e));t!=this.thumbSize&&(this.thumbSize=t,this.updateLayout())}getThumbMinSize(){let e=this.getCssVar("--plain-scrollbar-thumb-min-size");if(!e)return this.defaultThumbMinSize;let t=cu(e);return t||this.defaultThumbMinSize}getEffectiveThumbSize(){let e=this.getThumbMinSize(),t=this.getThroughSize();if(!t)return this.thumbSize;let i=Math.min(1,e/t);return Math.max(i,this.thumbSize)}setValue(e){let t=Math.max(0,Math.min(1,e));return t==this.value?!1:(this.value=isNaN(t)?0:t,this.updateThumbPosition(),!0)}setOrientation(e){return e==this.orientation?!1:(this.orientation=e,this.updateLayout(),!0)}getCssVar(e){let t=getComputedStyle(this.root).getPropertyValue(e);return t?t.trim():null}fireEvent(e){let t=new CustomEvent("scrollbar-input",{detail:e});this.host.dispatchEvent(t)}fireEventRepeatedly(e,t,i,r=0){this.stopEventRepetition(),this.fireEvent(e);let n=r==0?t:i,o=()=>this.fireEventRepeatedly(e,t,i,r+1);this.eventTimeoutId=setTimeout(o,n)}stopEventRepetition(){this.eventTimeoutId&&(clearTimeout(this.eventTimeoutId),this.eventTimeoutId=void 0)}startPointerCapture(e,t){this.stopPointerCapture(),e.setPointerCapture(t),this.pointerCaptureElement=e,this.pointerCaptureId=t}stopPointerCapture(){this.pointerCaptureId&&(this.pointerCaptureElement.releasePointerCapture(this.pointerCaptureId),this.pointerCaptureId=void 0)}onTroughPointerDown=e=>{if(!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0)return;let t=this.trough.getBoundingClientRect(),i=this.orientation?e.clientY-t.top:e.clientX-t.left,r=(this.orientation?t.height:t.width)*(1-this.getEffectiveThumbSize())*this.value,o=i>r?"incrementLarge":"decrementLarge";this.troughActive=!0,e.preventDefault(),this.startPointerCapture(this.trough,e.pointerId),this.fireEventRepeatedly(o,this.clickRepeatDelay,this.clickRepeatInterval)};onButtonPointerDown=(e,t)=>{if(!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0)return;switch(t){case 1:this.button1Active=!0;break;case 2:this.button2Active=!0;break}let i=t==1?"decrementSmall":"incrementSmall";this.updateStyle(),e.preventDefault();let r=t==1?this.button1:this.button2;this.startPointerCapture(r,e.pointerId),this.fireEventRepeatedly(i,this.clickRepeatDelay,this.clickRepeatInterval)};onThumbPointerDown=e=>{!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0||(this.dragStartPos=this.orientation?e.clientY:e.clientX,this.dragStartValue=this.value,this.thumbDragging=!0,this.updateStyle(),e.preventDefault(),this.startPointerCapture(this.thumb,e.pointerId))};onThumbPointerMove=e=>{if(!this.isConnected||!e.isPrimary||!this.thumbDragging)return;let i=(this.orientation?e.clientY:e.clientX)-this.dragStartPos,r=this.computeThumbMoveValue(i),n=this.dragStartValue+r;e.preventDefault(),this.setValue(n)&&this.fireEvent("value")};onPointerUp=e=>{this.isConnected&&e.isPrimary&&(this.resetInteractionState(),this.updateStyle(),this.stopEventRepetition(),this.stopPointerCapture(),e.preventDefault())}},za=class extends HTMLElement{widget;constructor(){super(),this.widget=new Ra(this);let e=parseFloat(this.getAttribute("value"));if(isNaN(e)||(this.widget.value=e),this.hasOwnProperty("value")){let t=this.value;delete this.value,isNaN(t)||(this.widget.value=t)}}connectedCallback(){this.widget.connectedCallback()}disconnectedCallback(){this.widget.disconnectedCallback()}get thumbSize(){return this.widget.thumbSize}set thumbSize(e){this.widget.setThumbSize(e)}get value(){return this.widget.value}set value(e){this.widget.setValue(e)}get orientation(){return lu(this.widget.orientation)}set orientation(e){this.widget.setOrientation(jd(e))&&this.setAttribute("orientation",this.orientation)}get orientationBoolean(){return this.widget.orientation}static get observedAttributes(){return["orientation"]}attributeChangedCallback(e,t,i){switch(e){case"orientation":{i&&this.widget.setOrientation(jd(i));break}}}},su=1e-9,At="var(--plain-scrollbar-button-size, 13px)",Or='<path d="M -60 30 h 120 L 0 -30 z" stroke-width="0"/>',ou=ru`:host{display:block;contain:content;background-color:#f8f8f8;border-style:solid;border-width:1px;border-color:#ddd}#root{touch-action:none;user-select:none;box-sizing:border-box;position:relative;width:100%;height:100%}#trough{position:absolute}#root.vertical #trough{width:100%;top:${At};bottom:${At}}#root.horizontal #trough{height:100%;left:${At};right:${At}}#thumb{box-sizing:border-box;position:absolute;width:100%;height:100%;background-color:var(--plain-scrollbar-thumb-background-color,#f0f0f0);border-style:solid;border-width:var(--plain-scrollbar-thumb-border-width,1px);border-color:var(--plain-scrollbar-thumb-border-color,#b8b8b8);border-radius:var(--plain-scrollbar-thumb-border-radius,4px);transition:background-color 50ms linear}#thumb:hover{background-color:var(--plain-scrollbar-thumb-background-color-hover,#e0e0e0)}#thumb.active{background-color:var(--plain-scrollbar-thumb-background-color-active,silver)}#button1,#button2{box-sizing:border-box;position:absolute;display:block;fill:var(--plain-scrollbar-button-color,#606060)}#root.vertical #button1{top:0;width:100%;height:${At}}#root.vertical #button2{bottom:0;width:100%;height:${At}}#root.horizontal #button1{left:0;height:100%;width:${At}}#root.horizontal #button2{right:0;height:100%;width:${At}}#downArrow,#leftArrow,#rightArrow,#upArrow{display:none;width:100%;height:100%}#root.vertical #downArrow,#root.vertical #upArrow{display:block}#root.horizontal #leftArrow,#root.horizontal #rightArrow{display:block}#button1:hover,#button2:hover{background-color:var(--plain-scrollbar-button-color-hover,#e0e0e0)}#button1.active,#button2.active{background-color:var(--plain-scrollbar-button-color-active,silver)}`,au=nu`<div id="root" part="root"><div id="button1" part="button button1"><svg id="upArrow" part="arrow upArrow" viewBox="-100 -100 200 200">${Or}</svg> <svg id="leftArrow" part="arrow leftArrow" viewBox="-100 -100 200 200"><g transform="rotate(-90)">${Or}</g></svg></div><div id="trough" part="trough"><div id="thumb" part="thumb"></div></div><div id="button2" part="button button2"><svg id="downArrow" part="arrow downArrow" viewBox="-100 -100 200 200"><g transform="rotate(180)">${Or}</g></svg> <svg id="rightArrow" part="arrow rightArrow" viewBox="-100 -100 200 200"><g transform="rotate(90)">${Or}</g></svg></div></div>`;function lu(s){return s?"vertical":"horizontal"}function jd(s){switch(s){case"vertical":return!0;case"horizontal":return!1;default:throw new Error('Invalid orientation value "'+s+'".')}}function Vr(s){return(s*100).toFixed(3)+"%"}function cu(s){if(!(!s||!s.endsWith("px")))return Number(s.substring(0,s.length-2))}customElements.define("node-projects-plain-scrollbar",za);pa();Ka();Fe();Gs();var ma=class{_originalCustomElementsRegistry;_newElements=[];constructor(){this._originalCustomElementsRegistry=window.customElements;let e={},t=this._originalCustomElementsRegistry,i=this._newElements;e.define=function(r,n,o){i.push(r),t.define(r,n,o)},e.get=function(r){return t.get(r)},e.upgrade=function(r){return t.upgrade(r)},e.whenDefined=function(r){return t.whenDefined(r)},Object.defineProperty(window,"customElements",{get(){return e}})}dispose(){let e=this._originalCustomElementsRegistry;Object.defineProperty(window,"customElements",{get(){return e}})}getNewElements(){let e=this._newElements;return this._newElements=[],e}};le();Za();Qe();function pM(s,e,t){let i=e.getRootNode(),r=document.createElement("div");return r.popover="auto",typeof s=="string"?r.innerHTML=s:r.append(s),i instanceof ShadowRoot?i.appendChild(r):document.body.appendChild(r),Object.assign(r.style,{positionArea:"right bottom",positionTryFallbacks:`
6
6
  flip-block,
7
7
  flip-inline,
8
8
  top,
9
9
  bottom,
10
10
  left,
11
11
  right
12
- `}),r.addEventListener("toggle",()=>{r.matches(":popover-open")||(r.remove(),t?.())},{once:!0}),r.showPopover({source:e}),()=>{r.matches(":popover-open")&&r.hidePopover(),r.remove(),t?.()}}oa();Os();var ua=class s{static addTouchEvents(e){return new s(e)}constructor(e){this._target=e,e.addEventListener("touchstart",t=>this._touchStart(t)),e.addEventListener("touchmove",t=>this._touchMove(t)),e.addEventListener("touchend",t=>this._touchEnd(t)),e.addEventListener("touchcancel",t=>this._touchEnd(t))}_target;_started;_startX_0;_startY_0;_lastZoom;_lastPanDistanceX;_lastPanDistanceY;_startZoomDistance;multitouchEventActive;_mode=null;_touchStart(e){e.touches.length===2?(this.multitouchEventActive=!0,this._mode=null,this._started=!0,this._startX_0=e.touches[0].screenX,this._startY_0=e.touches[0].screenY,this._lastZoom=0,this._lastPanDistanceX=0,this._lastPanDistanceY=0,this._startZoomDistance=Math.hypot(e.touches[0].screenX-e.touches[1].screenX,e.touches[0].screenY-e.touches[1].screenY)):(this.multitouchEventActive=!1,this._started=!1)}_touchMove(e){if(e.touches.length!==2&&(this.multitouchEventActive=!1,this._started=!1),this._started){e.preventDefault();let t=Math.hypot(e.touches[0].screenX-e.touches[1].screenX,e.touches[0].screenY-e.touches[1].screenY),i=this._startX_0-e.touches[0].screenX,r=this._startY_0-e.touches[0].screenY,n=i-this._lastPanDistanceX,o=r-this._lastPanDistanceY;this._lastPanDistanceX=i,this._lastPanDistanceY=r;let a=t-this._startZoomDistance,l=a-this._lastZoom;if(this._lastZoom=a,this._lastZoom,this._mode||(Math.abs(a)>10&&(this._mode="zoom"),(Math.abs(i)>10||Math.abs(r)>10)&&(this._mode="pan")),this._mode){if(this._mode=="zoom"){let c=new CustomEvent("zoom",{detail:{factor:a,diff:l}});this._target.dispatchEvent(c)}else if(this._mode=="pan"){let c=new CustomEvent("pan",{detail:{x:i,deltaX:n,y:r,deltaY:o}});this._target.dispatchEvent(c)}}}}_touchEnd(e){this.multitouchEventActive=!1,e.touches.length}};nl();Mt();Ne();on();gc();var fa=class{_name;get name(){return this._name}_elementList;getElements(){return Promise.resolve(this._elementList)}constructor(e,t){this._name=e,this._elementList=[],t.elements.forEach(i=>{this.isIElementDefintion(i)?this._elementList.push(i):this._elementList.push({tag:i})})}isIElementDefintion(e){return e!=null&&e.tag!=null}};Ne();var ga=class{_name;get name(){return this._name}_importPrefix;_elementList;_resolveStored;_rejectStored;constructor(e,t,i){this._name=e,this._importPrefix=t,this._parseManifest(i)}_parseManifest(e){this._elementList=[];for(let t of e.modules){for(let i of t.exports)if(i.kind=="custom-element-definition"){let r={tag:i.name,import:jt(this._importPrefix,"/")+"/"+we(t.path,"/"),defaultWidth:"200px",defaultHeight:"200px",className:i.declaration.name};this._elementList.push(r)}for(let i of t.declarations)if(i.tagName){let r={tag:i.tagName,import:jt(this._importPrefix,"/")+"/"+we(t.path,"/"),defaultWidth:"200px",defaultHeight:"200px",className:i.name};this._elementList.push(r)}this._resolveStored&&(this._resolveStored.forEach(i=>i(this._elementList)),this._resolveStored=null,this._rejectStored=null)}}async getElements(){return this._elementList?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}};Ke();fe();ue();Me();var Bi=class s extends ee{getRefreshMode(e){return G.full}_name;get name(){return this._name}_propertiesList;constructor(e,t,i){super(i),this._name=e,this._parseManifest(t)}_parseManifest(e){this._propertiesList={};let t=[];for(let i of e.modules)i.declarations&&t.push(...i.declarations);for(let i of e.modules)for(let r of i.exports)if(r.kind=="custom-element-definition"){let n=[],o=t.find(a=>a.name==r.declaration.name);if(o){if(o.members){for(let a of o.members)if(a.kind=="field"&&a.privacy!=="private"&&a.privacy!=="protected"){let l=x.property;o.attributes&&(l=o.attributes.find(h=>h.fieldName==a.name)!=null?x.propertyAndAttribute:x.property);let c=s.manifestClassPropertyTypeToEditorPropertyType(a.type?.text,a.type?.editor);a.name&&n.push({name:a.name,service:this,propertyType:l,type:c[0],values:c[1],description:a.description})}this._propertiesList[r.name]=n}}else console.warn("declaration for "+r.declaration.name+" not found",e)}}static manifestClassPropertyTypeToEditorPropertyType(e,t){if(t&&t.toLowerCase()==="color")return["color"];if(e){if(e.toLowerCase()==="boolean")return["boolean"];if(e.toLowerCase()==="number")return["number"];if(e.toLowerCase()==="string")return["string"];if(e.startsWith("'")&&e.includes("|"))return["list",e.split("|").map(r=>r.trim()).map(r=>r.substring(1,r.length-1))]}return[e]}isHandledElement(e){return this._propertiesList[e.name]!=null}async getProperties(e){return this._propertiesList[e.name]}async getProperty(e,t){return this._propertiesList[e.name].find(i=>i.name==t)}getPropertyTarget(e,t){return this._propertiesList[e.name].find(i=>i.name==t.name).propertyType==x.attribute?L.attribute:L.property}getUnsetValue(e,t){return e[0].element[t.propertyName??t.name]}};Ne();var em=class s{static registryPatchedTohandleErrors;static packageHacks;_packageSource;_dependecies=new Map;constructor(e="//cdn.jsdelivr.net/npm/"){this._packageSource=e,s.patchCustomElementsRegistryToHandleErrors()}static patchCustomElementsRegistryToHandleErrors(){if(!s.registryPatchedTohandleErrors){s.registryPatchedTohandleErrors=!0;let e=window.customElements,t={};t.define=function(i,r,n){try{e.define(i,r,n)}catch(o){console.warn(o)}},t.get=function(i){return e.get(i)},t.upgrade=function(i){return e.upgrade(i)},t.whenDefined=function(i){return e.whenDefined(i)},Object.defineProperty(window,"customElements",{get(){return t}})}}async loadNpmPackage(e,t,i,r,n){s.packageHacks||(s.packageHacks=(await import("./NpmPackageHacks.json",{assert:{type:"json"}})).default);let o=window.location.protocol+this._packageSource+e+"/",a=o+"package.json";n&&n(e+": loading package.json");let c=await(await fetch(a)).json();this.addToImportmap(o,c);let h=[];if(c.dependencies)for(let y in c.dependencies)h.push(this.loadDependency(y,c.dependencies[y]));await Promise.all(h);let d=o+"custom-elements.json",p=o;if(c.customElements&&(d=o+jt(c.customElements,"/"),d.includes("/"))){let y=d.lastIndexOf("/");p=d.substring(0,y+1)}let m=o+"web-component-designer.json";c.webComponentDesigner&&(m=o+we(c.webComponentDesigner,"/")),n&&n(e+": loading custom-elements.json");let u=await fetch(d);if(!u.ok&&c.homepage)try{let v="https://raw.githubusercontent.com/"+new URL(c.homepage).pathname+"/master/custom-elements.json";u=await fetch(v),console.warn("custom-elements.json was missing from npm package, but was loaded from github as a fallback.")}catch(y){console.warn("github custom elments json fallback",y)}if(t&&fetch(m).then(async y=>{if(y.ok){let v=await y.json();if(v.services)for(let b in v.services)for(let E of v.services[b]){E.startsWith("./")&&(E=E.substring(2));let S=(await importShim(o+E)).default;t.register(b,new S)}}}),u.ok){let y=await u.json(),v=new ga(c.name,p,y);if(t&&t.register("elementsService",v),t){let b=new Bi(c.name,y);t.register("propertyService",b)}if(r)for(let b of await v.getElements())importShim(b.import);t&&i&&i.loadControls(t,t.elementsServices),s.packageHacks[e]?.import&&import(s.packageHacks[e]?.import),s.packageHacks[e]?.script&&import(URL.createObjectURL(new Blob([s.packageHacks[e]?.script],{type:"application/javascript"})))}else{console.warn("npm package: "+e+" - no custom-elements.json found, only loading javascript module");let y=new ma;c.module?await importShim(o+we(c.module,"/")):c.main?await importShim(o+we(c.main,"/")):c.unpkg?await importShim(o+we(c.unpkg,"/")):console.warn("npm package: "+e+" - no entry point in package found."),s.packageHacks[e]?.import&&await import(s.packageHacks[e]?.import),s.packageHacks[e]?.script&&await import(URL.createObjectURL(new Blob([s.packageHacks[e]?.script],{type:"application/javascript"})));let v=y.getNewElements();if(v.length>0&&t&&i){let b={elements:v},E=new fa(e,b);t.register("elementsService",E),i.loadControls(t,t.elementsServices)}y.dispose()}n&&n(e+": done");let f={};return s.packageHacks[e]?.html&&(f.html=(s.packageHacks[e]?.html).replaceAll("${baseUrl}",o)),s.packageHacks[e]?.style&&(f.style=(s.packageHacks[e]?.style).replaceAll("${baseUrl}",o)),f}async loadDependency(e,t,i){if(this._dependecies.has(e))return;if(this._dependecies.set(e,!0),e.startsWith("@types")){console.warn("ignoring wrong dependency: ",e);return}i&&i(e+": loading dependency: "+e);let r=window.location.protocol+this._packageSource+e+"/",n=r+"package.json",a=await(await fetch(n)).json(),l=[];if(a.dependencies)for(let c in a.dependencies)l.push(this.loadDependency(c,a.dependencies[c]));await Promise.all(l),this.addToImportmap(r,a)}async addToImportmap(e,t){let i=importShim.getImportMap().imports,r={imports:{},scopes:{}};if(!i.hasOwnProperty(t.name)){if(t.exports){let o=c=>c?.browser?c.browser:c?.import?c.import:c?.module?c.module:c?.default?c.default:c?.node,a=c=>{let h=o(c);return typeof h!="string"&&(h=o(h)),typeof h!="string"&&(h=o(h)),typeof h!="string"&&(h=null),h},l=a(t.exports);l?r.imports[t.name]=e+we(we(l,"."),"/"):(l=a(t.exports?.["."]))&&(r.imports[t.name]=e+we(we(l,"."),"/"))}let n=t.main;if(t.module&&(n=t.module),t.unpkg&&!n&&(n=t.unpkg),r.imports[t.name]||(n?r.imports[t.name]=e+we(we(n,"."),"/"):console.warn("package: "+e+"no main import found")),r.imports[t.name+"/"]=e,s.packageHacks[t.name]?.map)for(let o in s.packageHacks[t.name]?.map)r.imports[o]=e+s.packageHacks[t.name].map[o];importShim.addImportMap(r)}}};Pe();wc();ns();ne();var Dr;(function(s){s.oneWay="oneWay",s.twoWay="twoWay"})(Dr||(Dr={}));Ke();q();var tm;(function(s){s.undefined="undefined",s.folder="folder",s.boolean="boolean",s.number="number",s.string="string",s.date="date",s.color="color",s.object="object"})(tm||(tm={}));Ke();_e();var im=class s{static type="base-custom-webcomponent-binding";getBindings(e){let t=null;for(let i of e.attributes()){let r=i[0],n=i[1];if((n.startsWith("[[")||n.startsWith("{{"))&&(n.endsWith("}}")||n.endsWith("]]"))){t||(t=[]);let o={rawName:r,rawValue:n,service:this};i[0]==="bcw:visible"?(o.targetName="visibility",o.target=L.css,o.expression=n.substring(2,n.length-2)):i[0].startsWith("css:")?(o.targetName=r.substring(4),o.target=L.css,o.expression=n.substring(2,n.length-2)):i[0].startsWith("class:")?(o.targetName=r.substring(4),o.target=L.class,o.expression=n.substring(2,n.length-2)):i[0].startsWith("$")?(o.targetName=r.substring(1),o.target=L.attribute,o.expression=n.substring(2,n.length-2)):i[0].startsWith("@")?(o.targetName=r.substring(1),o.target=L.event,o.expression=n.substring(2,n.length-2)):i[0].startsWith(".")?(o.targetName=z.dashToCamelCase(r.substring(1)),o.target=L.explicitProperty,o.expression=n.substring(2,n.length-2)):(o.targetName=z.dashToCamelCase(r),o.target=L.property,o.expression=n.substring(2,n.length-2)),o.type=s.type,o.targetName=o.targetName,o.bindableObjectNames=[n.substring(2,n.length-2)],t.push(o)}}return t}setBinding(e,t){if(t.type!==s.type)return!1;let i="";switch(t.target){case L.explicitProperty:i+=".";break;case L.css:i+="css:";break;case L.class:i+="class";break;case L.attribute:i+="$";break;case L.event:i+="@";break}i+=t.targetName;let r=(t.mode==Dr.oneWay?"[[":"{{")+t.expression+(t.mode==Dr.oneWay?"]]":"}}");return e.setAttribute(i,r),!0}clearBinding(e,t,i){return!0}};Ze();bl();Pe();$e();Qe();Fe();wi();ce();var ya=class{serviceForContainer(e,t,i){return i!=null&&i.getComputedStyle()?.position=="absolute"?!0:!(t.display==="grid"||t.display==="inline-grid"||t.display==="flex"||t.display==="inline-flex")}isEnterableContainer(e){return!(Q.IsSelfClosingElement(e.element.localName)||!e.isRootItem&&e.element.shadowRoot&&e.element.shadowRoot.querySelector("slot")==null)}canEnter(e,t){return!(e.instanceServiceContainer.designerCanvas.readOnly||!this.isEnterableContainer(e)||!t.every(i=>!i.element.contains(e.element)&&i!==e))}canLeave(e,t){return!0}getElementOffset(e,t){return e.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(e.element)}calculateTrack(e,t,i,r,n,o){let a=n.x-i.x,l=n.y-i.y;if(!W(e)){if(t.alignOnGrid){let c=Mn(o,"position");c.x=c.x%t.gridSize,c.y=c.y%t.gridSize,a=Math.round(a/t.gridSize)*t.gridSize-c.x,l=Math.round(l/t.gridSize)*t.gridSize-c.y}else if(t.alignOnSnap){let c=Y(o.element),h=t.snapLines.snapToPosition({x:n.x-r.x,y:n.y-r.y},{width:c.width/t.scaleFactor,height:c.height/t.scaleFactor},{x:a>0?1:-1,y:l>0?1:-1});h.x!==null?a=h.x-Math.round(i.x)+Math.round(r.x):a=Math.round(a),h.y!==null?l=h.y-Math.round(i.y)+Math.round(r.y):l=Math.round(l)}}return{x:a,y:l}}placePoint(e,t,i,r,n,o,a){let l=o.x,c=o.y;if(!W(e)){if(t.alignOnGrid)l=Math.round(l/t.gridSize)*t.gridSize,c=Math.round(c/t.gridSize)*t.gridSize;else if(t.alignOnSnap){let h=t.snapLines.snapToPosition({x:o.x-n.x,y:o.y-n.y},null,{x:l>0?1:-1,y:c>0?1:-1});h.x!==null?l=h.x:l=Math.round(l),h.y!==null?c=h.y:c=Math.round(c)}}return{x:l,y:c}}startPlace(e,t,i,r,n,o,a){}place(e,t,i,r,n,o,a){let l=this.calculateTrack(e,t,r,n,o,a[0]);e.shiftKey&&(l=ft({x:0,y:0},l,90));let c=he(Il(a));for(let h of c){let d=h.instanceServiceContainer.designerCanvas.canvas,p=h.parent.element.getBoxQuads({relativeTo:d,iframes:h.instanceServiceContainer.designerCanvas.iframes})[0],m=h.parent.element.convertPointFromNode(new DOMPoint(l.x+p.p1.x,l.y+p.p1.y),d,{iframes:h.instanceServiceContainer.designerCanvas.iframes}),u=getComputedStyle(h.element),f=new DOMMatrix;u.rotate!="none"&&u.rotate&&(f=f.multiply(new DOMMatrix("rotate("+u.rotate.replace(" ",",")+")"))),u.scale!="none"&&u.scale&&(f=f.multiply(new DOMMatrix("scale("+u.scale.replace(" ",",")+")"))),m=f.inverse().transformPoint(m);let y=jr(h.element);y!==1&&(m=new DOMPoint(m.x/y,m.y/y));let v=new DOMMatrix().translate(m.x,m.y);Sn(h.element,h.getStyle("transform"),v.toString())}a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(c,"place",!1)}moveElements(e,t,i){for(let r of e)t.x&&r.setStyle("left",parseInt(r.element.style.left)-t.x+"px"),t.y&&r.setStyle("top",parseInt(r.element.style.top)-t.y+"px");e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshExtensions(e),e[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(e,"place",!0)}enterContainer(e,t,i){let r=he(t);for(let n of r)i=="drop"&&n.setStyle("position","absolute"),e.insertChild(n),n.lastContainerSize&&(n.hasStyle("width")||n.setStyle("width",n.lastContainerSize.width+"px"),n.hasStyle("height")||n.setStyle("height",n.lastContainerSize.height+"px"));t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(r,"place",!0)}leaveContainer(e,t){let i=he(t);t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(i,"place",!0)}finishPlace(e,t,i,r,n,o,a){let l=he(a);for(let c of l){let h=_i(new DOMMatrix(c.element.style.transform)),d=_i(new DOMMatrix(c.getStyle("transform")??""));c.element.style.transform=c.getStyle("transform")??"";let p={x:h.x,y:h.y},m=getComputedStyle(c.element),u=new DOMMatrix;m.rotate!="none"&&m.rotate&&(u=u.multiply(new DOMMatrix("rotate("+m.rotate.replace(" ",",")+")"))),m.scale!="none"&&m.scale&&(u=u.multiply(new DOMMatrix("scale("+m.scale.replace(" ",",")+")"))),p=u.transformPoint(p),Nn(i,c,{x:p.x-d.x,y:p.y-d.y},"position")}for(let c of a)t.extensionManager.removeExtension(c,P.Placement);a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(l,"place",!0)}};var rm=class extends ya{serviceForContainer(e,t,i){return!0}};wi();Nc();Tc();Lc();vd();Ne();var nm=class{_capturePageFn;constructor(e){this._capturePageFn=e}async takePng(e,t){if(!e||e.length===0)return null;let i=e[0].instanceServiceContainer.designerCanvas,r=e[0].instanceServiceContainer.selectionService,n=i.zoomFactor,o=i.canvasOffset,a=r.selectedElements;try{i.disableBackgroud(),i.zoomFactor=1,t?.removeSelection&&r.setSelectedElements([]),i.canvasOffset={x:0,y:0},await tr();let l=1/0,c=1/0,h=-1/0,d=-1/0;for(let me of e){let J=i.getNormalizedElementCoordinates(me.element);l=Math.min(l,J.x),c=Math.min(c,J.y),h=Math.max(h,J.x+J.width),d=Math.max(d,J.y+J.height)}let p=t?.margin??0;l-=p,c-=p,h+=p,d+=p;let m=Math.ceil(h-l),u=Math.ceil(d-c),f=i.outercanvas2,y=f.offsetWidth,v=f.offsetHeight,b=1,E=y-2*b,S=v-2*b,T=Math.ceil(m/E),O=Math.ceil(u/S),I=window.devicePixelRatio||1,U=Math.ceil(y*I),$=Math.ceil(v*I),V=Math.ceil(b*I),j=U-2*V,X=$-2*V,Z=document.createElement("canvas");Z.width=Math.ceil(m*I),Z.height=Math.ceil(u*I);let oe=Z.getContext("2d");for(let me=0;me<O;me++)for(let J=0;J<T;J++){let ae=l+J*E,Ye=c+me*S;i.canvasOffset={x:-(ae-b),y:-(Ye-b)},await tr(),await mt(100);let Ce=f.getBoundingClientRect(),ct=await this._capturePageFn({x:Math.round(Ce.left),y:Math.round(Ce.top),width:Math.round(Ce.width),height:Math.round(Ce.height)}),tt=await this._loadImage(ct);oe.drawImage(tt,V,V,j,X,J*j,me*X,j,X)}let De=await(await new Promise(me=>Z.toBlob(me,"image/png"))).arrayBuffer();return new Uint8Array(De)}finally{i.zoomFactor=n,i.canvasOffset=o,i.enableBackground(),t?.removeSelection&&r.setSelectedElements(a)}}_loadImage(e){return new Promise((t,i)=>{let r=new Image;r.onload=()=>t(r),r.onerror=i,r.src=e})}};Mc();zc();Ze();Os();ne();Pe();var sm=class{async copyItems(e){let t=he(e),i=Q.ConvertToString(t,!1),r=t.map(o=>o.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(o.element));yr([["text/html",i],["text/plain",i],["application/json",JSON.stringify({html:i,positions:r})]])}async getPasteItems(e,t){let i=await this._readClipboardPasteData();return i.imageData?[[await M.createDesignItemFromImageBlob(e,t,i.imageData)]]:[await e.htmlParserService.parse(i.html,e,t,!0),i.positions??void 0]}async _readClipboardPasteData(){let e="",t=null,i=null,r=await Ls();if(r!=null){let n=r[0],o=await this._tryReadClipboardType(n,"application/json");if(o){let a=this._parseJsonClipboardData(o);e=a?.html??"",t=a?.positions??null}e||(e=await this._tryReadClipboardType(n,"text/html")??""),e||(e=await this._tryReadClipboardType(n,"text/plain")??"");try{let a=n.types.find(l=>l.startsWith("image/"));a&&(i=await n.getType(a))}catch{}}else e=await Ns();return{html:e,positions:t,imageData:i}}_parseJsonClipboardData(e){try{return JSON.parse(e)}catch{return null}}async _tryReadClipboardType(e,t){try{return await(await e.getType(t))?.text()}catch{return null}}};mc();gd();import{DomHelper as Lg}from"@node-projects/base-custom-webcomponent";var om=class{provideDemo(e,t,i,r,n){return new Promise(o=>{let a=document.createElement("iframe");a.style.width="100%",a.style.height="100%",a.style.border="none",a.style.display="none",Lg.removeAllChildnodes(e),e.appendChild(a),a.onload=()=>{a.style.display="block",o()};let l=a.contentWindow.document;if(l.open(),l.write('<script type="module">'),i.designContext.npmPackages?.length){l.write("import { NpmPackageLoader } from '../../helper/NpmPackageLoader.js'"),l.write("let loader = new NpmPackageLoader();");for(let c of i.designContext.npmPackages)l.write("loader.loadNpmPackage('"+c+"', null, null, true);")}if(i.designContext.imports?.length)for(let c of i.designContext.imports)l.write("import '"+c+"';");l.write("document.body.style.display='';"),l.write("</script>"),l.write("<style>"+(n??"")+"</style>"),l.write('<body style="display:none; width: 100%; height: 100%; margin: 0; padding: 0; position: absolute;">'+r+"</body>"),l.close()})}};zh();Mh();ia();ne();ia();var am=class extends zi{createDesignItem(e,t,i,r){let n=new M(e,t,i,r);return e instanceof(e.ownerDocument.defaultView??window).HTMLTemplateElement&&requestAnimationFrame(()=>{let o=1,a=e.getAttribute("sample-repeat-count");a&&(o=parseInt(a));for(let l=0;l<o;l++){let c=e;for(let h of e.content.childNodes)c=this.instancateNode(c,h)}}),n}instancateNode(e,t,i=!1){let r=t.cloneNode(!1);i?e.appendChild(r):e.parentNode.insertBefore(r,e.nextSibling),M.GetDesignItem(t).setView(r);for(let n of t.childNodes)this.instancateNode(r,n,!0);return r}};Oc();Rh();import{LazyLoader as Og}from"@node-projects/base-custom-webcomponent";var lm=class{_name;get name(){return this._name}_elementList;_resolveStored;_rejectStored;getElements(){return this._elementList?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}constructor(e,t){this._name=e,Og.LoadText(t.toString()).then(i=>{let r=JSON.parse(i);this._elementList=[],r.elements.forEach(n=>{this.isIElementDefintion(n)?this._elementList.push(n):this._elementList.push({tag:n})}),this._resolveStored&&(this._resolveStored.forEach(n=>n(this._elementList)),this._resolveStored=null,this._rejectStored=null)}).catch(i=>{this._rejectStored&&(this._rejectStored.forEach(r=>r(i)),this._resolveStored=null,this._rejectStored=null)})}isIElementDefintion(e){return e!=null&&e.tag!=null}};kr();kr();var cm=class extends Ie{isHandledElementFromEventsService(e){return this.__eventsList?.[e.name]!=null}getPossibleEvents(e){return[...this.__eventsList[e.name],...Ie._simpleMouseEvents,...Ie._pointerEvents,...Ie._allElements,...Ie._focusableEvents]}getEvent(e,t){return this.getPossibleEvents(e).find(r=>r.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}__eventsList;constructor(e,t){super(),this._parseManifest(t)}_parseManifest(e){this.__eventsList={};let t=[];for(let i of e.modules)i.declarations&&t.push(...i.declarations);for(let i of e.modules)for(let r of i.exports)if(r.kind=="custom-element-definition"){let n=t.find(o=>o.name==r.declaration.name);if(n){if(n.events){let o=[];for(let a of n.events)o.push({name:a.name});o.length&&(this.__eventsList[r.name]=o)}}else console.warn("declaration for "+r.declaration.name+" not found",e)}}};Xc();Ze();Ws();q();_e();ce();var et;(function(s){s[s.inline=0]="inline",s[s.block=1]="block",s[s.complex=2]="complex"})(et||(et={}));var hm=class{options;constructor(e){this.options=e??{},this.options.beautifyOutput??=!0,this.options.compressCssToShorthandProperties??=!0,this.options.writeDesignerProperties??=!0,this.options.parseJsonInAttributes??=!0,this.options.jsonWriteMode??="min"}writeAttributes(e,t){if(t.hasAttributes)for(let i of t.attributes())e.indentedTextWriter.write(" "),typeof i[1]=="string"?i[1]===""?e.indentedTextWriter.write(i[0]):e.indentedTextWriter.write(i[0]+'="'+Q.normalizeAttributeValue(i[1])+'"'):i[1]||e.indentedTextWriter.write(i[0])}writeStyles(e,t){if(t.hasStyles){e.indentedTextWriter.write(' style="');let i=t.styles();e.options.compressCssToShorthandProperties&&(i=Mi.combine(new Map(i)));for(let r of i)r[0]&&e.indentedTextWriter.write(z.camelToDashCase(r[0])+":"+Q.normalizeAttributeValue(r[1])+";");e.indentedTextWriter.write('"')}}_writeTextNode(e,t){e.lastElementDisplayType=Re.inline;let i=Q.normalizeContentValue(t.content);e.containerDisplayType===et.inline?i=this._normalizeInlineTextContent(i):i=i.trim(),i&&e.indentedTextWriter.write(i)}_normalizeInlineTextContent(e){if(!e?.trim())return"";let t=/^\s/.test(e),i=/\s$/.test(e),r=e.replaceAll(/[\t\r\n ]+/g," ").trim();return`${t?" ":""}${r}${i?" ":""}`}_writeCommentNode(e,t){e.indentedTextWriter.write("<!--"+t.content+"-->")}_writeElementNode(e,t){let i=Ud(t.element);e.lastElementDisplayType=i,e.indentedTextWriter.write("<"+t.name),this.writeAttributes(e,t),this.writeStyles(e,t),e.indentedTextWriter.write(">");let r=!1;if(t.hasChildren){let n=t.children();r=t.childCount===1&&t.firstChild.nodeType===k.TextNode;let o=e.containerDisplayType;e.containerDisplayType=this.getContainerType(t.element),r?this._writeInternal(e,t.firstChild):(e.containerDisplayType!==et.inline&&e.indentedTextWriter.levelRaise(),this._writeDesignItemList(i,e,n),e.containerDisplayType!==et.inline&&e.indentedTextWriter.levelShrink()),e.containerDisplayType=o}else t.hasContent&&e.indentedTextWriter.write(Q.normalizeContentValue(t.content));Q.IsSelfClosingElement(t.name)||(i===Re.block&&t.hasChildren&&!r&&this._writeNewlineAndIntend(e),e.indentedTextWriter.write("</"+t.name+">"),i!==Re.none&&(e.lastElementDisplayType=i))}_writeDesignItemList(e,t,i){for(let r of i)t.lastElementDisplayType==null||t.containerDisplayType===et.inline||(t.containerDisplayType===et.complex?this._writeNewlineAndIntend(t):t.lastElementDisplayType!==Re.inline&&this._writeNewlineAndIntend(t)),this._writeInternal(t,r)}_writeNewlineAndIntend(e){e.indentedTextWriter.writeNewline(),e.indentedTextWriter.writeIndent()}_writeInternal(e,t){let i=e.indentedTextWriter.position;t.nodeType===k.TextNode?this._writeTextNode(e,t):t.nodeType===k.Comment?this._writeCommentNode(e,t):t.nodeType===k.Element&&this._writeElementNode(e,t),e.designItemsAssignmentList&&e.designItemsAssignmentList.set(t,{start:i,length:e.indentedTextWriter.position-i-1})}getContainerType(e){let t=(e.ownerDocument.defaultView??window).getComputedStyle(e).display;return t==="inline"?et.inline:t==="block"||t==="inline-block"||t==""?et.block:et.complex}write(e,t,i){let r={indentedTextWriter:e,options:this.options,lastElementDisplayType:null,containerDisplayType:et.block};this._writeDesignItemList(Re.inline,r,t)}};Kc();pr();rl();Ke();fe();ue();Me();Ne();kr();var dm=class extends ee{getRefreshMode(e){return G.none}_name;get name(){return this._name}_packageData;_elementList;_propertiesList;__eventsList;_resolveStored;_rejectStored;_importPrefix="";constructor(e,t,i=""){if(super(),this._name=e,this._importPrefix=i,typeof t=="string"){this._importPrefix=this._importPrefix??t.split("/").slice(0,-1).join("/");let r;window.importShim?r=importShim(t,{with:{type:"json"}}):r=import(t,{with:{type:"json"}}),r.then(n=>{this._packageData=n.default,this._parseManifest()}).catch(n=>{this._rejectStored&&(this._rejectStored.forEach(o=>o(n)),this._resolveStored=null,this._rejectStored=null)})}else this._packageData=t,this._parseManifest()}_parseManifest(){this._elementList=[],this._propertiesList={};for(let e of this._packageData.modules){for(let t of e.exports)if(t.kind=="custom-element-definition"){this._elementList.push({tag:t.name,import:jt(this._importPrefix,"/")+"/"+we(e.path,"/")});let i=[],r=e.declarations.find(n=>n.name==t.declaration.name);for(let n of r.members)if(n.kind=="field"){let o=x.property;r.attributes&&(o=r.attributes.find(l=>l.fieldName==n.name)!=null?x.propertyAndAttribute:x.property);let a=Bi.manifestClassPropertyTypeToEditorPropertyType(n.type?.text,n.type?.editor);i.push({name:n.name,service:this,propertyType:o,type:a[0],values:a[1],description:n.description})}if(this._propertiesList[t.name]=i,r.events){let n=[];for(let o of r.events)n.push({name:o.name});n.length&&(this.__eventsList[t.name]=n)}}this._resolveStored&&(this._resolveStored.forEach(t=>t(this._elementList)),this._resolveStored=null,this._rejectStored=null)}}async getElements(){return this._packageData?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}isHandledElement(e){return this._elementList?this._elementList.find(t=>t.tag==e.name)!=null:!1}async getProperties(e){return this._propertiesList[e.name]}async getProperty(e,t){return this._propertiesList[e.name].find(i=>i.name==t)}getPropertyTarget(e,t){return this._propertiesList[e.name].find(i=>i.name==t.name).propertyType==x.attribute?L.attribute:L.property}isHandledElementFromEventsService(e){return this.__eventsList?this.__eventsList[e.name]!=null:!1}getPossibleEvents(e){return[...this.__eventsList[e.name],...Ie._simpleMouseEvents,...Ie._pointerEvents,...Ie._allElements,...Ie._focusableEvents]}getEvent(e,t){return this.getPossibleEvents(e).find(r=>r.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}};yd();Bc();var pm=class{constructor(e,t,i){}cursorsChanged};xl();fe();vh();Ee();dl();sl();_n();_n();ol();ml();al();import{html as Vg,BaseCustomWebComponentConstructorAppend as Rg}from"@node-projects/base-custom-webcomponent";var mm=class extends Rg{static template=Vg`<div style="display:flex"><input id="input" type="text"> <button style="width:30px">...</button></div>`;constructor(){super()}};ll();cl();hl();ul();fh();uh();_e();ai();dh();lo();_l();od();li();ue();Me();fe();pt();Ke();var va=class extends ee{getRefreshMode(e){return G.none}contentProperty={name:"textContent",type:"string",service:this,propertyType:x.property};idProperty={name:"id",type:"string",service:this,propertyType:x.propertyAndAttribute};innerHtmlProperty={name:"innerHTML",type:"string",service:this,propertyType:x.property};name="content";isHandledElement(e){return!0}async getProperty(e,t){return t=="id"?this.idProperty:this.contentProperty}async getProperties(e){return[this.idProperty,this.contentProperty,this.innerHtmlProperty]}clearValue(e,t,i="all"){if(t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name){let r=e[0].openGroup("property cleared: "+t.name);for(let n of e)i!="binding"&&n.clearChildren(),i!="value"&&n.serviceContainer.forSomeServicesTillResult("bindingService",o=>o.clearBinding(n,t.name,this.getPropertyTarget(n,t))),this._notifyChangedProperty(n,t,void 0);r.commit()}else super.clearValue(e,t,i)}isSet(e,t){if(t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name){let i=!0,r=!1;if(e!=null&&e.length!==0){e.forEach(o=>{let a=!1;a=o.element.childNodes.length>0,i=i&&a,r=r||a});let n=ee.getOrBuildCachedBindings(e[0]);if(n&&n.find(o=>(o.target==L.property||o.target==L.explicitProperty)&&o.targetName==t.name))return H.bound}return i?H.all:r?H.some:H.none}return super.isSet(e,t)}getValue(e,t){return t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name?e[0].element.textContent:super.getValue(e,t)}};gh();co();Me();ue();fe();var um=class extends ee{getRefreshMode(e){return G.full}name="list";_propertys=new Map;constructor(e,t){super(t);for(let i in e){let r=[];this._propertys.set(i,r);for(let n in e[i]){let o=e[i][n];r.push({name:o.name,propertyName:o.propertyName,attributeName:o.attributeName,description:o.description,type:o.type,default:o.default,min:o.min,max:o.max,step:o.step,values:o.values,enumValues:o.enumValues,value:o.value,defaultValue:o.defaultValue,service:this,propertyType:o.propertyType??x.propertyAndAttribute})}}}isHandledElement(e){return this._propertys.has(e.element.localName)}_notifyChangedProperty(e,t,i){}async getProperties(e){return this._propertys.get(e.element.localName)}};ja();Dl();Hh();Ua();Ya();Wa();Me();ph();yh();Me();fe();ue();var fm=class extends ee{getRefreshMode(e){return G.full}isHandledElement(e){return!0}async getProperties(e){let t=Object.getOwnPropertyNames(Object.getPrototypeOf(e.element)),i=[];for(let r of t){if(r.startsWith("on"))continue;let n=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e.element),r);if(n.get||n.set){let o=e.element[r];typeof o=="boolean"?i.push({name:r,type:"boolean",service:this,propertyType:x.propertyAndAttribute}):typeof o=="number"?i.push({name:r,type:"bonumberolean",service:this,propertyType:x.propertyAndAttribute}):i.push({name:r,type:"string",service:this,propertyType:x.propertyAndAttribute})}}return i}};ue();pt();var gm=class{getRefactorings(e){let t=[];for(let i of e){let r=i.serviceContainer.bindingService.getBindings(i);if(r)for(let n of r)for(let o of n.bindableObjectNames)if(o.includes(":")){let a=o.split(":")[0],l=o.substring(a.length+1);t.push({service:this,name:l,itemType:"signal",designItem:i,type:"binding",sourceObject:n,display:n.target+"/"+n.targetName+" - "+a+":",shortName:a})}else t.push({service:this,name:o,itemType:"signal",designItem:i,type:"binding",sourceObject:n,display:n.target+"/"+n.targetName})}return t}refactor(e,t,i){let r=e.sourceObject;e.shortName?r.bindableObjectNames=r.bindableObjectNames.map(n=>n==e.shortName+":"+t?e.shortName+":"+i:n):r.bindableObjectNames=r.bindableObjectNames.map(n=>n==t?i:n),e.designItem.serviceContainer.bindingService.setBinding(e.designItem,r)}};var ym=class{getRefactorings(e){let t=[];for(let i of e)if((i.element instanceof i.window.HTMLInputElement||i.element instanceof i.window.HTMLTextAreaElement)&&i.element.value&&t.push({service:this,name:i.element.value,itemType:"text",designItem:i,type:"attribute",sourceObject:i,display:"attribute/value"}),i.childCount>0&&i.element.textContent){let r=!0;for(let n of i.element.childNodes)n.nodeType!=3&&(r=!1);r&&t.push({service:this,name:i.element.textContent,itemType:"text",designItem:i,type:"content",sourceObject:i,display:"textContent"})}return t}refactor(e,t,i){e.type=="attribute"?e.designItem.setAttribute("value",i):e.type=="content"&&(e.designItem.content=i)}};q();var wd=Symbol("collaborationNodeIndexCache");function zg(s){let e=[],t=new WeakMap,i=0,r=n=>{if(n&&(!n.isRootItem&&n.nodeType===k.Element&&(e.push(n),t.set(n,i++)),n.hasChildren))for(let o of n.children())r(o)};return r(s),{orderedItems:e,byItem:t}}function vm(s,e){if(e?.[wd])return e[wd];let t=zg(s);return e&&(e[wd]=t),t}function Fg(s,e){if(!s||s.isRootItem)return null;let t=s.instanceServiceContainer.designerCanvas.rootDesignItem;return vm(t,e).byItem.get(s)??null}function MN(s,e){return s?.length?s.map(t=>Fg(t,e)).filter(t=>t!=null):[]}function NN(s,e,t){return e==null||e<0?null:vm(s,t).orderedItems[e]??null}xd();Ah();ne();import{TypedEvent as Mm}from"@node-projects/base-custom-webcomponent";function Ed(s){let e={A:0,B:0,C:0};return Bg(s)?(Gg(s,0,e),e):(Hg(s,e),e)}function Bg(s){for(let e=0;e<s.length;e++){let t=s.charCodeAt(e);if(t===58||t===91||t===40||t===44||t===92)return!0}return!1}function Hg(s,e){let t=s.length,i=0;for(;i<t;){let r=s.charCodeAt(i);if(r===124&&i+1<t&&s.charCodeAt(i+1)===124){i+=2;continue}if(r===32||r===62||r===43||r===126){i++;continue}if(r===35){for(e.A++,i++;i<t&&Tr(s.charCodeAt(i));)i++;continue}if(r===46){for(e.B++,i++;i<t&&Tr(s.charCodeAt(i));)i++;continue}if(r===42){i++;continue}if(Tm(r)||r===124){for(;i<t;){let n=s.charCodeAt(i);if(Tr(n)||n===124)i++;else break}e.C++;continue}i++}}function Gg(s,e,t){let i=e,r=0,n=0,o=0;for(;i<s.length;){if(r=n=o=0,i=Hi(s,i,t,!0),r=t.A,n=t.B,o=t.C,s.charCodeAt(i)===44){i++;let a=r,l=n,c=o;for(;i<s.length;){if(t.A=t.B=t.C=0,i=Hi(s,i,t,!0),(t.A>a||t.A===a&&(t.B>l||t.B===l&&t.C>c))&&(a=t.A,l=t.B,c=t.C),s.charCodeAt(i)===44){i++;continue}break}t.A=a,t.B=l,t.C=c}break}return i}function Hi(s,e,t,i){let r=e;for(i&&(t.A=t.B=t.C=0);r<s.length;){let n=s.charCodeAt(r);if(n===44||n===41)break;if(n===124&&s.charCodeAt(r+1)===124){r+=2;continue}if(n===32||n===62||n===43||n===126){r++;continue}if(n===35){r=xa(s,r+1),t.A++;continue}if(n===46){r=xa(s,r+1),t.B++;continue}if(n===91){r=Sd(s,r,91,93),t.B++;continue}if(n===58){if(s.charCodeAt(r+1)===58){r+=2,r=xa(s,r),s.charCodeAt(r)===40&&(r=Sd(s,r,40,41)),t.C++;continue}let o=r+1,a=xa(s,o);if(r=a,Yg(s,o,a-o)){t.C++;continue}if(s.charCodeAt(r)===40){let l=r+1,c=Sd(s,r,40,41),h=a-o;switch(Ug(s,o,h)){case xm:r=c;continue;case _m:case bm:case wm:case km:case Im:case Dm:{let p=0,m=0,u=0,f=l,y=c-1;for(;f<y;){let v={A:0,B:0,C:0};if(f=Wg(s,f,v),(v.A>p||v.A===p&&(v.B>m||v.B===m&&v.C>u))&&(p=v.A,m=v.B,u=v.C),s.charCodeAt(f)===44)f++;else break}t.A+=p,t.B+=m,t.C+=u,r=c;continue}case Sm:{let p={A:0,B:0,C:0};Hi(s,l,p,!1),t.A+=p.A,t.B+=p.B,t.C+=p.C,r=c;continue}case Cm:case Em:{t.B++;let p={A:0,B:0,C:0};Hi(s,l,p,!1),t.A+=p.A,t.B+=p.B,t.C+=p.C,r=c;continue}case Pm:case Am:{t.B++;let p=c-1,m=Xg(s,l,p);if(m!==-1){let u=m+2;for(;u<p&&Cd(s.charCodeAt(u));)u++;let f=0,y=0,v=0,b=u;for(;b<p;){let E={A:0,B:0,C:0};if(b=Hi(s,b,E,!1),(E.A>f||E.A===f&&(E.B>y||E.B===y&&E.C>v))&&(f=E.A,y=E.B,v=E.C),s.charCodeAt(b)===44)b++;else break}t.A+=f,t.B+=y,t.C+=v}r=c;continue}default:t.B++,r=c;continue}}else{t.B++;continue}}if(n===42){r++;continue}if(Tm(n)||n===124){for(;r<s.length&&(Tr(s.charCodeAt(r))||s.charCodeAt(r)===124);)r++;t.C++;continue}r++}return r}function Wg(s,e,t){return Hi(s,e,t,!1)}var jg=0,xm=1,_m=2,bm=3,wm=4,Sm=5,Cm=6,Em=7,Pm=8,Am=9,km=10,Im=11,Dm=12;function Ug(s,e,t){return t===5&&s.charCodeAt(e)===119&&s.charCodeAt(e+1)===104&&s.charCodeAt(e+2)===101&&s.charCodeAt(e+3)===114&&s.charCodeAt(e+4)===101?xm:t===3&&s.charCodeAt(e)===110&&s.charCodeAt(e+1)===111&&s.charCodeAt(e+2)===116?bm:t===2&&s.charCodeAt(e)===105&&s.charCodeAt(e+1)===115?_m:t===3&&s.charCodeAt(e)===104&&s.charCodeAt(e+1)===97&&s.charCodeAt(e+2)===115?wm:t===4&&s.charCodeAt(e)===104&&s.charCodeAt(e+1)===111&&s.charCodeAt(e+2)===115&&s.charCodeAt(e+3)===116?Cm:t===12&&s.charCodeAt(e)===104&&s.charCodeAt(e+4)===45&&s.charCodeAt(e+5)===99&&s.substring(e,e+t)==="host-context"?Em:t===7&&s.charCodeAt(e)===115&&s.substring(e,e+7)==="slotted"?Sm:t===9&&s.charCodeAt(e)===110&&s.substring(e,e+9)==="nth-child"?Pm:t===14&&s.charCodeAt(e)===110&&s.substring(e,e+14)==="nth-last-child"?Am:t===7&&s.charCodeAt(e)===109&&s.substring(e,e+7)==="matches"?km:t===11&&s.charCodeAt(e)===45&&s.substring(e,e+11)==="-webkit-any"?Im:t===8&&s.charCodeAt(e)===45&&s.substring(e,e+8)==="-moz-any"?Dm:jg}function Yg(s,e,t){if(t===6){let i=s.charCodeAt(e);if(i===98)return s.substring(e,e+6)==="before";if(i===97)return s.substring(e,e+6)==="after"}return t===5&&s.charCodeAt(e)===97?s.substring(e,e+5)==="after":t===10&&s.charCodeAt(e)===102?s.substring(e,e+10)==="first-line":t===12&&s.charCodeAt(e)===102?s.substring(e,e+12)==="first-letter":!1}function Tm(s){return s>=65&&s<=90||s>=97&&s<=122||s===95||s===45||s===92}function Tr(s){return s>=65&&s<=90||s>=97&&s<=122||s>=48&&s<=57||s===95||s===45||s===92}function Cd(s){return s===32||s===9||s===10||s===13||s===12}function xa(s,e){let t=e;for(;t<s.length;){let i=s.charCodeAt(t);if(i===92){t+=2;continue}if(!Tr(i))break;t++}return t}function Sd(s,e,t,i){let r=0,n=0,o=e;for(;o<s.length;){let a=s.charCodeAt(o);if(n){if(a===92){o+=2;continue}a===n&&(n=0),o++;continue}if(a===34||a===39){n=a,o++;continue}if(a===t)r++;else if(a===i&&(r--,r===0))return o+1;o++}return o}function Xg(s,e,t){let i=e;for(;i<=t-1;){for(;i<=t-1&&Cd(s.charCodeAt(i));)i++;if(s.charCodeAt(i)===111&&s.charCodeAt(i+1)===102&&(i+2>t-1||Cd(s.charCodeAt(i+2))||s.charCodeAt(i+2)===40))return i;i++}return-1}var _a=class s{_stylesheets=new Map;_documentStylesheets=new Map;_allStylesheets=new Map;_instanceServiceContainer;constructor(e){this._instanceServiceContainer=e.instanceServiceContainer}async setStylesheets(e){await this.internalSetStylesheets(e,this._stylesheets)}async setDocumentStylesheets(e){await this.internalSetStylesheets(e,this._documentStylesheets)}async internalSetStylesheets(e,t){if(t!=null&&e!=null&&t.size==e.length&&e.every(i=>t.has(i.name)))for(let i of e){let r=t.get(i.name);if(r.stylesheet.content!=i.content){try{t.set(i.name,{stylesheet:i,ast:await this.internalParse(i.content)})}catch(n){console.warn("error parsing stylesheet",i,n)}t==this._stylesheets&&this.stylesheetChanged.emit({name:i.name,newStyle:i.content,oldStyle:r.stylesheet.content,changeSource:"extern"})}}else if(e!=null){t.clear();for(let i of e){let r=null;try{r=await this.internalParse(i.content)}catch(n){console.warn("error parsing stylesheet",i,n)}t.set(i.name,{stylesheet:i,ast:r})}t==this._stylesheets&&this.stylesheetsChanged.emit()}else t.clear();this._allStylesheets.clear();for(let i of this._documentStylesheets)this._allStylesheets.set(i[0],i[1]);for(let i of this._stylesheets)this._allStylesheets.set(i[0],i[1])}async internalReparseStylesheet(e){let t=this._allStylesheets;this._documentStylesheets.has(e)&&(t=this._documentStylesheets),this._stylesheets.has(e)&&(t=this._stylesheets);let i=t.get(e),r=null;try{r=await this.internalParse(i.stylesheet.content)}catch(o){console.warn("error parsing stylesheet",e,o)}let n={stylesheet:i.stylesheet,ast:r};this._stylesheets.set(e,n),this._allStylesheets.set(e,n)}getStylesheets(){let e=[];for(let t of this._stylesheets)e.push(t[1].stylesheet);return e}getDeclarationsSortedBySpecificity(e,t){let i=this.getDeclarations(e,t);return i.reverse().sort((r,n)=>r.parent.specificity==null?-1:n.parent.specificity==null?1:r.parent.specificity.A>n.parent.specificity.A||r.parent.specificity.A===n.parent.specificity.A&&r.parent.specificity.B>n.parent.specificity.B||r.parent.specificity.A===n.parent.specificity.A&&r.parent.specificity.B===n.parent.specificity.B&&r.parent.specificity.C>n.parent.specificity.C?-1:r.parent.specificity.A===n.parent.specificity.A&&r.parent.specificity.B===n.parent.specificity.B&&r.parent.specificity.C===n.parent.specificity.C?0:1),i}updateDeclarationValue(e,t,i){this.updateDeclarationValueWithoutUndo(e,t,i)}stylesheetChanged=new Mm;stylesheetsChanged=new Mm;static patchStylesheetSelectorForDesigner(e){return e.replaceAll(":hover","["+ut+"]").replaceAll(":active","["+hi+"]").replaceAll(":visited","["+di+"]").replaceAll(":focus","["+pi+"]").replaceAll(":focus-within","["+mi+"]").replaceAll(":focus-visible","["+ui+"]")}elementMatchesASelector(e,t){let i=null;for(let r of t)try{if(e&&r===":host"&&e.isRootItem){let n=Ed(r);(i===null||n.A>i.A||n.A===i.A&&(n.B>i.B||n.B===i.B&&n.C>i.C))&&(i=n)}else if(!e||e.element.matches(s.patchStylesheetSelectorForDesigner(r))){let n=Ed(r);(i===null||n.A>i.A||n.A===i.A&&(n.B>i.B||n.B===i.B&&n.C>i.C))&&(i=n)}}catch{console.warn("invalid selector: ",r,"patched: "+s.patchStylesheetSelectorForDesigner(r))}return i===null?!1:i}};Eh();Ph();Ka();tl();Xa();fd();st();Za();el();var ba=class{stylesheetService;constructor(e,t,i,r){this.title="Changed Css Stylesheet: "+t,this.stylesheetService=e,this.name=t,this.newValue=i,this.oldValue=r}title;get affectedItems(){return[]}undo(){return this.stylesheetService.updateCompleteStylesheetWithoutUndo(this.name,this.oldValue),null}do(){return this.stylesheetService.updateCompleteStylesheetWithoutUndo(this.name,this.newValue),null}name;newValue;oldValue;mergeWith(e){return!1}};var wa=class{constructor(e,t){this.title="Set all DesignItems",this.newDesignItems=e,this.oldDesignItems=t}title;get affectedItems(){return this.newDesignItems}undo(){return this.newDesignItems[0].instanceServiceContainer.designerCanvas._internalSetDesignItems(this.oldDesignItems),null}do(){return this.newDesignItems[0].instanceServiceContainer.designerCanvas._internalSetDesignItems(this.newDesignItems),null}newDesignItems;oldDesignItems;mergeWith(e){return!1}};qa();zr();zr();import{TypedEvent as Kg}from"@node-projects/base-custom-webcomponent";var Sa=class{imports=[];npmPackages=[];extensionOptions={gridExtensionShowOverlay:!1,flexboxExtensionShowOverlay:!1,invisibleElementExtensionShowOverlay:!1,enableStylesheetService:!1,basicStackedToolbarExtensionShowOverlay:!1,simulateHoverOnHover:!1,selectUnhitableElements:!0};extensionOptionsChanged=new Kg};import{TypedEvent as $g}from"@node-projects/base-custom-webcomponent";var Ca=class extends oi{designContext=new Sa;designerCanvas;collaborationService;designer;documentContainer;onContentChanged=new $g;constructor(e){super(),this.designerCanvas=e}get rootDesignItem(){return this.designerCanvas.rootDesignItem}get undoService(){return this.getLastService("undoService")}get selectionService(){return this.getLastService("selectionService")}get stylesheetService(){return this.getLastService("stylesheetService")}get designItemDocumentPositionService(){return this.getLastService("designItemDocumentPositionService")}};Ga();fe();pt();Mt();ue();se();import{BaseCustomWebComponentLazyAppend as Zg,css as Qg,DomHelper as Nm}from"@node-projects/base-custom-webcomponent";var He=class s extends Zg{_div;_propertyMap=new Map;_serviceContainer;_propertiesService;_designItems;_lastClassType;_addCounter=0;propertyGroupHover;propertyGroupClick;propertyContextMenuProvider;get propertiesService(){return this._propertiesService}static get style(){return Qg`:host{display:block;height:100%;overflow:auto;box-sizing:border-box}.content-wrapper{padding:.5em;display:grid;grid-template-columns:11px minmax(80px,auto) minmax(120px,1fr);align-items:center;grid-auto-rows:minmax(24px,auto);align-items:center}input,label,select{display:inline-block;color:#fff;background:0 0;margin:2px 0;padding:0 2px 0 4px;width:110px;white-space:nowrap}.style-label,label{box-sizing:border-box;display:inline-block;font-size:13px;width:auto;overflow:hidden;text-overflow:ellipsis;margin-right:2px}input,select{padding:0;padding-left:3px}input,select{border:none}.content-wrapper>input,.content-wrapper>select,.editor-control{border:1px solid var(--input-border-color,#596c7a);border-radius:0}.editor-control,input,select{height:24px;box-sizing:border-box;font-size:11px;width:100%;margin:0}.editor-control:focus,input:focus,select:focus{outline:0;box-shadow:none}.editor-control[disabled],input[disabled],select[disabled]{color:#bdbdbd}select{background:0 0}select:focus option{color:#000}.unset-value{color:#778899}.unset-value>*{color:#778899}.unset-value:focus{color:#fff}.group-header{grid-column:1/3;font-size:10px;font-family:monospace}.group-header[clickable]:hover{cursor:pointer;color:orange;text-decoration:underline}.group-header::after{content:" ▾";font-size:14px}.group-header.expanded::after{content:" ▴";font-size:14px}.group-desc{display:inline-flex;flex-direction:row-reverse;font-size:10px;text-decoration:underline}.group-desc[clickable]:hover{cursor:pointer;color:orange;text-decoration:underline}.dragOverProperty{outline:2px dashed orange;outline-offset:-2px}`}constructor(e){super(),this._restoreCachedInititalValues(),this._serviceContainer=e,this._div=document.createElement("div"),this._div.className="content-wrapper",this.shadowRoot.appendChild(this._div)}setPropertiesService(e){this._propertiesService!=e&&(this._propertiesService=e,Nm.removeAllChildnodes(this._div),this._propertyMap.clear())}async createElements(e){if(!this._shouldCreateElements(e))return!0;let t=await this._propertiesService?.getProperties(e);return this._rebuildElements(e,t)}_shouldCreateElements(e){if(!this._propertiesService)return!1;if(this._propertyMap.size==0)return!0;let t=this._propertiesService.getRefreshMode(e);return t!==G.none&&(t!==G.fullOnClassChange||this._lastClassType!==e.element.constructor)}_rebuildElements(e,t){if(this._lastClassType=e.element.constructor,Nm.removeAllChildnodes(this._div),this._propertyMap.clear(),t?.length){for(let i of t)"properties"in i?this.createPropertyGroups(i):this.createPropertyEditors(i);return!0}return!1}createPropertyGroups(e){let t=document.createElement("span");t.addEventListener("click",()=>{this.expandOrCollapsePropertyGroups(e),t.classList.toggle("expanded")}),t.innerHTML=e.name.replaceAll(`
13
- `,"<br>"),t.className="group-header",this._div.appendChild(t);let i=document.createElement("span");i.innerHTML=e.description??"",i.className="group-desc",this.propertyGroupHover&&(t.onmouseenter=()=>{this.propertyGroupHover(e,"name")?t.setAttribute("clickable",""):t.removeAttribute("clickable")},t.onclick=()=>{this.propertyGroupClick&&this.propertyGroupClick(e,"name")},i.onmouseenter=()=>{this.propertyGroupHover(e,"desc")?i.setAttribute("clickable",""):i.removeAttribute("clickable")},i.onclick=()=>{this.propertyGroupClick&&this.propertyGroupClick(e,"desc")}),this._div.appendChild(i);for(let r of e.properties)this.createPropertyEditors(r,!0)}expandOrCollapsePropertyGroups(e){for(let t of e.properties){let i=this._propertyMap.get(t),r=i.labelElement.style.display=="none"?"flex":"none";i.editor.element&&(i.editor.element.style.display=r),i.labelElement&&(i.labelElement.style.display=r),i.isSetElement.parentElement&&(i.isSetElement.parentElement.style.display=r)}}createPropertyEditors(e,t){let i,r;if(e.createEditor?i=e.createEditor(e):i=this._serviceContainer.forSomeServicesTillResult("editorTypesService",n=>n.getEditorForProperty(e)),i){let n=document.createElement("div");t&&(n.style.marginLeft="10px"),n.style.width="20px",n.style.height="20px",n.style.display="flex",n.style.alignItems="center";let o=document.createElement("div");if(o.style.width="7px",o.style.height="7px",o.style.border="1px white solid",o.style.cursor="pointer",e.propertyType!=x.complex&&n.appendChild(o),this._div.appendChild(n),e.readonly!==!0&&(o.oncontextmenu=a=>{a.preventDefault(),this.openContextMenu(a,e)},o.onclick=a=>{a.preventDefault(),this.openContextMenu(a,e)}),e.type=="addNew"){let a=i.element;a.disabled=!0,a.id="addNew_input_"+ ++this._addCounter;let l=document.createElement("input");if(r=l,t&&(l.style.marginLeft="10px",l.style.width="calc(100% - 10px)"),l.value=e.name,l.type="text",l.id="addNew_label_"+this._addCounter,l.onkeyup=c=>{c.key=="Enter"&&l.value&&(e.name=l.value,l.disabled=!0,a.disabled=!1,a.focus())},e.service.getPropertyNameSuggestions){let c=e.service.getPropertyNameSuggestions(null),h=document.createElement("datalist");h.id="addNew_"+this._addCounter+"_datalist";for(let d of c){let p=document.createElement("option");p.value=d,h.append(p)}this._div.appendChild(h),l.setAttribute("list",h.id)}this._div.appendChild(l)}else if(e.renamable){let a=document.createElement("input");r=a,t&&(a.style.marginLeft="10px",a.style.width="calc(100% - 10px)"),a.id="label_"+e.name;let l=i.element;a.value=e.name,a.onkeyup=async c=>{if(c.key=="Enter"&&a.value){let h=this._designItems[0].openGroup("rename property name from '"+e.name+"' to '"+a.value+"'");e.service.clearValue(this._designItems,e,"all"),e.name=a.value,await e.service.setValue(this._designItems,e,l.value),h.commit(),this._designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(this._designItems)}},this._div.appendChild(a)}else{let a=document.createElement("label");r=a,t&&(a.style.marginLeft="10px"),a.htmlFor=e.name,a.textContent=e.displayName??e.name,a.title=e.description??(e.displayName??e.name)+" (type: "+e.type+(e.defaultValue?", default: "+e.defaultValue:"")+", propertytype: "+e.propertyType+")",a.ondragleave=l=>this._onDragLeave(l,e,a),a.ondragover=l=>this._onDragOver(l,e,a),a.ondrop=l=>this._onDrop(l,e,a),this._div.appendChild(a)}e.name&&(i.element.id=e.name),i.element instanceof HTMLElement&&i.element.classList.add("editor-control"),this._div.appendChild(i.element),this._propertyMap.set(e,{isSetElement:o,labelElement:r,editor:i})}}_onDragLeave(e,t,i){e.preventDefault(),i.classList.remove("dragOverProperty")}_onDragOver(e,t,i){if(e.preventDefault(),e.dataTransfer.types.indexOf(Yt)>=0){let o=this._serviceContainer.bindableObjectDragDropService;if(o){let a=o.dragOverOnProperty(e,t,this._designItems);(a??"none")!="none"?(i.classList.add("dragOverProperty"),e.dataTransfer.dropEffect=a):i.classList.remove("dragOverProperty")}}if(e.dataTransfer.types.indexOf(pl)>=0){let o=this._serviceContainer.propertyGridDragDropService;if(o){let a=o.dragOverOnProperty(e,t,this._designItems);(a??"none")!="none"?(i.classList.add("dragOverProperty"),e.dataTransfer.dropEffect=a):i.classList.remove("dragOverProperty")}}}_onDrop(e,t,i){e.preventDefault(),i.classList.remove("dragOverProperty");let r=e.dataTransfer.getData(Yt);if(r){let o=JSON.parse(r),a=this._serviceContainer.bindableObjectDragDropService;a&&a.dropOnProperty(e,t,o,this._designItems)}let n=e.dataTransfer.getData(pl);if(n){let o=JSON.parse(n),a=this._serviceContainer.propertyGridDragDropService;a&&a.dropOnProperty(e,t,o,this._designItems)}}openContextMenu(e,t){let i;this.propertyContextMenuProvider&&(i=this.propertyContextMenuProvider(this._designItems,t)),i||(i=t.service.getContextMenu(this._designItems,t)),be.show(i,e)}designItemsChanged(e){this._designItems=e;for(let t of this._propertyMap)t[1].editor.designItemsChanged(e)}refreshForDesignItems(e){for(let t of this._propertyMap)s.refreshIsSetElementAndEditorForDesignItems(t[1].isSetElement,t[0],e,this._propertiesService,t[1].editor)}static refreshIsSetElementAndEditorForDesignItems(e,t,i,r,n){if(i&&i.length){let o=r.isSet(i,t),a=r.getValue(i,t);e.title=t.name+": "+o,o==H.none?(e.style.background="",a=r.getUnsetValue(i,t)):o==H.all?e.style.background="white":o==H.some?e.style.background="gray":o==H.bound?e.style.background="orange":o==H.fromStylesheet&&(a=r.getUnsetValue(i,t),e.style.background="yellow"),n?.refreshValueWithoutNotification(o,a)}else e.style.background=""}};customElements.define("node-projects-property-grid-property-list",He);fe();import{BaseCustomWebComponentLazyAppend as qg,css as Jg}from"@node-projects/base-custom-webcomponent";var Pd=class extends qg{_serviceContainer;_designerTabControl;_selectedItems;_propertyGridPropertyLists;_propertyGridPropertyListsDict;_nodeReplacedCb;_instanceServiceContainer;_selectionChangedHandler;_contentChangedHandler;propertyGroupHover;propertyGroupClick;propertyContextMenuProvider;static style=Jg`:host{display:block;height:100%;user-select:none;-webkit-user-select:none}button:hover{box-shadow:inset 0 3px 0 var(--light-grey)}button:focus{box-shadow:inset 0 3px 0 var(--highlight-pink,#e91e63)}`;static properties={serviceContainer:Object,instanceServiceContainer:Object,selectedItems:Array,propertyGroupHover:Function,propertyGroupClick:Function,propertyContextMenuProvider:Function};constructor(){super(),this._designerTabControl=new dt,this.shadowRoot.appendChild(this._designerTabControl),this._restoreCachedInititalValues(),this.addEventListener("contextmenu",e=>{e.composedPath()[0].localName!="input"&&e.preventDefault()})}set serviceContainer(e){this._serviceContainer=e,this._propertyGridPropertyLists=[],this._propertyGridPropertyListsDict={}}get serviceContainer(){return this._serviceContainer}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._contentChangedHandler?.dispose(),this._instanceServiceContainer?(this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectedItems=t.selectedElements}),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this._changeOccured(null,!1)}),this.selectedItems=this._instanceServiceContainer.selectionService.selectedElements):this.selectedItems=[]}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems!=e&&(this._selectedItems=e,this._selectedItemsSet())}async _selectedItemsSet(){let e=this._serviceContainer.propertyGroupService.getPropertygroups(this._selectedItems),t=new Set;for(let r of e){let n=this._propertyGridPropertyListsDict[r.name];n||(n=new He(this.serviceContainer),n.title=r.name,n.propertyGroupHover=this.propertyGroupHover,n.propertyGroupClick=this.propertyGroupClick,n.propertyContextMenuProvider=this.propertyContextMenuProvider,this._designerTabControl.appendChild(n),this._propertyGridPropertyLists.push(n),this._propertyGridPropertyListsDict[r.name]=n),n.setPropertiesService(r.propertiesService),await n.createElements(this._selectedItems[0])&&t.add(r.name)}let i=this._designerTabControl;for(let r of t){let n=this._propertyGridPropertyListsDict[r],o=n.scrollTop;i===this._designerTabControl?i.insertAdjacentElement("afterbegin",n):i.insertAdjacentElement("afterend",n),i=n,n.scrollTo(0,o)}for(let r of this._propertyGridPropertyLists)t.has(r.title)?r.style.display="block":r.style.display="none";this._designerTabControl.refreshItems(),this._designerTabControl.selectedIndex<0&&(this._designerTabControl.selectedIndex=0);for(let r of this._propertyGridPropertyLists)t.has(r.title)&&r.designItemsChanged(this._selectedItems);if(this._selectedItems){if(this._selectedItems.length==1){for(let r of this._propertyGridPropertyLists)t.has(r.title)&&r.refreshForDesignItems(this._selectedItems);this._observePrimarySelectionForChanges()}}else this._nodeReplacedCb?.dispose(),this._nodeReplacedCb=null}_blockDoubleRun=!1;async _changeOccured(e,t=!1){if(!this._blockDoubleRun){this._blockDoubleRun=!0;for(let i of this._propertyGridPropertyLists)i.propertiesService?.getRefreshMode(this._selectedItems[0])==G.fullOnValueChange&&(await i.createElements(this._selectedItems[0]),i.designItemsChanged(this._selectedItems)),i.refreshForDesignItems(this._selectedItems);this._blockDoubleRun=!1}}_observePrimarySelectionForChanges(){this._nodeReplacedCb?.dispose(),this._nodeReplacedCb=this._selectedItems[0].nodeReplaced.on(()=>{this._observePrimarySelectionForChanges(),this._changeOccured(null,!0)})}};customElements.define("node-projects-web-component-designer-property-grid",Pd);Ne();q();import{BaseCustomWebComponentLazyAppend as ey,css as ty,html as iy}from"@node-projects/base-custom-webcomponent";Mt();var Ad=class extends ey{static style=ty`:host{display:block;height:100%;user-select:none;-webkit-user-select:none;background:var(--medium-grey,#2f3545);color:#fff}div.root{display:grid;grid-template-columns:11px 11px auto 1fr auto;padding:3px 6px;font-family:monospace;align-items:center}.desc{font-weight:700;font-size:10px;margin-right:5px}input{background:var(--medium-grey,#2f3545);border:solid 1px gray;color:#fff;width:calc(100% - 6px)}#type{color:wheat;white-space:nowrap;overflow:hidden;font-size:12px;height:20px;border:none}#pg{height:calc(100% - 64px)}`;static template=iy`<div class="root"><span style="grid-column:span 3" class="desc">Type:</span><input type="text" readonly="readonly" id="type"> <button id="config" style="display:none;grid-column:5;grid-row:span 3;height:calc(100% - 10px);margin-left:10px">config</button><div title="id" id="idRect" style="grid-column:1;width:7px;height:7px;border:1px solid #fff"></div><span id="idSpan" style="grid-column:span 2" class="desc">Id:</span><input type="text" id="id"><div title="innerHTML" id="innerRect" style="grid-column:1;width:7px;height:7px;border:1px solid #fff"></div><div title="textContent" id="contentRect" style="width:7px;height:7px;border:1px solid #fff"></div><span id="contentSpan" class="desc">Content:</span><input type="text" id="content"></div><node-projects-web-component-designer-property-grid id="pg"></node-projects-web-component-designer-property-grid>`;propertyGrid;_type;_id;_content;_selectionChangedHandler;_instanceServiceContainer;_idRect;_contentRect;_innerRect;_propertiesService;_configButton;constructor(){super(),this._restoreCachedInititalValues(),this._type=this._getDomElement("type"),this._id=this._getDomElement("id"),this._content=this._getDomElement("content"),this.propertyGrid=this._getDomElement("pg"),this._idRect=this._getDomElement("idRect"),this._contentRect=this._getDomElement("contentRect"),this._innerRect=this._getDomElement("innerRect"),this._configButton=this._getDomElement("config"),this._configButton.onclick=async()=>{let i=await(await this.serviceContainer?.getLastServiceWhereAsync("configUiService",async r=>await r.hasConfigUi(this._instanceServiceContainer.selectionService.primarySelection))).getConfigUi(this._instanceServiceContainer.selectionService.primarySelection);this.serviceContainer.globalContext.showConfigClicked.emit({designItem:this._instanceServiceContainer.selectionService.primarySelection,configUi:i})},this._propertiesService=new va,this._idRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.idProperty)},this._contentRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.contentProperty)},this._innerRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.innerHtmlProperty)},this._id.onkeydown=t=>{t.key=="Enter"?this._instanceServiceContainer.selectionService.primarySelection.id=this._id.value:t.key=="Escape"&&(this._id.value=this._instanceServiceContainer.selectionService.primarySelection?.id??"",t.preventDefault(),t.stopPropagation()),He.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)},this._content.onkeydown=t=>{t.key=="Enter"?(this._instanceServiceContainer.selectionService.primarySelection.content=this._content.value,this._content.title=this._content.value):t.key=="Escape"&&(this._content.value=this._instanceServiceContainer.selectionService.primarySelection?.element?.textContent??"",t.preventDefault(),t.stopPropagation()),He.refreshIsSetElementAndEditorForDesignItems(this._contentRect,this._propertiesService.contentProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService),He.refreshIsSetElementAndEditorForDesignItems(this._innerRect,this._propertiesService.innerHtmlProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)};let e;this._id.onfocus=t=>{e=this._instanceServiceContainer.selectionService.primarySelection},this._id.onblur=t=>{e&&(e.id=this._id.value),e=null,He.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)}}set serviceContainer(e){this.propertyGrid.serviceContainer=e}set instanceServiceContainer(e){let t=e;this._instanceServiceContainer=t,this._selectionChangedHandler?.dispose(),t?(this._selectionChangedHandler=t.selectionService.onSelectionChanged.on(async i=>{this.propertyGrid.instanceServiceContainer=t,await mt(20)}),this._refreshHeaderForCurrentSelection(t)):(this._configButton.style.display="none",this._id.value="",this._content.value="",this._id.disabled=!0,this._content.disabled=!0,this._idRect.style.background="",this._contentRect.style.background="",this._innerRect.style.background="",this._type.value=":host"),this.propertyGrid.instanceServiceContainer=t}async _refreshHeaderForCurrentSelection(e){if(!e?.selectionService?.primarySelection||e.selectionService.primarySelection?.isRootItem){this._configButton.style.display="none",this._id.value="",this._content.value="",this._id.disabled=!0,this._content.disabled=!0,this._idRect.style.background="",this._contentRect.style.background="",this._innerRect.style.background="",this._type.value=":host",this._type.title=this._type.value;return}this._id.disabled=!1,this._content.disabled=!1,await this.serviceContainer?.getLastServiceWhereAsync("configUiService",i=>i.hasConfigUi(e.selectionService.primarySelection))?this._configButton.style.display="block":this._configButton.style.display="none",e.selectionService.primarySelection?.nodeType==k.Element?this._type.value=e.selectionService.primarySelection?.name??"":this._type.value=e.selectionService.primarySelection?.node?.nodeName??"",this._type.title=this._type.value,this._id.value=e.selectionService.primarySelection?.id??"",e.selectionService.primarySelection?.element?.nodeType!=k.Element?this._content.value=e.selectionService.primarySelection?.content??"":e.selectionService.primarySelection?.element?.children?.length<=0?this._content.value=e.selectionService.primarySelection?.content??"":this._content.value="",this._content.title=this._content.value,He.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,e.selectionService.selectedElements,this._propertiesService),He.refreshIsSetElementAndEditorForDesignItems(this._contentRect,this._propertiesService.contentProperty,e.selectionService.selectedElements,this._propertiesService),He.refreshIsSetElementAndEditorForDesignItems(this._innerRect,this._propertiesService.innerHtmlProperty,e.selectionService.selectedElements,this._propertiesService)}_openContextMenu(e,t,i){let r;this.propertyGrid.propertyContextMenuProvider&&(r=this.propertyGrid.propertyContextMenuProvider(t,i)),r||(r=i.service.getContextMenu(t,i)),be.show(r,e)}};customElements.define("node-projects-web-component-designer-property-grid-with-header",Ad);import{css as fy,DomHelper as gy,html as yy,BaseCustomWebComponentConstructorAppend as vy}from"@node-projects/base-custom-webcomponent";le();ne();se();st();import{BaseCustomWebComponentLazyAppend as oy,css as ay,cssFromString as ly,DomHelper as kd,html as cy,TypedEvent as hy}from"@node-projects/base-custom-webcomponent";te();var Rt=D.Normal,Ea=class{snapOffset=5;_overlayLayerView;_containerItem;_positionsH=[];_positionsMiddleH=[];_positionsV=[];_positionsMiddleV=[];_outerRect;constructor(e){this._overlayLayerView=e}initialize(e){this._containerItem=e}clearSnaplines(){this._overlayLayerView.removeAllNodesWithClass&&this._overlayLayerView.removeAllNodesWithClass("svg-snapline"),this._positionsH=[],this._positionsMiddleH=[],this._positionsV=[],this._positionsMiddleV=[]}calculateSnaplines(e){this.clearSnaplines();let t=this._containerItem.serviceContainer.snaplinesProviderService.provideSnaplines(this._containerItem,e);this._outerRect=t.outerRect,this._positionsH=t.positionsH,this._positionsMiddleH=t.positionsMiddleH,this._positionsV=t.positionsV,this._positionsMiddleV=t.positionsMiddleV}snapToPosition(e,t,i){let r=this.snapOffset+1,n,o;for(let c=0;c<this._positionsH.length;c++){let h=Math.abs(this._positionsH[c][0]-e.x);(h<r||h===r&&n===void 0)&&(r=h,n=[],o=this._positionsH[c][0]);let d;t&&(d=Math.abs(e.x+t.width-this._positionsH[c][0]),(d<r||d===r&&n===void 0)&&(r=d,n=[],o=this._positionsH[c][0]-t.width)),h===r&&n.push(this._positionsH[c][1]),t&&d===r&&h!==r&&n.push(this._positionsH[c][1])}if(t)for(let c=0;c<this._positionsMiddleH.length;c++){let h=Math.abs(this._positionsMiddleH[c][0]-(e.x+t.width/2));(h<r||h===r&&n===void 0)&&(r=h,n=[],o=this._positionsMiddleH[c][0]-t.width/2),h===r&&n.push(this._positionsMiddleH[c][1])}r=this.snapOffset+1;let a,l;for(let c=0;c<this._positionsV.length;c++){let h=Math.abs(this._positionsV[c][0]-e.y);(h<r||h===r&&a===void 0)&&(r=h,a=[],l=this._positionsV[c][0]);let d;t&&(d=Math.abs(e.y+t.height-this._positionsV[c][0]),(d<r||d===r&&a===void 0)&&(r=d,a=[],l=this._positionsV[c][0]-t.height)),h===r&&a.push(this._positionsV[c][1]),t&&d===r&&h!==r&&a.push(this._positionsV[c][1])}if(t)for(let c=0;c<this._positionsMiddleV.length;c++){let h=Math.abs(this._positionsMiddleV[c][0]-(e.y+t.height/2));(h<r||h===r&&a===void 0)&&(r=h,a=[],l=this._positionsMiddleV[c][0]-t.height/2),h===r&&a.push(this._positionsMiddleV[c][1])}if(this._overlayLayerView.removeAllNodesWithClass("svg-snapline"),n!==void 0||a!==void 0){let c={x:n!==void 0?o:e.x,y:a!==void 0?l:e.y};return this.drawSnaplines(c,t,n,a),{x:n!==void 0?o:null,y:a!==void 0?l:null}}return{x:null,y:null}}drawSnaplines(e,t,i,r){if(i){let n=e.y,o=e.y;for(let a of i){let l=a.y-this._outerRect.top;n=n<l?n:l,o=o>l?o:l}for(let a of i){if(a.x-this._outerRect.left==e.x||t&&a.x-this._outerRect.left==e.x+t.width){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x),c.setAttribute("x2",a.x-this._outerRect.x),c.setAttribute("y1",n),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}if(a.x-this._outerRect.left+a.width==e.x||t&&a.x-this._outerRect.left+a.width==e.x+t.width){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x+a.width),c.setAttribute("x2",a.x-this._outerRect.x+a.width),c.setAttribute("y1",n),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}if(t&&a.x-this._outerRect.left+a.width/2==e.x+t.width/2){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x+a.width/2),c.setAttribute("x2",a.x-this._outerRect.x+a.width/2),c.setAttribute("y1",n),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}let l=document.createElementNS("http://www.w3.org/2000/svg","rect");l.setAttribute("x",a.x-this._outerRect.x),l.setAttribute("width",a.width),l.setAttribute("y",a.y-this._outerRect.y),l.setAttribute("height",a.height),l.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,l,Rt)}}if(r){let n=e.x,o=e.x;for(let a of r){let l=a.x-this._outerRect.left;n=n<l?n:l,o=o>l?o:l}for(let a of r){if(a.y-this._outerRect.top==e.y||t&&a.y-this._outerRect.top==e.y+t.height){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",n),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y),c.setAttribute("y2",a.y-this._outerRect.y),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}if(a.y-this._outerRect.top+a.height==e.y||t&&a.y-this._outerRect.top+a.height==e.y+t.height){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",n),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y+a.height),c.setAttribute("y2",a.y-this._outerRect.y+a.height),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}if(t&&a.y-this._outerRect.top+a.height/2==e.y+t.height/2){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",n),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y+a.height/2),c.setAttribute("y2",a.y-this._outerRect.y+a.height/2),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}let l=document.createElementNS("http://www.w3.org/2000/svg","rect");l.setAttribute("x",a.x-this._outerRect.x),l.setAttribute("width",a.width),l.setAttribute("y",a.y-this._outerRect.y),l.setAttribute("height",a.height),l.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,l,Rt)}}}};bt();pr();$e();ne();q();$e();_t();function F(s,e){let t=e.get(s);return t||(t=new Map,e.set(s,t),t)}var Pa=class s{designerCanvas;designItemsWithExtentions=new Set;_timeout;_appliedDesignerExtensions=new WeakMap;_shouldAppliedDesignerExtensions=new WeakMap;_lastApplyEventPerType=new WeakMap;_lastPrimarySelectionRefreshItem;constructor(e){Ap(),this.designerCanvas=e,e.instanceServiceContainer.selectionService.onSelectionChanged.on(this._selectedElementsChanged.bind(this)),e.instanceServiceContainer.selectionService.onSelectionRefresh.on(this._selectedElementsRefresh.bind(this)),e.instanceServiceContainer.onContentChanged.on(this._contentChanged.bind(this)),e.serviceContainer.globalContext.onToolChanged.on(()=>{this.removeExtension(e.instanceServiceContainer.selectionService.primarySelection,P.PrimarySelectionRefreshed),this._lastPrimarySelectionRefreshItem=null})}connected(){this.ensurePermanentRootExtensionsApplied(),this._timeout||(this._timeout=setTimeout(()=>this.refreshAllExtensionsTimeout(),20))}disconnected(){this._timeout&&clearTimeout(this._timeout),this._timeout=null}refreshAllExtensionsTimeout(){this.refreshAllAppliedExtentions(),this._timeout=setTimeout(()=>this.refreshAllExtensionsTimeout(),20)}ensurePermanentRootExtensionsApplied(){let e=this.designerCanvas.rootDesignItem;e&&(F(e,this._appliedDesignerExtensions).get(P.Permanent)?.length||this.applyExtension(e,P.Permanent))}_contentChanged(e){requestAnimationFrame(()=>{for(let t of e)switch(t.changeType){case"added":this.applyExtensions(t.designItems,P.Permanent,null,!0);break;case"moved":this.refreshExtensions(t.designItems,P.Permanent);break;case"parsed":this.ensurePermanentRootExtensionsApplied(),this.applyExtensions(Array.from(this.designerCanvas.rootDesignItem.children()),P.Permanent,null,!0);break;case"removed":this.removeExtensions(t.designItems,!0,P.Permanent);break}})}_selectedElementsChanged(e){if(this._lastPrimarySelectionRefreshItem=null,e.oldSelectedElements&&e.oldSelectedElements.length&&(this.removeExtension(e.oldSelectedElements[0],P.PrimarySelectionRefreshed),this.removeExtension(e.oldSelectedElements[0],P.PrimarySelection),this.removeExtension(e.oldSelectedElements[0],P.PrimarySelectionAndCanBeEntered),this.removeExtension(e.oldSelectedElements[0],P.OnlyOneItemSelected),this.removeExtensions(e.oldSelectedElements,!1,P.Selection),this.removeExtensions(e.oldSelectedElements,!1,P.MultipleItemsSelected),e.oldSelectedElements[0].parent)){let t=M.GetOrCreateDesignItem(e.oldSelectedElements[0].parent.element,e.oldSelectedElements[0].parent.element,this.designerCanvas.serviceContainer,this.designerCanvas.instanceServiceContainer);this.removeExtension(t,P.PrimarySelectionContainer),this.removeExtension(t,P.PrimarySelectionContainerAndCanBeEntered)}if(e.selectedElements&&e.selectedElements.length&&(this.applyExtensions(e.selectedElements,P.Selection,e.event),this.applyExtension(e.selectedElements[0],P.PrimarySelection,e.event),e.selectedElements.length===1?this.applyExtension(e.selectedElements[0],P.OnlyOneItemSelected,e.event):e.selectedElements.length>1&&this.applyExtension(e.selectedElements[0],P.MultipleItemsSelected,e.event),e.selectedElements[0].getPlacementService()?.isEnterableContainer(e.selectedElements[0])&&this.applyExtension(e.selectedElements[0],P.PrimarySelectionAndCanBeEntered,e.event),e.selectedElements[0].parent)){let t=M.GetOrCreateDesignItem(e.selectedElements[0].parent.element,e.selectedElements[0].parent.element,this.designerCanvas.serviceContainer,this.designerCanvas.instanceServiceContainer);this.applyExtension(t,P.PrimarySelectionContainer,e.event),t.getPlacementService()?.isEnterableContainer(t)&&this.applyExtension(t,P.PrimarySelectionContainerAndCanBeEntered,e.event)}}_selectedElementsRefresh(e){this.refreshAllAppliedExtentions(e.event),e.selectedElements&&e.selectedElements.length&&this._lastPrimarySelectionRefreshItem?.deref()===e.selectedElements[0]&&(this._appliedDesignerExtensions.get(e.selectedElements[0])?.get(P.PrimarySelectionRefreshed)||this.applyExtension(e.selectedElements[0],P.PrimarySelectionRefreshed,e.event)),this._lastPrimarySelectionRefreshItem=new WeakRef(e.selectedElements[0])}applyExtension(e,t,i,r=!1){if(e&&e.nodeType==k.Element){let n=this.designerCanvas.serviceContainer.designerExtensions.get(t),o=[];if(n){let a={};xt();for(let l of n){let c=F(e,this._shouldAppliedDesignerExtensions).get(t);if(c||(c=[]),c.push(l),F(e,this._shouldAppliedDesignerExtensions).set(t,c),l.shouldExtend(this,this.designerCanvas,e)){let h=F(e,this._appliedDesignerExtensions).get(t);h||(h=[]);let d=l.getExtension(this,this.designerCanvas,e);try{d.extend(a,i),o.push(d),i?F(e,this._lastApplyEventPerType).set(t,i):F(e,this._lastApplyEventPerType).delete(t)}catch(p){console.error(p)}h.push(d),F(e,this._appliedDesignerExtensions).set(t,h),this.designItemsWithExtentions.add(e)}}}if(r)for(let a of e.children())this.applyExtension(a,t,i,r);return o}return null}applyExtensions(e,t,i,r=!1){if(this.designerCanvas.overlayLayer.startBatch(),e){let n=this.designerCanvas.serviceContainer.designerExtensions.get(t);if(n){let o={};xt();for(let a of n)for(let l of e){let c=F(l,this._shouldAppliedDesignerExtensions).get(t);if(c||(c=[]),c.push(a),F(l,this._shouldAppliedDesignerExtensions).set(t,c),a.shouldExtend(this,this.designerCanvas,l)){let h=F(l,this._appliedDesignerExtensions).get(t);h||(h=[]);let d=a.getExtension(this,this.designerCanvas,l);try{d.extend(o,i),i?F(l,this._lastApplyEventPerType).set(t,i):F(l,this._lastApplyEventPerType).delete(t)}catch(p){console.error(p)}h.push(d),F(l,this._appliedDesignerExtensions).set(t,h),this.designItemsWithExtentions.add(l)}}}if(r)for(let o of e)this.applyExtensions(Array.from(o.children()),t,i,r)}this.designerCanvas.overlayLayer.endBatch()}applyExtensionInstance(e,t,i=P.Directly){let r=F(e,this._appliedDesignerExtensions).get(P.Directly);r||(r=[]);try{t.extend(null,null)}catch(n){console.error(n)}r.push(t),F(e,this._appliedDesignerExtensions).set(i,r),this.designItemsWithExtentions.add(e)}removeExtensionInstance(e,t){for(let i of F(e,this._appliedDesignerExtensions)){let r=i[1].indexOf(t);if(r>=0){try{t.dispose()}catch(n){console.error(n)}i[1].splice(r,1),i[1].length==0&&(F(e,this._appliedDesignerExtensions).delete(i[0]),F(e,this._shouldAppliedDesignerExtensions).delete(i[0])),F(e,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(e)}}}removeExtension(e,t){if(e)if(t){F(e,this._shouldAppliedDesignerExtensions).delete(t);let i=F(e,this._appliedDesignerExtensions).get(t);if(i){for(let r of i)try{r.dispose(),F(e,this._lastApplyEventPerType).delete(t)}catch(n){console.error(n)}F(e,this._appliedDesignerExtensions).delete(t),F(e,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(e)}}else{F(e,this._shouldAppliedDesignerExtensions).clear();for(let i of F(e,this._appliedDesignerExtensions))for(let r of i[1])try{r.dispose()}catch(n){console.error(n)}F(e,this._appliedDesignerExtensions).clear(),this.designItemsWithExtentions.delete(e)}}removeExtensions(e,t,i){if(e)if(i)for(let r of e){t&&r.hasChildren&&this.removeExtensions([...r.children()],!0,i),F(r,this._shouldAppliedDesignerExtensions).delete(i);let n=F(r,this._appliedDesignerExtensions).get(i);if(n){for(let o of n)try{o.dispose(),F(r,this._lastApplyEventPerType).delete(i)}catch(a){console.error(a)}F(r,this._appliedDesignerExtensions).delete(i),F(r,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(r)}}else for(let r of e){t&&r.hasChildren&&this.removeExtensions([...r.children()],!0,i),F(r,this._shouldAppliedDesignerExtensions).clear();for(let n of F(r,this._appliedDesignerExtensions))for(let o of n[1])try{o.dispose()}catch(a){console.error(a)}F(r,this._appliedDesignerExtensions).clear(),this.designItemsWithExtentions.delete(r)}}refreshExtension(e,t,i){if(!(this.designerCanvas.checkVisibility&&!this.designerCanvas.checkVisibility())&&e)if(t)if(!e.element.isConnected)this.removeExtension(e,t);else{let r=F(e,this._appliedDesignerExtensions).get(t);if(r){let n={};xt();for(let o of r)try{o.refresh(n,i),i&&F(e,this._lastApplyEventPerType).set(t,i)}catch(a){console.error(a)}}}else{let r={};xt();for(let n of F(e,this._appliedDesignerExtensions))for(let o of n[1])try{o.refresh(r,i)}catch(a){console.error(a)}}}refreshExtensions(e,t,i,r,n){if(this.designerCanvas.checkVisibility&&!this.designerCanvas.checkVisibility())return;this.designerCanvas.overlayLayer.startBatch();let o=performance.now();if(e)if(t){let a={};xt();e:for(let l of e)if(!l.element.isConnected)this.removeExtension(l,t);else{let c=F(l,this._appliedDesignerExtensions).get(t);if(c)for(let h of c)try{if(h!=r&&h.refresh(a,i),n&&performance.now()-o>n){console.warn("refreshExtensions() took too long, stopped refreshing");break e}}catch(d){console.error(d)}}}else{let a={};xt();e:for(let l of e)for(let c of F(l,this._appliedDesignerExtensions))for(let h of c[1])try{if(h!=r&&(h.refresh(a,i),i&&F(l,this._lastApplyEventPerType).set(t,i),n&&performance.now()-o>n)){console.warn("refreshExtensions() took too long, stopped refreshing");break e}}catch(d){console.error(d)}}this.designerCanvas.overlayLayer.endBatch()}refreshAllExtensions(e,t,i){this.designerCanvas.overlayLayer.startBatch(),e&&(this.refreshExtensions(e,P.Directly,i,t),this.refreshExtensions(e,P.Permanent,i,t),this.refreshExtensions(e,P.Selection,i,t),this.refreshExtensions(e,P.PrimarySelection,i,t),this.refreshExtensions(e,P.PrimarySelectionContainer,i,t),this.refreshExtensions(e,P.MouseOver,i,t),this.refreshExtensions(e,P.OnlyOneItemSelected,i,t),this.refreshExtensions(e,P.MultipleItemsSelected,i,t),this.refreshExtensions(e,P.ContainerDragOverAndCanBeEntered,i,t),this.refreshExtensions(e,P.ContainerDrag,i,t),this.refreshExtensions(e,P.Doubleclick,i,t),this.refreshExtensions(e,P.Placement,i,t),this.refreshExtensions(e,P.PrimarySelectionAndCanBeEntered,i,t),this.refreshExtensions(e,P.PrimarySelectionContainerAndCanBeEntered,i,t)),this.designerCanvas.overlayLayer.endBatch()}refreshAllAppliedExtentions(e){this.designerCanvas.fillCalculationrects(),this.refreshAllExtensions([...this.designItemsWithExtentions],null,e)}reapplyAllAppliedExtentions(e,t){this.designerCanvas.overlayLayer.startBatch();for(let i of s.getAllChildElements(this.designerCanvas.rootDesignItem))if(!e||e.includes(i)){let r=[...F(i,this._shouldAppliedDesignerExtensions).keys()];for(let n of r){let o=F(i,this._lastApplyEventPerType).get(n);this.removeExtension(i,n),(t==null||t.includes(n))&&this.applyExtension(i,n,o)}}this.designerCanvas.overlayLayer.endBatch()}static*getAllChildElements(e){if(e.nodeType==k.Element&&(yield e),e.hasChildren)for(let t of e.children())for(let i of s.getAllChildElements(t))yield i}};gt();oa();Ne();te();import{css as ry,html as ny,BaseCustomWebComponentConstructorAppend as sy}from"@node-projects/base-custom-webcomponent";var Gi=class s extends sy{static template=ny`<svg id="svg" style="pointer-events:none"><defs id="defs"></defs><g id="background"></g><g id="normal"></g><g id="foreground"></g></svg>`;static style=ry`svg{width:100%;height:100%;overflow:visible}.svg-invisible{stroke:transparent;fill:transparent;pointer-events:auto}.svg-snapline{stroke:purple;stroke-dasharray:4;fill:transparent}.svg-selector{stroke:#000;fill:#3899ec55;stroke-width:1;stroke-dasharray:2}.svg-primary-selection-move{stroke:#3899ec;fill:#3899ec;cursor:move;pointer-events:auto}.svg-position{stroke:#000;stroke-dasharray:2}.svg-path{stroke:#3899ec;fill:orange;pointer-events:auto}.svg-path-line{stroke:#3899ec;stroke-dasharray:2}.svg-draw-new-element{stroke:#000;fill:transparent;stroke-width:1}.svg-toolbar-container{overflow:visible}.svg-toolbar-container>div{padding:5px;display:flex;gap:2px;background:#fff;border-radius:4px;box-shadow:0 2px 10px 0 rgba(19,23,32,.2);align-items:center}node-projects-image-button-list-selector img{height:16px;border:1px solid #000;border-radius:4px;box-sizing:border-box;pointer-events:auto;cursor:pointer}node-projects-image-button-list-selector img:hover{background:#d3d3d3}node-projects-image-button-list-selector img:active{translate:1px 1px}`;static is="node-projects-overlay-layer-view";_serviceContainer;_svg;_gBackground;_gNormal;_gForeground;_defs;_id=0;constructor(e){super(),this._serviceContainer=e,this._svg=this._getDomElement("svg"),this._gBackground=this._getDomElement("background"),this._gNormal=this._getDomElement("normal"),this._gForeground=this._getDomElement("foreground"),this._defs=this._getDomElement("defs"),this._initialize()}_initialize(){let e=[s.style],t=new Set;for(let i of this._serviceContainer.designerExtensions)for(let r of i[1]){if(r.constructor.style)if(Array.isArray(r.constructor.style))for(let n of r.constructor.style)t.has(n)||(t.add(n),e.push(n));else t.has(r.constructor.style)||(t.add(r.constructor.style),e.push(r.constructor.style));if(r.style)if(Array.isArray(r.style))for(let n of r.style)t.has(n)||(t.add(n),e.push(n));else t.has(r.style)||(t.add(r.style),e.push(r.style));if(r.svgDefs){if(Array.isArray(r.svgDefs)){for(let n of r.svgDefs)if(!t.has(n)){t.add(n);let o=document.createElementNS("http://www.w3.org/2000/svg","defs");o.innerHTML=n;for(let a of[...o.children])this._defs.appendChild(a)}}else if(!t.has(r.svgDefs)){t.add(r.svgDefs);let n=document.createElementNS("http://www.w3.org/2000/svg","defs");n.innerHTML=r.svgDefs;for(let o of[...n.children])this._defs.appendChild(o)}}if(r.constructor.svgDefs){if(Array.isArray(r.constructor.svgDefs)){for(let n of r.constructor.svgDefs)if(!t.has(n)){t.add(n);let o=document.createElementNS("http://www.w3.org/2000/svg","defs");o.innerHTML=n;for(let a of[...o.children])this._defs.appendChild(a)}}else if(!t.has(r.constructor.svgDefs)){t.add(r.constructor.svgDefs);let n=document.createElementNS("http://www.w3.org/2000/svg","defs");n.innerHTML=r.constructor.svgDefs;for(let o of[...n.children])this._defs.appendChild(o)}}}for(let i of this._serviceContainer.designerPointerExtensions)if(i.style&&(t.has(i.style)||(t.add(i.style),e.push(i.style))),i.svgDefs&&!t.has(i.svgDefs)){t.add(i.svgDefs);let r=document.createElementNS("http://www.w3.org/2000/svg","defs");r.innerHTML=i.svgDefs;for(let n of[...r.children])this._defs.appendChild(n)}if(this._serviceContainer.overlayLayerViewAdditionalStyles)for(let i of this._serviceContainer.overlayLayerViewAdditionalStyles)t.has(i)||(t.add(i),e.push(i));this.shadowRoot.adoptedStyleSheets=e}backgroundFragment;foregroundFragment;normalFragment;batchCount=0;startBatch(){this.batchCount==0&&(this.backgroundFragment=document.createDocumentFragment(),this.foregroundFragment=document.createDocumentFragment(),this.normalFragment=document.createDocumentFragment()),this.batchCount++}endBatch(){this.batchCount--,this.batchCount==0&&(this.backgroundFragment.hasChildNodes&&this._gBackground.appendChild(this.backgroundFragment),this.foregroundFragment.hasChildNodes&&this._gForeground.appendChild(this.foregroundFragment),this.normalFragment.hasChildNodes&&this._gNormal.appendChild(this.normalFragment),this.backgroundFragment=null,this.foregroundFragment=null,this.normalFragment=null)}addOverlay(e,t,i=D.Normal){switch(t.setAttribute("overlay-source",e),i){case D.Background:this.backgroundFragment?this.backgroundFragment.appendChild(t):this._gBackground.appendChild(t);break;case D.Foreground:this.foregroundFragment?this.foregroundFragment.appendChild(t):this._gForeground.appendChild(t);break;default:this.normalFragment?this.normalFragment.appendChild(t):this._gNormal.appendChild(t);break}}removeOverlay(e){try{e?.parentElement?.removeChild(e)}catch(t){console.error(t)}}removeAllNodesWithClass(e){let t=this._svg.querySelectorAll("."+e);for(let i of t)i.parentNode.removeChild(i)}removeAllOverlays(){let e=this._svg.querySelectorAll("svg > g > *");for(let t of e)t.parentNode.removeChild(t)}createPoint(){return this._svg.createSVGPoint()}drawGroup(e,t,i,r){return i||(i=document.createElementNS("http://www.w3.org/2000/svg","g"),this.addOverlay(e,i,r)),t&&i.setAttribute("class",t),i}drawLine(e,t,i,r,n,o,a,l){return a||(a=document.createElementNS("http://www.w3.org/2000/svg","line"),this.addOverlay(e,a,l)),a.setAttribute("x1",t),a.setAttribute("y1",i),a.setAttribute("x2",r),a.setAttribute("y2",n),o&&a.setAttribute("class",o),a}drawCircle(e,t,i,r,n,o,a){return o||(o=document.createElementNS("http://www.w3.org/2000/svg","circle"),this.addOverlay(e,o,a)),o.setAttribute("cx",t),o.setAttribute("cy",i),o.setAttribute("r",r),n&&o.setAttribute("class",n),o}drawRect(e,t,i,r,n,o,a,l){return a||(a=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.addOverlay(e,a,l)),a.setAttribute("x",t),a.setAttribute("y",i),a.setAttribute("width",r),a.setAttribute("height",n),o&&a.setAttribute("class",o),a}drawPath(e,t,i,r,n){return r||(r=document.createElementNS("http://www.w3.org/2000/svg","path"),this.addOverlay(e,r,n)),r.setAttribute("d",t),i&&r.setAttribute("class",i),r}drawText(e,t,i,r,n,o,a){return o||(o=document.createElementNS("http://www.w3.org/2000/svg","text"),this.addOverlay(e,o,a)),o.setAttribute("x",i),o.setAttribute("y",r),o.textContent=t,n&&o.setAttribute("class",n),o}drawHTML(e,t,i,r,n,o,a,l,c){return l||(l=document.createElementNS("http://www.w3.org/2000/svg","foreignObject"),this.addOverlay(e,l,c)),l.setAttribute("x",i),l.setAttribute("y",r),l.setAttribute("width",n),l.setAttribute("height",o),typeof t=="string"?l.innerHTML=t:l.appendChild(t),a&&l.setAttribute("class",a),l}drawTextWithBackground(e,t,i,r,n,o,a,l){if(!a){let c=document.createElementNS("http://www.w3.org/2000/svg","filter");c.setAttribute("x","0"),c.setAttribute("y","0"),c.setAttribute("width","1"),c.setAttribute("height","1"),c.setAttribute("id","solid_"+ ++this._id);let h=document.createElementNS("http://www.w3.org/2000/svg","feFlood");h.setAttribute("flood-color",n),c.appendChild(h);let d=document.createElementNS("http://www.w3.org/2000/svg","feComposite");d.setAttribute("in","SourceGraphic"),d.setAttribute("operator","xor"),c.appendChild(d),this._defs.appendChild(c);let p=document.createElementNS("http://www.w3.org/2000/svg","text");p.setAttribute("filter","url(#solid_"+this._id+")");let m=document.createElementNS("http://www.w3.org/2000/svg","text");this.addOverlay(e,p,l),this.addOverlay(e,m,l),c.setAttribute("overlay-source",e),h.setAttribute("overlay-source",e),a=[c,h,p,m]}return a[2].setAttribute("x",i),a[3].setAttribute("x",i),a[2].setAttribute("y",r),a[3].setAttribute("y",r),a[2].textContent=t,a[3].textContent=t,o&&(a[2].setAttribute("class",o),a[3].setAttribute("class",o)),a}};customElements.define(Gi.is,Gi);Mt();q();Pe();function Lm(s,e){let t=new s.CSSStyleSheet;return t.replaceSync(e),t}_t();Fe();ce();var dy=ly`*{animation-play-state:paused!important}`,Wi=class extends oy{serviceContainer;instanceServiceContainer;containerBoundingRect;outerRect;clickOverlay;_activeTool;_gridSize=10;get gridSize(){return this._gridSize}set gridSize(e){this._gridSize=e;let t=document.createElement("canvas"),i=t.getContext("2d");t.width=e*2,t.height=e*2;let r=e;for(let o=0;o<t.width;o+=r)for(let a=0;a<t.height;a+=r)i.fillStyle=(o+a)%(r*2)===0?"#e5e5e5":"white",i.fillRect(o,a,r,r);let n=t.toDataURL();this._backgroundImage="url("+n+")",this._canvas.style.backgroundImage!="none"&&(this._canvas.style.backgroundImage=this._backgroundImage)}pasteOffset=10;alignOnGrid=!1;alignOnSnap=!0;snapLines;overlayLayer;rootDesignItem;_currentPasteOffset=this.pasteOffset;_zoomFactor=1;_scaleFactor=1;_canvasOffset={x:0,y:0};_additionalStyle;_backgroundImage;_enableSelectTextNodesOnClick=!1;_moveGroup;_touchGestureHelper;get zoomFactor(){return this._zoomFactor}set zoomFactor(e){this._zoomFactor=e,this._zoomFactorChanged()}get scaleFactor(){return this._scaleFactor}get canvasOffset(){return this._canvasOffset}set canvasOffset(e){this._canvasOffset=e,this._zoomFactorChanged()}get canvasOffsetUnzoomed(){return{x:this._canvasOffset.x*this.zoomFactor,y:this._canvasOffset.y*this.zoomFactor}}set canvasOffsetUnzoomed(e){this.canvasOffset={x:e.x/this.zoomFactor,y:e.y/this.zoomFactor}}_pauseAnimations;get pauseAnimations(){return this._pauseAnimations}set pauseAnimations(e){this._pauseAnimations=e,this.applyAllStyles()}get containerOffset(){return this._useIframe?this._outercanvas2.getBoundingClientRect():{x:0,y:0}}raiseDesignItemsChanged(e,t,i){this.designItemsChanged&&this.designItemsChanged(e,t,i)}designItemsChanged;onZoomFactorChanged=new hy;get canvas(){return this._canvas}get outercanvas2(){return this._outercanvas2}_canvas;_canvasShadowRoot;_canvasContainer;_outercanvas2;_lastHoverDesignItem;_firstConnect;static style=ay`:host{display:block;box-sizing:border-box;width:100%;position:relative;transform:translateZ(0);overflow:hidden;font-family:inherit;font-size:inherit;font-weight:inherit;font-style:inherit;line-height:inherit}*{touch-action:none}#node-projects-designer-canvas-canvasContainer{background:var(--node-projects-web-component-designer-background,border-box fixed 0 0 repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAFXmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjIwIgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjAiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSIyMCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMjAiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjMwMC8xIgogICB0aWZmOllSZXNvbHV0aW9uPSIzMDAvMSIKICAgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIKICAgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMi0xMi0wOFQwOToxNTo0OCswMTowMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMi0xMi0wOFQwOToxNTo0OCswMTowMCI+CiAgIDxkYzp0aXRsZT4KICAgIDxyZGY6QWx0PgogICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+QmFja2dyb3VuZGdyaWRfMTBweDwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnRpdGxlPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgRGVzaWduZXIgMS4xMC42IgogICAgICBzdEV2dDp3aGVuPSIyMDIyLTEyLTA4VDA5OjE1OjQ4KzAxOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz4fvgn+AAABgWlDQ1BzUkdCIElFQzYxOTY2LTIuMQAAKJF1kc8rRFEUxz8GjRhRLCiLl7BCftTExmLkV2ExnvJr8+bNvBk1b+b13kiyVbaKEhu/FvwFbJW1UkRKlrImNug5b2ZqJplzO/d87vfec7r3XPCpSd10KnrATGXs8FhImZtfUPwvBKjCTx/Nmu5YUzOjKiXt854yL952ebVKn/vXaqIxR4eyKuEh3bIzwuPCk6sZy+Md4UY9oUWFz4Q7bbmg8J2nR3L86nE8x98e22p4GHz1wkq8iCNFrCdsU1heTpuZXNHz9/FeEoilZmcktoq34BBmjBAKE4wwTJBeBmUO0iX96ZYVJfJ7svnTpCVXl9liDZtl4iTI0CnqilSPSTREj8lIsub1/29fHaO/L1c9EILKZ9d9bwf/Nvxsue7Xkev+HEP5E1ymCvnpQxj4EH2roLUdQN0GnF8VtMguXGxC06Ol2VpWKhf3GQa8nULtPDTcQPVirmf5fU4eQF2Xr7qGvX3okPN1S790cWfsRnax1QAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAC9JREFUOI1jfPr0KQNuICUlhUeWCY8cQTCqeWRoZvz//z8e6WfPntHK5lHNI0MzAMChCNMTuPcnAAAAAElFTkSuQmCC))}#node-projects-designer-canvas-canvas{image-rendering:pixelated;box-sizing:border-box;width:100%;height:100%;transform-origin:0 0;position:absolute}#node-projects-designer-canvas-canvas.dragFileActive{outline:#00f 4px solid;outline-offset:-4px}node-projects-overlay-layer-view{box-sizing:border-box;width:100%;height:100%;position:absolute;top:0;left:0;pointer-events:none;overflow:visible;user-select:none;-webkit-user-select:none;z-index:999999999999}#node-projects-designer-canvas-canvas *{cursor:pointer;user-select:none;-webkit-user-select:none}#node-projects-designer-canvas-canvas iframe{cursor:pointer;user-select:none;-webkit-user-select:none;border:none;width:100%;height:100%}#node-projects-designer-canvas-clickOverlay{position:absolute;width:100%;height:100%;top:0}#node-projects-designer-canvas-helper-element{height:0;width:0}#node-projects-designer-search-container{position:absolute;display:grid;grid-template-columns:1fr auto auto;align-items:center;justify-content:left;gap:8px;width:auto;right:10px;top:0;background:#f2f2f2;padding:5px 6px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}#node-projects-designer-search-container>#node-projects-designer-search-bar{border:1px solid #000;padding:0;display:grid;grid-template-columns:1fr auto;align-items:center;background-color:#fff;padding:1px 2px}#node-projects-designer-search-container>div>input{height:20px;padding-left:6px;font-size:13px;border:none;outline:0}#node-projects-designer-search-container>div>#node-projects-designer-search-start{height:22px;border:none;background-color:#fff;font-size:13px}#node-projects-designer-search-container>div>#node-projects-designer-search-start:hover{background-color:#d3d3d3;transition:.9s;border-radius:2px}#node-projects-designer-search-container>#node-projects-designer-search-close{position:relative;width:20px;height:20px;border:none;background-color:transparent}#node-projects-designer-search-container>span{font-family:sans-serif;font-size:12px}#node-projects-designer-search-container>#node-projects-designer-search-close::after,#node-projects-designer-search-container>#node-projects-designer-search-close::before{content:"";position:absolute;top:50%;left:50%;width:60%;background-color:#000;height:1px}#node-projects-designer-search-container>#node-projects-designer-search-close::before{transform:translate(-50%,-50%) rotate(45deg)}#node-projects-designer-search-container>#node-projects-designer-search-close::after{transform:translate(-50%,-50%) rotate(-45deg)}`;static template=cy`<div style="display:flex;flex-direction:column;width:100%;height:100%;margin:0!important;padding:0!important;border:none!important"><div style="width:100%;height:100%;margin:0!important;padding:0!important;border:none!important"><div id="node-projects-designer-canvas-outercanvas2" style="width:100%;height:100%;position:relative;margin:0!important;padding:0!important;border:none!important;isolation:isolate!important"><div id="node-projects-designer-canvas-canvasContainer" style="width:100%;height:100%;position:absolute;top:0;left:0;user-select:none;margin:0!important;padding:0!important;border:none!important"><div id="node-projects-designer-canvas-canvas" part="canvas"></div></div></div><div id="node-projects-designer-canvas-clickOverlay" tabindex="0" style="pointer-events:auto;margin:0!important;padding:0!important;border:none!important"></div></div><div id="node-projects-designer-search-container" style="display:none"><div id="node-projects-designer-search-bar"><input id="node-projects-designer-search-input"> <button id="node-projects-designer-search-start">↓</button></div><span id="node-projects-designer-search-result">0 selected</span> <button id="node-projects-designer-search-close"></button></div></div>`;extensionManager;_pointerextensions;_lastCopiedPrimaryItem;_ignoreEvent;_useIframe=!0;_iframe;_window;_resizeObserver;iframes;#e=!1;get readOnly(){return this.#e}set readOnly(e){this.#e=e}constructor(e=!1){super(),this._restoreCachedInititalValues(),Gl(),this._useIframe=e,this._canvas=this._getDomElement("node-projects-designer-canvas-canvas"),this._useIframe?(this._iframe=document.createElement("iframe"),this._iframe.setAttribute("sandbox","allow-same-origin"),this._iframe.setAttribute("scrolling","no"),this.iframes=[this._iframe],this._canvas.appendChild(this._iframe),requestAnimationFrame(()=>{this._window=this._iframe.contentWindow,Gl(this._iframe.contentWindow),this._canvasShadowRoot=this._iframe.contentWindow.document})):(this._window=window,this._canvasShadowRoot=this._canvas.attachShadow({mode:"open"})),this._canvasContainer=this._getDomElement("node-projects-designer-canvas-canvasContainer"),this._outercanvas2=this._getDomElement("node-projects-designer-canvas-outercanvas2"),this.clickOverlay=this._getDomElement("node-projects-designer-canvas-clickOverlay"),this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this._onDblClick=this._onDblClick.bind(this),this._pointerEventHandler=this._pointerEventHandler.bind(this),this._onWheel=this._onWheel.bind(this),this._getDomElement("node-projects-designer-search-close").onclick=()=>this._searchHideOverlay(),this._getDomElement("node-projects-designer-search-start").onclick=()=>this._searchRun(),this._getDomElement("node-projects-designer-search-container").onkeydown=t=>{t.key==="Enter"&&this._searchRun()},this.clickOverlay.oncontextmenu=t=>t.preventDefault(),this._resizeObserver=new ResizeObserver(()=>{this.extensionManager.refreshAllAppliedExtentions()}),this._resizeObserver.observe(this)}get designerWidth(){return this._canvasContainer.style.width}set designerWidth(e){this._canvasContainer.style.width=e,this._zoomFactorChanged()}get designerHeight(){return this._canvasContainer.style.height}set designerHeight(e){this._canvasContainer.style.height=e,this._zoomFactorChanged()}get designerPixelSize(){return{width:this._canvasContainer.offsetWidth,height:this._canvasContainer.offsetHeight}}getDesignSurfaceDimensions(){let e={width:null,height:null},t=getComputedStyle(this._canvasContainer);return this._canvasContainer.style.width&&(e.width=parseFloat(t.width)),this._canvasContainer.style.height&&(e.height=parseFloat(t.height)),e}get designerOffsetWidth(){return this._canvasContainer.offsetWidth}get designerOffsetHeight(){return this._canvasContainer.offsetHeight}set additionalStyles(e){this._additionalStyle=e,this.applyAllStyles()}get additionalStyles(){return this._additionalStyle}applyAllStyles(){if(this._window){let e=[];this._additionalStyle&&e.push(...this._additionalStyle),this.instanceServiceContainer.stylesheetService&&e.push(...this.instanceServiceContainer.stylesheetService.getStylesheets().map(t=>Lm(this._window,_a.patchStylesheetSelectorForDesigner(t.content)))),this._pauseAnimations&&e.push(dy),this._useIframe?this._iframe.contentWindow.document.adoptedStyleSheets=e:this._canvasShadowRoot.adoptedStyleSheets=e}else requestAnimationFrame(()=>this.applyAllStyles())}ignoreEvent(e){this._ignoreEvent=e}canExecuteCommand(e){let t=this.serviceContainer.modelCommandService;if(t){let i=this.instanceServiceContainer.selectionService.selectedElements,r=t.canExecuteCommand(this,e,i);if(r!==null)return r}return e.type===A.screenshot?!0:e.type===A.undo?this.instanceServiceContainer.undoService.canUndo():e.type===A.redo?this.instanceServiceContainer.undoService.canRedo():e.type===A.setTool?this.serviceContainer.designerTools.has(e.parameter):e.type===A.paste?!0:e.type===A.copy||e.type===A.cut||e.type===A.delete?this.instanceServiceContainer.selectionService.primarySelection!=null&&!this.instanceServiceContainer.selectionService.primarySelection.isRootItem:!1}async executeCommand(e){let t=this.serviceContainer.modelCommandService;if(t){let i=this.instanceServiceContainer.selectionService.selectedElements;if(await t.executeCommand(this,e,i)!=null){this.instanceServiceContainer.selectionService.setSelectedElements(null),this.instanceServiceContainer.selectionService.setSelectedElements(i);return}}switch(e.type){case A.screenshot:{ei.screenshotsEnabled||alert("you need to select current tab in next browser dialog, or screenshots will not work correctly");let a=this.instanceServiceContainer.selectionService.selectedElements;a?.length||(a=[...this.rootDesignItem.children(!0)]);let l=await this.serviceContainer.pngCreatorService.takePng(a,{removeSelection:!0});await Zd(new Blob([new Uint8Array(l)],{type:"image/png"}),"screenshot.png")}break;case A.setTool:this.serviceContainer.globalContext.tool=this.serviceContainer.designerTools.get(e.parameter),this.extensionManager.reapplyAllAppliedExtentions();break;case A.setStrokeColor:this.serviceContainer.globalContext.strokeColor=e.parameter;break;case A.setFillBrush:this.serviceContainer.globalContext.fillBrush=e.parameter;break;case A.setStrokeThickness:this.serviceContainer.globalContext.strokeThickness=e.parameter;break;case A.delete:this.handleDeleteCommand();break;case A.undo:this.instanceServiceContainer.undoService.undo();break;case A.holdUndo:let i=this.instanceServiceContainer.undoService.getUndoEntryNames(20),r=Array.from(i).map((a,l)=>({title:"undo: "+a,action:()=>{for(let c=0;c<=l;c++)this.instanceServiceContainer.undoService.undo()}}));r.length>0&&be.show(r,e.event,{mode:"undo"});break;case A.redo:this.instanceServiceContainer.undoService.redo();break;case A.holdRedo:let n=this.instanceServiceContainer.undoService.getRedoEntryNames(20),o=Array.from(n).map((a,l)=>({title:"redo: "+a,action:()=>{for(let c=0;c<=l;c++)this.instanceServiceContainer.undoService.redo()}}));o.length>0&&be.show(o,e.event,{mode:"undo"});break;case A.copy:this.handleCopyCommand();break;case A.cut:this.handleCopyCommand(),this.handleDeleteCommand();break;case A.paste:this.handlePasteCommand(e.altKey==!0);break;case A.selectAll:this.handleSelectAll();break}}disableBackgroud(){this._canvasContainer.style.background="var(--node-projects-web-component-designer-screenshot-background, white)"}enableBackground(){this._canvasContainer.style.background=""}zoomToFit(){let t=0,i=0,r=0,n=0;this.canvasOffset={x:0,y:0},this.zoomFactor=1;for(let d of this.rootDesignItem.querySelectorAll("*"))if(d instanceof(d.ownerDocument.defaultView??window).Element){let p=Y(d);r=r<p.x?r:p.x,n=n<p.y?n:p.y,t=t>p.x+p.width+10?t:p.x+p.width+10,i=i>p.y+p.height+10?i:p.y+p.height+10}let o=this.getBoundingClientRect();t-=o.x,i-=o.y;let a=o.width/(t/this.zoomFactor),l=o.height/(i/this.zoomFactor),c=this.getDesignSurfaceDimensions();c.width&&(a=o.width/c.width),c.height&&(l=o.height/c.height);let h=a<l?a:l;isNaN(h)||(this.zoomFactor=h)}handleSelectAll(){let e=Array.from(this.rootDesignItem.children(!0)).filter(i=>!i.isEmptyTextNode),t=this.instanceServiceContainer.selectionService.primarySelection;if(t){let i=e.indexOf(t);i>=0&&(e.splice(i,1),e.unshift(t))}this.instanceServiceContainer.selectionService.setSelectedElements(e)}async handleCopyCommand(){this._currentPasteOffset=this.pasteOffset,this._lastCopiedPrimaryItem=this.instanceServiceContainer.selectionService.primarySelection,await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements)}async handlePasteCommand(e){let[t,i]=await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer,this.instanceServiceContainer),r=this.rootDesignItem.openGroup("Insert"),n=this._lastCopiedPrimaryItem,o=this._currentPasteOffset+this.pasteOffset,a=this.rootDesignItem,l=n?.parent??this.instanceServiceContainer.selectionService.primarySelection;for(;l!=null;){let c=getComputedStyle(l.element),h;if(h=this.serviceContainer.getLastServiceWhere("containerService",d=>d.serviceForContainer(l,c)),h)if(h.canEnter(l,t)){a=l;break}else{l=l.parent;continue}}if(t){let c=this.getNormalizedElementCoordinates(a.element);for(let d=0;d<t.length;d++){let p=t[d],m=i?i[d]:null;this.instanceServiceContainer.undoService.execute(new ve(a,a.childCount,p)),!e&&m&&p.nodeType==k.Element&&(p.setStyle("left",m.x-c.x+this._currentPasteOffset+"px"),p.setStyle("top",m.y-c.y+this._currentPasteOffset+"px"))}let h=this.serviceContainer.intializationService;if(h)for(let d of t)h.init(d);this.instanceServiceContainer.selectionService.setSelectedElements(t)}r.commit(),this.snapLines.clearSnaplines(),this._lastCopiedPrimaryItem=n,this._currentPasteOffset=o}handleDeleteCommand(){let e=this.instanceServiceContainer.selectionService.selectedElements;this.serviceContainer.deletionService.removeItems(e),this.instanceServiceContainer.selectionService.setSelectedElements(null)}initialize(e){this.serviceContainer=e,this.instanceServiceContainer=new Ca(this);let t=this.serviceContainer.getLastService("undoService");t&&this.instanceServiceContainer.register("undoService",t(this));let i=this.serviceContainer.getLastService("selectionService");i&&(this.instanceServiceContainer.register("selectionService",i(this)),this.instanceServiceContainer.selectionService.onSelectionChanged.on(()=>{this._lastCopiedPrimaryItem=null,this._currentPasteOffset=this.pasteOffset}));let r=this.serviceContainer.getLastService("designItemDocumentPositionService");r&&this.instanceServiceContainer.register("designItemDocumentPositionService",r(this)),this._useIframe?(this.rootDesignItem=M.GetOrCreateDesignItem(this._iframe,this._iframe,this.serviceContainer,this.instanceServiceContainer),requestAnimationFrame(()=>{this.rootDesignItem.updateChildrenFromNodesChildren()})):this.rootDesignItem=M.GetOrCreateDesignItem(this._canvas,this._canvas,this.serviceContainer,this.instanceServiceContainer);let n=this.serviceContainer.getLastService("stylesheetService");if(n){let a=n(this);this.instanceServiceContainer.register("stylesheetService",a),this.instanceServiceContainer.stylesheetService.stylesheetChanged.on(l=>{if(this.instanceServiceContainer.collaborationService?.isApplyingRemoteChanges){this.applyAllStyles();return}if(l.changeSource!="undo"){let c=new ba(this.instanceServiceContainer.stylesheetService,l.name,l.newStyle,l.oldStyle);this.instanceServiceContainer.undoService.execute(c),this.applyAllStyles()}else this.applyAllStyles()}),this.instanceServiceContainer.stylesheetService.stylesheetsChanged.on(()=>{this.applyAllStyles()})}let o=this.serviceContainer.getLastService("collaborationService");if(o){let a=o(this);this.instanceServiceContainer.collaborationService=a,this.instanceServiceContainer.register("collaborationService",a)}if(e.instanceServiceContainerCreatedCallbacks?.length&&e.instanceServiceContainerCreatedCallbacks.forEach(a=>a(this.instanceServiceContainer)),this.extensionManager=new Pa(this),this.instanceServiceContainer.collaborationService&&(this.instanceServiceContainer.collaborationService.onPeersChanged.on(a=>{a.source==="remote"&&this.extensionManager.refreshAllAppliedExtentions()}),this.instanceServiceContainer.collaborationService.onCommentsChanged.on(()=>{this.extensionManager.refreshAllAppliedExtentions()})),this.overlayLayer=new Gi(e),this.overlayLayer.style.pointerEvents="none",this.overlayLayer.style.setProperty("margin","0","important"),this.overlayLayer.style.setProperty("padding","0","important"),this.overlayLayer.style.setProperty("border","none","important"),this.clickOverlay.appendChild(this.overlayLayer),this.snapLines=new Ea(this.overlayLayer),this.snapLines.initialize(this.rootDesignItem),this.serviceContainer.designerPointerExtensions)for(let a of this.serviceContainer.designerPointerExtensions)this._pointerextensions||(this._pointerextensions=[]),this._pointerextensions.push(a.getExtension(this));if(this.children){let a=this.children;if(this.children.length==1&&this.children[0]instanceof HTMLSlotElement&&(a=this.children[0].assignedElements()),a?.length>0){let l=this.serviceContainer.getLastServiceWhere("htmlParserService",c=>c.constructor==Nt);this.addDesignItems(l.createDesignItems(a,this.serviceContainer,this.instanceServiceContainer))}}this.serviceContainer.options.zoomDesignerBackground||requestAnimationFrame(()=>{this._resizeBackgroundGrid()}),this.isConnected&&this.extensionManager.connected()}connectedCallback(){this._firstConnect||(this._firstConnect=!0,this._touchGestureHelper=ua.addTouchEvents(this.clickOverlay),this.clickOverlay.addEventListener(w.PointerDown,this._pointerEventHandler),this.clickOverlay.addEventListener(w.PointerMove,this._pointerEventHandler),this.clickOverlay.addEventListener(w.PointerUp,this._pointerEventHandler),this.clickOverlay.addEventListener(w.DragEnter,e=>this._onDragEnter(e)),this.clickOverlay.addEventListener(w.DragLeave,e=>this._onDragLeave(e)),this.clickOverlay.addEventListener(w.DragOver,e=>this._onDragOver(e)),this.clickOverlay.addEventListener(w.Drop,e=>this._onDrop(e)),this.clickOverlay.addEventListener(w.KeyDown,this.onKeyDown),this.clickOverlay.addEventListener(w.KeyUp,this.onKeyUp),this.clickOverlay.addEventListener(w.DblClick,this._onDblClick,!0),this.clickOverlay.addEventListener(w.Wheel,this._onWheel),this.clickOverlay.addEventListener("zoom",e=>{this.zoomFactor=this.zoomFactor+e.detail.diff/10}),this.clickOverlay.addEventListener("pan",e=>{let t={x:this.canvasOffset.x-e.detail.deltaX,y:this.canvasOffset.y-e.detail.deltaY};this.canvasOffset=t})),this.extensionManager&&this.extensionManager.connected()}disconnectedCallback(){this.extensionManager.disconnected()}_zoomFactorChanged(){this._canvasContainer.style.bottom=this._outercanvas2.offsetHeight>=this._canvasContainer.offsetHeight?"0":"",this._canvasContainer.style.right=this._outercanvas2.offsetWidth>=this._canvasContainer.offsetWidth?"0":"",this._updateTransform(),this.fillCalculationrects(),this.onZoomFactorChanged.emit(this._zoomFactor),this.serviceContainer.options.zoomDesignerBackground||this._resizeBackgroundGrid()}_resizeBackgroundGrid(){let r=2e3/this.canvas.getBoundingClientRect().width;this.canvas.style.backgroundSize=r.toString()+"%"}_updateTransform(){if(this._scaleFactor=this._zoomFactor,this._useIframe){let e=this._canvasOffset.x,t=this._canvasOffset.y;this._iframe.contentWindow.scrollTo(e*-1,t*-1),e+=this._iframe.contentWindow.scrollX,t+=this._iframe.contentWindow.scrollY,this._canvasContainer.style.transform="scale("+this._zoomFactor+") translate("+e+"px, "+t+"px)"}else this._canvasContainer.style.transform="scale("+this._zoomFactor+") translate("+(isNaN(this._canvasOffset.x)?"0":this._canvasOffset.x)+"px, "+(isNaN(this._canvasOffset.y)?"0":this._canvasOffset.y)+"px)";this._canvasContainer.style.transformOrigin="0 0",this.overlayLayer.style.transform=this._canvasContainer.style.transform,this.overlayLayer.style.transformOrigin="0 0",this.snapLines.clearSnaplines()}setDesignItems(e){this.instanceServiceContainer.undoService.clearTransactionstackIfNotEmpty();let t=new wa(e,[...this.rootDesignItem.children()]);this.instanceServiceContainer.undoService.execute(t)}_internalSetDesignItems(e){this.fillCalculationrects(),this.overlayLayer.removeAllOverlays(),kd.removeAllChildnodes(this.overlayLayer);for(let t of[...this.rootDesignItem.children()])this.rootDesignItem._removeChildInternal(t);this.addDesignItems(e),this.lazyTriggerReparseDocumentStylesheets(),this.instanceServiceContainer.onContentChanged.emit([{changeType:"parsed"}]),this.instanceServiceContainer.selectionService._withoutUndoSetSelectedElements(null),setTimeout(()=>this.extensionManager.refreshAllAppliedExtentions(),50)}reparseTimeout;lazyTriggerReparseDocumentStylesheets(){this.reparseTimeout&&clearTimeout(this.reparseTimeout),this.reparseTimeout=setTimeout(async()=>{await this.reparseDocumentStylesheets(),clearTimeout(this.reparseTimeout)},20)}async reparseDocumentStylesheets(){if(this.instanceServiceContainer.stylesheetService){let e=this.rootDesignItem.querySelectorAll("style"),t=1,i=[...e].map(r=>({name:"&lt;style&gt; #"+(r.id?r.id+"("+t+++")":t++),content:M.GetDesignItem(r).content,designItem:M.GetDesignItem(r)}));await this.instanceServiceContainer.stylesheetService.setDocumentStylesheets(i)}}addDesignItems(e){e&&this.rootDesignItem._insertChildsInternal(e);let t=this.serviceContainer.intializationService;if(t)for(let i of e)t.init(i);this.snapLines.clearSnaplines()}_onDragEnter(e){if(this.fillCalculationrects(),e.preventDefault(),e.dataTransfer.types.indexOf(Yt)>=0){let i=this.serviceContainer.bindableObjectDragDropService;if(i){let r=this.getElementAtPoint({x:e.x,y:e.y});this._lastDdElement!=r&&(i.dragLeave(this,e,this._lastDdElement),i.dragEnter(this,e,r),this._lastDdElement=r)}else this._lastDdElement=null}else{this._lastDdElement=null;let i=this.serviceContainer.dragDropService;i&&i.dragEnter(this,e)}}_onDragLeave(e){this.fillCalculationrects(),e.preventDefault(),this._canvas.classList.remove("dragFileActive");let t=this.serviceContainer.dragDropService;t&&t.dragLeave(this,e)}_lastDdElement=null;_onDragOver(e){if(e.preventDefault(),this.fillCalculationrects(),e.dataTransfer.types.length>0&&e.dataTransfer.types[0]=="Files"){let t=this.serviceContainer.externalDragDropService;if(t){let i=t.dragOver(this,e);e.dataTransfer.dropEffect=i,i!=="none"&&this._canvas.classList.add("dragFileActive")}}else if(e.dataTransfer.types.indexOf(Yt)>=0){let i=this.serviceContainer.bindableObjectDragDropService;if(i){let r=this.getElementAtPoint({x:e.x,y:e.y});this._lastDdElement!=r&&(i.dragLeave(this,e,this._lastDdElement),i.dragEnter(this,e,r),this._lastDdElement=r);let n=i.dragOver(this,e,r);e.dataTransfer.dropEffect=n}}else{let i=this.serviceContainer.dragDropService;i&&i.dragOver(this,e)}}async _onDrop(e){if(this.serviceContainer.globalContext.tool=this.serviceContainer.designerTools.get(K.Pointer),this._lastDdElement=null,e.preventDefault(),this._canvas.classList.remove("dragFileActive"),this.fillCalculationrects(),e.dataTransfer.files?.length>0){let t=this.serviceContainer.externalDragDropService;t&&t.drop(this,e)}else{let t=e.dataTransfer.getData(Yt);if(t){let i=JSON.parse(t),r=this.serviceContainer.bindableObjectDragDropService;if(r){let n=this.getElementAtPoint({x:e.x,y:e.y});r.drop(this,e,i,n)}}else{let i=this.serviceContainer.dragDropService;i&&(this.fillCalculationrects(),i.drop(this,e))}}}showDesignItemContextMenu(e,t){let i=[];for(let n of this.serviceContainer.designerContextMenuExtensions)n.shouldProvideContextmenu(t,this,e,"designer")&&i.push(...n.provideContextMenuItems(t,this,e,"designer"));let r=new be(i,null);return r.display(t),r}_onDblClick(e){e.preventDefault(),e.target!==this.overlayLayer&&(e.altKey||(this.serviceContainer.globalContext.tool==null||this.serviceContainer.globalContext.tool===this.serviceContainer.designerTools.get(K.Pointer))&&(this.extensionManager.removeExtension(this.instanceServiceContainer.selectionService.primarySelection,P.PrimarySelectionRefreshed),this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection,P.Doubleclick,e)))}_searchShowOverlay(){if(this.serviceContainer.searchService){let e=this._getDomElement("node-projects-designer-search-container");e.style.display="",this._getDomElement("node-projects-designer-search-input").focus()}}_searchHideOverlay(){let e=this._getDomElement("node-projects-designer-search-container");e.style.display="none"}async _searchRun(){let e=this._getDomElement("node-projects-designer-search-input");if(this._getDomElement("node-projects-designer-search-result").innerHTML="0 selected",e.value!=""){let t=await this.serviceContainer.searchService.search(this,e.value);t?.length>0&&(this.instanceServiceContainer.selectionService.setSelectedElements(t.map(i=>i.designItem)),this._getDomElement("node-projects-designer-search-result").innerHTML=t.length.toString()+" selected")}}onKeyUp(e){this._ignoreEvent!==e&&(this.activeTool?.keyboardEventHandler&&(this.activeTool.keyboardEventHandler(this,e,null),e.defaultPrevented)||(this._moveGroup&&(this._moveGroup.commit(),this._moveGroup=null),e.preventDefault()))}onKeyDown(e){if(this._ignoreEvent!==e&&!(this.activeTool?.keyboardEventHandler&&(this.activeTool.keyboardEventHandler(this,e,null),e.defaultPrevented))){if(W(e)&&e.key==="z"&&!e.shiftKey)this.executeCommand({type:A.undo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="z"&&e.shiftKey)this.executeCommand({type:A.redo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="y")this.executeCommand({type:A.redo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="a")this.executeCommand({type:A.selectAll,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="c")this.executeCommand({type:A.copy,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="v")this.executeCommand({type:A.paste,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="x")this.executeCommand({type:A.cut,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="f")this._searchShowOverlay();else{if(!this.instanceServiceContainer.selectionService.primarySelection)return;let i=1;switch(e.shiftKey&&(i=10),e.key){case"Delete":case"Backspace":this.executeCommand({type:A.delete,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});break;case"ArrowDown":case"ArrowUp":case"ArrowLeft":case"ArrowRight":{this._moveGroup||(this._moveGroup=this.rootDesignItem.openGroup("move items"));let r={x:0,y:0};e.key=="ArrowDown"&&(r.y=-i),e.key=="ArrowUp"&&(r.y=i),e.key=="ArrowRight"&&(r.x=-i),e.key=="ArrowLeft"&&(r.x=i);for(let n of he(this.instanceServiceContainer.selectionService.selectedElements)){let o=getComputedStyle(n.parent.element);n.serviceContainer.getLastServiceWhere("containerService",a=>a.serviceForContainer(n.parent,o)).moveElements([n],r,!1)}}break}}e.preventDefault()}}getNormalizedEventCoordinates(e){let t=(e.clientX-this.outerRect.x)/this.zoomFactor,i=this.containerBoundingRect.x-this.outerRect.x,r=(e.clientY-this.outerRect.y)/this.zoomFactor,n=this.containerBoundingRect.y-this.outerRect.y;return{x:t-i/this.zoomFactor,y:r-n/this.zoomFactor}}getViewportCoordinates(e){return{x:e.clientX-this.outerRect.x,y:e.clientY-this.outerRect.y}}getNormalizedTextNodeCoordinates(e,t){let i=document.createRange();i.selectNodeContents(e);let r=i.getBoundingClientRect(),n=this.containerOffset;return{x:n.x+(r.x-this.containerBoundingRect.x)/(t?1:this.scaleFactor),y:n.y+(r.y-this.containerBoundingRect.y)/(t?1:this.scaleFactor),width:r.width/(t?1:this.scaleFactor),height:r.height/(t?1:this.scaleFactor)}}getNormalizedElementCoordinates(e,t){if(e.nodeType==k.TextNode)return this.getNormalizedTextNodeCoordinates(e,t);let i=Y(e),r=this.containerOffset;return{x:r.x+(i.x-this.containerBoundingRect.x)/(t?1:this.scaleFactor),y:r.y+(i.y-this.containerBoundingRect.y)/(t?1:this.scaleFactor),width:i.width/(t?1:this.scaleFactor),height:i.height/(t?1:this.scaleFactor)}}getNormalizedElementCoordinatesAndRealSizes(e){let t=this.getNormalizedElementCoordinates(e),i=getComputedStyle(e),r=t.width,n=t.height;return i.boxSizing!="border-box"&&(r=r-(parseFloat(i.borderLeft)+parseFloat(i.paddingLeft)+parseFloat(i.paddingRight)+parseFloat(i.borderRight)),n=n-(parseFloat(i.borderTop)+parseFloat(i.paddingTop)+parseFloat(i.paddingBottom)+parseFloat(i.borderBottom))),{...t,realWidth:r,realHeight:n}}getNormalizedOffsetInElement(e,t){let i=this.getNormalizedEventCoordinates(e),r=this.getNormalizedElementCoordinates(t);return{x:i.x-r.x,y:i.y-r.y}}transformPoint(e){if(this._useIframe){let t=this._canvasContainer.getBoundingClientRect();return{x:e.x-t.x,y:e.y-t.y}}return e}elementsFromPoint(e,t){let i=[],r=this.transformPoint({x:e,y:t}),n=this._canvasShadowRoot.elementsFromPoint(r.x,r.y);for(let o of n)o.getRootNode()===this._canvasShadowRoot&&i.push(o);return i}getElementAtPoint(e,t){let i=this.transformPoint(e),r=this._canvasShadowRoot.elementsFromPoint(i.x,i.y),n=null;for(let o=0;o<r.length;o++){if(n=r[o],t&&t(n)){n=null;continue}if(n.getRootNode()!==this._canvasShadowRoot){n=null;continue}if(!this.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements&&M.GetDesignItem(n).getStyleFromSheetOrLocal("pointer-events")=="none"){n=null;continue}break}return n}getDesignItemById(e){return M.GetDesignItem(this._canvasShadowRoot.getElementById(e))}querySelectorDesignItem(e){return M.GetDesignItem(this._canvasShadowRoot.querySelector(e))}querySelectorAllDesignItems(e){return[...this._canvasShadowRoot.querySelectorAll(e)].map(t=>M.GetDesignItem(t))}_hoverElement;showHoverExtension(e,t){let i=M.GetOrCreateDesignItem(e,e,this.serviceContainer,this.instanceServiceContainer);if(this._lastHoverDesignItem!=i&&(this._lastHoverDesignItem&&this.extensionManager.removeExtension(this._lastHoverDesignItem,P.MouseOver),i&&i!=this.rootDesignItem&&(!e.parentNode||kd.getHost(e.parentNode)!==this.overlayLayer)&&this.extensionManager.applyExtension(i,P.MouseOver,t),this._lastHoverDesignItem=i),this.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover&&this._hoverElement!==e){let r=this._hoverElement;for(;r&&r!==this._canvas;)r.removeAttribute(ut),r=r.parentElement;if(this._hoverElement=null,e){for(e.nodeType==k.TextNode&&(e=e.parentElement),r=e;r&&r!==this._canvas;)r.setAttribute(ut,""),r=r.parentElement;this._hoverElement=e}}}_onWheel(e){let t=this.getElementAtPoint({x:e.clientX,y:e.clientY});for(;t;){let i=getComputedStyle(t);if(i.overflowY==="scroll"||i.overflowY==="auto"){let r=t;r.scrollBy?r.scrollBy(e.deltaX,e.deltaY):(r.scrollLeft+=e.deltaX,r.scrollTop+=e.deltaY),e.stopPropagation();break}t=t.parentElement}}_pointerEventHandler(e,t=null){if(this._ignoreEvent===e||!this.serviceContainer||this._touchGestureHelper.multitouchEventActive)return;if(this.fillCalculationrects(),this._pointerextensions)for(let o of this._pointerextensions)o.refresh(e);let i;if(t)i=t;else if(i=this.serviceContainer.elementAtPointService.getElementAtPoint(this,{x:e.x,y:e.y}),!i)i=this._canvas;else if(this._enableSelectTextNodesOnClick){let o=this.getNormalizedEventCoordinates(e);for(let a of i.childNodes)if(a.nodeType==k.TextNode){let l=this.getNormalizedElementCoordinates(a);if(l.x<=o.x&&l.x+l.width>=o.x&&l.y<=o.y&&l.y+l.height>=o.y){i=a;break}}}if(this._activeTool){this._activeTool.pointerEventHandler(this,e,i);return}this.clickOverlay.style.cursor=this._canvas.style.cursor;let r=M.GetOrCreateDesignItem(i,i,this.serviceContainer,this.instanceServiceContainer);this.showHoverExtension(r.element,e),i&&kd.getHost(i.parentNode)===this.overlayLayer&&(i=this.instanceServiceContainer.selectionService.primarySelection?.element??this._canvas);let n=this.serviceContainer.globalContext.tool??this.serviceContainer.designerTools.get(K.Pointer);n.pointerEventHandler(this,e,i),this._canvas.style.cursor=n.cursor}captureActiveTool(e){this._activeTool=e}releaseActiveTool(){this._activeTool=null}get activeTool(){return this.serviceContainer.globalContext.tool}fillCalculationrects(){this.containerBoundingRect=this._canvasContainer.getBoundingClientRect(),this.outerRect=this._outercanvas2.getBoundingClientRect()}removeOverlay(e){this.overlayLayer.removeOverlay(e)}zoomOntoRectangle(e,t){let i={x:e.x<t.x?e.x:t.x,y:e.y<t.y?e.y:t.y,width:Math.abs(e.x-t.x),height:Math.abs(e.y-t.y)},r=this.outerRect.width/i.width,n=this.outerRect.height/i.height,o=r>=n?n:r,a={x:i.width/2+i.x,y:i.height/2+i.y};this.zoomPoint(a,o)}zoomPoint(e,t){this.zoomFactor=t;let i={x:-e.x+this.outerRect.width/this.zoomFactor/2,y:-e.y+this.outerRect.height/this.zoomFactor/2};this.canvasOffset=i}zoomConvertEventToViewPortCoordinates(e){let t=this.containerBoundingRect.x-this.outerRect.x,i=this.containerBoundingRect.y-this.outerRect.y;return{x:(e.x+t/this.zoomFactor)*this.zoomFactor,y:(e.y+i/this.zoomFactor)*this.zoomFactor}}zoomTowardsPoint(e,t){let i=t/this.zoomFactor,r=this.zoomConvertEventToViewPortCoordinates(e),n={x:-(r.x*(i-1)+i*-this.canvasOffsetUnzoomed.x),y:-(r.y*(i-1)+i*-this.canvasOffsetUnzoomed.y)};this.zoomFactor=t,this.canvasOffsetUnzoomed=n}};customElements.define("node-projects-designer-canvas",Wi);Ze();pr();le();bt();ot();import{BaseCustomWebComponentConstructorAppend as py,css as my,html as uy}from"@node-projects/base-custom-webcomponent";var Mr=class extends py{static style=my`node-projects-designer-tools-buttons{height:100%;width:100%}#toolButtons{scrollbar-width:none;overflow-y:auto;height:100%}#toolButtons::-webkit-scrollbar{display:none}#popup{position:absolute;top:calc(0px + 10px);height:100%;left:calc(24px + 4px + 10px)}`;static template=uy`<div id="popup"></div><div id="toolButtons"></div>`;_toolButtonsElem;_serviceContainer;_popupContainer;designerView;constructor(){super(),this._toolButtonsElem=this._getDomElement("toolButtons"),this._toolButtonsElem.onwheel=e=>e.stopPropagation(),this._popupContainer=this._getDomElement("popup")}initialize(e,t){this._serviceContainer=e,this.designerView=t;for(let i of this._serviceContainer.designViewToolbarButtons)this._toolButtonsElem.appendChild(i.provideButton(t.designerCanvas));this._serviceContainer.globalContext.onToolChanged.on(i=>{for(let r of this._toolButtonsElem.children)r instanceof ge&&r.setActiveTool(i.newValue.name)})}showPopup(e){if(this._popupContainer.children.length)this._popupContainer.innerHTML="";else{let t;typeof e.popup=="string"?t=document.createElement(e.popup):t=new e.popup,this._popupContainer.appendChild(t)}}setTool(e){this._popupContainer.children.length&&(this._popupContainer.innerHTML=""),this.designerView.designerCanvas.executeCommand({type:A.setTool,parameter:e})}setStrokeColor(e){this._popupContainer.children.length&&(this._popupContainer.innerHTML=""),this.designerView.designerCanvas.executeCommand({type:A.setStrokeColor,parameter:e})}setFillBrush(e){this._popupContainer.children.length&&(this._popupContainer.innerHTML=""),this.designerView.designerCanvas.executeCommand({type:A.setFillBrush,parameter:e})}setStrokeThickness(e){this._popupContainer.children.length&&(this._popupContainer.innerHTML=""),this.designerView.designerCanvas.executeCommand({type:A.setStrokeThickness,parameter:e})}};customElements.define("node-projects-designer-toolbar",Mr);var ti=class extends vy{_sVert;_sHor;get serviceContainer(){return this._designerCanvas.serviceContainer}set serviceContainer(e){this._designerCanvas.serviceContainer=e}get instanceServiceContainer(){return this._designerCanvas.instanceServiceContainer}set instanceServiceContainer(e){this._designerCanvas.instanceServiceContainer=e}_designerCanvas;get designerCanvas(){return this._designerCanvas}get readOnly(){return this._designerCanvas.readOnly}set readOnly(e){this._designerCanvas.readOnly=e}_zoomInput;_lowertoolbar;_toolbar;static style=fy`:host{display:block;box-sizing:border-box;width:100%;position:relative;transform:translateZ(0);overflow:hidden}*{touch-action:none}#lowertoolbar{height:16px;background:#787f82;display:flex;bottom:0;position:absolute;font-size:12px;width:100%}input{width:40px;height:16px;padding:0;border:0;font-size:12px;text-align:center;margin-right:1px}.toolbar-control{width:16px;height:16px;display:block;margin-right:1px;cursor:default;display:flex;justify-content:center;align-items:center}.selected{background-color:#00bfff}.toolbar-control:hover{background-color:rgba(164,206,249,.6)}#outer{user-select:none;display:flex;flex-direction:column;width:100%;height:100%}#canvas{left:24px;width:calc(100% - 24px - 16px);height:calc(100% - 32px)}#tool-bar{width:24px;height:calc(100% - 32px);position:absolute;background-color:#d3d3d3}.zoom-in{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAn9JREFUeNqkU11o01AUTtI06U/6tzHWbnNVS+k67FAG/gwfZEOcCrpNEBwEH2Q+Otqxh+5VEaHYV18UwQd9sk4Q+6CUKogbtSoM10qftJS2iGuT/iRpshvvDZu4DHHggY+TnHu+795zz7m4qqrYxfA6pjerlcHMZvMQQRCL8Hccoh+iBJECAMQEQci3Wk2MxP5iqgqmJUmIB3xkdTRoKgQG6Wr1JxBX1oTQx3UxCdcjMO2ZJiCK4g4y3HUIACV+bsL5dSRAWfwe636z0WBzWEFzn5vku5xyIZGsx2UF5AhEaDYbO8Dz3KLPi1X9B2iTy0pRiDx5/Z2bJgmGwDH8WMhuDxzEf6A8TYDneT3GR4JMzcVQThNlcCtANaM48pICutodxXTkkI1HeVslSPor6B/wWL7B3Z1n2KR3O3h05rkDOkd2eYoSxM025PVrAgAQeoFSuSLI3Q66jpJNRsIWPLvM5JJTTUkGGsqVtgJ5JU3AaLTqBVKZT9xh7yDT2Gh05G4bNQBzGETkBbkMVAxbzdadMJbSBDzCHXgKgKGZQJCp0IP32dnEaKhd6nOZAay7mXk6UUGeIHDDh88NKb0qumjaHiN391/1GjtrJ6ZPSb33H9eJYomuTJ601Qf7SKVYVlqplZblxRvOThrtEaC28qSOPAwncCYSWbzJsrO3XP4br9KZa1fTmcaOSTQYLDFFaeURh/yDfLynp/fCwkI0yrKX79ZqG49sUr2A44a3u+d08/fXVhfAeZ8vcDocjs6z7KV7xeL3JzBcwPZgmoAkScGlpdvzc3NXHuZyXxIwlMX2aJoAfFkvx8aGnRzH5WEpr7cXuerKPwVw1Lb/sV8CDACbf0U37X3NqwAAAABJRU5ErkJggg==)}.zoom-out{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmVJREFUeNqkU01oE0EUnv3Nf0xsS01jEzWUNCUplh7U4kEiVVEQqyBYWDxor5am5JBeFRGCuXpRBA8KHqIHMYISohdTYlQo2kguaghJUNvd/O1udjvr7NKWZHuw4IMHM/v9zHu8t5iiKCAYDAKi/xQ4MHEdbIXFYgUmk2kUx/EouoZRulGWUaYhhHGe5wutVhOQKtk3/RToQ1HgjCjyCb+PrE0GjEW/x1Cr/YFCdoUPffwqpBAeQbRnmoEgCD1i9OoohHLi7EnHt3E/bfb0m/pwDGBeF04P77Mpex1SMZliE5IMV3FV0Gw2erJe56I+L6iNHDQYnRaaVsXb5uh8JGS3+w9hv1SeVkG9Xtd3EB4PDBecVtplpAmHKMMesN2R2Ymg7fer9PfwZgui3sC932X+gV53nGZSXj2Yf36B5oWNNtK5NQMIcT2nXKnyUt8eA6uSUf1YNyhKsFmptmWkK2sGFGXRG6Rzn7jDXo+1sdboSBSJEd0gVABYzrMOpEtrBi7+DqoCAnUn1JTo0IP3+dnkZKhdHnKaIEUSXRPCiA+fG2JmWXAaDPY4uXP+ipfqrBybOSEO3n/M4qWyoXrmuE30DJHWUkVupbMt44u3nJ2k7BGotAqkTjyGNvBiJBK9yTCzt5wjN15ncteuZnKNnk0kCHNcllsFVUN2iY8ODAyeX1yMxRjm8t319bVHNpEtYhjxbseago3t0+YU4Dmfzz+9sBCbZ5hL90qln0/Q5yLYRWgGoigGlpZuz8/NXXm4uvolqY4a7DI0A/RnvZyaGnNwHFdArbzZArla9p8GmDq2/4m/AgwATHQSD48kJDUAAAAASUVORK5CYII=)}.snap-grid{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAblJREFUeNqkUjtLA0EQnntFyKNKJdiFgIlGC5G0FlaaIsYgiKAgKIKdjbV/wM7GImBhI6JFMFWKK3yBimBAhJDuUEgimMSYS0hunbncHRtFjLjw7X7z7ezszM4KjDEQRRG+jnlEgvYAAgLAJpoT1tYdA9gzAAqLuC/DD4N1EZC87v1IYnZ0MBj0k/6Szw/nTs7GO+8f62gWBCuDHTRG+ABxgGScsd3JlYWlJogu9TSjkT41NzM0AEbr5uDocJmxLTv3CCJpgbRkAKcWpq14vP7scVqrVKsbBOKktayS7BL4RzB5uxvAo7++SfV6vYnmBenESaM9/qCESFt4pPUJJzrlLpe/vQ9pTeex8A0EQcggwILJo9EohMPhNVW9ZqFQaJvsWCzWozGuCxJ3gck1TYNGo+Hy+XxQKpXalUoFisUi1Go1RyM/uwtZLsADYkxRlGnMZLXT6QQkSSqglsIV0HY0XddTdgkqV4LD6YPJsgwYzLSJEygQraz70YDvRg9Hh3O8DdptM1uTEwzDMDnvTHVfWfy+D8592W4Jt1wJfXOnC0h8XMw/cbuEHOKZc/iNX9qC2cb/jE8BBgAvhdOb37HVsgAAAABJRU5ErkJggg==)}.snap-guide{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYVJREFUeNqkU7tKA1EQnbs3CnlVqbQNARMjFilS+AnZQhIbW0ER/AA/wlYbhXR2wUKx0iKNYGMKDViEdEIgieBujGvCPpyz7sK6iWLIwJk798zsuXsfIxzHoXksAqcoij+vMbYq7MoszGxaEB3wtODlH3i5E5uojck210RCgq7SJie4MC0TsdO1cim/lMmkwHdarZWni+t16/1jz/FElJBAGc5imLzyakXNG0IuVo+OnwHE4JCzgisG7BJu/I3CQjyRuq1dvWi6vg8gBofcOHgGAZO+AFv88/VNDofDEcd3IBCD43ycfhEowY28Sazfnzh1cKMggWsUQvi4waiqKuVyud16/d7JZrOHxWJxKudMuQV3C81mk3RdX0wmk9Tr9UxN06jb7dJgMPjBwQRUAu/AtWg0SpZl7TDSUso2/1UVNWHOMIwJARzWBhcQwMXu1oJb9Ufbtsk0zYktPLrvgD8E/mWeYoNxxlj2xoZ3qI2/YrePQs10PksjTRPozCog5m3nLwEGABrLzseuHT6IAAAAAElFTkSuQmCC)}.bottom-scroll{width:calc(100% - 16px);position:absolute;bottom:16px;height:16px;box-sizing:border-box;z-index:1}.right-scroll{height:calc(100% - 32px);position:absolute;right:0;top:0;width:16px;box-sizing:border-box;z-index:1}.bottom-right{width:16px;height:16px;bottom:16px;right:0;position:absolute;background:#f0f0f0}`;static template=yy`<div id="outer"><node-projects-plain-scrollbar id="s-hor" value="0.5" class="bottom-scroll"></node-projects-plain-scrollbar><node-projects-plain-scrollbar id="s-vert" value="0.5" orientation="vertical" class="right-scroll"></node-projects-plain-scrollbar><div class="bottom-right"></div><div id="lowertoolbar"><input id="zoomInput" type="text" value="100%"><div title="decrease zoom" id="zoomIncrease" class="toolbar-control zoom-in"></div><div title="increase zoom" id="zoomDecrease" class="toolbar-control zoom-out"></div><div title="reset zoom" id="zoomReset" class="toolbar-control" style="width:16px;height:16px;font-size:14px;display:flex;align-items:center;justify-content:center">1</div><div title="zoom to fit" id="zoomFit" class="toolbar-control" style="width:16px;height:16px;font-size:8px;display:flex;align-items:center;justify-content:center">100%</div><div title="snap to grid" id="alignGrid" class="toolbar-control snap-grid"></div><div title="snap to elements" id="alignSnap" class="toolbar-control snap-guide"></div></div></div>`;constructor(e=!1){super(),this._restoreCachedInititalValues(),this._sVert=this._getDomElement("s-vert"),this._sHor=this._getDomElement("s-hor");let t=this._getDomElement("outer");this._designerCanvas=new Wi(e),this._designerCanvas.id="canvas",this._designerCanvas.appendChild(document.createElement("slot")),t.insertAdjacentElement("afterbegin",this._designerCanvas),this._toolbar=new Mr,this._toolbar.id="tool-bar",this._sVert.insertAdjacentElement("afterend",this._toolbar),this._designerCanvas.onZoomFactorChanged.on(()=>{this._zoomInput.value=Math.round(this._designerCanvas.zoomFactor*100)+"%";let c=this.designerCanvas.canvasOffset,h=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,d=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._sHor.value=c.x/(-2*h)+.5,this._sVert.value=c.y/(-2*d)+.5}),this._zoomInput=this._getDomElement("zoomInput"),this._zoomInput.onkeydown=c=>{c.key=="Enter"&&(this._designerCanvas.zoomFactor=parseFloat(this._zoomInput.value)/100)},this._zoomInput.onblur=()=>{this._designerCanvas.zoomFactor=parseFloat(this._zoomInput.value)/100},this._zoomInput.onclick=this._zoomInput.select;let i=this._getDomElement("zoomIncrease");i.onclick=()=>{let c=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,h=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._designerCanvas.zoomFactor>.1?this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor+.1):this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor+.01)};let r=this._getDomElement("zoomDecrease");r.onclick=()=>{let c=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,h=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._designerCanvas.zoomFactor>.11?this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor-.1):this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor-.01),this._designerCanvas.zoomFactor<.001&&this._designerCanvas.zoomPoint({x:c/2,y:h/2},.001)};let n=this._getDomElement("zoomReset");n.onclick=()=>{this.zoomReset()};let o=this._getDomElement("zoomFit");o.onclick=()=>{this.zoomToFit()},this.addEventListener(w.Wheel,c=>this._onWheel(c));let a=this._getDomElement("alignSnap");a.onclick=()=>{this._designerCanvas.alignOnSnap=!this._designerCanvas.alignOnSnap,a.style.backgroundColor=this._designerCanvas.alignOnSnap?"deepskyblue":""},a.style.backgroundColor=this._designerCanvas.alignOnSnap?"deepskyblue":"",a.oncontextmenu=c=>{c.preventDefault()};let l=this._getDomElement("alignGrid");l.onclick=()=>{this._designerCanvas.alignOnGrid=!this._designerCanvas.alignOnGrid,l.style.backgroundColor=this._designerCanvas.alignOnGrid?"deepskyblue":""},l.style.backgroundColor=this._designerCanvas.alignOnGrid?"deepskyblue":"",l.oncontextmenu=c=>{c.preventDefault();let h=prompt("raster size",this.designerCanvas.gridSize.toString());if(h){let d=parseInt(h);d>0&&(this.designerCanvas.gridSize=d)}},this._lowertoolbar=this._getDomElement("lowertoolbar"),this._sVert.addEventListener("scrollbar-input",c=>this._onScrollbar(c)),this._sHor.addEventListener("scrollbar-input",c=>this._onScrollbar(c))}zoomReset(){this._designerCanvas.canvasOffset={x:0,y:0},this._designerCanvas.zoomFactor=1,this._sVert.value=.5,this._sHor.value=.5,this._zoomInput.value=Math.round(this._designerCanvas.zoomFactor*100)+"%"}zoomToFit(){this._designerCanvas.zoomToFit()}_onScrollbar(e){e?.detail=="incrementLarge"?e.target.value+=.25:e?.detail=="decrementLarge"?e.target.value-=.25:e?.detail=="incrementSmall"?e.target.value+=.05:e?.detail=="decrementSmall"&&(e.target.value-=.05);let t=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,i=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight,r=t*(this._sHor.value-.5)*-2,n=i*(this._sVert.value-.5)*-2;this.designerCanvas.canvasOffset={x:r,y:n}}_onWheel(e){if(e.preventDefault(),e.ctrlKey){let t=this._designerCanvas.zoomFactor,i=e.deltaY<0?1:-1;t*=Math.exp(i*.2),t<.02&&(t=.02);let r=this.designerCanvas.getNormalizedEventCoordinates(e);this.designerCanvas.zoomTowardsPoint(r,t)}else e.shiftKey?(this._sHor.value+=e.deltaY/1e4,this._onScrollbar(null)):(this._sVert.value+=e.deltaY/1e4,this._onScrollbar(null),this._sHor.value+=e.deltaX/1e4,this._onScrollbar(null))}get designerWidth(){return this._designerCanvas.designerWidth}set designerWidth(e){this._designerCanvas.designerWidth=e}get designerHeight(){return this._designerCanvas.designerHeight}set designerHeight(e){this._designerCanvas.designerHeight=e}set additionalStyles(e){this._designerCanvas.additionalStyles=e}setDesignItems(e){this._designerCanvas.setDesignItems(e)}async executeCommand(e){this._designerCanvas.executeCommand(e)}canExecuteCommand(e){return this._designerCanvas.canExecuteCommand(e)}initialize(e){if(this.serviceContainer=e,this._designerCanvas.initialize(e),e.designViewConfigButtons)for(let t of e.designViewConfigButtons)for(let i of t.provideButtons(this,this._designerCanvas))this._lowertoolbar.appendChild(i);this._toolbar.initialize(this.serviceContainer,this)}getDesignerHTML(){return this._designerCanvas.rootDesignItem.childCount>0?Q.ConvertToString(Array.from(this._designerCanvas.rootDesignItem.children()),!0,!0):""}async parseDesignerHTML(e,t=!1){let i=this.serviceContainer.htmlParserService;if(!e)this._designerCanvas.overlayLayer.removeAllOverlays(),gy.removeAllChildnodes(this._designerCanvas.overlayLayer),this._designerCanvas.rootDesignItem.clearChildren();else{let r=await i.parse(e,this.serviceContainer,this.instanceServiceContainer,!1);t?this._designerCanvas._internalSetDesignItems(r):this._designerCanvas.setDesignItems(r)}}static wrapInDesigner(e,t){let i=new Wi;i.initialize(t);let r=i.serviceContainer.getLastServiceWhere("htmlParserService",n=>n.constructor==Nt);return i.addDesignItems(r.createDesignItems(e,i.serviceContainer,i.instanceServiceContainer)),i}};customElements.define("node-projects-designer-view",ti);var Id=class extends ti{constructor(){super()}async ready(){let e=await(await Promise.resolve().then(()=>(pa(),Jp))).default;this.initialize(e())}};customElements.define("node-projects-default-configured-designer-view",Id);Ze();sh();th();lh();ih();oh();rh();Lh();md();_r();nh();eh();ah();Nh();ot();gt();Fh();tc();jc();Uc();Yc();xc();dc();_c();ec();vc();Sc();hc();pd();ud();Je();te();$e();ie();Pc();Ac();Xl();Kl();td();id();ha();bd();jh();bh();fo();Cc();Ec();ch();hh();kc();Es();Ql();ql();Oh();Vh();le();ie();te();function xy(s){return s instanceof SVGRectElement?[{x:s.x.baseVal.value,y:s.y.baseVal.value},{x:s.x.baseVal.value+s.width.baseVal.value,y:s.y.baseVal.value},{x:s.x.baseVal.value+s.width.baseVal.value,y:s.y.baseVal.value+s.height.baseVal.value},{x:s.x.baseVal.value,y:s.y.baseVal.value+s.height.baseVal.value}]:s instanceof SVGLineElement?[{x:s.x1.baseVal.value,y:s.y1.baseVal.value},{x:s.x2.baseVal.value,y:s.y2.baseVal.value}]:null}var Aa=class extends R{constructor(e,t,i){super(e,t,i)}_parentRect;_svgElement;_circles=[];_points;_startPoint;_startPos;extend(){this._parentRect=this.extendedItem.element.parentElement.getBoundingClientRect(),this._svgElement=this.extendedItem.node,this.refresh()}refresh(){let e=xy(this._svgElement);if(e&&this._valuesHaveChanges(this.designerCanvas.scaleFactor,...e.map(t=>t.x),...e.map(t=>t.y))){this._points=e;for(let t=0;t<this._points.length;t++)this._circles[t]=this._drawPathCircle(t,this._circles[t])}}dispose(){this._removeAllOverlays()}_drawPathCircle(e,t){let i=this._drawCircle((this._parentRect.x-this.designerCanvas.containerBoundingRect.x)/this.designerCanvas.scaleFactor+this._points[e].x,(this._parentRect.y-this.designerCanvas.containerBoundingRect.y)/this.designerCanvas.scaleFactor+this._points[e].y,5/this.designerCanvas.scaleFactor,"svg-path",t,D.Foreground);return i.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),t||(i.addEventListener(w.PointerDown,r=>this.pointerEvent(r,e,i)),i.addEventListener(w.PointerMove,r=>this.pointerEvent(r,e,i)),i.addEventListener(w.PointerUp,r=>this.pointerEvent(r,e,i))),i}pointerEvent(e,t,i,r){e.stopPropagation(),e.preventDefault();let n=this.designerCanvas.getNormalizedEventCoordinates(e),o=this._points[t];switch(e.type){case w.PointerDown:e.target.setPointerCapture(e.pointerId),this._startPos=n,this._startPoint={...o};break;case w.PointerMove:if(this._startPos&&e.buttons>0){let a=this._startPos.x-n.x,l=this._startPos.y-n.y;e.shiftKey&&(Math.abs(a)<Math.abs(l)?a=0:l=0),o.x=this._startPoint.x-a,o.y=this._startPoint.y-l,this.modifyElementPoint(this._svgElement,t,o),this.designerCanvas.extensionManager.refreshAllExtensions([this.extendedItem],this)}break;case w.PointerUp:e.target.releasePointerCapture(e.pointerId),this._startPos=null;break}}modifyElementPoint(e,t,i){e instanceof SVGRectElement?(t==1?(this._points[0].y=i.y,this._points[2].x=i.x):t==3&&(this._points[2].y=i.y,this._points[0].x=i.x),e.x.baseVal.value=this._points[0].x,e.y.baseVal.value=this._points[0].y,e.width.baseVal.value=this._points[2].x-this._points[0].x,e.height.baseVal.value=this._points[2].y-this._points[0].y):e instanceof SVGLineElement&&(e.x1.baseVal.value=this._points[0].x,e.y1.baseVal.value=this._points[0].y,e.x2.baseVal.value=this._points[1].x,e.y2.baseVal.value=this._points[1].y)}_getMinMaxValues(e){let t={xMin:0,xMax:0,yMin:0,yMax:0};for(let i=0;i<e.length-2;i++)e[i]<e[i+1]&&i<=3?t.xMin=e[i]:e[i]<e[i+1]&&i>3&&i<=7&&(t.yMin=e[i]),e[i]>e[i+1]&&i<=3?t.xMax=e[i]:e[i]>e[i+1]&&i>3&&i<=8&&(t.yMax=e[i]);return t}};Pi();var Om=class{shouldExtend(e,t,i){return i.node instanceof SVGRectElement||i.node instanceof SVGLineElement||i.node instanceof SVGCircleElement||i.node instanceof SVGPathElement?Un(i.node):!1}getExtension(e,t,i){return new Aa(e,t,i)}};Gh();Wh();ze();Tn();dr();Sl();Cl();El();Pl();Al();kl();ze();var Vm=class{read(e){let i=getComputedStyle(e).clipPath||e.getAttribute("style")?.match(/clip-path\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:clipPath",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):t.startsWith("path(")?this._parsePath(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],r=t.split(",");for(let n=0;n<r.length;n++){let o=r[n].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:n===0?_.Move:_.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:_.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),r=50,n=50,o=50;if(i>=0){r=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);n=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else r=parseFloat(t)||50;return{segments:[{type:_.Move,relative:!1,point:{x:n,y:o-r}},{type:_.Arc,relative:!1,point:{x:n+r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o+r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n-r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o-r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:n,y:o-r}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),r=50,n=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);r=parseFloat(c[0])||50,n=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:_.Move,relative:!1,point:{x:o,y:a-n}},{type:_.Arc,relative:!1,point:{x:o+r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a+n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o-r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a-n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:o,y:a-n}}],closed:!0}}_parsePath(e){let t=e.match(/path\(\s*["']([^"']+)["']\s*\)/);if(!t)return{segments:[],closed:!1};let i="http://www.w3.org/2000/svg",r=document.createElementNS(i,"svg"),n=document.createElementNS(i,"path");n.setAttribute("d",t[1]),r.appendChild(n),r.style.position="absolute",r.style.width="0",r.style.height="0",r.style.overflow="hidden",document.body.appendChild(r);try{let{SvgPathGeometryReader:o}=(dr(),Rd(wl));return new o().read(n)}catch{return{segments:[],closed:!1}}finally{document.body.removeChild(r)}}_serializeGeometry(e){let t=e.segments.filter(n=>n.type!==_.Close);if(t.length===0)return"none";let i=t.filter(n=>n.type===_.Arc);if(i.length>=3&&i[0].arc){let n=t,o=n[0].point,a=n[1].point,l=n[2].point,c=n[3].point,h=(a.x+c.x)/2,d=(o.y+l.y)/2,p=Math.abs(a.x-c.x)/2,m=Math.abs(l.y-o.y)/2;return Math.abs(p-m)<.01?`circle(${p}px at ${h}px ${d}px)`:`ellipse(${p}px ${m}px at ${h}px ${d}px)`}return`polygon(${t.map(n=>`${n.point.x}px ${n.point.y}px`).join(", ")})`}};ze();var Rm=class{read(e){let i=getComputedStyle(e).shapeOutside||e.getAttribute("style")?.match(/shape-outside\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:shapeOutside",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],r=t.split(",");for(let n=0;n<r.length;n++){let o=r[n].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:n===0?_.Move:_.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:_.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),r=50,n=50,o=50;if(i>=0){r=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);n=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else r=parseFloat(t)||50;return{segments:[{type:_.Move,relative:!1,point:{x:n,y:o-r}},{type:_.Arc,relative:!1,point:{x:n+r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o+r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n-r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o-r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:n,y:o-r}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),r=50,n=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);r=parseFloat(c[0])||50,n=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:_.Move,relative:!1,point:{x:o,y:a-n}},{type:_.Arc,relative:!1,point:{x:o+r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a+n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o-r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a-n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:o,y:a-n}}],closed:!0}}_serializeGeometry(e){let t=e.segments.filter(n=>n.type!==_.Close);if(t.length===0)return"none";let i=t.filter(n=>n.type===_.Arc);if(i.length>=3&&i[0].arc){let n=t,o=n[0].point,a=n[1].point,l=n[2].point,c=n[3].point,h=(a.x+c.x)/2,d=(o.y+l.y)/2,p=Math.abs(a.x-c.x)/2,m=Math.abs(l.y-o.y)/2;return Math.abs(p-m)<.01?`circle(${p}px at ${h}px ${d}px)`:`ellipse(${p}px ${m}px at ${h}px ${d}px)`}return`polygon(${t.map(n=>`${n.point.x}px ${n.point.y}px`).join(", ")})`}};ze();var zm=class{read(e){let i=getComputedStyle(e).offsetPath||e.getAttribute("style")?.match(/offset-path\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:offsetPath",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):t.startsWith("path(")?this._parsePath(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],r=t.split(",");for(let n=0;n<r.length;n++){let o=r[n].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:n===0?_.Move:_.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:_.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),r=50,n=50,o=50;if(i>=0){r=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);n=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else r=parseFloat(t)||50;return{segments:[{type:_.Move,relative:!1,point:{x:n,y:o-r}},{type:_.Arc,relative:!1,point:{x:n+r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o+r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n-r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o-r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:n,y:o-r}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),r=50,n=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);r=parseFloat(c[0])||50,n=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:_.Move,relative:!1,point:{x:o,y:a-n}},{type:_.Arc,relative:!1,point:{x:o+r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a+n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o-r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a-n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:o,y:a-n}}],closed:!0}}_parsePath(e){let t=e.match(/path\(\s*["']([^"']+)["']\s*\)/);if(!t)return{segments:[],closed:!1};let i="http://www.w3.org/2000/svg",r=document.createElementNS(i,"svg"),n=document.createElementNS(i,"path");n.setAttribute("d",t[1]),r.appendChild(n),r.style.position="absolute",r.style.width="0",r.style.height="0",r.style.overflow="hidden",document.body.appendChild(r);try{let{SvgPathGeometryReader:o}=(dr(),Rd(wl));return new o().read(n)}catch{return{segments:[],closed:!1}}finally{document.body.removeChild(r)}}_serializeGeometry(e){let t=e.segments.filter(n=>n.type!==_.Close);if(t.length===0)return"none";let i=t.filter(n=>n.type===_.Arc);if(i.length>=3&&i[0].arc){let n=t,o=n[0].point,a=n[1].point,l=n[2].point,c=n[3].point,h=(a.x+c.x)/2,d=(o.y+l.y)/2,p=Math.abs(a.x-c.x)/2,m=Math.abs(l.y-o.y)/2;return Math.abs(p-m)<.01?`circle(${p}px at ${h}px ${d}px)`:`ellipse(${p}px ${m}px at ${h}px ${d}px)`}return`polygon(${t.map(n=>`${n.point.x}px ${n.point.y}px`).join(", ")})`}};$l();Zl();Nl();Ll();nc();sc();Fe();Pe();_t();ie();ns();var ka=class extends R{_skewXLine;_skewYLine;_skewXCircle;_skewYCircle;_skewXReferencePoint={x:0,y:0};_skewYReferencePoint={x:0,y:0};_activeAxis=null;_baseTransform="";_skewX=0;_skewY=0;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let r=[i.p1,i.p2,i.p3,i.p4];if(r.some(m=>!Number.isFinite(m.x)||!Number.isFinite(m.y))){this.remove();return}let n=this.designerCanvas.zoomFactor;if(!this._valuesHaveChanges(n,...r.flatMap(m=>[m.x,m.y])))return;let o=Di(i),a=Oe(i.p1,i.p2,o,56/n,{x:0,y:-1}),l=Oe(i.p1,i.p2,o,48/n,{x:0,y:-1}),c=Oe(i.p1,i.p2,o,38/n,{x:0,y:-1}),h=Oe(i.p2,i.p3,o,30/n,{x:1,y:0}),d=Oe(i.p2,i.p3,o,22/n,{x:1,y:0}),p=Oe(i.p2,i.p3,o,6/n,{x:1,y:0});this._skewXLine=this._drawLine(l.x,l.y,c.x,c.y,"svg-primary-skew-line",this._skewXLine),this._skewYLine=this._drawLine(d.x,d.y,p.x,p.y,"svg-primary-skew-line",this._skewYLine),this._skewXLine.style.strokeWidth=(1/n).toString(),this._skewYLine.style.strokeWidth=(1/n).toString(),this._skewXCircle?this._skewXCircle=this._drawCircle(a.x,a.y,5/n,"svg-primary-skew",this._skewXCircle):(this._skewXCircle=this._drawCircle(a.x,a.y,5/n,"svg-primary-skew",this._skewXCircle),this._skewXCircle.addEventListener("pointerdown",m=>this._handlePointerEvent("x",m)),this._skewXCircle.addEventListener("pointermove",m=>this._handlePointerEvent("x",m)),this._skewXCircle.addEventListener("pointerup",m=>this._handlePointerEvent("x",m))),this._skewXCircle.style.strokeWidth=(1/n).toString(),this._skewXCircle.style.cursor="ew-resize",this._skewYCircle?this._skewYCircle=this._drawCircle(h.x,h.y,5/n,"svg-primary-skew",this._skewYCircle):(this._skewYCircle=this._drawCircle(h.x,h.y,5/n,"svg-primary-skew",this._skewYCircle),this._skewYCircle.addEventListener("pointerdown",m=>this._handlePointerEvent("y",m)),this._skewYCircle.addEventListener("pointermove",m=>this._handlePointerEvent("y",m)),this._skewYCircle.addEventListener("pointerup",m=>this._handlePointerEvent("y",m))),this._skewYCircle.style.strokeWidth=(1/n).toString(),this._skewYCircle.style.cursor="ns-resize",this._skewYCircle.style.fill="#eaf5ff"}_handlePointerEvent(e,t){t.stopPropagation();let i=t.target;switch(t.type){case"pointerdown":i.setPointerCapture(t.pointerId),this._readPersistedTransform(),e==="x"?this._skewXReferencePoint=this._getSkewReferencePoint("x"):this._skewYReferencePoint=this._getSkewReferencePoint("y"),this._activeAxis=e;break;case"pointermove":if(this._activeAxis===e&&t.buttons>0){let r=this._getSkewAngle(e,t);e==="x"?this._skewX=r:this._skewY=r,this._setPreviewTransform()}break;case"pointerup":if(this._activeAxis===e){i.releasePointerCapture(t.pointerId);let r=this._getSkewAngle(e,t);e==="x"?this._skewX=r:this._skewY=r,this._commitTransform(),this._activeAxis=null}break}}_readPersistedTransform(){let{baseTransform:e,skewX:t,skewY:i}=this._parseTransform(this.extendedItem.getStyleFromSheetOrLocal("transform")??"");this._baseTransform=e,this._skewX=t,this._skewY=i}_getSkewReferencePoint(e){let t=this.extendedItem.element,i=Le(this.extendedItem.element),r=this.designerCanvas.zoomFactor,n=e==="x"?{x:i.width/2,y:-56/r}:{x:i.width+30/r,y:i.height/2},o=t.style.transform;try{t.style.transform=this._buildTransform(this._baseTransform,e==="x"?0:this._skewX,e==="y"?0:this._skewY);let a=t.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!a)return n;let l=Di(a),c=e==="x"?Oe(a.p1,a.p2,l,56/r,{x:0,y:-1}):Oe(a.p2,a.p3,l,30/r,{x:1,y:0}),h=t.convertPointFromNode(c,this.designerCanvas.canvas);return!Number.isFinite(h.x)||!Number.isFinite(h.y)?n:{x:h.x,y:h.y}}finally{t.style.transform=o}}_setPreviewTransform(){this.extendedItem.element.style.transform=this._buildTransform(this._baseTransform,this._skewX,this._skewY)}_commitTransform(){let e=this._buildTransform(this._baseTransform,this._skewX,this._skewY);e?this.extendedItem.updateStyleInSheetOrLocal("transform",e):this.extendedItem.hasStyle("transform")?this.extendedItem.removeStyle("transform"):this.extendedItem.updateStyleInSheetOrLocal("transform",null);let t=this.extendedItem.element;this.extendedItem.hasStyle("transform")?t.style.transform=this.extendedItem.getStyle("transform")??"":t.style.transform=""}_getSkewAngle(e,t){let i=this.extendedItem.element;i.style.transform=this._buildTransform(this._baseTransform,e==="x"?0:this._skewX,e==="y"?0:this._skewY);let r=this.designerCanvas.getNormalizedEventCoordinates(t),n=i.convertPointFromNode({x:r.x,y:r.y},this.designerCanvas.canvas),a=getComputedStyle(i).transformOrigin.split(" "),l={x:parseFloat(a[0]),y:parseFloat(a[1])},c=Le(i),h;if(e==="x"){let d=this._skewXReferencePoint.y-l.y;Math.abs(d)<.5&&(d=-Math.max(c.height/2,1)),h=Math.atan((n.x-l.x)/d)*180/Math.PI}else{let d=this._skewYReferencePoint.x-l.x;Math.abs(d)<.5&&(d=Math.max(c.width/2,1)),h=Math.atan((n.y-l.y)/d)*180/Math.PI}return h=Math.max(-80,Math.min(80,h)),W(t)||(h=Math.round(h/15)*15),parseFloat(N(this.extendedItem,h))}_buildTransform(e,t,i){let r=[];return e?.trim()&&r.push(e.trim()),Math.abs(t)>.001&&r.push(`skewX(${t}deg)`),Math.abs(i)>.001&&r.push(`skewY(${i}deg)`),r.join(" ").trim()}_parseTransform(e){if(!e||e==="none")return{baseTransform:"",skewX:0,skewY:0};let t=0,i=0,r=[];for(let n of this._splitTransformFunctions(e)){let o=n.slice(0,n.indexOf("(")).trim().toLowerCase(),l=n.slice(n.indexOf("(")+1,-1).split(",").map(c=>c.trim());o==="skewx"?t=this._parseAngle(l[0]):o==="skewy"?i=this._parseAngle(l[0]):o==="skew"?(t=this._parseAngle(l[0]),l.length>1&&(i=this._parseAngle(l[1]))):r.push(n)}return{baseTransform:r.join(" ").trim(),skewX:t,skewY:i}}_splitTransformFunctions(e){let t=[],i=-1,r=0;for(let n=0;n<e.length;n++){let o=e[n];o==="("?r++:o===")"?(r--,r===0&&i!==-1&&(t.push(e.slice(i,n+1).trim()),i=-1)):r===0&&i===-1&&o.trim()&&(i=n)}return!t.length&&e.trim()&&t.push(e.trim()),t}_parseAngle(e){if(!e)return 0;let t=parseFloat(e);return isNaN(t)?0:e.endsWith("rad")?t*180/Math.PI:e.endsWith("grad")?t*.9:e.endsWith("turn")?t*360:t}dispose(){this._removeAllOverlays()}};import{css as _y}from"@node-projects/base-custom-webcomponent";var Fm=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new ka(e,t,i)}static style=_y`.svg-primary-skew{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto}.svg-primary-skew-line{stroke:#3899ec;fill:none;stroke-width:1}`};oc();ac();lc();cc();ic();rc();Ul();Yl();xh();_h();ad();ld();$h();Zh();Xh();Kh();Ih();Dh();Gc();xr();rd();nd();qh();Jh();Uh();Yh();Th();Ch();Sh();Wc();Wt();Hc();tn();ed();Bh();hd();ys();Vc();_d();Qh();pc();Dc();dd();yc();Zc();$c();Ks();Jc();fc();qc();Qc();kh();sd();cd();uc();Ml();var Ia=class extends Si{extendedItem;constructor(e,t){super(e,t)}};te();import{css as by}from"@node-projects/base-custom-webcomponent";var Da=class extends Ia{_lineOffset=5;_lineLength=10;_circle;_line1;_line2;_line3;_line4;refresh(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e);this._circle=this._drawCircle(t.x,t.y,1,"svg-cursor-line",this._circle,D.Foreground),this._line1=this._drawLine(t.x,t.y-this._lineOffset,t.x,t.y-this._lineOffset-this._lineLength,"svg-cursor-line",this._line1,D.Foreground),this._line2=this._drawLine(t.x,t.y+this._lineOffset,t.x,t.y+this._lineOffset+this._lineLength,"svg-cursor-line",this._line2,D.Foreground),this._line3=this._drawLine(t.x-this._lineOffset,t.y,t.x-this._lineOffset-this._lineLength,t.y,"svg-cursor-line",this._line3,D.Foreground),this._line4=this._drawLine(t.x+this._lineOffset,t.y,t.x+this._lineOffset+this._lineLength,t.y,"svg-cursor-line",this._line4,D.Foreground)}dispose(){super._removeAllOverlays()}style=by`.svg-cursor-line{stroke:#000;pointer-events:none}`};import{css as wy}from"@node-projects/base-custom-webcomponent";var Bm=class{getExtension(e){return new Da(e.extensionManager,e)}style=wy`.svg-cursor-line{stroke:#000;pointer-events:none}`};import{BaseCustomWebComponentConstructorAppend as Sy,css as Cy,html as Ey}from"@node-projects/base-custom-webcomponent";var Dd=class extends Sy{static style=Cy`:host{overflow:hidden;display:block;width:100%;height:100%;position:relative}#outerDiv{width:100%;height:100%}#innerDiv{transform-origin:top left;height:100%;width:100%;image-rendering:pixelated}#above{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;background:0 0;cursor:pointer}#viewRect{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #000;pointer-events:none}`;static template=Ey`<div id="outerDiv"><div id="innerDiv"></div></div><div id="above"><div id="viewRect"></div></div>`;_innerDiv;_outerDiv;_above;_instanceServiceContainer;_contentChangedHandler;_maxX=0;_maxY=0;_resizeObserver;_innerShadow;_zoomFactorChangedHandler;_viewRect;_minatureScaleX=1;_minatureScaleY=1;_reRenderFlag=!1;_isDragging=!1;_boundMouseMove;_boundMouseUp;constructor(){super(),this._restoreCachedInititalValues(),this._outerDiv=this._getDomElement("outerDiv"),this._innerDiv=this._getDomElement("innerDiv"),this._viewRect=this._getDomElement("viewRect"),this._above=this._getDomElement("above"),this._innerShadow=this._innerDiv.attachShadow({mode:"open"}),this._boundMouseMove=this._onMouseMove.bind(this),this._boundMouseUp=this._onMouseUp.bind(this),this._above.addEventListener("mousedown",e=>this._onMouseDown(e)),this._resizeObserver=new ResizeObserver(()=>{this._reSize()})}ready(){this._resizeObserver.observe(this)}_reSize(){let e=this._outerDiv.getBoundingClientRect();this._minatureScaleX=e.width/this._maxX,this._minatureScaleY=e.height/this._maxY,this._innerDiv.style.scale=this._minatureScaleX+" "+this._minatureScaleY}async _reRender(){if(this._instanceServiceContainer){let e=this._instanceServiceContainer?.designerCanvas;this._innerShadow.adoptedStyleSheets=[...e.rootDesignItem.element.shadowRoot.adoptedStyleSheets];let t=e.designerPixelSize;this._maxX=t.width,this._maxY=t.height;let i=await this._instanceServiceContainer.designerCanvas.serviceContainer.miniatureViewService.provideMiniatureView(e);this._innerShadow.replaceChildren(i),this._reSize(),this._reDrawRect(),this._reRenderFlag=!1}}_reDrawRect(){let e=this._instanceServiceContainer?.designerCanvas,t=e.canvasOffset,i=e.zoomFactor;this._viewRect.style.left=-t.x/this._maxX*100+"%",this._viewRect.style.top=-t.y/this._maxY*100+"%",this._viewRect.style.width=e.clientWidth/i/this._maxX*100+"%",this._viewRect.style.height=e.clientHeight/i/this._maxY*100+"%"}_onMouseDown(e){this._instanceServiceContainer&&(this._isDragging=!0,this._moveCanvasToMousePosition(e),window.addEventListener("mousemove",this._boundMouseMove),window.addEventListener("mouseup",this._boundMouseUp),e.preventDefault())}_onMouseMove(e){this._isDragging&&(this._moveCanvasToMousePosition(e),e.preventDefault())}_onMouseUp(e){this._isDragging=!1,window.removeEventListener("mousemove",this._boundMouseMove),window.removeEventListener("mouseup",this._boundMouseUp)}_moveCanvasToMousePosition(e){let t=this._instanceServiceContainer.designerCanvas,i=t.zoomFactor,r=this._above.getBoundingClientRect(),n=e.clientX-r.left,o=e.clientY-r.top,a=n/r.width*this._maxX,l=o/r.height*this._maxY,c=t.clientWidth/i/2,h=t.clientHeight/i/2;t.canvasOffset={x:-(a-c),y:-(l-h)}}set instanceServiceContainer(e){this._contentChangedHandler?.dispose(),this._zoomFactorChangedHandler?.dispose(),this._instanceServiceContainer=e,this._instanceServiceContainer?(this._zoomFactorChangedHandler=this._instanceServiceContainer.designerCanvas.onZoomFactorChanged.on(()=>{this._reDrawRect()}),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this._reRenderFlag===!1&&(this._reRenderFlag=!0,setTimeout(()=>this._reRender(),50))}),this._reRenderFlag===!1&&(this._reRenderFlag=!0,setTimeout(()=>this._reRender(),50))):this._innerShadow.innerHTML=""}};customElements.define("node-projects-web-component-designer-miniature-view",Dd);ne();import{BaseCustomWebComponentConstructorAppend as Py,css as Ay,html as ky}from"@node-projects/base-custom-webcomponent";function Hm(s){if(!s)return"";let e,t=s.nodeName.toLowerCase();return s.id?e="#"+s.getAttribute("id"):s.getAttribute("class")&&(e="."+s.getAttribute("class").split(" ").join(".")),e?t+e:t}var Ta=function(s){if(!s||s.nodeName==="HTML"||s.nodeName==="#document")return{node:document.documentElement,reason:"root"};if(s.nodeName==="#document-fragment")return Ta(s.host);let e=s.ownerDocument.defaultView.getComputedStyle(s);if(e.position==="fixed"||e.position==="sticky")return{node:s,reason:`position: ${e.position}`};if(e.zIndex!=="auto"&&e.position!=="static")return{node:s,reason:`position: ${e.position}; z-index: ${e.zIndex}`};if(e.opacity!=="1")return{node:s,reason:`opacity: ${e.opacity}`};if(e.transform!=="none")return{node:s,reason:`transform: ${e.transform}`};if(e.scale!=="none")return{node:s,reason:`scale: ${e.scale}`};if(e.translate!=="none")return{node:s,reason:`translate: ${e.translate}`};if(e.rotate!=="none")return{node:s,reason:`rotate: ${e.rotate}`};if(e.mixBlendMode!=="normal")return{node:s,reason:`mixBlendMode: ${e.mixBlendMode}`};if(e.filter!=="none")return{node:s,reason:`filter: ${e.filter}`};if(e.backdropFilter!=="none")return{node:s,reason:`backdropFilter: ${e.backdropFilter}`};if(e.perspective!=="none")return{node:s,reason:`perspective: ${e.perspective}`};if(e.clipPath!=="none")return{node:s,reason:`clip-path: ${e.clipPath} `};let t=e.mask||e.webkitMask;if(t!=="none"&&t!==void 0)return{node:s,reason:`mask: ${t}`};let i=e.maskImage||e.webkitMaskImage;if(i!=="none"&&i!==void 0)return{node:s,reason:`mask-image: ${i}`};let r=e.maskBorder||e.webkitMaskBorder;if(r!=="none"&&r!==void 0)return{node:s,reason:`mask-border: ${r}`};if(e.isolation==="isolate")return{node:s,reason:`isolation: ${e.isolation}`};if(e.willChange==="transform"||e.willChange==="opacity"||e.willChange==="scale"||e.willChange==="translate"||e.willChange==="rotate")return{node:s,reason:`willChange: ${e.willChange}`};if(e.zIndex!=="auto"){let o=s.ownerDocument.defaultView.getComputedStyle(s.parentNode);if(o.display==="flex"||o.display==="inline-flex")return{node:s,reason:`flex-item; z-index: ${e.zIndex}`};if(o.grid!=="none / none / none / row / auto / auto")return{node:s,reason:`child of grid container; z-index: ${e.zIndex}`}}let n=e.contain;return["layout","paint","strict","content"].indexOf(n)>-1||n.indexOf("paint")>-1||n.indexOf("layout")>-1?{node:s,reason:`contain: ${n}`}:Ta(s.parentNode)},Td=class extends Py{static template=ky`<div><table><tr><th colspan="2">Styling</th></tr><tr><td>display</td><td>[[?this.computedStyle.display]]</td></tr><tr><td>position</td><td>[[?this.computedStyle.position]]</td></tr><tr><td>visibility</td><td>[[?this.computedStyle.visibility]]</td></tr><tr><td>pointerEvents</td><td>[[?this.computedStyle.pointerEvents]]</td></tr><tr><td>zIndex</td><td>[[?this.computedStyle.zIndex]]</td></tr><tr><th colspan="2">Context</th></tr><tr><td>offsetParent</td><td class="lnk" @click="[[this._clickLink(event, 'offsetParent')]]">[[?this.selectedElementOffsetParentText]]</td></tr><tr><td>createsStackingContext</td><td>[[this.createsStackingContext]]</td></tr><tr><td>stackingContextReason</td><td>[[this.createsStackingContextReason]]</td></tr><tr><td>stackingContextParent</td><td class="lnk" @click="[[this._clickLink(event, 'stackingContextParent')]]">[[?this.parentStackingContextText]]</td></tr></table></div>`;static style=Ay`:host{overflow:auto;height:100%;display:block;font-size:12px}table{font-family:Arial,Helvetica,sans-serif;border-collapse:collapse;width:100%}table td,table th{border:1px solid #ddd;padding:2px 4px}table tr:nth-child(even){background-color:#f2f2f2}table tr:hover{background-color:#ddd}table th{text-align:left;background-color:#989898;color:#fff}.lnk{color:#00f}.lnk:hover{text-decoration:underline;cursor:pointer}`;_ready;computedStyle;createsStackingContext="";createsStackingContextReason="";parentStackingContext;parentStackingContextText;selectedElementOffsetParent;selectedElementOffsetParentText;constructor(){super(),this._restoreCachedInititalValues()}ready(){this._parseAttributesToProperties(),this._bindingsParse(),this._ready=!0}_clickLink(e,t){if(t=="offsetParent"){if(this.selectedElementOffsetParent){let i=M.GetDesignItem(this.selectedElementOffsetParent);i.instanceServiceContainer.selectionService.setSelectedElements([i])}}else if(t=="stackingContextParent"&&this.parentStackingContext){let i=M.GetDesignItem(this.parentStackingContext);i.instanceServiceContainer.selectionService.setSelectedElements([i])}}update(e){this._ready&&requestAnimationFrame(()=>{let t=e?.element;if(t?.nodeType==3&&(t=t.parentNode),t&&t.nodeType!=8&&t.nodeType!=11){if(this.computedStyle=t.ownerDocument.defaultView.getComputedStyle(t),this.selectedElementOffsetParent=t.offsetParent,this.selectedElementOffsetParent==e.instanceServiceContainer.designerCanvas.rootDesignItem.element||this.selectedElementOffsetParent==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement?(this.selectedElementOffsetParentText=null,this.selectedElementOffsetParent=null):this.selectedElementOffsetParentText=Hm(t.offsetParent),t&&t.nodeType===1){let i=Ta(t);this.createsStackingContext=t===i.node,this.createsStackingContextReason=this.createsStackingContext?i.reason:"not a stacking context",this.parentStackingContext=i.node,this.createsStackingContext&&t.nodeName!=="HTML"&&(this.parentStackingContext=Ta(t.parentNode).node),this.parentStackingContext==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement||this.parentStackingContext==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement.parentElement?(this.parentStackingContextText=null,this.parentStackingContext=null):this.parentStackingContextText=Hm(this.parentStackingContext)}}else this.computedStyle={},this.createsStackingContext=!1,this.createsStackingContextReason="",this.createsStackingContext=!1,this.selectedElementOffsetParent=null,this.selectedElementOffsetParentText=null,this.parentStackingContext=null,this.parentStackingContextText=null;this._bindingsRefresh()})}};customElements.define("node-projects-debug-view",Td);import{BaseCustomWebComponentConstructorAppend as Iy,css as Dy,html as Ty}from"@node-projects/base-custom-webcomponent";var Ma=class extends Iy{static template=Ty`<div id="root"><div class="search"><span>search</span> <input style="flex-grow:1;min-width:0" value="{{this.searchText}}"> <span>replace</span> <input style="flex-grow:1;min-width:0" value="{{this.replaceText}}"> <button @click="[[this.replace()]]" style="grid-column:2">replace</button></div><hr><template repeat:item="[[this.refactorings]]"><details open><summary>[[item[1][0].itemType]]-name:<input value="[[item[1][0].name]]" @keydown="[[this._refactor(item, event)]]" style="flex-grow:1;min-width:0"></summary><ul><template repeat:reft="[[item[1]]]"><li>[[reft.type]]/[[reft.display]]</li></template></ul></details></template></div>`;static style=Dy`:host{box-sizing:border-box;font-family:monospace;height:100%;width:100%;position:absolute;overflow:hidden}.search{display:grid;grid-template-columns:40px 1fr;align-items:center}span{font-size:10px}summary{cursor:pointer;font-size:10px;display:flex;align-items:center;white-space:nowrap}ul{margin:4px;padding-left:20px;font-size:10px}#root{padding:5px;display:flex;flex-direction:column;gap:4px;overflow-y:auto;height:calc(100% - 10px)}`;static is="node-projects-refactor-view";static properties={};_instanceServiceContainer;_selectionChangedHandler;_selectedItems;searchText="(.*)";replaceText="$1";refactorings=new Map;ready(){this._bindingsParse()}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectedItems=t.selectedElements}),this.selectedItems=this._instanceServiceContainer.selectionService.selectedElements}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems!=e&&(this._selectedItems=e,this.updateRefactorlist(this._selectedItems))}replace(){let e=null;for(let t of this.refactorings){let i=t[1][0].name,r=new RegExp(this.searchText);if(i.match(r)){e||(e=t[1][0].designItem.openGroup("refactor with regex "+this.searchText+" -> "+this.replaceText));let o=i.replace(r,this.replaceText);o!=i&&this.applyRefactoring(t,o)}}e||e.commit()}_refactor(e,t){let i=t.target;t.key=="Enter"&&this.applyRefactoring(e,i.value)}applyRefactoring(e,t){let i=e[1][0].designItem.openGroup("refactor "+e[1][0].name+" to "+t);for(let r of e[1])r.service.refactor(r,r.name,t);i.commit()}updateRefactorlist(e){if(this.refactorings.clear(),e&&e.length){let t=[],i=e[0].serviceContainer;for(let r of i.refactorServices){let n=r.getRefactorings(e);t.push(...n)}for(let r of t){let n=this.refactorings.get(r.itemType+"|"+r.name);n===void 0&&(n=[],this.refactorings.set(r.itemType+"|"+r.name,n)),n.push(r)}}this._bindingsRefresh()}};customElements.define(Ma.is,Ma);Ba();se();gt();import{BaseCustomWebComponentLazyAppend as My,css as Ny,html as Ly}from"@node-projects/base-custom-webcomponent";var Nr=class extends My{static style=Ny`:host{display:block;box-sizing:border-box;height:100%;overflow:auto}button{background-color:transparent;color:#fff;border:none;font-size:13px;display:block;cursor:pointer;width:100%;text-align:left;padding:8px 14px}button:hover{background:var(--light-grey,#383f52)}table{width:100%}td{color:#fff;font-size:13px}div{text-transform:uppercase;font-size:12px;font-weight:700;padding:4px 14px}`;static template=Ly`<table id="table"></table>`;_table;constructor(){super(),this._table=this._getDomElement("table")}loadElements(e,t,i){for(let r of t){let n=document.createElement("tr"),o=document.createElement("td"),a=document.createElement("button");if(a.setAttribute("part","button"),r.icon&&!r.displayHtml){let c=r.icon;r.icon.startsWith("data:")||(c=i+r.icon),a.innerHTML='<table><tr><td align="left" valign="middle" style="width:20px;"><img style="width:16px;height:16px" src="'+c+'"></td><td align="left" >'+r.tag+`</td></tr></table>
14
- `}else r.displayHtml?a.innerHTML=r.displayHtml:a.innerText=r.name?r.name:r.tag;a.draggable=!0,a.ondragstart=c=>{if(c.dataTransfer.setData(vi,JSON.stringify(r)),c.currentTarget.style.outline="dashed",r.ghostElement)if(typeof r.ghostElement=="string"){let h=document.createRange();h.selectNode(document.body);let p=h.createContextualFragment(r.ghostElement).firstChild;p.style.position="absolute",p.style.top="-1000px",document.body.appendChild(p),c.dataTransfer.setDragImage(p,0,0),requestAnimationFrame(()=>document.body.removeChild(p))}else c.dataTransfer.setDragImage(r.ghostElement,0,0);else if(!r.import)try{let h=document.createElement(r.tag);if(r.defaultContent&&(h.innerHTML=r.defaultContent),r.defaultWidth&&(h.style.width=r.defaultWidth),r.defaultHeight&&(h.style.height=r.defaultHeight),r.defaultAttributes)for(let p in r.defaultAttributes)h.setAttribute(p,r.defaultAttributes[p]);if(r.defaultStyles)for(let p in r.defaultStyles)h.style[p]=r.defaultStyles[p];h.style.position="absolute",r.defaultWidth?h.style.top="-"+(parseInt(r.defaultHeight)+500)+"px":h.style.top="-500px",r.defaultWidth?h.style.left="-"+(parseInt(r.defaultWidth)+500)+"px":h.style.left="-500px",document.body.appendChild(h);let d=h.getBoundingClientRect();d.width>0&&d.height>0&&c.dataTransfer.setDragImage(h,0,0),requestAnimationFrame(()=>document.body.removeChild(h))}catch(h){console.warn("error creating gost elment",h)}},a.ondragend=c=>{r.import=null,c.currentTarget.style.outline="none"},a.ontouchstart=c=>{c.preventDefault()},a.onclick=c=>{let h=e.designerTools.get(r.tool??K.DrawElementTool);typeof h=="function"&&(h=new h(r)),e.globalContext.tool=h},o.appendChild(a),n.appendChild(o);let l=document.createElement("td");l.innerText=r.description??"",n.appendChild(l),this._table.appendChild(n)}}};customElements.define("node-projects-palette-elements",Nr);import{BaseCustomWebComponentLazyAppend as Oy,css as Vy}from"@node-projects/base-custom-webcomponent";var Md=class extends Oy{selected="native";_designerTabControl;static style=Vy`:host{display:flex;flex-direction:column;flex:1;height:100%}`;constructor(){super(),this._restoreCachedInititalValues(),this._designerTabControl=new dt,this._designerTabControl.selectedIndex=0,this.shadowRoot.appendChild(this._designerTabControl)}async loadControls(e,t){this._designerTabControl.innerHTML="";for(let i of t)try{let r=await i.getElements(),n=new Nr;n.title=i.name,this._designerTabControl.appendChild(n),n.loadElements(e,r)}catch(r){console.warn("Error loading elements",r)}this._designerTabControl.refreshItems()}};customElements.define("node-projects-palette-view",Md);ne();import{BaseCustomWebComponentLazyAppend as Ry,css as zy}from"@node-projects/base-custom-webcomponent";var Nd=class extends Ry{_items;_index;_previouslySelected;_treeDiv;_instanceServiceContainer;_selectionChangedHandler;_contentChangedHandler;_mapElementTreeitem;_rootItem;static style=zy`:host{--horz-margin:20px;--vert-margin:0px;--horz-shift:calc(var(--horz-margin) / 2);--vert-shift:12px;display:inline-block;position:relative;width:100%;height:100%;background:var(--dark-grey,#232733);overflow-y:auto}button{border:none;font-size:13px;display:block;padding:4px 0;cursor:pointer;width:100%;text-align:left;display:inline-block;margin:0;background:var(--dark-grey,#232733);position:relative;color:#fff}button:focus,button:hover{background:var(--light-grey,#383f52)}span{margin:4px}.id{font-style:italic;color:var(--highlight-pink,#e91e63)}.selected{background:var(--light-grey,#383f52);outline:0}li,ul{margin:0;padding:0}.tree ul{margin-left:var(--horz-margin)}.tree li{list-style-type:none;margin-top:var(--vert-margin);margin-bottom:var(--vert-margin);position:relative}.tree li::before{content:"";position:absolute;top:calc(0px - var(--vert-margin));left:calc(var(--horz-shift) - var(--horz-margin));width:calc(var(--horz-margin) - var(--horz-shift));height:calc(var(--vert-shift) + var(--vert-margin));border-left:1px solid #ccc;border-bottom:1px solid #ccc;border-radius:0}.tree li::after{position:absolute;content:"";top:var(--vert-shift);left:calc(var(--horz-shift) - var(--horz-margin));width:calc(var(--horz-margin) - var(--horz-shift));height:calc(100% - var(--vert-shift));border-left:1px solid #ccc;border-top:1px solid #ccc;border-radius:0}ul.tree>li:first-child::before{display:none}.tree li:last-child::after{display:none}ul.tree>li:first-child::after{border-radius:5px 0 0 0}.tree li:last-child:before{border-radius:0 0 0 5px}`;constructor(){super(),this._restoreCachedInititalValues(),this._treeDiv=document.createElement("div"),this._treeDiv.style.userSelect="none",this.shadowRoot.appendChild(this._treeDiv),this._treeDiv.addEventListener("click",this._clickElement.bind(this))}createTree(e){this._rootItem=e,e!=null&&this._recomputeTree(e.element,null)}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectionChanged(t)}),this._contentChangedHandler?.dispose(),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this.createTree(e.designerCanvas.rootDesignItem)}),this.createTree(e.designerCanvas.rootDesignItem)}selectionChanged(e){this._selectTreeElements(e.selectedElements.map(t=>this._mapElementTreeitem.get(t.element)))}_recomputeTree(e,t){this._mapElementTreeitem=new Map,this._treeDiv.innerHTML="";let i=document.createElement("ul");return i.classList.add("tree"),this._treeDiv.appendChild(i),this._index=0,this._items=this._getChildren(e,i),this._highlight(t),this._items}_makeButton(e,t,i){let r=document.createElement("button");r.dataset.index=i;let n=document.createElement("span");n.className="tag",n.textContent=e;let o=document.createElement("span");return o.className="id",o.textContent=t,r.appendChild(n),r.appendChild(o),r}_getChildren(e,t){let i=e.id==="viewContainer",r={tag:i?"main-app":e.tagName.toLowerCase(),id:i?"":e.id?"#"+e.id:"",text:i?"":'"'+e.textContent+'"',ref:e,index:this._index},n=document.createElement("li"),o=this._makeButton(r.tag,r.id,r.index);n.appendChild(o),t.appendChild(n),this._mapElementTreeitem.set(r.ref,o),this._index++;let a=[r],l=null;for(let c=0;c<e.children.length;c++){let h=e.children[c];h.localName!=="style"&&(l==null&&(l=document.createElement("ul"),n.appendChild(l)),a=a.concat(this._getChildren(h,l)))}return a}_clickElement(e){let t=e.target;t.localName==="span"&&(t=t.parentElement),this._selectTreeElements([t]),this._selectDesignerElement(t)}_selectTreeElements(e){if(this._previouslySelected)for(let t of this._previouslySelected)t&&t.classList.remove("selected");if(this._previouslySelected=e,e)for(let t of e)t&&t.classList.add("selected")}_selectDesignerElement(e){let t=e.dataset.index,i=this._items[t].ref,r=M.GetOrCreateDesignItem(i,i,this._rootItem.serviceContainer,this._rootItem.instanceServiceContainer);r.instanceServiceContainer.selectionService.setSelectedElements([r])}_highlight(e){if(!e)return;let t=this.shadowRoot.querySelectorAll("button");if(t.length===this._items.length){for(let i=0;i<this._items.length;i++)if(this._items[i].ref===e){this._selectTreeElements([t[i]]);return}}}};customElements.define("node-projects-tree-view",Nd);Ha();import{BaseCustomWebComponentLazyAppend as Gy,css as Wy,cssFromString as jy,debounce as Uy,TypedEvent as Ld}from"@node-projects/base-custom-webcomponent";import{BaseCustomWebComponentConstructorAppend as Fy,css as By,html as Hy}from"@node-projects/base-custom-webcomponent";var Lr=class extends Fy{static style=By`:host{display:block}#split{position:relative;height:100%;width:100%;grid-template-rows:calc(var(--split) * 1%) 5px calc(((100 - var(--split)) * 1%) - 5px);grid-template-columns:100%;display:grid;align-items:center}#splitter{user-select:none;-webkit-user-select:none}:host(:not([orientation=vertical]))>div>#splitter{cursor:ew-resize;width:5px}:host([orientation=vertical])>div>#splitter{cursor:ns-resize;height:5px}`;static template=Hy`<div id="split" style="--split:50"><slot name="top"></slot><div id="splitter"></div><slot name="bottom"></slot></div>`;static properties={orientation:String};orientation="vertical";constructor(){super()}ready(){this._parseAttributesToProperties(),this.setAttribute("orientation",this.orientation);let e=this._getDomElement("split"),t=this._getDomElement("splitter"),i=null;t.addEventListener("pointerdown",r=>{t.setPointerCapture(r.pointerId),i=!0}),t.addEventListener("pointerup",r=>{t.releasePointerCapture(r.pointerId),i=null}),t.addEventListener("pointermove",r=>{if(i!==null){let n=parseFloat(e.style.getPropertyValue("--split"));this.orientation==="horizontal"?n+=r.movementX*100/e.clientWidth:n+=r.movementY*100/e.clientHeight,isNaN(n)||e.style.setProperty("--split",n)}})}};customElements.define("node-projects-simple-split-view",Lr);Ne();$e();var B;(function(s){s[s.designer=0]="designer",s[s.code=1]="code",s[s.split=2]="split",s[s.preview=3]="preview"})(B||(B={}));var Od=class extends Gy{designerView;codeView;demoView;additionalData;_firstLoad=!0;_stylesheetChangedEventRegistered;_additionalStyle;set additionalStyleString(e){this._additionalStyle=e,this.designerView.additionalStyles=[jy(e)]}get additionalStyleString(){return this._additionalStyle}_additionalStyles;set additionalStyles(e){this._additionalStyles=e,this.designerView.additionalStyles=this._additionalStyles}get additionalStyles(){return this._additionalStyles}_additionalStylesheets;set additionalStylesheets(e){this._additionalStylesheets=e,this.designerView.instanceServiceContainer.stylesheetService&&(this.designerView.instanceServiceContainer.stylesheetService.setStylesheets(e),this._stylesheetChangedEventRegistered||(this._stylesheetChangedEventRegistered=!0,this.designerView.instanceServiceContainer.stylesheetService.stylesheetChanged.on(t=>this.additionalStylesheetChanged.emit({name:t.name,newStyle:t.newStyle,oldStyle:t.oldStyle,changeSource:t.changeSource}))))}get additionalStylesheets(){return this._additionalStylesheets}additionalStylesheetChanged=new Ld;get readOnly(){return this.designerView?.readOnly}set readOnly(e){this.designerView&&(this.designerView.readOnly=e),this.codeView&&(this.codeView.readOnly=e)}onContentChanged=new Ld;onTabChanged=new Ld;_contentChangeSource="designer";_serviceContainer;_content="";_tabControl;_selectionPosition;_splitDiv;_designerDiv;_codeDiv;refreshInSplitViewDebounced;_disableChangeNotificationDesigner;_disableChangeNotificationEditor;static get style(){return Wy`div{height:100%;display:flex;flex-direction:column}node-projects-designer-view{height:100%;overflow:hidden}`}constructor(e,t,i=!1){super(),this.refreshInSplitViewDebounced=Uy(this.refreshInSplitView,200),this._serviceContainer=e,t!=null&&(this._content=t);let r=document.createElement("div");this._tabControl=new dt,r.appendChild(this._tabControl),this.designerView=new ti(i),this.designerView.setAttribute("exportparts","canvas"),this.designerView.slot="top",this._designerDiv=document.createElement("div"),this._tabControl.appendChild(this._designerDiv),this._designerDiv.appendChild(this.designerView),this._designerDiv.dataset.title="Designer",this.designerView.initialize(this._serviceContainer),this.designerView.instanceServiceContainer.documentContainer=this,this.designerView.instanceServiceContainer.selectionService.onSelectionChanged.on(n=>this.designerSelectionChanged(n)),this.designerView.instanceServiceContainer.onContentChanged.on(()=>this.designerContentChanged()),this.codeView=new e.config.codeViewWidget,this.codeView.slot="bottom",this.codeView.style.position="relative",this._codeDiv=document.createElement("div"),this._tabControl.appendChild(this._codeDiv),this._codeDiv.style.position="relative",this._codeDiv.appendChild(this.codeView),this._codeDiv.dataset.title="Code",this.codeView.onTextChanged.on(n=>{this._disableChangeNotificationDesigner||(this._tabControl.selectedIndex===B.code||this._tabControl.selectedIndex===B.split)&&(this._disableChangeNotificationEditor=!0,this._content=n,this.refreshInSplitViewDebounced())}),this._splitDiv=new Lr,this._splitDiv.style.height="100%",this._splitDiv.dataset.title="Split",this._tabControl.appendChild(this._splitDiv),e.config.demoViewWidget&&(this.demoView=new e.config.demoViewWidget,this.demoView.dataset.title="Preview",this._tabControl.appendChild(this.demoView)),queueMicrotask(()=>{this.shadowRoot.appendChild(r),this._tabControl.selectedIndex=B.designer})}async refreshInSplitView(){try{await this.updateDesignerHtml()}catch(e){console.error(e)}this._disableChangeNotificationEditor=!1}get currentView(){return this._tabControl.selectedIndex==B.designer?"designer":this._tabControl.selectedIndex==B.split?"split":this._tabControl.selectedIndex==B.code?"code":this._tabControl.selectedIndex==B.preview?"preview":null}set currentView(e){e=="designer"&&(this._tabControl.selectedIndex=B.designer),e=="split"&&(this._tabControl.selectedIndex=B.split),e=="code"&&(this._tabControl.selectedIndex=B.code),e=="preview"&&(this._tabControl.selectedIndex=B.preview)}designerSelectionChanged(e){if(this._tabControl.selectedIndex===B.split){let t=this.instanceServiceContainer.selectionService.primarySelection;t&&this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(t),this._selectionPosition&&this.codeView.setSelection(this._selectionPosition),this._selectionPosition=null)}}designerContentChanged(){if(this.onContentChanged.emit({source:this._contentChangeSource}),!this._disableChangeNotificationEditor){if(this._disableChangeNotificationDesigner=!0,this._tabControl.selectedIndex===B.code||this._tabControl.selectedIndex===B.split){let e=this.instanceServiceContainer.selectionService.primarySelection;this._content=this.designerView.getDesignerHTML(),this.codeView.update(this._content,this.designerView.instanceServiceContainer),e&&this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(e),this._selectionPosition&&this.codeView.setSelection(this._selectionPosition),this._selectionPosition=null)}this._disableChangeNotificationDesigner=!1}}dispose(){this.designerView?.instanceServiceContainer?.collaborationService&&(this.designerView.instanceServiceContainer.collaborationService.disconnect(),this.designerView.instanceServiceContainer.collaborationService.detachTransport()),this.codeView.dispose(),this.demoView.dispose()}executeCommand(e){this._tabControl.selectedIndex===B.designer||this._tabControl.selectedIndex===B.split?this.designerView.executeCommand(e):this._tabControl.selectedIndex===B.code?this.codeView.executeCommand(e):this._tabControl.selectedIndex===B.preview&&this.demoView.executeCommand(e)}canExecuteCommand(e){if(this._tabControl.selectedIndex===B.designer||this._tabControl.selectedIndex===B.split){if(this.designerView?.canExecuteCommand)return this.designerView.canExecuteCommand(e)}else if(this._tabControl.selectedIndex===B.code){if(this.codeView?.canExecuteCommand)return this.codeView.canExecuteCommand(e)}else if(this._tabControl.selectedIndex===B.preview&&this.demoView?.canExecuteCommand)return this.demoView.canExecuteCommand(e);return!1}async setContentAsync(e){this._content=e,this._tabControl&&(this._tabControl.selectedIndex===B.designer?await this.updateDesignerHtml():this._tabControl.selectedIndex===B.code?this.codeView.update(this._content,this.designerView.instanceServiceContainer):this._tabControl.selectedIndex===B.split||this._tabControl.selectedIndex===B.preview&&this.demoView.display(this._serviceContainer,this.designerView.instanceServiceContainer,this._content,this.additionalStyleString))}set content(e){this.setContentAsync(e)}get content(){return this._tabControl?(this._tabControl.selectedIndex===B.designer?this._content=this.designerView.getDesignerHTML():this._tabControl.selectedIndex===B.code&&(this._content=this.codeView.getText()),this._content):null}ready(){this._tabControl.onSelectedTabChanged.on(e=>{if(e.oldIndex===B.designer){let t=this.instanceServiceContainer.selectionService.primarySelection;this._content=this.designerView.getDesignerHTML(),this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(t))}else e.oldIndex===B.code?this._content=this.codeView.getText():e.oldIndex===B.split?(this._designerDiv.appendChild(this.designerView),this._codeDiv.appendChild(this.codeView)):e.oldIndex===B.preview&&this.demoView?.stopDisplay&&this.demoView.stopDisplay();(e.newIndex===B.designer||e.newIndex===B.split)&&this.updateDesignerHtml(),(e.newIndex===B.code||e.newIndex===B.split)&&(this.codeView.update(this._content,this.designerView.instanceServiceContainer),this._selectionPosition&&(this.codeView.setSelection(this._selectionPosition),mt(20).then(t=>{this._selectionPosition&&this.codeView.setSelection(this._selectionPosition),this._selectionPosition=null})),e.changedViaClick&&this.codeView.focusEditor()),e.newIndex===B.split&&(this._splitDiv.appendChild(this.designerView),this._splitDiv.appendChild(this.codeView)),e.newIndex===B.preview&&this.demoView.display(this._serviceContainer,this.designerView.instanceServiceContainer,this._content,this.additionalStyleString),this._content&&(this._firstLoad=!1),this.onTabChanged.emit({oldTab:B[e.oldIndex],newTab:B[e.newIndex]})}),this._content&&(this.content=this._content,this._firstLoad=!1)}async updateDesignerHtml(){if(this._firstLoad)return this.designerView.parseDesignerHTML(this._content,this._firstLoad);if(this.designerView.getDesignerHTML()!=this._content){this._contentChangeSource="code",await this.designerView.parseDesignerHTML(this._content,this._firstLoad),this._contentChangeSource="designer";return}else this.instanceServiceContainer.undoService.clearTransactionstackIfNotEmpty(),this.designerView.designerCanvas.overlayLayer.removeAllOverlays(),this.designerView.designerCanvas.extensionManager.reapplyAllAppliedExtentions(null,[P.Permanent,P.Selection,P.PrimarySelection,P.PrimarySelectionContainer,P.OnlyOneItemSelected,P.MultipleItemsSelected])}get instanceServiceContainer(){return this.designerView.instanceServiceContainer}};customElements.define("node-projects-document-container",Od);le();Jl();bt();se();pa();export{ya as AbsolutePlacementService,Vt as AbstractBaseToolPopup,Li as AbstractCssPropertiesService,We as AbstractDesignViewConfigButton,Ia as AbstractDesignerPointerExtension,R as AbstractExtension,js as AbstractHtmlWriterService,it as AbstractPolymerLikePropertiesService,ee as AbstractPropertiesService,_a as AbstractStylesheetService,$o as AlignItemsContextMenu,bs as AltToEnterContainerExtension,ws as AltToEnterContainerExtensionProvider,rm as AlwaysAbsolutePlacementService,Oi as ApplyFirstMachingExtensionProvider,so as AttachedPropertiesService,ir as AttributeAndPropertyChangeAction,er as AttributeChangeAction,Ni as AttributesPropertiesService,wn as BaseCustomWebComponentPropertiesService,im as BaseCustomWebcomponentBindingsService,am as BaseCustomWebcomponentDesignItemService,re as BasePropertyEditor,oi as BaseServiceContainer,ca as BasicContextMenu,Be as BasicStackedToolbarExtension,Zo as BasicWebcomponentPropertiesService,tm as BindableObjectType,Dr as BindingMode,L as BindingTarget,gm as BindingsRefactorService,Bo as BlockToolbarExtension,Ho as BlockToolbarExtensionProvider,mn as BooleanPropertyEditor,St as ButtonSeperatorProvider,vo as ChangeGroup,Jt as ChildContextMenu,ta as ChildrenContextMenu,qi as CodeViewSimple,ln as ColorPropertyEditor,A as CommandType,Ge as CommonPropertiesService,Et as ConditionExtensionProvider,va as ContentAndIdPropertiesService,be as ContextMenu,sm as CopyPasteAsJsonService,ds as CopyPasteContextMenu,Vs as CopyPasteService,Zr as CssAttributeParser,Vm as CssClipPathGeometryReader,Mi as CssCombiner,Qt as CssCurrentPropertiesService,qt as CssCustomPropertiesService,$r as CssEntry,lr as CssLengthPropertyEditor,lr as CssNumericPropertyEditor,zm as CssOffsetPathGeometryReader,Ve as CssPropertiesService,Rm as CssShapeOutsideGeometryReader,ci as CssStyleChangeAction,Da as CursorLinePointerExtension,Bm as CursorLinePointerExtensionProvider,cn as DatePropertyEditor,Td as DebugView,Id as DefaultConfiguredDesignerView,bn as DefaultEditorTypesService,Nt as DefaultHtmlParserService,an as DefaultInstanceService,Rs as DefaultModelCommandService,nt as DefaultPlacementService,ra as DeleteAction,na as DeletionService,Zi as DemoView,M as DesignItem,Eo as DesignItemDocumentPositionService,zi as DesignItemService,Wi as DesignerCanvas,dt as DesignerTabControl,Mr as DesignerToolbar,ge as DesignerToolbarButton,ti as DesignerView,zs as DisplayGridExtension,Zt as DisplayGridExtensionProvider,aa as DisplayMediaPngWriterService,Od as DocumentContainer,Q as DomConverter,Io as DragDropService,To as DrawElementTool,Hs as DrawEllipsisTool,Gs as DrawLineTool,Jn as DrawPathTool,Bs as DrawRectTool,to as DrawToolButtonProvider,wr as DrawToolPopup,So as EditGridColumnRowSizesExtension,Co as EditGridColumnRowSizesExtensionProvider,Ti as EditTextExtension,Ms as EditTextExtensionProvider,nm as ElectronPngWriterService,ks as ElementAtPointService,Re as ElementDisplayType,On as ElementDragTitleExtension,Vn as ElementDragTitleExtensionProvider,w as EventNames,Ie as EventsService,Pa as ExtensionManager,P as ExtensionType,Ts as ExternalDragDropService,Is as FlexBoxPlacementService,zo as FlexToolbarExtension,Fo as FlexToolbarExtensionProvider,uo as FlexboxExtension,go as FlexboxExtensionDesignViewConfigButtons,Pr as FlexboxExtensionProvider,Jo as ForceCssContextMenu,hm as FormatingHtmlWriterService,no as GrayOutDragOverContainerExtension,Cr as GrayOutDragOverContainerExtensionProvider,xs as GrayOutExtension,_s as GrayOutExtensionProvider,oo as GridAssignedRowColumnPropertyEditor,Xo as GridChildResizeExtension,Ko as GridChildResizeExtensionProvider,Go as GridChildToolbarExtension,Wo as GridChildToolbarExtensionProvider,Fs as GridExtensionDesignViewConfigButtons,As as GridPlacementService,Vo as GridToolbarExtension,Ro as GridToolbarExtensionProvider,$n as HighlightElementExtension,Zn as HighlightElementExtensionProvider,Us as HtmlWriterService,om as IframeDemoProviderService,un as ImageButtonListPropertyEditor,Qr as IndentedTextWriter,ve as InsertAction,Tt as InsertChildAction,Ca as InstanceServiceContainer,Ss as InvisibleElementExtension,yo as InvisibleElementExtensionDesignViewConfigButtons,Cs as InvisibleElementExtensionProvider,Ps as ItemsBelowContextMenu,lm as JsonFileElementsService,hn as JsonPropertyEditor,mm as JsonPropertyPopupEditor,wo as JumpToElementContextMenu,um as ListPropertiesService,Ln as Lit2PropertiesService,Yr as LitElementPropertiesService,fs as MagicWandSelectorTool,jn as MarginExtension,Yn as MarginExtensionProvider,Vi as MarginTool,No as MathMLElementsPropertiesService,ao as MetricsPropertyEditor,Dd as MiniatureView,sa as MiniatureViewService,pm as MultiplayerService,us as MultipleItemsSelectedContextMenu,Ao as MultipleSelectionRectExtension,ko as MultipleSelectionRectExtensionProvider,K as NamedTools,Xr as NativeElementsPropertiesService,k as NodeType,em as NpmPackageLoader,dn as NumberPropertyEditor,$i as NumericStyleInput,ma as ObservedCustomElementsRegistry,ea as OptionsContextMenuButton,D as OverlayLayer,Gi as OverlayLayerView,Uo as PaddingExtension,Yo as PaddingExtensionProvider,Ri as PaddingTool,Nr as PaletteElements,Md as PaletteView,hs as PanTool,ps as PasteFormatContextMenu,Xs as PathContextMenu,gs as PickColorTool,po as PlacementExtension,mo as PlacementExtensionProvider,Fa as PlainScrollbar,xe as PointerActionType,Qn as PointerTool,Js as PointerToolButtonProvider,br as PointerToolPopup,Ur as PolymerPropertiesService,Xn as PositionExtension,Kn as PositionExtensionProvider,fa as PreDefinedElementsService,Qo as PreviousElementSelectExtension,qo as PreviousElementSelectExtensionProvider,Fi as ProjectiveTransformExtension,da as ProjectiveTransformExtensionProvider,z as PropertiesHelper,nn as PropertyChangeAction,Pd as PropertyGrid,He as PropertyGridPropertyList,Ad as PropertyGridWithHeader,ho as PropertyGroupsService,x as PropertyType,Ys as RectContextMenu,gr as RectangleSelectorTool,Ma as RefactorView,G as RefreshMode,is as ResizeExtension,rs as ResizeExtensionProvider,ss as RotateExtension,os as RotateExtensionProvider,as as RotateGroupExtension,ls as RotateGroupExtensionProvider,Qs as RotateLeftAndRight,Mo as RoundPixelsDesignViewConfigButton,Kr as SVGElementsPropertiesService,ei as Screenshot,la as SearchService,_ as SegmentType,qs as SelectAllChildrenContextMenu,rr as SelectPropertyEditor,es as SelectionDefaultExtension,ts as SelectionDefaultExtensionProvider,bo as SelectionService,Sr as SelectionToolPopup,ro as SelectorToolButtonProvider,ke as SeperatorContextMenu,at as SeperatorToolProvider,Hr as ServiceContainer,wa as SetDesignItemsAction,Do as SimpleDemoProviderService,Ir as SimpleToolButtonProvider,ka as SkewExtension,Fm as SkewExtensionProvider,Ds as SnaplinesProviderService,ba as StylesheetChangedAction,Jr as StylesheetServiceDesignViewConfigButtons,An as SvgCircleGeometryReader,Aa as SvgElementExtension,Om as SvgElementExtensionProvider,Pn as SvgEllipseGeometryReader,En as SvgLineGeometryReader,hr as SvgPathGeometryReader,kn as SvgPolygonGeometryReader,In as SvgPolylineGeometryReader,Cn as SvgRectGeometryReader,rn as TextContentChangeAction,pn as TextPropertyEditor,ym as TextRefactorService,vs as TextTool,io as TextToolButtonProvider,gn as ThicknessPropertyEditor,jo as ToolbarExtensionsDesignViewConfigButtons,ua as TouchGestureHelper,Gn as TransformOriginExtension,Wn as TransformOriginExtensionProvider,Po as TransformToolButtonProvider,Ar as TransformToolPopup,Nd as TreeView,xo as UndoService,Lo as UnifiedGeometryExtension,Oo as UnifiedGeometryExtensionProvider,fm as UnkownElementsPropertiesService,H as ValueType,ga as WebcomponentManifestElementsService,cm as WebcomponentManifestEventsService,dm as WebcomponentManifestParserService,Bi as WebcomponentManifestPropertiesService,ms as ZMoveContextMenu,Zs as ZoomToElementContextMenu,cs as ZoomTool,eo as ZoomToolButtonProvider,_x as arraysEqual,C as assetsPath,lt as basicStackedToolbarExtensionOverlayOptionName,fp as calculateAlpha,bi as calculateNormLegth,Gt as calculateOuterRect,Ed as calculateSpecificity,si as combineNumericStyleInputValue,u0 as copyTextToClipboard,yr as copyToClipboard,qp as createDefaultServiceContainer,KS as createPasteFormatSnapshot,Fp as createPasteFormatSnapshotFromEntries,cr as createPathD,vx as dataURItoBlob,Qd as deepValue,Yt as dragDropFormatNameBindingObject,vi as dragDropFormatNameElementDefinition,pl as dragDropFormatNamePropertyGrid,en as enableStylesheetService,Zd as exportData,he as filterChildPlaceItems,Il as filterNonElementItems,wh as flexboxExtensionShowOverlayOptionName,hi as forceActiveAttributeName,pi as forceFocusAttributeName,ui as forceFocusVisibleAttributeName,mi as forceFocusWithinAttributeName,ut as forceHoverAttributeName,di as forceVisitedAttributeName,Or as formatNumericStyleInputNumber,wv as getActiveElement,Y as getBoundingClientRectAlsoForDisplayContents,Fg as getCollaborationNodeIndex,MN as getCollaborationNodeIndexes,Yd as getContentBoxContentOffsets,_b as getCustomGeometryReader,NN as getDesignItemByCollaborationNodeIndex,Mn as getDesignItemCurrentPos,Rp as getEdgeMidpoint,Oe as getEdgeOffsetPoint,Ud as getElementDisplaytype,Sv as getElementOffsetParent,Cv as getElementOffsetsInContainer,jr as getElementZoomFactor,Ev as getElementsWindowOffsetWithoutSelfAndParentTransformations,Ls as getFromClipboard,Dn as getGeometryReader,Of as getOutwardNormal,jd as getParentElementIncludingSlots,Bp as getPasteFormatEntries,Di as getQuadCenter,Ns as getTextFromClipboard,vr as gridExtensionShowOverlayOptionName,W as hasCommandKey,fi as hideAtDesignTimeAttributeName,gi as hideAtRunTimeAttributeName,Kd as htmlAsString,bv as inDesigner,It as instanceOf,Ji as instanceOfAny,Ic as invisibleElementExtensionShowOverlayOptionName,$d as isAppleDevice,Wr as isEmptyTextNode,sn as isFirefox,Dt as isInline,Ht as isInlineAfter,Ut as lockAtDesignTimeAttributeName,gp as moveSVGPath,Gr as newElementFromString,Ii as normalizeToAbsolutePosition,ni as parseNumericStyleInputValue,XS as pasteFormatKinds,Nn as placeDesignItem,xx as pointInRect,jp as positionsJsonMime,Zf as provideSnaplinesWithDistance,Qf as provideSnaplinesWithDistanceDistance,xb as registerGeometryReader,we as removeLeading,jt as removeTrailing,tr as requestAnimationFramePromise,N as roundValue,Ja as setDeepValue,bc as shadowrootGetSelection,eM as showPopup,mt as sleep,ft as straightenLine,Hp as switchContainer,yi as w3color,Wp as wrapSelectionInSpans};
12
+ `}),r.addEventListener("toggle",()=>{r.matches(":popover-open")||(r.remove(),t?.())},{once:!0}),r.showPopover({source:e}),()=>{r.matches(":popover-open")&&r.hidePopover(),r.remove(),t?.()}}oa();Ls();var ua=class s{static addTouchEvents(e){return new s(e)}constructor(e){this._target=e,e.addEventListener("touchstart",t=>this._touchStart(t)),e.addEventListener("touchmove",t=>this._touchMove(t)),e.addEventListener("touchend",t=>this._touchEnd(t)),e.addEventListener("touchcancel",t=>this._touchEnd(t))}_target;_started;_startX_0;_startY_0;_lastZoom;_lastPanDistanceX;_lastPanDistanceY;_startZoomDistance;multitouchEventActive;_mode=null;_touchStart(e){e.touches.length===2?(this.multitouchEventActive=!0,this._mode=null,this._started=!0,this._startX_0=e.touches[0].screenX,this._startY_0=e.touches[0].screenY,this._lastZoom=0,this._lastPanDistanceX=0,this._lastPanDistanceY=0,this._startZoomDistance=Math.hypot(e.touches[0].screenX-e.touches[1].screenX,e.touches[0].screenY-e.touches[1].screenY)):(this.multitouchEventActive=!1,this._started=!1)}_touchMove(e){if(e.touches.length!==2&&(this.multitouchEventActive=!1,this._started=!1),this._started){e.preventDefault();let t=Math.hypot(e.touches[0].screenX-e.touches[1].screenX,e.touches[0].screenY-e.touches[1].screenY),i=this._startX_0-e.touches[0].screenX,r=this._startY_0-e.touches[0].screenY,n=i-this._lastPanDistanceX,o=r-this._lastPanDistanceY;this._lastPanDistanceX=i,this._lastPanDistanceY=r;let a=t-this._startZoomDistance,l=a-this._lastZoom;if(this._lastZoom=a,this._lastZoom,this._mode||(Math.abs(a)>10&&(this._mode="zoom"),(Math.abs(i)>10||Math.abs(r)>10)&&(this._mode="pan")),this._mode){if(this._mode=="zoom"){let c=new CustomEvent("zoom",{detail:{factor:a,diff:l}});this._target.dispatchEvent(c)}else if(this._mode=="pan"){let c=new CustomEvent("pan",{detail:{x:i,deltaX:n,y:r,deltaY:o}});this._target.dispatchEvent(c)}}}}_touchEnd(e){this.multitouchEventActive=!1,e.touches.length}};rl();Tt();Ne();sn();vc();var fa=class{_name;get name(){return this._name}_elementList;getElements(){return Promise.resolve(this._elementList)}constructor(e,t){this._name=e,this._elementList=[],t.elements.forEach(i=>{this.isIElementDefintion(i)?this._elementList.push(i):this._elementList.push({tag:i})})}isIElementDefintion(e){return e!=null&&e.tag!=null}};Ne();var ga=class{_name;get name(){return this._name}_importPrefix;_elementList;_resolveStored;_rejectStored;constructor(e,t,i){this._name=e,this._importPrefix=t,this._parseManifest(i)}_parseManifest(e){this._elementList=[];for(let t of e.modules){for(let i of t.exports)if(i.kind=="custom-element-definition"){let r={tag:i.name,import:jt(this._importPrefix,"/")+"/"+Se(t.path,"/"),defaultWidth:"200px",defaultHeight:"200px",className:i.declaration.name};this._elementList.push(r)}for(let i of t.declarations)if(i.tagName){let r={tag:i.tagName,import:jt(this._importPrefix,"/")+"/"+Se(t.path,"/"),defaultWidth:"200px",defaultHeight:"200px",className:i.name};this._elementList.push(r)}this._resolveStored&&(this._resolveStored.forEach(i=>i(this._elementList)),this._resolveStored=null,this._rejectStored=null)}}async getElements(){return this._elementList?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}};Ke();de();fe();Me();var Bi=class s extends ee{getRefreshMode(e){return B.full}_name;get name(){return this._name}_propertiesList;constructor(e,t,i){super(i),this._name=e,this._parseManifest(t)}_parseManifest(e){this._propertiesList={};let t=[];for(let i of e.modules)i.declarations&&t.push(...i.declarations);for(let i of e.modules)for(let r of i.exports)if(r.kind=="custom-element-definition"){let n=[],o=t.find(a=>a.name==r.declaration.name);if(o){if(o.members){for(let a of o.members)if(a.kind=="field"&&a.privacy!=="private"&&a.privacy!=="protected"){let l=x.property;o.attributes&&(l=o.attributes.find(h=>h.fieldName==a.name)!=null?x.propertyAndAttribute:x.property);let c=s.manifestClassPropertyTypeToEditorPropertyType(a.type?.text,a.type?.editor);a.name&&n.push({name:a.name,service:this,propertyType:l,type:c[0],values:c[1],description:a.description})}this._propertiesList[r.name]=n}}else console.warn("declaration for "+r.declaration.name+" not found",e)}}static manifestClassPropertyTypeToEditorPropertyType(e,t){if(t&&t.toLowerCase()==="color")return["color"];if(e){if(e.toLowerCase()==="boolean")return["boolean"];if(e.toLowerCase()==="number")return["number"];if(e.toLowerCase()==="string")return["string"];if(e.startsWith("'")&&e.includes("|"))return["list",e.split("|").map(r=>r.trim()).map(r=>r.substring(1,r.length-1))]}return[e]}isHandledElement(e){return this._propertiesList[e.name]!=null}async getProperties(e){return this._propertiesList[e.name]}async getProperty(e,t){return this._propertiesList[e.name].find(i=>i.name==t)}getPropertyTarget(e,t){return this._propertiesList[e.name].find(i=>i.name==t.name).propertyType==x.attribute?L.attribute:L.property}getUnsetValue(e,t){return e[0].element[t.propertyName??t.name]}};Ne();var rm=class s{static registryPatchedTohandleErrors;static packageHacks;_packageSource;_dependecies=new Map;constructor(e="//cdn.jsdelivr.net/npm/"){this._packageSource=e,s.patchCustomElementsRegistryToHandleErrors()}static patchCustomElementsRegistryToHandleErrors(){if(!s.registryPatchedTohandleErrors){s.registryPatchedTohandleErrors=!0;let e=window.customElements,t={};t.define=function(i,r,n){try{e.define(i,r,n)}catch(o){console.warn(o)}},t.get=function(i){return e.get(i)},t.upgrade=function(i){return e.upgrade(i)},t.whenDefined=function(i){return e.whenDefined(i)},Object.defineProperty(window,"customElements",{get(){return t}})}}async loadNpmPackage(e,t,i,r,n){s.packageHacks||(s.packageHacks=(await import("./NpmPackageHacks.json",{assert:{type:"json"}})).default);let o=window.location.protocol+this._packageSource+e+"/",a=o+"package.json";n&&n(e+": loading package.json");let c=await(await fetch(a)).json();this.addToImportmap(o,c);let h=[];if(c.dependencies)for(let y in c.dependencies)h.push(this.loadDependency(y,c.dependencies[y]));await Promise.all(h);let d=o+"custom-elements.json",p=o;if(c.customElements&&(d=o+jt(c.customElements,"/"),d.includes("/"))){let y=d.lastIndexOf("/");p=d.substring(0,y+1)}let m=o+"web-component-designer.json";c.webComponentDesigner&&(m=o+Se(c.webComponentDesigner,"/")),n&&n(e+": loading custom-elements.json");let u=await fetch(d);if(!u.ok&&c.homepage)try{let v="https://raw.githubusercontent.com/"+new URL(c.homepage).pathname+"/master/custom-elements.json";u=await fetch(v),console.warn("custom-elements.json was missing from npm package, but was loaded from github as a fallback.")}catch(y){console.warn("github custom elments json fallback",y)}if(t&&fetch(m).then(async y=>{if(y.ok){let v=await y.json();if(v.services)for(let b in v.services)for(let E of v.services[b]){E.startsWith("./")&&(E=E.substring(2));let S=(await importShim(o+E)).default;t.register(b,new S)}}}),u.ok){let y=await u.json(),v=new ga(c.name,p,y);if(t&&t.register("elementsService",v),t){let b=new Bi(c.name,y);t.register("propertyService",b)}if(r)for(let b of await v.getElements())importShim(b.import);t&&i&&i.loadControls(t,t.elementsServices),s.packageHacks[e]?.import&&import(s.packageHacks[e]?.import),s.packageHacks[e]?.script&&import(URL.createObjectURL(new Blob([s.packageHacks[e]?.script],{type:"application/javascript"})))}else{console.warn("npm package: "+e+" - no custom-elements.json found, only loading javascript module");let y=new ma;c.module?await importShim(o+Se(c.module,"/")):c.main?await importShim(o+Se(c.main,"/")):c.unpkg?await importShim(o+Se(c.unpkg,"/")):console.warn("npm package: "+e+" - no entry point in package found."),s.packageHacks[e]?.import&&await import(s.packageHacks[e]?.import),s.packageHacks[e]?.script&&await import(URL.createObjectURL(new Blob([s.packageHacks[e]?.script],{type:"application/javascript"})));let v=y.getNewElements();if(v.length>0&&t&&i){let b={elements:v},E=new fa(e,b);t.register("elementsService",E),i.loadControls(t,t.elementsServices)}y.dispose()}n&&n(e+": done");let f={};return s.packageHacks[e]?.html&&(f.html=(s.packageHacks[e]?.html).replaceAll("${baseUrl}",o)),s.packageHacks[e]?.style&&(f.style=(s.packageHacks[e]?.style).replaceAll("${baseUrl}",o)),f}async loadDependency(e,t,i){if(this._dependecies.has(e))return;if(this._dependecies.set(e,!0),e.startsWith("@types")){console.warn("ignoring wrong dependency: ",e);return}i&&i(e+": loading dependency: "+e);let r=window.location.protocol+this._packageSource+e+"/",n=r+"package.json",a=await(await fetch(n)).json(),l=[];if(a.dependencies)for(let c in a.dependencies)l.push(this.loadDependency(c,a.dependencies[c]));await Promise.all(l),this.addToImportmap(r,a)}async addToImportmap(e,t){let i=importShim.getImportMap().imports,r={imports:{},scopes:{}};if(!i.hasOwnProperty(t.name)){if(t.exports){let o=c=>c?.browser?c.browser:c?.import?c.import:c?.module?c.module:c?.default?c.default:c?.node,a=c=>{let h=o(c);return typeof h!="string"&&(h=o(h)),typeof h!="string"&&(h=o(h)),typeof h!="string"&&(h=null),h},l=a(t.exports);l?r.imports[t.name]=e+Se(Se(l,"."),"/"):(l=a(t.exports?.["."]))&&(r.imports[t.name]=e+Se(Se(l,"."),"/"))}let n=t.main;if(t.module&&(n=t.module),t.unpkg&&!n&&(n=t.unpkg),r.imports[t.name]||(n?r.imports[t.name]=e+Se(Se(n,"."),"/"):console.warn("package: "+e+"no main import found")),r.imports[t.name+"/"]=e,s.packageHacks[t.name]?.map)for(let o in s.packageHacks[t.name]?.map)r.imports[o]=e+s.packageHacks[t.name].map[o];importShim.addImportMap(r)}}};Pe();Cc();rs();ne();var kr;(function(s){s.oneWay="oneWay",s.twoWay="twoWay"})(kr||(kr={}));Ke();q();var nm;(function(s){s.undefined="undefined",s.folder="folder",s.boolean="boolean",s.number="number",s.string="string",s.date="date",s.color="color",s.object="object"})(nm||(nm={}));Ke();_e();var sm=class s{static type="base-custom-webcomponent-binding";getBindings(e){let t=null;for(let i of e.attributes()){let r=i[0],n=i[1];if((n.startsWith("[[")||n.startsWith("{{"))&&(n.endsWith("}}")||n.endsWith("]]"))){t||(t=[]);let o={rawName:r,rawValue:n,service:this};i[0]==="bcw:visible"?(o.targetName="visibility",o.target=L.css,o.expression=n.substring(2,n.length-2)):i[0].startsWith("css:")?(o.targetName=r.substring(4),o.target=L.css,o.expression=n.substring(2,n.length-2)):i[0].startsWith("class:")?(o.targetName=r.substring(4),o.target=L.class,o.expression=n.substring(2,n.length-2)):i[0].startsWith("$")?(o.targetName=r.substring(1),o.target=L.attribute,o.expression=n.substring(2,n.length-2)):i[0].startsWith("@")?(o.targetName=r.substring(1),o.target=L.event,o.expression=n.substring(2,n.length-2)):i[0].startsWith(".")?(o.targetName=R.dashToCamelCase(r.substring(1)),o.target=L.explicitProperty,o.expression=n.substring(2,n.length-2)):(o.targetName=R.dashToCamelCase(r),o.target=L.property,o.expression=n.substring(2,n.length-2)),o.type=s.type,o.targetName=o.targetName,o.bindableObjectNames=[n.substring(2,n.length-2)],t.push(o)}}return t}setBinding(e,t){if(t.type!==s.type)return!1;let i="";switch(t.target){case L.explicitProperty:i+=".";break;case L.css:i+="css:";break;case L.class:i+="class";break;case L.attribute:i+="$";break;case L.event:i+="@";break}i+=t.targetName;let r=(t.mode==kr.oneWay?"[[":"{{")+t.expression+(t.mode==kr.oneWay?"]]":"}}");return e.setAttribute(i,r),!0}clearBinding(e,t,i){return!0}};Ze();Sl();Pe();$e();Qe();Fe();wi();le();Si();function Gg(s){let e=s.element;return e instanceof SVGGraphicsElement&&!(e instanceof SVGSVGElement)&&!!Mt(e)}var ya=class{serviceForContainer(e,t,i){return i!=null&&i.getComputedStyle()?.position=="absolute"?!0:!(t.display==="grid"||t.display==="inline-grid"||t.display==="flex"||t.display==="inline-flex")}isEnterableContainer(e){return!(Q.IsSelfClosingElement(e.element.localName)||!e.isRootItem&&e.element.shadowRoot&&e.element.shadowRoot.querySelector("slot")==null)}canEnter(e,t){return!(e.instanceServiceContainer.designerCanvas.readOnly||!this.isEnterableContainer(e)||!t.every(i=>!i.element.contains(e.element)&&i!==e))}canLeave(e,t){return!0}getElementOffset(e,t){return e.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(e.element)}calculateTrack(e,t,i,r,n,o){let a=n.x-i.x,l=n.y-i.y;if(!W(e)){if(t.alignOnGrid){let c=Mn(o,"position");c.x=c.x%t.gridSize,c.y=c.y%t.gridSize,a=Math.round(a/t.gridSize)*t.gridSize-c.x,l=Math.round(l/t.gridSize)*t.gridSize-c.y}else if(t.alignOnSnap){let c=Y(o.element),h=t.snapLines.snapToPosition({x:n.x-r.x,y:n.y-r.y},{width:c.width/t.scaleFactor,height:c.height/t.scaleFactor},{x:a>0?1:-1,y:l>0?1:-1});h.x!==null?a=h.x-Math.round(i.x)+Math.round(r.x):a=Math.round(a),h.y!==null?l=h.y-Math.round(i.y)+Math.round(r.y):l=Math.round(l)}}return{x:a,y:l}}placePoint(e,t,i,r,n,o,a){let l=o.x,c=o.y;if(!W(e)){if(t.alignOnGrid)l=Math.round(l/t.gridSize)*t.gridSize,c=Math.round(c/t.gridSize)*t.gridSize;else if(t.alignOnSnap){let h=t.snapLines.snapToPosition({x:o.x-n.x,y:o.y-n.y},null,{x:l>0?1:-1,y:c>0?1:-1});h.x!==null?l=h.x:l=Math.round(l),h.y!==null?c=h.y:c=Math.round(c)}}return{x:l,y:c}}startPlace(e,t,i,r,n,o,a){}place(e,t,i,r,n,o,a){let l=this.calculateTrack(e,t,r,n,o,a[0]);e.shiftKey&&(l=ft({x:0,y:0},l,90));let c=ce(Tl(a));for(let h of c){let d=h.instanceServiceContainer.designerCanvas.canvas,p=h.parent.element.getBoxQuads({relativeTo:d,iframes:h.instanceServiceContainer.designerCanvas.iframes})[0],m=h.parent.element.convertPointFromNode(new DOMPoint(l.x+p.p1.x,l.y+p.p1.y),d,{iframes:h.instanceServiceContainer.designerCanvas.iframes}),u=getComputedStyle(h.element),f=new DOMMatrix;u.rotate!="none"&&u.rotate&&(f=f.multiply(new DOMMatrix("rotate("+u.rotate.replace(" ",",")+")"))),u.scale!="none"&&u.scale&&(f=f.multiply(new DOMMatrix("scale("+u.scale.replace(" ",",")+")"))),m=f.inverse().transformPoint(m);let y=Wr(h.element);y!==1&&(m=new DOMPoint(m.x/y,m.y/y));let v=new DOMMatrix().translate(m.x,m.y);wn(h.element,h.getStyle("transform"),v.toString())}a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(c,"place",!1)}moveElements(e,t,i){for(let r of e)t.x&&r.setStyle("left",parseInt(r.element.style.left)-t.x+"px"),t.y&&r.setStyle("top",parseInt(r.element.style.top)-t.y+"px");e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshExtensions(e),e[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(e,"place",!0)}enterContainer(e,t,i){let r=ce(t);for(let n of r)i=="drop"&&n.setStyle("position","absolute"),e.insertChild(n),n.lastContainerSize&&(n.hasStyle("width")||n.setStyle("width",n.lastContainerSize.width+"px"),n.hasStyle("height")||n.setStyle("height",n.lastContainerSize.height+"px"));t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(r,"place",!0)}leaveContainer(e,t){let i=ce(t);t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(i,"place",!0)}finishPlace(e,t,i,r,n,o,a){let l=ce(a);for(let c of l){let h=_i(new DOMMatrix(c.element.style.transform)),d=_i(new DOMMatrix(c.getStyle("transform")??""));c.element.style.transform=c.getStyle("transform")??"";let p={x:h.x,y:h.y},m=getComputedStyle(c.element),u=new DOMMatrix;m.rotate!="none"&&m.rotate&&(u=u.multiply(new DOMMatrix("rotate("+m.rotate.replace(" ",",")+")"))),m.scale!="none"&&m.scale&&(u=u.multiply(new DOMMatrix("scale("+m.scale.replace(" ",",")+")"))),Gg(c)||(p=u.transformPoint(p)),Nn(i,c,{x:p.x-d.x,y:p.y-d.y},"position")}for(let c of a)t.extensionManager.removeExtension(c,P.Placement);a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(l,"place",!0)}};var om=class extends ya{serviceForContainer(e,t,i){return!0}};wi();Oc();Nc();Vc();xd();Ne();var am=class{_capturePageFn;constructor(e){this._capturePageFn=e}async takePng(e,t){if(!e||e.length===0)return null;let i=e[0].instanceServiceContainer.designerCanvas,r=e[0].instanceServiceContainer.selectionService,n=i.zoomFactor,o=i.canvasOffset,a=r.selectedElements;try{i.disableBackgroud(),i.zoomFactor=1,t?.removeSelection&&r.setSelectedElements([]),i.canvasOffset={x:0,y:0},await tr();let l=1/0,c=1/0,h=-1/0,d=-1/0;for(let ue of e){let J=i.getNormalizedElementCoordinates(ue.element);l=Math.min(l,J.x),c=Math.min(c,J.y),h=Math.max(h,J.x+J.width),d=Math.max(d,J.y+J.height)}let p=t?.margin??0;l-=p,c-=p,h+=p,d+=p;let m=Math.ceil(h-l),u=Math.ceil(d-c),f=i.outercanvas2,y=f.offsetWidth,v=f.offsetHeight,b=1,E=y-2*b,S=v-2*b,D=Math.ceil(m/E),O=Math.ceil(u/S),k=window.devicePixelRatio||1,U=Math.ceil(y*k),$=Math.ceil(v*k),V=Math.ceil(b*k),j=U-2*V,X=$-2*V,Z=document.createElement("canvas");Z.width=Math.ceil(m*k),Z.height=Math.ceil(u*k);let oe=Z.getContext("2d");for(let ue=0;ue<O;ue++)for(let J=0;J<D;J++){let ae=l+J*E,Ye=c+ue*S;i.canvasOffset={x:-(ae-b),y:-(Ye-b)},await tr(),await mt(100);let Ce=f.getBoundingClientRect(),ct=await this._capturePageFn({x:Math.round(Ce.left),y:Math.round(Ce.top),width:Math.round(Ce.width),height:Math.round(Ce.height)}),tt=await this._loadImage(ct);oe.drawImage(tt,V,V,j,X,J*j,ue*X,j,X)}let De=await(await new Promise(ue=>Z.toBlob(ue,"image/png"))).arrayBuffer();return new Uint8Array(De)}finally{i.zoomFactor=n,i.canvasOffset=o,i.enableBackground(),t?.removeSelection&&r.setSelectedElements(a)}}_loadImage(e){return new Promise((t,i)=>{let r=new Image;r.onload=()=>t(r),r.onerror=i,r.src=e})}};Lc();Bc();Ze();Ls();ne();Pe();var lm=class{async copyItems(e){let t=ce(e),i=Q.ConvertToString(t,!1),r=t.map(o=>o.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(o.element));gr([["text/html",i],["text/plain",i],["application/json",JSON.stringify({html:i,positions:r})]])}async getPasteItems(e,t){let i=await this._readClipboardPasteData();return i.imageData?[[await M.createDesignItemFromImageBlob(e,t,i.imageData)]]:[await e.htmlParserService.parse(i.html,e,t,!0),i.positions??void 0]}async _readClipboardPasteData(){let e="",t=null,i=null,r=await Ns();if(r!=null){let n=r[0],o=await this._tryReadClipboardType(n,"application/json");if(o){let a=this._parseJsonClipboardData(o);e=a?.html??"",t=a?.positions??null}e||(e=await this._tryReadClipboardType(n,"text/html")??""),e||(e=await this._tryReadClipboardType(n,"text/plain")??"");try{let a=n.types.find(l=>l.startsWith("image/"));a&&(i=await n.getType(a))}catch{}}else e=await Ms();return{html:e,positions:t,imageData:i}}_parseJsonClipboardData(e){try{return JSON.parse(e)}catch{return null}}async _tryReadClipboardType(e,t){try{return await(await e.getType(t))?.text()}catch{return null}}};fc();yd();import{DomHelper as Wg}from"@node-projects/base-custom-webcomponent";var cm=class{provideDemo(e,t,i,r,n){return new Promise(o=>{let a=document.createElement("iframe");a.style.width="100%",a.style.height="100%",a.style.border="none",a.style.display="none",Wg.removeAllChildnodes(e),e.appendChild(a),a.onload=()=>{a.style.display="block",o()};let l=a.contentWindow.document;if(l.open(),l.write('<script type="module">'),i.designContext.npmPackages?.length){l.write("import { NpmPackageLoader } from '../../helper/NpmPackageLoader.js'"),l.write("let loader = new NpmPackageLoader();");for(let c of i.designContext.npmPackages)l.write("loader.loadNpmPackage('"+c+"', null, null, true);")}if(i.designContext.imports?.length)for(let c of i.designContext.imports)l.write("import '"+c+"';");l.write("document.body.style.display='';"),l.write("</script>"),l.write("<style>"+(n??"")+"</style>"),l.write('<body style="display:none; width: 100%; height: 100%; margin: 0; padding: 0; position: absolute;">'+r+"</body>"),l.close()})}};Fh();Nh();ia();ne();ia();var hm=class extends zi{createDesignItem(e,t,i,r){let n=new M(e,t,i,r);return e instanceof(e.ownerDocument.defaultView??window).HTMLTemplateElement&&requestAnimationFrame(()=>{let o=1,a=e.getAttribute("sample-repeat-count");a&&(o=parseInt(a));for(let l=0;l<o;l++){let c=e;for(let h of e.content.childNodes)c=this.instancateNode(c,h)}}),n}instancateNode(e,t,i=!1){let r=t.cloneNode(!1);i?e.appendChild(r):e.parentNode.insertBefore(r,e.nextSibling),M.GetDesignItem(t).setView(r);for(let n of t.childNodes)this.instancateNode(r,n,!0);return r}};Rc();zh();import{LazyLoader as jg}from"@node-projects/base-custom-webcomponent";var dm=class{_name;get name(){return this._name}_elementList;_resolveStored;_rejectStored;getElements(){return this._elementList?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}constructor(e,t){this._name=e,jg.LoadText(t.toString()).then(i=>{let r=JSON.parse(i);this._elementList=[],r.elements.forEach(n=>{this.isIElementDefintion(n)?this._elementList.push(n):this._elementList.push({tag:n})}),this._resolveStored&&(this._resolveStored.forEach(n=>n(this._elementList)),this._resolveStored=null,this._rejectStored=null)}).catch(i=>{this._rejectStored&&(this._rejectStored.forEach(r=>r(i)),this._resolveStored=null,this._rejectStored=null)})}isIElementDefintion(e){return e!=null&&e.tag!=null}};Ar();Ar();var pm=class extends ke{isHandledElementFromEventsService(e){return this.__eventsList?.[e.name]!=null}getPossibleEvents(e){return[...this.__eventsList[e.name],...ke._simpleMouseEvents,...ke._pointerEvents,...ke._allElements,...ke._focusableEvents]}getEvent(e,t){return this.getPossibleEvents(e).find(r=>r.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}__eventsList;constructor(e,t){super(),this._parseManifest(t)}_parseManifest(e){this.__eventsList={};let t=[];for(let i of e.modules)i.declarations&&t.push(...i.declarations);for(let i of e.modules)for(let r of i.exports)if(r.kind=="custom-element-definition"){let n=t.find(o=>o.name==r.declaration.name);if(n){if(n.events){let o=[];for(let a of n.events)o.push({name:a.name});o.length&&(this.__eventsList[r.name]=o)}}else console.warn("declaration for "+r.declaration.name+" not found",e)}}};$c();Ze();Gs();q();_e();le();var et;(function(s){s[s.inline=0]="inline",s[s.block=1]="block",s[s.complex=2]="complex"})(et||(et={}));var mm=class{options;constructor(e){this.options=e??{},this.options.beautifyOutput??=!0,this.options.compressCssToShorthandProperties??=!0,this.options.writeDesignerProperties??=!0,this.options.parseJsonInAttributes??=!0,this.options.jsonWriteMode??="min"}writeAttributes(e,t){if(t.hasAttributes)for(let i of t.attributes())e.indentedTextWriter.write(" "),typeof i[1]=="string"?i[1]===""?e.indentedTextWriter.write(i[0]):e.indentedTextWriter.write(i[0]+'="'+Q.normalizeAttributeValue(i[1])+'"'):i[1]||e.indentedTextWriter.write(i[0])}writeStyles(e,t){if(t.hasStyles){e.indentedTextWriter.write(' style="');let i=t.styles();e.options.compressCssToShorthandProperties&&(i=Mi.combine(new Map(i)));for(let r of i)r[0]&&e.indentedTextWriter.write(R.camelToDashCase(r[0])+":"+Q.normalizeAttributeValue(r[1])+";");e.indentedTextWriter.write('"')}}_writeTextNode(e,t){e.lastElementDisplayType=Re.inline;let i=Q.normalizeContentValue(t.content);e.containerDisplayType===et.inline?i=this._normalizeInlineTextContent(i):i=i.trim(),i&&e.indentedTextWriter.write(i)}_normalizeInlineTextContent(e){if(!e?.trim())return"";let t=/^\s/.test(e),i=/\s$/.test(e),r=e.replaceAll(/[\t\r\n ]+/g," ").trim();return`${t?" ":""}${r}${i?" ":""}`}_writeCommentNode(e,t){e.indentedTextWriter.write("<!--"+t.content+"-->")}_writeElementNode(e,t){let i=Xd(t.element);e.lastElementDisplayType=i,e.indentedTextWriter.write("<"+t.name),this.writeAttributes(e,t),this.writeStyles(e,t),e.indentedTextWriter.write(">");let r=!1;if(t.hasChildren){let n=t.children();r=t.childCount===1&&t.firstChild.nodeType===I.TextNode;let o=e.containerDisplayType;e.containerDisplayType=this.getContainerType(t.element),r?this._writeInternal(e,t.firstChild):(e.containerDisplayType!==et.inline&&e.indentedTextWriter.levelRaise(),this._writeDesignItemList(i,e,n),e.containerDisplayType!==et.inline&&e.indentedTextWriter.levelShrink()),e.containerDisplayType=o}else t.hasContent&&e.indentedTextWriter.write(Q.normalizeContentValue(t.content));Q.IsSelfClosingElement(t.name)||(i===Re.block&&t.hasChildren&&!r&&this._writeNewlineAndIntend(e),e.indentedTextWriter.write("</"+t.name+">"),i!==Re.none&&(e.lastElementDisplayType=i))}_writeDesignItemList(e,t,i){for(let r of i)t.lastElementDisplayType==null||t.containerDisplayType===et.inline||(t.containerDisplayType===et.complex?this._writeNewlineAndIntend(t):t.lastElementDisplayType!==Re.inline&&this._writeNewlineAndIntend(t)),this._writeInternal(t,r)}_writeNewlineAndIntend(e){e.indentedTextWriter.writeNewline(),e.indentedTextWriter.writeIndent()}_writeInternal(e,t){let i=e.indentedTextWriter.position;t.nodeType===I.TextNode?this._writeTextNode(e,t):t.nodeType===I.Comment?this._writeCommentNode(e,t):t.nodeType===I.Element&&this._writeElementNode(e,t),e.designItemsAssignmentList&&e.designItemsAssignmentList.set(t,{start:i,length:e.indentedTextWriter.position-i-1})}getContainerType(e){let t=(e.ownerDocument.defaultView??window).getComputedStyle(e).display;return t==="inline"?et.inline:t==="block"||t==="inline-block"||t==""?et.block:et.complex}write(e,t,i){let r={indentedTextWriter:e,options:this.options,lastElementDisplayType:null,containerDisplayType:et.block};this._writeDesignItemList(Re.inline,r,t)}};Zc();hr();il();Ke();de();fe();Me();Ne();Ar();var um=class extends ee{getRefreshMode(e){return B.none}_name;get name(){return this._name}_packageData;_elementList;_propertiesList;__eventsList;_resolveStored;_rejectStored;_importPrefix="";constructor(e,t,i=""){if(super(),this._name=e,this._importPrefix=i,typeof t=="string"){this._importPrefix=this._importPrefix??t.split("/").slice(0,-1).join("/");let r;window.importShim?r=importShim(t,{with:{type:"json"}}):r=import(t,{with:{type:"json"}}),r.then(n=>{this._packageData=n.default,this._parseManifest()}).catch(n=>{this._rejectStored&&(this._rejectStored.forEach(o=>o(n)),this._resolveStored=null,this._rejectStored=null)})}else this._packageData=t,this._parseManifest()}_parseManifest(){this._elementList=[],this._propertiesList={};for(let e of this._packageData.modules){for(let t of e.exports)if(t.kind=="custom-element-definition"){this._elementList.push({tag:t.name,import:jt(this._importPrefix,"/")+"/"+Se(e.path,"/")});let i=[],r=e.declarations.find(n=>n.name==t.declaration.name);for(let n of r.members)if(n.kind=="field"){let o=x.property;r.attributes&&(o=r.attributes.find(l=>l.fieldName==n.name)!=null?x.propertyAndAttribute:x.property);let a=Bi.manifestClassPropertyTypeToEditorPropertyType(n.type?.text,n.type?.editor);i.push({name:n.name,service:this,propertyType:o,type:a[0],values:a[1],description:n.description})}if(this._propertiesList[t.name]=i,r.events){let n=[];for(let o of r.events)n.push({name:o.name});n.length&&(this.__eventsList[t.name]=n)}}this._resolveStored&&(this._resolveStored.forEach(t=>t(this._elementList)),this._resolveStored=null,this._rejectStored=null)}}async getElements(){return this._packageData?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}isHandledElement(e){return this._elementList?this._elementList.find(t=>t.tag==e.name)!=null:!1}async getProperties(e){return this._propertiesList[e.name]}async getProperty(e,t){return this._propertiesList[e.name].find(i=>i.name==t)}getPropertyTarget(e,t){return this._propertiesList[e.name].find(i=>i.name==t.name).propertyType==x.attribute?L.attribute:L.property}isHandledElementFromEventsService(e){return this.__eventsList?this.__eventsList[e.name]!=null:!1}getPossibleEvents(e){return[...this.__eventsList[e.name],...ke._simpleMouseEvents,...ke._pointerEvents,...ke._allElements,...ke._focusableEvents]}getEvent(e,t){return this.getPossibleEvents(e).find(r=>r.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}};vd();Gc();var fm=class{constructor(e,t,i){}cursorsChanged};_l();de();xh();Ee();hl();nl();xl();sl();pl();ol();import{html as Ug,BaseCustomWebComponentConstructorAppend as Yg}from"@node-projects/base-custom-webcomponent";var gm=class extends Yg{static template=Ug`<div style="display:flex"><input id="input" type="text"> <button style="width:30px">...</button></div>`;constructor(){super()}};al();ll();cl();ml();gh();fh();_e();ai();mh();lo();bl();ad();li();fe();Me();de();pt();Ke();var va=class extends ee{getRefreshMode(e){return B.none}contentProperty={name:"textContent",type:"string",service:this,propertyType:x.property};idProperty={name:"id",type:"string",service:this,propertyType:x.propertyAndAttribute};innerHtmlProperty={name:"innerHTML",type:"string",service:this,propertyType:x.property};name="content";isHandledElement(e){return!0}async getProperty(e,t){return t=="id"?this.idProperty:this.contentProperty}async getProperties(e){return[this.idProperty,this.contentProperty,this.innerHtmlProperty]}clearValue(e,t,i="all"){if(t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name){let r=e[0].openGroup("property cleared: "+t.name);for(let n of e)i!="binding"&&n.clearChildren(),i!="value"&&n.serviceContainer.forSomeServicesTillResult("bindingService",o=>o.clearBinding(n,t.name,this.getPropertyTarget(n,t))),this._notifyChangedProperty(n,t,void 0);r.commit()}else super.clearValue(e,t,i)}isSet(e,t){if(t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name){let i=!0,r=!1;if(e!=null&&e.length!==0){e.forEach(o=>{let a=!1;a=o.element.childNodes.length>0,i=i&&a,r=r||a});let n=ee.getOrBuildCachedBindings(e[0]);if(n&&n.find(o=>(o.target==L.property||o.target==L.explicitProperty)&&o.targetName==t.name))return G.bound}return i?G.all:r?G.some:G.none}return super.isSet(e,t)}getValue(e,t){return t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name?e[0].element.textContent:super.getValue(e,t)}};yh();co();Me();fe();de();var ym=class extends ee{getRefreshMode(e){return B.full}name="list";_propertys=new Map;constructor(e,t){super(t);for(let i in e){let r=[];this._propertys.set(i,r);for(let n in e[i]){let o=e[i][n];r.push({name:o.name,propertyName:o.propertyName,attributeName:o.attributeName,description:o.description,type:o.type,default:o.default,min:o.min,max:o.max,step:o.step,values:o.values,enumValues:o.enumValues,value:o.value,defaultValue:o.defaultValue,service:this,propertyType:o.propertyType??x.propertyAndAttribute})}}}isHandledElement(e){return this._propertys.has(e.element.localName)}_notifyChangedProperty(e,t,i){}async getProperties(e){return this._propertys.get(e.element.localName)}};Wa();Ml();Gh();ja();Ua();Ga();Me();uh();vh();Me();de();fe();var vm=class extends ee{getRefreshMode(e){return B.full}isHandledElement(e){return!0}async getProperties(e){let t=Object.getOwnPropertyNames(Object.getPrototypeOf(e.element)),i=[];for(let r of t){if(r.startsWith("on"))continue;let n=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e.element),r);if(n.get||n.set){let o=e.element[r];typeof o=="boolean"?i.push({name:r,type:"boolean",service:this,propertyType:x.propertyAndAttribute}):typeof o=="number"?i.push({name:r,type:"bonumberolean",service:this,propertyType:x.propertyAndAttribute}):i.push({name:r,type:"string",service:this,propertyType:x.propertyAndAttribute})}}return i}};fe();pt();var xm=class{getRefactorings(e){let t=[];for(let i of e){let r=i.serviceContainer.bindingService.getBindings(i);if(r)for(let n of r)for(let o of n.bindableObjectNames)if(o.includes(":")){let a=o.split(":")[0],l=o.substring(a.length+1);t.push({service:this,name:l,itemType:"signal",designItem:i,type:"binding",sourceObject:n,display:n.target+"/"+n.targetName+" - "+a+":",shortName:a})}else t.push({service:this,name:o,itemType:"signal",designItem:i,type:"binding",sourceObject:n,display:n.target+"/"+n.targetName})}return t}refactor(e,t,i){let r=e.sourceObject;e.shortName?r.bindableObjectNames=r.bindableObjectNames.map(n=>n==e.shortName+":"+t?e.shortName+":"+i:n):r.bindableObjectNames=r.bindableObjectNames.map(n=>n==t?i:n),e.designItem.serviceContainer.bindingService.setBinding(e.designItem,r)}};var _m=class{getRefactorings(e){let t=[];for(let i of e)if((i.element instanceof i.window.HTMLInputElement||i.element instanceof i.window.HTMLTextAreaElement)&&i.element.value&&t.push({service:this,name:i.element.value,itemType:"text",designItem:i,type:"attribute",sourceObject:i,display:"attribute/value"}),i.childCount>0&&i.element.textContent){let r=!0;for(let n of i.element.childNodes)n.nodeType!=3&&(r=!1);r&&t.push({service:this,name:i.element.textContent,itemType:"text",designItem:i,type:"content",sourceObject:i,display:"textContent"})}return t}refactor(e,t,i){e.type=="attribute"?e.designItem.setAttribute("value",i):e.type=="content"&&(e.designItem.content=i)}};q();var wd=Symbol("collaborationNodeIndexCache");function Xg(s){let e=[],t=new WeakMap,i=0,r=n=>{if(n&&(!n.isRootItem&&n.nodeType===I.Element&&(e.push(n),t.set(n,i++)),n.hasChildren))for(let o of n.children())r(o)};return r(s),{orderedItems:e,byItem:t}}function bm(s,e){if(e?.[wd])return e[wd];let t=Xg(s);return e&&(e[wd]=t),t}function Kg(s,e){if(!s||s.isRootItem)return null;let t=s.instanceServiceContainer.designerCanvas.rootDesignItem;return bm(t,e).byItem.get(s)??null}function WN(s,e){return s?.length?s.map(t=>Kg(t,e)).filter(t=>t!=null):[]}function jN(s,e,t){return e==null||e<0?null:bm(s,t).orderedItems[e]??null}_d();Ih();ne();import{TypedEvent as Om}from"@node-projects/base-custom-webcomponent";function Pd(s){let e={A:0,B:0,C:0};return $g(s)?(Qg(s,0,e),e):(Zg(s,e),e)}function $g(s){for(let e=0;e<s.length;e++){let t=s.charCodeAt(e);if(t===58||t===91||t===40||t===44||t===92)return!0}return!1}function Zg(s,e){let t=s.length,i=0;for(;i<t;){let r=s.charCodeAt(i);if(r===124&&i+1<t&&s.charCodeAt(i+1)===124){i+=2;continue}if(r===32||r===62||r===43||r===126){i++;continue}if(r===35){for(e.A++,i++;i<t&&Dr(s.charCodeAt(i));)i++;continue}if(r===46){for(e.B++,i++;i<t&&Dr(s.charCodeAt(i));)i++;continue}if(r===42){i++;continue}if(Lm(r)||r===124){for(;i<t;){let n=s.charCodeAt(i);if(Dr(n)||n===124)i++;else break}e.C++;continue}i++}}function Qg(s,e,t){let i=e,r=0,n=0,o=0;for(;i<s.length;){if(r=n=o=0,i=Hi(s,i,t,!0),r=t.A,n=t.B,o=t.C,s.charCodeAt(i)===44){i++;let a=r,l=n,c=o;for(;i<s.length;){if(t.A=t.B=t.C=0,i=Hi(s,i,t,!0),(t.A>a||t.A===a&&(t.B>l||t.B===l&&t.C>c))&&(a=t.A,l=t.B,c=t.C),s.charCodeAt(i)===44){i++;continue}break}t.A=a,t.B=l,t.C=c}break}return i}function Hi(s,e,t,i){let r=e;for(i&&(t.A=t.B=t.C=0);r<s.length;){let n=s.charCodeAt(r);if(n===44||n===41)break;if(n===124&&s.charCodeAt(r+1)===124){r+=2;continue}if(n===32||n===62||n===43||n===126){r++;continue}if(n===35){r=xa(s,r+1),t.A++;continue}if(n===46){r=xa(s,r+1),t.B++;continue}if(n===91){r=Cd(s,r,91,93),t.B++;continue}if(n===58){if(s.charCodeAt(r+1)===58){r+=2,r=xa(s,r),s.charCodeAt(r)===40&&(r=Cd(s,r,40,41)),t.C++;continue}let o=r+1,a=xa(s,o);if(r=a,ty(s,o,a-o)){t.C++;continue}if(s.charCodeAt(r)===40){let l=r+1,c=Cd(s,r,40,41),h=a-o;switch(ey(s,o,h)){case Sm:r=c;continue;case wm:case Cm:case Em:case Tm:case Mm:case Nm:{let p=0,m=0,u=0,f=l,y=c-1;for(;f<y;){let v={A:0,B:0,C:0};if(f=qg(s,f,v),(v.A>p||v.A===p&&(v.B>m||v.B===m&&v.C>u))&&(p=v.A,m=v.B,u=v.C),s.charCodeAt(f)===44)f++;else break}t.A+=p,t.B+=m,t.C+=u,r=c;continue}case Pm:{let p={A:0,B:0,C:0};Hi(s,l,p,!1),t.A+=p.A,t.B+=p.B,t.C+=p.C,r=c;continue}case Am:case Im:{t.B++;let p={A:0,B:0,C:0};Hi(s,l,p,!1),t.A+=p.A,t.B+=p.B,t.C+=p.C,r=c;continue}case km:case Dm:{t.B++;let p=c-1,m=iy(s,l,p);if(m!==-1){let u=m+2;for(;u<p&&Ed(s.charCodeAt(u));)u++;let f=0,y=0,v=0,b=u;for(;b<p;){let E={A:0,B:0,C:0};if(b=Hi(s,b,E,!1),(E.A>f||E.A===f&&(E.B>y||E.B===y&&E.C>v))&&(f=E.A,y=E.B,v=E.C),s.charCodeAt(b)===44)b++;else break}t.A+=f,t.B+=y,t.C+=v}r=c;continue}default:t.B++,r=c;continue}}else{t.B++;continue}}if(n===42){r++;continue}if(Lm(n)||n===124){for(;r<s.length&&(Dr(s.charCodeAt(r))||s.charCodeAt(r)===124);)r++;t.C++;continue}r++}return r}function qg(s,e,t){return Hi(s,e,t,!1)}var Jg=0,Sm=1,wm=2,Cm=3,Em=4,Pm=5,Am=6,Im=7,km=8,Dm=9,Tm=10,Mm=11,Nm=12;function ey(s,e,t){return t===5&&s.charCodeAt(e)===119&&s.charCodeAt(e+1)===104&&s.charCodeAt(e+2)===101&&s.charCodeAt(e+3)===114&&s.charCodeAt(e+4)===101?Sm:t===3&&s.charCodeAt(e)===110&&s.charCodeAt(e+1)===111&&s.charCodeAt(e+2)===116?Cm:t===2&&s.charCodeAt(e)===105&&s.charCodeAt(e+1)===115?wm:t===3&&s.charCodeAt(e)===104&&s.charCodeAt(e+1)===97&&s.charCodeAt(e+2)===115?Em:t===4&&s.charCodeAt(e)===104&&s.charCodeAt(e+1)===111&&s.charCodeAt(e+2)===115&&s.charCodeAt(e+3)===116?Am:t===12&&s.charCodeAt(e)===104&&s.charCodeAt(e+4)===45&&s.charCodeAt(e+5)===99&&s.substring(e,e+t)==="host-context"?Im:t===7&&s.charCodeAt(e)===115&&s.substring(e,e+7)==="slotted"?Pm:t===9&&s.charCodeAt(e)===110&&s.substring(e,e+9)==="nth-child"?km:t===14&&s.charCodeAt(e)===110&&s.substring(e,e+14)==="nth-last-child"?Dm:t===7&&s.charCodeAt(e)===109&&s.substring(e,e+7)==="matches"?Tm:t===11&&s.charCodeAt(e)===45&&s.substring(e,e+11)==="-webkit-any"?Mm:t===8&&s.charCodeAt(e)===45&&s.substring(e,e+8)==="-moz-any"?Nm:Jg}function ty(s,e,t){if(t===6){let i=s.charCodeAt(e);if(i===98)return s.substring(e,e+6)==="before";if(i===97)return s.substring(e,e+6)==="after"}return t===5&&s.charCodeAt(e)===97?s.substring(e,e+5)==="after":t===10&&s.charCodeAt(e)===102?s.substring(e,e+10)==="first-line":t===12&&s.charCodeAt(e)===102?s.substring(e,e+12)==="first-letter":!1}function Lm(s){return s>=65&&s<=90||s>=97&&s<=122||s===95||s===45||s===92}function Dr(s){return s>=65&&s<=90||s>=97&&s<=122||s>=48&&s<=57||s===95||s===45||s===92}function Ed(s){return s===32||s===9||s===10||s===13||s===12}function xa(s,e){let t=e;for(;t<s.length;){let i=s.charCodeAt(t);if(i===92){t+=2;continue}if(!Dr(i))break;t++}return t}function Cd(s,e,t,i){let r=0,n=0,o=e;for(;o<s.length;){let a=s.charCodeAt(o);if(n){if(a===92){o+=2;continue}a===n&&(n=0),o++;continue}if(a===34||a===39){n=a,o++;continue}if(a===t)r++;else if(a===i&&(r--,r===0))return o+1;o++}return o}function iy(s,e,t){let i=e;for(;i<=t-1;){for(;i<=t-1&&Ed(s.charCodeAt(i));)i++;if(s.charCodeAt(i)===111&&s.charCodeAt(i+1)===102&&(i+2>t-1||Ed(s.charCodeAt(i+2))||s.charCodeAt(i+2)===40))return i;i++}return-1}var _a=class s{_stylesheets=new Map;_documentStylesheets=new Map;_allStylesheets=new Map;_instanceServiceContainer;constructor(e){this._instanceServiceContainer=e.instanceServiceContainer}async setStylesheets(e){await this.internalSetStylesheets(e,this._stylesheets)}async setDocumentStylesheets(e){await this.internalSetStylesheets(e,this._documentStylesheets)}async internalSetStylesheets(e,t){if(t!=null&&e!=null&&t.size==e.length&&e.every(i=>t.has(i.name)))for(let i of e){let r=t.get(i.name);if(r.stylesheet.content!=i.content){try{t.set(i.name,{stylesheet:i,ast:await this.internalParse(i.content)})}catch(n){console.warn("error parsing stylesheet",i,n)}t==this._stylesheets&&this.stylesheetChanged.emit({name:i.name,newStyle:i.content,oldStyle:r.stylesheet.content,changeSource:"extern"})}}else if(e!=null){t.clear();for(let i of e){let r=null;try{r=await this.internalParse(i.content)}catch(n){console.warn("error parsing stylesheet",i,n)}t.set(i.name,{stylesheet:i,ast:r})}t==this._stylesheets&&this.stylesheetsChanged.emit()}else t.clear();this._allStylesheets.clear();for(let i of this._documentStylesheets)this._allStylesheets.set(i[0],i[1]);for(let i of this._stylesheets)this._allStylesheets.set(i[0],i[1])}async internalReparseStylesheet(e){let t=this._allStylesheets;this._documentStylesheets.has(e)&&(t=this._documentStylesheets),this._stylesheets.has(e)&&(t=this._stylesheets);let i=t.get(e),r=null;try{r=await this.internalParse(i.stylesheet.content)}catch(o){console.warn("error parsing stylesheet",e,o)}let n={stylesheet:i.stylesheet,ast:r};this._stylesheets.set(e,n),this._allStylesheets.set(e,n)}getStylesheets(){let e=[];for(let t of this._stylesheets)e.push(t[1].stylesheet);return e}getDeclarationsSortedBySpecificity(e,t){let i=this.getDeclarations(e,t);return i.reverse().sort((r,n)=>r.parent.specificity==null?-1:n.parent.specificity==null?1:r.parent.specificity.A>n.parent.specificity.A||r.parent.specificity.A===n.parent.specificity.A&&r.parent.specificity.B>n.parent.specificity.B||r.parent.specificity.A===n.parent.specificity.A&&r.parent.specificity.B===n.parent.specificity.B&&r.parent.specificity.C>n.parent.specificity.C?-1:r.parent.specificity.A===n.parent.specificity.A&&r.parent.specificity.B===n.parent.specificity.B&&r.parent.specificity.C===n.parent.specificity.C?0:1),i}updateDeclarationValue(e,t,i){this.updateDeclarationValueWithoutUndo(e,t,i)}stylesheetChanged=new Om;stylesheetsChanged=new Om;static patchStylesheetSelectorForDesigner(e){return e.replaceAll(":hover","["+ut+"]").replaceAll(":active","["+hi+"]").replaceAll(":visited","["+di+"]").replaceAll(":focus","["+pi+"]").replaceAll(":focus-within","["+mi+"]").replaceAll(":focus-visible","["+ui+"]")}elementMatchesASelector(e,t){let i=null;for(let r of t)try{if(e&&r===":host"&&e.isRootItem){let n=Pd(r);(i===null||n.A>i.A||n.A===i.A&&(n.B>i.B||n.B===i.B&&n.C>i.C))&&(i=n)}else if(!e||e.element.matches(s.patchStylesheetSelectorForDesigner(r))){let n=Pd(r);(i===null||n.A>i.A||n.A===i.A&&(n.B>i.B||n.B===i.B&&n.C>i.C))&&(i=n)}}catch{console.warn("invalid selector: ",r,"patched: "+s.patchStylesheetSelectorForDesigner(r))}return i===null?!1:i}};Ph();Ah();Xa();el();Ya();gd();st();$a();Ja();var ba=class{stylesheetService;constructor(e,t,i,r){this.title="Changed Css Stylesheet: "+t,this.stylesheetService=e,this.name=t,this.newValue=i,this.oldValue=r}title;get affectedItems(){return[]}undo(){return this.stylesheetService.updateCompleteStylesheetWithoutUndo(this.name,this.oldValue),null}do(){return this.stylesheetService.updateCompleteStylesheetWithoutUndo(this.name,this.newValue),null}name;newValue;oldValue;mergeWith(e){return!1}};var Sa=class{constructor(e,t){this.title="Set all DesignItems",this.newDesignItems=e,this.oldDesignItems=t}title;get affectedItems(){return this.newDesignItems}undo(){return this.newDesignItems[0].instanceServiceContainer.designerCanvas._internalSetDesignItems(this.oldDesignItems),null}do(){return this.newDesignItems[0].instanceServiceContainer.designerCanvas._internalSetDesignItems(this.newDesignItems),null}newDesignItems;oldDesignItems;mergeWith(e){return!1}};Qa();Rr();Rr();import{TypedEvent as ry}from"@node-projects/base-custom-webcomponent";var wa=class{imports=[];npmPackages=[];extensionOptions={gridExtensionShowOverlay:!1,flexboxExtensionShowOverlay:!1,invisibleElementExtensionShowOverlay:!1,enableStylesheetService:!1,basicStackedToolbarExtensionShowOverlay:!1,simulateHoverOnHover:!1,selectUnhitableElements:!0};extensionOptionsChanged=new ry};import{TypedEvent as ny}from"@node-projects/base-custom-webcomponent";var Ca=class extends oi{designContext=new wa;designerCanvas;collaborationService;designer;documentContainer;onContentChanged=new ny;constructor(e){super(),this.designerCanvas=e}get rootDesignItem(){return this.designerCanvas.rootDesignItem}get undoService(){return this.getLastService("undoService")}get selectionService(){return this.getLastService("selectionService")}get stylesheetService(){return this.getLastService("stylesheetService")}get designItemDocumentPositionService(){return this.getLastService("designItemDocumentPositionService")}};Ha();de();pt();Tt();fe();se();import{BaseCustomWebComponentLazyAppend as sy,css as oy,DomHelper as Vm}from"@node-projects/base-custom-webcomponent";var He=class s extends sy{_div;_propertyMap=new Map;_serviceContainer;_propertiesService;_designItems;_lastClassType;_addCounter=0;propertyGroupHover;propertyGroupClick;propertyContextMenuProvider;get propertiesService(){return this._propertiesService}static get style(){return oy`:host{display:block;height:100%;overflow:auto;box-sizing:border-box}.content-wrapper{padding:.5em;display:grid;grid-template-columns:11px minmax(80px,auto) minmax(120px,1fr);align-items:center;grid-auto-rows:minmax(24px,auto);align-items:center}input,label,select{display:inline-block;color:#fff;background:0 0;margin:2px 0;padding:0 2px 0 4px;width:110px;white-space:nowrap}.style-label,label{box-sizing:border-box;display:inline-block;font-size:13px;width:auto;overflow:hidden;text-overflow:ellipsis;margin-right:2px}input,select{padding:0;padding-left:3px}input,select{border:none}.content-wrapper>input,.content-wrapper>select,.editor-control{border:1px solid var(--input-border-color,#596c7a);border-radius:0}.editor-control,input,select{height:24px;box-sizing:border-box;font-size:11px;width:100%;margin:0}.editor-control:focus,input:focus,select:focus{outline:0;box-shadow:none}.editor-control[disabled],input[disabled],select[disabled]{color:#bdbdbd}select{background:0 0}select:focus option{color:#000}.unset-value{color:#778899}.unset-value>*{color:#778899}.unset-value:focus{color:#fff}.group-header{grid-column:1/3;font-size:10px;font-family:monospace}.group-header[clickable]:hover{cursor:pointer;color:orange;text-decoration:underline}.group-header::after{content:" ▾";font-size:14px}.group-header.expanded::after{content:" ▴";font-size:14px}.group-desc{display:inline-flex;flex-direction:row-reverse;font-size:10px;text-decoration:underline}.group-desc[clickable]:hover{cursor:pointer;color:orange;text-decoration:underline}.dragOverProperty{outline:2px dashed orange;outline-offset:-2px}`}constructor(e){super(),this._restoreCachedInititalValues(),this._serviceContainer=e,this._div=document.createElement("div"),this._div.className="content-wrapper",this.shadowRoot.appendChild(this._div)}setPropertiesService(e){this._propertiesService!=e&&(this._propertiesService=e,Vm.removeAllChildnodes(this._div),this._propertyMap.clear())}async createElements(e){if(!this._shouldCreateElements(e))return!0;let t=await this._propertiesService?.getProperties(e);return this._rebuildElements(e,t)}_shouldCreateElements(e){if(!this._propertiesService)return!1;if(this._propertyMap.size==0)return!0;let t=this._propertiesService.getRefreshMode(e);return t!==B.none&&(t!==B.fullOnClassChange||this._lastClassType!==e.element.constructor)}_rebuildElements(e,t){if(this._lastClassType=e.element.constructor,Vm.removeAllChildnodes(this._div),this._propertyMap.clear(),t?.length){for(let i of t)"properties"in i?this.createPropertyGroups(i):this.createPropertyEditors(i);return!0}return!1}createPropertyGroups(e){let t=document.createElement("span");t.addEventListener("click",()=>{this.expandOrCollapsePropertyGroups(e),t.classList.toggle("expanded")}),t.innerHTML=e.name.replaceAll(`
13
+ `,"<br>"),t.className="group-header",this._div.appendChild(t);let i=document.createElement("span");i.innerHTML=e.description??"",i.className="group-desc",this.propertyGroupHover&&(t.onmouseenter=()=>{this.propertyGroupHover(e,"name")?t.setAttribute("clickable",""):t.removeAttribute("clickable")},t.onclick=()=>{this.propertyGroupClick&&this.propertyGroupClick(e,"name")},i.onmouseenter=()=>{this.propertyGroupHover(e,"desc")?i.setAttribute("clickable",""):i.removeAttribute("clickable")},i.onclick=()=>{this.propertyGroupClick&&this.propertyGroupClick(e,"desc")}),this._div.appendChild(i);for(let r of e.properties)this.createPropertyEditors(r,!0)}expandOrCollapsePropertyGroups(e){for(let t of e.properties){let i=this._propertyMap.get(t),r=i.labelElement.style.display=="none"?"flex":"none";i.editor.element&&(i.editor.element.style.display=r),i.labelElement&&(i.labelElement.style.display=r),i.isSetElement.parentElement&&(i.isSetElement.parentElement.style.display=r)}}createPropertyEditors(e,t){let i,r;if(e.createEditor?i=e.createEditor(e):i=this._serviceContainer.forSomeServicesTillResult("editorTypesService",n=>n.getEditorForProperty(e)),i){let n=document.createElement("div");t&&(n.style.marginLeft="10px"),n.style.width="20px",n.style.height="20px",n.style.display="flex",n.style.alignItems="center";let o=document.createElement("div");if(o.style.width="7px",o.style.height="7px",o.style.border="1px white solid",o.style.cursor="pointer",e.propertyType!=x.complex&&n.appendChild(o),this._div.appendChild(n),e.readonly!==!0&&(o.oncontextmenu=a=>{a.preventDefault(),this.openContextMenu(a,e)},o.onclick=a=>{a.preventDefault(),this.openContextMenu(a,e)}),e.type=="addNew"){let a=i.element;a.disabled=!0,a.id="addNew_input_"+ ++this._addCounter;let l=document.createElement("input");if(r=l,t&&(l.style.marginLeft="10px",l.style.width="calc(100% - 10px)"),l.value=e.name,l.type="text",l.id="addNew_label_"+this._addCounter,l.onkeyup=c=>{c.key=="Enter"&&l.value&&(e.name=l.value,l.disabled=!0,a.disabled=!1,a.focus())},e.service.getPropertyNameSuggestions){let c=e.service.getPropertyNameSuggestions(null),h=document.createElement("datalist");h.id="addNew_"+this._addCounter+"_datalist";for(let d of c){let p=document.createElement("option");p.value=d,h.append(p)}this._div.appendChild(h),l.setAttribute("list",h.id)}this._div.appendChild(l)}else if(e.renamable){let a=document.createElement("input");r=a,t&&(a.style.marginLeft="10px",a.style.width="calc(100% - 10px)"),a.id="label_"+e.name;let l=i.element;a.value=e.name,a.onkeyup=async c=>{if(c.key=="Enter"&&a.value){let h=this._designItems[0].openGroup("rename property name from '"+e.name+"' to '"+a.value+"'");e.service.clearValue(this._designItems,e,"all"),e.name=a.value,await e.service.setValue(this._designItems,e,l.value),h.commit(),this._designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(this._designItems)}},this._div.appendChild(a)}else{let a=document.createElement("label");r=a,t&&(a.style.marginLeft="10px"),a.htmlFor=e.name,a.textContent=e.displayName??e.name,a.title=e.description??(e.displayName??e.name)+" (type: "+e.type+(e.defaultValue?", default: "+e.defaultValue:"")+", propertytype: "+e.propertyType+")",a.ondragleave=l=>this._onDragLeave(l,e,a),a.ondragover=l=>this._onDragOver(l,e,a),a.ondrop=l=>this._onDrop(l,e,a),this._div.appendChild(a)}e.name&&(i.element.id=e.name),i.element instanceof HTMLElement&&i.element.classList.add("editor-control"),this._div.appendChild(i.element),this._propertyMap.set(e,{isSetElement:o,labelElement:r,editor:i})}}_onDragLeave(e,t,i){e.preventDefault(),i.classList.remove("dragOverProperty")}_onDragOver(e,t,i){if(e.preventDefault(),e.dataTransfer.types.indexOf(Yt)>=0){let o=this._serviceContainer.bindableObjectDragDropService;if(o){let a=o.dragOverOnProperty(e,t,this._designItems);(a??"none")!="none"?(i.classList.add("dragOverProperty"),e.dataTransfer.dropEffect=a):i.classList.remove("dragOverProperty")}}if(e.dataTransfer.types.indexOf(dl)>=0){let o=this._serviceContainer.propertyGridDragDropService;if(o){let a=o.dragOverOnProperty(e,t,this._designItems);(a??"none")!="none"?(i.classList.add("dragOverProperty"),e.dataTransfer.dropEffect=a):i.classList.remove("dragOverProperty")}}}_onDrop(e,t,i){e.preventDefault(),i.classList.remove("dragOverProperty");let r=e.dataTransfer.getData(Yt);if(r){let o=JSON.parse(r),a=this._serviceContainer.bindableObjectDragDropService;a&&a.dropOnProperty(e,t,o,this._designItems)}let n=e.dataTransfer.getData(dl);if(n){let o=JSON.parse(n),a=this._serviceContainer.propertyGridDragDropService;a&&a.dropOnProperty(e,t,o,this._designItems)}}openContextMenu(e,t){let i;this.propertyContextMenuProvider&&(i=this.propertyContextMenuProvider(this._designItems,t)),i||(i=t.service.getContextMenu(this._designItems,t)),be.show(i,e)}designItemsChanged(e){this._designItems=e;for(let t of this._propertyMap)t[1].editor.designItemsChanged(e)}refreshForDesignItems(e){for(let t of this._propertyMap)s.refreshIsSetElementAndEditorForDesignItems(t[1].isSetElement,t[0],e,this._propertiesService,t[1].editor)}static refreshIsSetElementAndEditorForDesignItems(e,t,i,r,n){if(i&&i.length){let o=r.isSet(i,t),a=r.getValue(i,t);e.title=t.name+": "+o,o==G.none?(e.style.background="",a=r.getUnsetValue(i,t)):o==G.all?e.style.background="white":o==G.some?e.style.background="gray":o==G.bound?e.style.background="orange":o==G.fromStylesheet&&(a=r.getUnsetValue(i,t),e.style.background="yellow"),n?.refreshValueWithoutNotification(o,a)}else e.style.background=""}};customElements.define("node-projects-property-grid-property-list",He);de();import{BaseCustomWebComponentLazyAppend as ay,css as ly}from"@node-projects/base-custom-webcomponent";var Ad=class extends ay{_serviceContainer;_designerTabControl;_selectedItems;_propertyGridPropertyLists;_propertyGridPropertyListsDict;_nodeReplacedCb;_instanceServiceContainer;_selectionChangedHandler;_contentChangedHandler;propertyGroupHover;propertyGroupClick;propertyContextMenuProvider;static style=ly`:host{display:block;height:100%;user-select:none;-webkit-user-select:none}button:hover{box-shadow:inset 0 3px 0 var(--light-grey)}button:focus{box-shadow:inset 0 3px 0 var(--highlight-pink,#e91e63)}`;static properties={serviceContainer:Object,instanceServiceContainer:Object,selectedItems:Array,propertyGroupHover:Function,propertyGroupClick:Function,propertyContextMenuProvider:Function};constructor(){super(),this._designerTabControl=new dt,this.shadowRoot.appendChild(this._designerTabControl),this._restoreCachedInititalValues(),this.addEventListener("contextmenu",e=>{e.composedPath()[0].localName!="input"&&e.preventDefault()})}set serviceContainer(e){this._serviceContainer=e,this._propertyGridPropertyLists=[],this._propertyGridPropertyListsDict={}}get serviceContainer(){return this._serviceContainer}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._contentChangedHandler?.dispose(),this._instanceServiceContainer?(this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectedItems=t.selectedElements}),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this._changeOccured(null,!1)}),this.selectedItems=this._instanceServiceContainer.selectionService.selectedElements):this.selectedItems=[]}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems!=e&&(this._selectedItems=e,this._selectedItemsSet())}async _selectedItemsSet(){let e=this._serviceContainer.propertyGroupService.getPropertygroups(this._selectedItems),t=new Set;for(let r of e){let n=this._propertyGridPropertyListsDict[r.name];n||(n=new He(this.serviceContainer),n.title=r.name,n.propertyGroupHover=this.propertyGroupHover,n.propertyGroupClick=this.propertyGroupClick,n.propertyContextMenuProvider=this.propertyContextMenuProvider,this._designerTabControl.appendChild(n),this._propertyGridPropertyLists.push(n),this._propertyGridPropertyListsDict[r.name]=n),n.setPropertiesService(r.propertiesService),await n.createElements(this._selectedItems[0])&&t.add(r.name)}let i=this._designerTabControl;for(let r of t){let n=this._propertyGridPropertyListsDict[r],o=n.scrollTop;i===this._designerTabControl?i.insertAdjacentElement("afterbegin",n):i.insertAdjacentElement("afterend",n),i=n,n.scrollTo(0,o)}for(let r of this._propertyGridPropertyLists)t.has(r.title)?r.style.display="block":r.style.display="none";this._designerTabControl.refreshItems(),this._designerTabControl.selectedIndex<0&&(this._designerTabControl.selectedIndex=0);for(let r of this._propertyGridPropertyLists)t.has(r.title)&&r.designItemsChanged(this._selectedItems);if(this._selectedItems){if(this._selectedItems.length==1){for(let r of this._propertyGridPropertyLists)t.has(r.title)&&r.refreshForDesignItems(this._selectedItems);this._observePrimarySelectionForChanges()}}else this._nodeReplacedCb?.dispose(),this._nodeReplacedCb=null}_blockDoubleRun=!1;async _changeOccured(e,t=!1){if(!this._blockDoubleRun){this._blockDoubleRun=!0;for(let i of this._propertyGridPropertyLists)i.propertiesService?.getRefreshMode(this._selectedItems[0])==B.fullOnValueChange&&(await i.createElements(this._selectedItems[0]),i.designItemsChanged(this._selectedItems)),i.refreshForDesignItems(this._selectedItems);this._blockDoubleRun=!1}}_observePrimarySelectionForChanges(){this._nodeReplacedCb?.dispose(),this._nodeReplacedCb=this._selectedItems[0].nodeReplaced.on(()=>{this._observePrimarySelectionForChanges(),this._changeOccured(null,!0)})}};customElements.define("node-projects-web-component-designer-property-grid",Ad);Ne();q();import{BaseCustomWebComponentLazyAppend as cy,css as hy,html as dy}from"@node-projects/base-custom-webcomponent";Tt();var Id=class extends cy{static style=hy`:host{display:block;height:100%;user-select:none;-webkit-user-select:none;background:var(--medium-grey,#2f3545);color:#fff}div.root{display:grid;grid-template-columns:11px 11px auto 1fr auto;padding:3px 6px;font-family:monospace;align-items:center}.desc{font-weight:700;font-size:10px;margin-right:5px}input{background:var(--medium-grey,#2f3545);border:solid 1px gray;color:#fff;width:calc(100% - 6px)}#type{color:wheat;white-space:nowrap;overflow:hidden;font-size:12px;height:20px;border:none}#pg{height:calc(100% - 64px)}`;static template=dy`<div class="root"><span style="grid-column:span 3" class="desc">Type:</span><input type="text" readonly="readonly" id="type"> <button id="config" style="display:none;grid-column:5;grid-row:span 3;height:calc(100% - 10px);margin-left:10px">config</button><div title="id" id="idRect" style="grid-column:1;width:7px;height:7px;border:1px solid #fff"></div><span id="idSpan" style="grid-column:span 2" class="desc">Id:</span><input type="text" id="id"><div title="innerHTML" id="innerRect" style="grid-column:1;width:7px;height:7px;border:1px solid #fff"></div><div title="textContent" id="contentRect" style="width:7px;height:7px;border:1px solid #fff"></div><span id="contentSpan" class="desc">Content:</span><input type="text" id="content"></div><node-projects-web-component-designer-property-grid id="pg"></node-projects-web-component-designer-property-grid>`;propertyGrid;_type;_id;_content;_selectionChangedHandler;_instanceServiceContainer;_idRect;_contentRect;_innerRect;_propertiesService;_configButton;constructor(){super(),this._restoreCachedInititalValues(),this._type=this._getDomElement("type"),this._id=this._getDomElement("id"),this._content=this._getDomElement("content"),this.propertyGrid=this._getDomElement("pg"),this._idRect=this._getDomElement("idRect"),this._contentRect=this._getDomElement("contentRect"),this._innerRect=this._getDomElement("innerRect"),this._configButton=this._getDomElement("config"),this._configButton.onclick=async()=>{let i=await(await this.serviceContainer?.getLastServiceWhereAsync("configUiService",async r=>await r.hasConfigUi(this._instanceServiceContainer.selectionService.primarySelection))).getConfigUi(this._instanceServiceContainer.selectionService.primarySelection);this.serviceContainer.globalContext.showConfigClicked.emit({designItem:this._instanceServiceContainer.selectionService.primarySelection,configUi:i})},this._propertiesService=new va,this._idRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.idProperty)},this._contentRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.contentProperty)},this._innerRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.innerHtmlProperty)},this._id.onkeydown=t=>{t.key=="Enter"?this._instanceServiceContainer.selectionService.primarySelection.id=this._id.value:t.key=="Escape"&&(this._id.value=this._instanceServiceContainer.selectionService.primarySelection?.id??"",t.preventDefault(),t.stopPropagation()),He.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)},this._content.onkeydown=t=>{t.key=="Enter"?(this._instanceServiceContainer.selectionService.primarySelection.content=this._content.value,this._content.title=this._content.value):t.key=="Escape"&&(this._content.value=this._instanceServiceContainer.selectionService.primarySelection?.element?.textContent??"",t.preventDefault(),t.stopPropagation()),He.refreshIsSetElementAndEditorForDesignItems(this._contentRect,this._propertiesService.contentProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService),He.refreshIsSetElementAndEditorForDesignItems(this._innerRect,this._propertiesService.innerHtmlProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)};let e;this._id.onfocus=t=>{e=this._instanceServiceContainer.selectionService.primarySelection},this._id.onblur=t=>{e&&(e.id=this._id.value),e=null,He.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)}}set serviceContainer(e){this.propertyGrid.serviceContainer=e}set instanceServiceContainer(e){let t=e;this._instanceServiceContainer=t,this._selectionChangedHandler?.dispose(),t?(this._selectionChangedHandler=t.selectionService.onSelectionChanged.on(async i=>{this.propertyGrid.instanceServiceContainer=t,await mt(20)}),this._refreshHeaderForCurrentSelection(t)):(this._configButton.style.display="none",this._id.value="",this._content.value="",this._id.disabled=!0,this._content.disabled=!0,this._idRect.style.background="",this._contentRect.style.background="",this._innerRect.style.background="",this._type.value=":host"),this.propertyGrid.instanceServiceContainer=t}async _refreshHeaderForCurrentSelection(e){if(!e?.selectionService?.primarySelection||e.selectionService.primarySelection?.isRootItem){this._configButton.style.display="none",this._id.value="",this._content.value="",this._id.disabled=!0,this._content.disabled=!0,this._idRect.style.background="",this._contentRect.style.background="",this._innerRect.style.background="",this._type.value=":host",this._type.title=this._type.value;return}this._id.disabled=!1,this._content.disabled=!1,await this.serviceContainer?.getLastServiceWhereAsync("configUiService",i=>i.hasConfigUi(e.selectionService.primarySelection))?this._configButton.style.display="block":this._configButton.style.display="none",e.selectionService.primarySelection?.nodeType==I.Element?this._type.value=e.selectionService.primarySelection?.name??"":this._type.value=e.selectionService.primarySelection?.node?.nodeName??"",this._type.title=this._type.value,this._id.value=e.selectionService.primarySelection?.id??"",e.selectionService.primarySelection?.element?.nodeType!=I.Element?this._content.value=e.selectionService.primarySelection?.content??"":e.selectionService.primarySelection?.element?.children?.length<=0?this._content.value=e.selectionService.primarySelection?.content??"":this._content.value="",this._content.title=this._content.value,He.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,e.selectionService.selectedElements,this._propertiesService),He.refreshIsSetElementAndEditorForDesignItems(this._contentRect,this._propertiesService.contentProperty,e.selectionService.selectedElements,this._propertiesService),He.refreshIsSetElementAndEditorForDesignItems(this._innerRect,this._propertiesService.innerHtmlProperty,e.selectionService.selectedElements,this._propertiesService)}_openContextMenu(e,t,i){let r;this.propertyGrid.propertyContextMenuProvider&&(r=this.propertyGrid.propertyContextMenuProvider(t,i)),r||(r=i.service.getContextMenu(t,i)),be.show(r,e)}};customElements.define("node-projects-web-component-designer-property-grid-with-header",Id);import{css as Cy,DomHelper as Ey,html as Py,BaseCustomWebComponentConstructorAppend as Ay}from"@node-projects/base-custom-webcomponent";he();ne();se();st();import{BaseCustomWebComponentLazyAppend as fy,css as gy,cssFromString as yy,DomHelper as kd,html as vy,TypedEvent as xy}from"@node-projects/base-custom-webcomponent";ie();var Rt=T.Normal,Ea=class{snapOffset=5;_overlayLayerView;_containerItem;_positionsH=[];_positionsMiddleH=[];_positionsV=[];_positionsMiddleV=[];_outerRect;constructor(e){this._overlayLayerView=e}initialize(e){this._containerItem=e}clearSnaplines(){this._overlayLayerView.removeAllNodesWithClass&&this._overlayLayerView.removeAllNodesWithClass("svg-snapline"),this._positionsH=[],this._positionsMiddleH=[],this._positionsV=[],this._positionsMiddleV=[]}calculateSnaplines(e){this.clearSnaplines();let t=this._containerItem.serviceContainer.snaplinesProviderService.provideSnaplines(this._containerItem,e);this._outerRect=t.outerRect,this._positionsH=t.positionsH,this._positionsMiddleH=t.positionsMiddleH,this._positionsV=t.positionsV,this._positionsMiddleV=t.positionsMiddleV}snapToPosition(e,t,i){let r=this.snapOffset+1,n,o;for(let c=0;c<this._positionsH.length;c++){let h=Math.abs(this._positionsH[c][0]-e.x);(h<r||h===r&&n===void 0)&&(r=h,n=[],o=this._positionsH[c][0]);let d;t&&(d=Math.abs(e.x+t.width-this._positionsH[c][0]),(d<r||d===r&&n===void 0)&&(r=d,n=[],o=this._positionsH[c][0]-t.width)),h===r&&n.push(this._positionsH[c][1]),t&&d===r&&h!==r&&n.push(this._positionsH[c][1])}if(t)for(let c=0;c<this._positionsMiddleH.length;c++){let h=Math.abs(this._positionsMiddleH[c][0]-(e.x+t.width/2));(h<r||h===r&&n===void 0)&&(r=h,n=[],o=this._positionsMiddleH[c][0]-t.width/2),h===r&&n.push(this._positionsMiddleH[c][1])}r=this.snapOffset+1;let a,l;for(let c=0;c<this._positionsV.length;c++){let h=Math.abs(this._positionsV[c][0]-e.y);(h<r||h===r&&a===void 0)&&(r=h,a=[],l=this._positionsV[c][0]);let d;t&&(d=Math.abs(e.y+t.height-this._positionsV[c][0]),(d<r||d===r&&a===void 0)&&(r=d,a=[],l=this._positionsV[c][0]-t.height)),h===r&&a.push(this._positionsV[c][1]),t&&d===r&&h!==r&&a.push(this._positionsV[c][1])}if(t)for(let c=0;c<this._positionsMiddleV.length;c++){let h=Math.abs(this._positionsMiddleV[c][0]-(e.y+t.height/2));(h<r||h===r&&a===void 0)&&(r=h,a=[],l=this._positionsMiddleV[c][0]-t.height/2),h===r&&a.push(this._positionsMiddleV[c][1])}if(this._overlayLayerView.removeAllNodesWithClass("svg-snapline"),n!==void 0||a!==void 0){let c={x:n!==void 0?o:e.x,y:a!==void 0?l:e.y};return this.drawSnaplines(c,t,n,a),{x:n!==void 0?o:null,y:a!==void 0?l:null}}return{x:null,y:null}}drawSnaplines(e,t,i,r){if(i){let n=e.y,o=e.y;for(let a of i){let l=a.y-this._outerRect.top;n=n<l?n:l,o=o>l?o:l}for(let a of i){if(a.x-this._outerRect.left==e.x||t&&a.x-this._outerRect.left==e.x+t.width){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x),c.setAttribute("x2",a.x-this._outerRect.x),c.setAttribute("y1",n),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}if(a.x-this._outerRect.left+a.width==e.x||t&&a.x-this._outerRect.left+a.width==e.x+t.width){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x+a.width),c.setAttribute("x2",a.x-this._outerRect.x+a.width),c.setAttribute("y1",n),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}if(t&&a.x-this._outerRect.left+a.width/2==e.x+t.width/2){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x+a.width/2),c.setAttribute("x2",a.x-this._outerRect.x+a.width/2),c.setAttribute("y1",n),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}let l=document.createElementNS("http://www.w3.org/2000/svg","rect");l.setAttribute("x",a.x-this._outerRect.x),l.setAttribute("width",a.width),l.setAttribute("y",a.y-this._outerRect.y),l.setAttribute("height",a.height),l.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,l,Rt)}}if(r){let n=e.x,o=e.x;for(let a of r){let l=a.x-this._outerRect.left;n=n<l?n:l,o=o>l?o:l}for(let a of r){if(a.y-this._outerRect.top==e.y||t&&a.y-this._outerRect.top==e.y+t.height){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",n),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y),c.setAttribute("y2",a.y-this._outerRect.y),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}if(a.y-this._outerRect.top+a.height==e.y||t&&a.y-this._outerRect.top+a.height==e.y+t.height){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",n),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y+a.height),c.setAttribute("y2",a.y-this._outerRect.y+a.height),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}if(t&&a.y-this._outerRect.top+a.height/2==e.y+t.height/2){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",n),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y+a.height/2),c.setAttribute("y2",a.y-this._outerRect.y+a.height/2),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,Rt)}let l=document.createElementNS("http://www.w3.org/2000/svg","rect");l.setAttribute("x",a.x-this._outerRect.x),l.setAttribute("width",a.width),l.setAttribute("y",a.y-this._outerRect.y),l.setAttribute("height",a.height),l.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,l,Rt)}}}};bt();hr();$e();ne();q();$e();_t();function F(s,e){let t=e.get(s);return t||(t=new Map,e.set(s,t),t)}var Pa=class s{designerCanvas;designItemsWithExtentions=new Set;_timeout;_appliedDesignerExtensions=new WeakMap;_shouldAppliedDesignerExtensions=new WeakMap;_lastApplyEventPerType=new WeakMap;_lastPrimarySelectionRefreshItem;constructor(e){Ip(),this.designerCanvas=e,e.instanceServiceContainer.selectionService.onSelectionChanged.on(this._selectedElementsChanged.bind(this)),e.instanceServiceContainer.selectionService.onSelectionRefresh.on(this._selectedElementsRefresh.bind(this)),e.instanceServiceContainer.onContentChanged.on(this._contentChanged.bind(this)),e.serviceContainer.globalContext.onToolChanged.on(()=>{this.removeExtension(e.instanceServiceContainer.selectionService.primarySelection,P.PrimarySelectionRefreshed),this._lastPrimarySelectionRefreshItem=null})}connected(){this.ensurePermanentRootExtensionsApplied(),this._timeout||(this._timeout=setTimeout(()=>this.refreshAllExtensionsTimeout(),20))}disconnected(){this._timeout&&clearTimeout(this._timeout),this._timeout=null}refreshAllExtensionsTimeout(){this.refreshAllAppliedExtentions(),this._timeout=setTimeout(()=>this.refreshAllExtensionsTimeout(),20)}ensurePermanentRootExtensionsApplied(){let e=this.designerCanvas.rootDesignItem;e&&(F(e,this._appliedDesignerExtensions).get(P.Permanent)?.length||this.applyExtension(e,P.Permanent))}_contentChanged(e){requestAnimationFrame(()=>{for(let t of e)switch(t.changeType){case"added":this.applyExtensions(t.designItems,P.Permanent,null,!0);break;case"moved":this.refreshExtensions(t.designItems,P.Permanent);break;case"parsed":this.ensurePermanentRootExtensionsApplied(),this.applyExtensions(Array.from(this.designerCanvas.rootDesignItem.children()),P.Permanent,null,!0);break;case"removed":this.removeExtensions(t.designItems,!0,P.Permanent);break}})}_selectedElementsChanged(e){if(this._lastPrimarySelectionRefreshItem=null,e.oldSelectedElements&&e.oldSelectedElements.length&&(this.removeExtension(e.oldSelectedElements[0],P.PrimarySelectionRefreshed),this.removeExtension(e.oldSelectedElements[0],P.PrimarySelection),this.removeExtension(e.oldSelectedElements[0],P.PrimarySelectionAndCanBeEntered),this.removeExtension(e.oldSelectedElements[0],P.OnlyOneItemSelected),this.removeExtensions(e.oldSelectedElements,!1,P.Selection),this.removeExtensions(e.oldSelectedElements,!1,P.MultipleItemsSelected),e.oldSelectedElements[0].parent)){let t=M.GetOrCreateDesignItem(e.oldSelectedElements[0].parent.element,e.oldSelectedElements[0].parent.element,this.designerCanvas.serviceContainer,this.designerCanvas.instanceServiceContainer);this.removeExtension(t,P.PrimarySelectionContainer),this.removeExtension(t,P.PrimarySelectionContainerAndCanBeEntered)}if(e.selectedElements&&e.selectedElements.length&&(this.applyExtensions(e.selectedElements,P.Selection,e.event),this.applyExtension(e.selectedElements[0],P.PrimarySelection,e.event),e.selectedElements.length===1?this.applyExtension(e.selectedElements[0],P.OnlyOneItemSelected,e.event):e.selectedElements.length>1&&this.applyExtension(e.selectedElements[0],P.MultipleItemsSelected,e.event),e.selectedElements[0].getPlacementService()?.isEnterableContainer(e.selectedElements[0])&&this.applyExtension(e.selectedElements[0],P.PrimarySelectionAndCanBeEntered,e.event),e.selectedElements[0].parent)){let t=M.GetOrCreateDesignItem(e.selectedElements[0].parent.element,e.selectedElements[0].parent.element,this.designerCanvas.serviceContainer,this.designerCanvas.instanceServiceContainer);this.applyExtension(t,P.PrimarySelectionContainer,e.event),t.getPlacementService()?.isEnterableContainer(t)&&this.applyExtension(t,P.PrimarySelectionContainerAndCanBeEntered,e.event)}}_selectedElementsRefresh(e){this.refreshAllAppliedExtentions(e.event),e.selectedElements&&e.selectedElements.length&&this._lastPrimarySelectionRefreshItem?.deref()===e.selectedElements[0]&&(this._appliedDesignerExtensions.get(e.selectedElements[0])?.get(P.PrimarySelectionRefreshed)||this.applyExtension(e.selectedElements[0],P.PrimarySelectionRefreshed,e.event)),this._lastPrimarySelectionRefreshItem=new WeakRef(e.selectedElements[0])}applyExtension(e,t,i,r=!1){if(e&&e.nodeType==I.Element){let n=this.designerCanvas.serviceContainer.designerExtensions.get(t),o=[];if(n){let a={};xt();for(let l of n){let c=F(e,this._shouldAppliedDesignerExtensions).get(t);if(c||(c=[]),c.push(l),F(e,this._shouldAppliedDesignerExtensions).set(t,c),l.shouldExtend(this,this.designerCanvas,e)){let h=F(e,this._appliedDesignerExtensions).get(t);h||(h=[]);let d=l.getExtension(this,this.designerCanvas,e);try{d.extend(a,i),o.push(d),i?F(e,this._lastApplyEventPerType).set(t,i):F(e,this._lastApplyEventPerType).delete(t)}catch(p){console.error(p)}h.push(d),F(e,this._appliedDesignerExtensions).set(t,h),this.designItemsWithExtentions.add(e)}}}if(r)for(let a of e.children())this.applyExtension(a,t,i,r);return o}return null}applyExtensions(e,t,i,r=!1){if(this.designerCanvas.overlayLayer.startBatch(),e){let n=this.designerCanvas.serviceContainer.designerExtensions.get(t);if(n){let o={};xt();for(let a of n)for(let l of e){let c=F(l,this._shouldAppliedDesignerExtensions).get(t);if(c||(c=[]),c.push(a),F(l,this._shouldAppliedDesignerExtensions).set(t,c),a.shouldExtend(this,this.designerCanvas,l)){let h=F(l,this._appliedDesignerExtensions).get(t);h||(h=[]);let d=a.getExtension(this,this.designerCanvas,l);try{d.extend(o,i),i?F(l,this._lastApplyEventPerType).set(t,i):F(l,this._lastApplyEventPerType).delete(t)}catch(p){console.error(p)}h.push(d),F(l,this._appliedDesignerExtensions).set(t,h),this.designItemsWithExtentions.add(l)}}}if(r)for(let o of e)this.applyExtensions(Array.from(o.children()),t,i,r)}this.designerCanvas.overlayLayer.endBatch()}applyExtensionInstance(e,t,i=P.Directly){let r=F(e,this._appliedDesignerExtensions).get(P.Directly);r||(r=[]);try{t.extend(null,null)}catch(n){console.error(n)}r.push(t),F(e,this._appliedDesignerExtensions).set(i,r),this.designItemsWithExtentions.add(e)}removeExtensionInstance(e,t){for(let i of F(e,this._appliedDesignerExtensions)){let r=i[1].indexOf(t);if(r>=0){try{t.dispose()}catch(n){console.error(n)}i[1].splice(r,1),i[1].length==0&&(F(e,this._appliedDesignerExtensions).delete(i[0]),F(e,this._shouldAppliedDesignerExtensions).delete(i[0])),F(e,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(e)}}}removeExtension(e,t){if(e)if(t){F(e,this._shouldAppliedDesignerExtensions).delete(t);let i=F(e,this._appliedDesignerExtensions).get(t);if(i){for(let r of i)try{r.dispose(),F(e,this._lastApplyEventPerType).delete(t)}catch(n){console.error(n)}F(e,this._appliedDesignerExtensions).delete(t),F(e,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(e)}}else{F(e,this._shouldAppliedDesignerExtensions).clear();for(let i of F(e,this._appliedDesignerExtensions))for(let r of i[1])try{r.dispose()}catch(n){console.error(n)}F(e,this._appliedDesignerExtensions).clear(),this.designItemsWithExtentions.delete(e)}}removeExtensions(e,t,i){if(e)if(i)for(let r of e){t&&r.hasChildren&&this.removeExtensions([...r.children()],!0,i),F(r,this._shouldAppliedDesignerExtensions).delete(i);let n=F(r,this._appliedDesignerExtensions).get(i);if(n){for(let o of n)try{o.dispose(),F(r,this._lastApplyEventPerType).delete(i)}catch(a){console.error(a)}F(r,this._appliedDesignerExtensions).delete(i),F(r,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(r)}}else for(let r of e){t&&r.hasChildren&&this.removeExtensions([...r.children()],!0,i),F(r,this._shouldAppliedDesignerExtensions).clear();for(let n of F(r,this._appliedDesignerExtensions))for(let o of n[1])try{o.dispose()}catch(a){console.error(a)}F(r,this._appliedDesignerExtensions).clear(),this.designItemsWithExtentions.delete(r)}}refreshExtension(e,t,i){if(!(this.designerCanvas.checkVisibility&&!this.designerCanvas.checkVisibility())&&e)if(t)if(!e.element.isConnected)this.removeExtension(e,t);else{let r=F(e,this._appliedDesignerExtensions).get(t);if(r){let n={};xt();for(let o of r)try{o.refresh(n,i),i&&F(e,this._lastApplyEventPerType).set(t,i)}catch(a){console.error(a)}}}else{let r={};xt();for(let n of F(e,this._appliedDesignerExtensions))for(let o of n[1])try{o.refresh(r,i)}catch(a){console.error(a)}}}refreshExtensions(e,t,i,r,n){if(this.designerCanvas.checkVisibility&&!this.designerCanvas.checkVisibility())return;this.designerCanvas.overlayLayer.startBatch();let o=performance.now();if(e)if(t){let a={};xt();e:for(let l of e)if(!l.element.isConnected)this.removeExtension(l,t);else{let c=F(l,this._appliedDesignerExtensions).get(t);if(c)for(let h of c)try{if(h!=r&&h.refresh(a,i),n&&performance.now()-o>n){console.warn("refreshExtensions() took too long, stopped refreshing");break e}}catch(d){console.error(d)}}}else{let a={};xt();e:for(let l of e)for(let c of F(l,this._appliedDesignerExtensions))for(let h of c[1])try{if(h!=r&&(h.refresh(a,i),i&&F(l,this._lastApplyEventPerType).set(t,i),n&&performance.now()-o>n)){console.warn("refreshExtensions() took too long, stopped refreshing");break e}}catch(d){console.error(d)}}this.designerCanvas.overlayLayer.endBatch()}refreshAllExtensions(e,t,i){this.designerCanvas.overlayLayer.startBatch(),e&&(this.refreshExtensions(e,P.Directly,i,t),this.refreshExtensions(e,P.Permanent,i,t),this.refreshExtensions(e,P.Selection,i,t),this.refreshExtensions(e,P.PrimarySelection,i,t),this.refreshExtensions(e,P.PrimarySelectionContainer,i,t),this.refreshExtensions(e,P.MouseOver,i,t),this.refreshExtensions(e,P.OnlyOneItemSelected,i,t),this.refreshExtensions(e,P.MultipleItemsSelected,i,t),this.refreshExtensions(e,P.ContainerDragOverAndCanBeEntered,i,t),this.refreshExtensions(e,P.ContainerDrag,i,t),this.refreshExtensions(e,P.Doubleclick,i,t),this.refreshExtensions(e,P.Placement,i,t),this.refreshExtensions(e,P.PrimarySelectionAndCanBeEntered,i,t),this.refreshExtensions(e,P.PrimarySelectionContainerAndCanBeEntered,i,t)),this.designerCanvas.overlayLayer.endBatch()}refreshAllAppliedExtentions(e){this.designerCanvas.fillCalculationrects(),this.refreshAllExtensions([...this.designItemsWithExtentions],null,e)}reapplyAllAppliedExtentions(e,t){this.designerCanvas.overlayLayer.startBatch();for(let i of s.getAllChildElements(this.designerCanvas.rootDesignItem))if(!e||e.includes(i)){let r=[...F(i,this._shouldAppliedDesignerExtensions).keys()];for(let n of r){let o=F(i,this._lastApplyEventPerType).get(n);this.removeExtension(i,n),(t==null||t.includes(n))&&this.applyExtension(i,n,o)}}this.designerCanvas.overlayLayer.endBatch()}static*getAllChildElements(e){if(e.nodeType==I.Element&&(yield e),e.hasChildren)for(let t of e.children())for(let i of s.getAllChildElements(t))yield i}};gt();oa();Ne();ie();import{css as py,html as my,BaseCustomWebComponentConstructorAppend as uy}from"@node-projects/base-custom-webcomponent";var Gi=class s extends uy{static template=my`<svg id="svg" style="pointer-events:none"><defs id="defs"></defs><g id="background"></g><g id="normal"></g><g id="foreground"></g></svg>`;static style=py`svg{width:100%;height:100%;overflow:visible}.svg-invisible{stroke:transparent;fill:transparent;pointer-events:auto}.svg-snapline{stroke:purple;stroke-dasharray:4;fill:transparent}.svg-selector{stroke:#000;fill:#3899ec55;stroke-width:1;stroke-dasharray:2}.svg-primary-selection-move{stroke:#3899ec;fill:#3899ec;cursor:move;pointer-events:auto}.svg-position{stroke:#000;stroke-dasharray:2}.svg-path{stroke:#3899ec;fill:orange;pointer-events:auto}.svg-path-line{stroke:#3899ec;stroke-dasharray:2}.svg-draw-new-element{stroke:#000;fill:transparent;stroke-width:1}.svg-toolbar-container{overflow:visible}.svg-toolbar-container>div{padding:5px;display:flex;gap:2px;background:#fff;border-radius:4px;box-shadow:0 2px 10px 0 rgba(19,23,32,.2);align-items:center}node-projects-image-button-list-selector img{height:16px;border:1px solid #000;border-radius:4px;box-sizing:border-box;pointer-events:auto;cursor:pointer}node-projects-image-button-list-selector img:hover{background:#d3d3d3}node-projects-image-button-list-selector img:active{translate:1px 1px}`;static is="node-projects-overlay-layer-view";_serviceContainer;_svg;_gBackground;_gNormal;_gForeground;_defs;_id=0;constructor(e){super(),this._serviceContainer=e,this._svg=this._getDomElement("svg"),this._gBackground=this._getDomElement("background"),this._gNormal=this._getDomElement("normal"),this._gForeground=this._getDomElement("foreground"),this._defs=this._getDomElement("defs"),this._initialize()}_initialize(){let e=[s.style],t=new Set;for(let i of this._serviceContainer.designerExtensions)for(let r of i[1]){if(r.constructor.style)if(Array.isArray(r.constructor.style))for(let n of r.constructor.style)t.has(n)||(t.add(n),e.push(n));else t.has(r.constructor.style)||(t.add(r.constructor.style),e.push(r.constructor.style));if(r.style)if(Array.isArray(r.style))for(let n of r.style)t.has(n)||(t.add(n),e.push(n));else t.has(r.style)||(t.add(r.style),e.push(r.style));if(r.svgDefs){if(Array.isArray(r.svgDefs)){for(let n of r.svgDefs)if(!t.has(n)){t.add(n);let o=document.createElementNS("http://www.w3.org/2000/svg","defs");o.innerHTML=n;for(let a of[...o.children])this._defs.appendChild(a)}}else if(!t.has(r.svgDefs)){t.add(r.svgDefs);let n=document.createElementNS("http://www.w3.org/2000/svg","defs");n.innerHTML=r.svgDefs;for(let o of[...n.children])this._defs.appendChild(o)}}if(r.constructor.svgDefs){if(Array.isArray(r.constructor.svgDefs)){for(let n of r.constructor.svgDefs)if(!t.has(n)){t.add(n);let o=document.createElementNS("http://www.w3.org/2000/svg","defs");o.innerHTML=n;for(let a of[...o.children])this._defs.appendChild(a)}}else if(!t.has(r.constructor.svgDefs)){t.add(r.constructor.svgDefs);let n=document.createElementNS("http://www.w3.org/2000/svg","defs");n.innerHTML=r.constructor.svgDefs;for(let o of[...n.children])this._defs.appendChild(o)}}}for(let i of this._serviceContainer.designerPointerExtensions)if(i.style&&(t.has(i.style)||(t.add(i.style),e.push(i.style))),i.svgDefs&&!t.has(i.svgDefs)){t.add(i.svgDefs);let r=document.createElementNS("http://www.w3.org/2000/svg","defs");r.innerHTML=i.svgDefs;for(let n of[...r.children])this._defs.appendChild(n)}if(this._serviceContainer.overlayLayerViewAdditionalStyles)for(let i of this._serviceContainer.overlayLayerViewAdditionalStyles)t.has(i)||(t.add(i),e.push(i));this.shadowRoot.adoptedStyleSheets=e}backgroundFragment;foregroundFragment;normalFragment;batchCount=0;startBatch(){this.batchCount==0&&(this.backgroundFragment=document.createDocumentFragment(),this.foregroundFragment=document.createDocumentFragment(),this.normalFragment=document.createDocumentFragment()),this.batchCount++}endBatch(){this.batchCount--,this.batchCount==0&&(this.backgroundFragment.hasChildNodes&&this._gBackground.appendChild(this.backgroundFragment),this.foregroundFragment.hasChildNodes&&this._gForeground.appendChild(this.foregroundFragment),this.normalFragment.hasChildNodes&&this._gNormal.appendChild(this.normalFragment),this.backgroundFragment=null,this.foregroundFragment=null,this.normalFragment=null)}addOverlay(e,t,i=T.Normal){switch(t.setAttribute("overlay-source",e),i){case T.Background:this.backgroundFragment?this.backgroundFragment.appendChild(t):this._gBackground.appendChild(t);break;case T.Foreground:this.foregroundFragment?this.foregroundFragment.appendChild(t):this._gForeground.appendChild(t);break;default:this.normalFragment?this.normalFragment.appendChild(t):this._gNormal.appendChild(t);break}}removeOverlay(e){try{e?.parentElement?.removeChild(e)}catch(t){console.error(t)}}removeAllNodesWithClass(e){let t=this._svg.querySelectorAll("."+e);for(let i of t)i.parentNode.removeChild(i)}removeAllOverlays(){let e=this._svg.querySelectorAll("svg > g > *");for(let t of e)t.parentNode.removeChild(t)}createPoint(){return this._svg.createSVGPoint()}drawGroup(e,t,i,r){return i||(i=document.createElementNS("http://www.w3.org/2000/svg","g"),this.addOverlay(e,i,r)),t&&i.setAttribute("class",t),i}drawLine(e,t,i,r,n,o,a,l){return a||(a=document.createElementNS("http://www.w3.org/2000/svg","line"),this.addOverlay(e,a,l)),a.setAttribute("x1",t),a.setAttribute("y1",i),a.setAttribute("x2",r),a.setAttribute("y2",n),o&&a.setAttribute("class",o),a}drawCircle(e,t,i,r,n,o,a){return o||(o=document.createElementNS("http://www.w3.org/2000/svg","circle"),this.addOverlay(e,o,a)),o.setAttribute("cx",t),o.setAttribute("cy",i),o.setAttribute("r",r),n&&o.setAttribute("class",n),o}drawRect(e,t,i,r,n,o,a,l){return a||(a=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.addOverlay(e,a,l)),a.setAttribute("x",t),a.setAttribute("y",i),a.setAttribute("width",r),a.setAttribute("height",n),o&&a.setAttribute("class",o),a}drawPath(e,t,i,r,n){return r||(r=document.createElementNS("http://www.w3.org/2000/svg","path"),this.addOverlay(e,r,n)),r.setAttribute("d",t),i&&r.setAttribute("class",i),r}drawText(e,t,i,r,n,o,a){return o||(o=document.createElementNS("http://www.w3.org/2000/svg","text"),this.addOverlay(e,o,a)),o.setAttribute("x",i),o.setAttribute("y",r),o.textContent=t,n&&o.setAttribute("class",n),o}drawHTML(e,t,i,r,n,o,a,l,c){return l||(l=document.createElementNS("http://www.w3.org/2000/svg","foreignObject"),this.addOverlay(e,l,c)),l.setAttribute("x",i),l.setAttribute("y",r),l.setAttribute("width",n),l.setAttribute("height",o),typeof t=="string"?l.innerHTML=t:l.appendChild(t),a&&l.setAttribute("class",a),l}drawTextWithBackground(e,t,i,r,n,o,a,l){if(!a){let c=document.createElementNS("http://www.w3.org/2000/svg","filter");c.setAttribute("x","0"),c.setAttribute("y","0"),c.setAttribute("width","1"),c.setAttribute("height","1"),c.setAttribute("id","solid_"+ ++this._id);let h=document.createElementNS("http://www.w3.org/2000/svg","feFlood");h.setAttribute("flood-color",n),c.appendChild(h);let d=document.createElementNS("http://www.w3.org/2000/svg","feComposite");d.setAttribute("in","SourceGraphic"),d.setAttribute("operator","xor"),c.appendChild(d),this._defs.appendChild(c);let p=document.createElementNS("http://www.w3.org/2000/svg","text");p.setAttribute("filter","url(#solid_"+this._id+")");let m=document.createElementNS("http://www.w3.org/2000/svg","text");this.addOverlay(e,p,l),this.addOverlay(e,m,l),c.setAttribute("overlay-source",e),h.setAttribute("overlay-source",e),a=[c,h,p,m]}return a[2].setAttribute("x",i),a[3].setAttribute("x",i),a[2].setAttribute("y",r),a[3].setAttribute("y",r),a[2].textContent=t,a[3].textContent=t,o&&(a[2].setAttribute("class",o),a[3].setAttribute("class",o)),a}};customElements.define(Gi.is,Gi);Tt();q();Pe();function Rm(s,e){let t=new s.CSSStyleSheet;return t.replaceSync(e),t}_t();Fe();le();var _y=yy`*{animation-play-state:paused!important}`,Wi=class extends fy{serviceContainer;instanceServiceContainer;containerBoundingRect;outerRect;clickOverlay;_activeTool;_gridSize=10;get gridSize(){return this._gridSize}set gridSize(e){this._gridSize=e;let t=document.createElement("canvas"),i=t.getContext("2d");t.width=e*2,t.height=e*2;let r=e;for(let o=0;o<t.width;o+=r)for(let a=0;a<t.height;a+=r)i.fillStyle=(o+a)%(r*2)===0?"#e5e5e5":"white",i.fillRect(o,a,r,r);let n=t.toDataURL();this._backgroundImage="url("+n+")",this._canvas.style.backgroundImage!="none"&&(this._canvas.style.backgroundImage=this._backgroundImage)}pasteOffset=10;alignOnGrid=!1;alignOnSnap=!0;snapLines;overlayLayer;rootDesignItem;_currentPasteOffset=this.pasteOffset;_zoomFactor=1;_scaleFactor=1;_canvasOffset={x:0,y:0};_additionalStyle;_backgroundImage;_enableSelectTextNodesOnClick=!1;_moveGroup;_touchGestureHelper;get zoomFactor(){return this._zoomFactor}set zoomFactor(e){this._zoomFactor=e,this._zoomFactorChanged()}get scaleFactor(){return this._scaleFactor}get canvasOffset(){return this._canvasOffset}set canvasOffset(e){this._canvasOffset=e,this._zoomFactorChanged()}get canvasOffsetUnzoomed(){return{x:this._canvasOffset.x*this.zoomFactor,y:this._canvasOffset.y*this.zoomFactor}}set canvasOffsetUnzoomed(e){this.canvasOffset={x:e.x/this.zoomFactor,y:e.y/this.zoomFactor}}_pauseAnimations;get pauseAnimations(){return this._pauseAnimations}set pauseAnimations(e){this._pauseAnimations=e,this.applyAllStyles()}get containerOffset(){return this._useIframe?this._outercanvas2.getBoundingClientRect():{x:0,y:0}}raiseDesignItemsChanged(e,t,i){this.designItemsChanged&&this.designItemsChanged(e,t,i)}designItemsChanged;onZoomFactorChanged=new xy;get canvas(){return this._canvas}get outercanvas2(){return this._outercanvas2}_canvas;_canvasShadowRoot;_canvasContainer;_outercanvas2;_lastHoverDesignItem;_firstConnect;static style=gy`:host{display:block;box-sizing:border-box;width:100%;position:relative;transform:translateZ(0);overflow:hidden;font-family:inherit;font-size:inherit;font-weight:inherit;font-style:inherit;line-height:inherit}*{touch-action:none}#node-projects-designer-canvas-canvasContainer{background:var(--node-projects-web-component-designer-background,border-box fixed 0 0 repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAFXmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjIwIgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjAiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSIyMCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMjAiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjMwMC8xIgogICB0aWZmOllSZXNvbHV0aW9uPSIzMDAvMSIKICAgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIKICAgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMi0xMi0wOFQwOToxNTo0OCswMTowMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMi0xMi0wOFQwOToxNTo0OCswMTowMCI+CiAgIDxkYzp0aXRsZT4KICAgIDxyZGY6QWx0PgogICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+QmFja2dyb3VuZGdyaWRfMTBweDwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnRpdGxlPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgRGVzaWduZXIgMS4xMC42IgogICAgICBzdEV2dDp3aGVuPSIyMDIyLTEyLTA4VDA5OjE1OjQ4KzAxOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz4fvgn+AAABgWlDQ1BzUkdCIElFQzYxOTY2LTIuMQAAKJF1kc8rRFEUxz8GjRhRLCiLl7BCftTExmLkV2ExnvJr8+bNvBk1b+b13kiyVbaKEhu/FvwFbJW1UkRKlrImNug5b2ZqJplzO/d87vfec7r3XPCpSd10KnrATGXs8FhImZtfUPwvBKjCTx/Nmu5YUzOjKiXt854yL952ebVKn/vXaqIxR4eyKuEh3bIzwuPCk6sZy+Md4UY9oUWFz4Q7bbmg8J2nR3L86nE8x98e22p4GHz1wkq8iCNFrCdsU1heTpuZXNHz9/FeEoilZmcktoq34BBmjBAKE4wwTJBeBmUO0iX96ZYVJfJ7svnTpCVXl9liDZtl4iTI0CnqilSPSTREj8lIsub1/29fHaO/L1c9EILKZ9d9bwf/Nvxsue7Xkev+HEP5E1ymCvnpQxj4EH2roLUdQN0GnF8VtMguXGxC06Ol2VpWKhf3GQa8nULtPDTcQPVirmf5fU4eQF2Xr7qGvX3okPN1S790cWfsRnax1QAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAC9JREFUOI1jfPr0KQNuICUlhUeWCY8cQTCqeWRoZvz//z8e6WfPntHK5lHNI0MzAMChCNMTuPcnAAAAAElFTkSuQmCC))}#node-projects-designer-canvas-canvas{image-rendering:pixelated;box-sizing:border-box;width:100%;height:100%;transform-origin:0 0;position:absolute}#node-projects-designer-canvas-canvas.dragFileActive{outline:#00f 4px solid;outline-offset:-4px}node-projects-overlay-layer-view{box-sizing:border-box;width:100%;height:100%;position:absolute;top:0;left:0;pointer-events:none;overflow:visible;user-select:none;-webkit-user-select:none;z-index:999999999999}#node-projects-designer-canvas-canvas *{cursor:pointer;user-select:none;-webkit-user-select:none}#node-projects-designer-canvas-canvas iframe{cursor:pointer;user-select:none;-webkit-user-select:none;border:none;width:100%;height:100%}#node-projects-designer-canvas-clickOverlay{position:absolute;width:100%;height:100%;top:0}#node-projects-designer-canvas-helper-element{height:0;width:0}#node-projects-designer-search-container{position:absolute;display:grid;grid-template-columns:1fr auto auto;align-items:center;justify-content:left;gap:8px;width:auto;right:10px;top:0;background:#f2f2f2;padding:5px 6px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}#node-projects-designer-search-container>#node-projects-designer-search-bar{border:1px solid #000;padding:0;display:grid;grid-template-columns:1fr auto;align-items:center;background-color:#fff;padding:1px 2px}#node-projects-designer-search-container>div>input{height:20px;padding-left:6px;font-size:13px;border:none;outline:0}#node-projects-designer-search-container>div>#node-projects-designer-search-start{height:22px;border:none;background-color:#fff;font-size:13px}#node-projects-designer-search-container>div>#node-projects-designer-search-start:hover{background-color:#d3d3d3;transition:.9s;border-radius:2px}#node-projects-designer-search-container>#node-projects-designer-search-close{position:relative;width:20px;height:20px;border:none;background-color:transparent}#node-projects-designer-search-container>span{font-family:sans-serif;font-size:12px}#node-projects-designer-search-container>#node-projects-designer-search-close::after,#node-projects-designer-search-container>#node-projects-designer-search-close::before{content:"";position:absolute;top:50%;left:50%;width:60%;background-color:#000;height:1px}#node-projects-designer-search-container>#node-projects-designer-search-close::before{transform:translate(-50%,-50%) rotate(45deg)}#node-projects-designer-search-container>#node-projects-designer-search-close::after{transform:translate(-50%,-50%) rotate(-45deg)}`;static template=vy`<div style="display:flex;flex-direction:column;width:100%;height:100%;margin:0!important;padding:0!important;border:none!important"><div style="width:100%;height:100%;margin:0!important;padding:0!important;border:none!important"><div id="node-projects-designer-canvas-outercanvas2" style="width:100%;height:100%;position:relative;margin:0!important;padding:0!important;border:none!important;isolation:isolate!important"><div id="node-projects-designer-canvas-canvasContainer" style="width:100%;height:100%;position:absolute;top:0;left:0;user-select:none;margin:0!important;padding:0!important;border:none!important"><div id="node-projects-designer-canvas-canvas" part="canvas"></div></div></div><div id="node-projects-designer-canvas-clickOverlay" tabindex="0" style="pointer-events:auto;margin:0!important;padding:0!important;border:none!important"></div></div><div id="node-projects-designer-search-container" style="display:none"><div id="node-projects-designer-search-bar"><input id="node-projects-designer-search-input"> <button id="node-projects-designer-search-start">↓</button></div><span id="node-projects-designer-search-result">0 selected</span> <button id="node-projects-designer-search-close"></button></div></div>`;extensionManager;_pointerextensions;_lastCopiedPrimaryItem;_ignoreEvent;_useIframe=!0;_iframe;_window;_resizeObserver;iframes;#e=!1;get readOnly(){return this.#e}set readOnly(e){this.#e=e}constructor(e=!1){super(),this._restoreCachedInititalValues(),jl(),this._useIframe=e,this._canvas=this._getDomElement("node-projects-designer-canvas-canvas"),this._useIframe?(this._iframe=document.createElement("iframe"),this._iframe.setAttribute("sandbox","allow-same-origin"),this._iframe.setAttribute("scrolling","no"),this.iframes=[this._iframe],this._canvas.appendChild(this._iframe),requestAnimationFrame(()=>{this._window=this._iframe.contentWindow,jl(this._iframe.contentWindow),this._canvasShadowRoot=this._iframe.contentWindow.document})):(this._window=window,this._canvasShadowRoot=this._canvas.attachShadow({mode:"open"})),this._canvasContainer=this._getDomElement("node-projects-designer-canvas-canvasContainer"),this._outercanvas2=this._getDomElement("node-projects-designer-canvas-outercanvas2"),this.clickOverlay=this._getDomElement("node-projects-designer-canvas-clickOverlay"),this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this._onDblClick=this._onDblClick.bind(this),this._pointerEventHandler=this._pointerEventHandler.bind(this),this._onWheel=this._onWheel.bind(this),this._getDomElement("node-projects-designer-search-close").onclick=()=>this._searchHideOverlay(),this._getDomElement("node-projects-designer-search-start").onclick=()=>this._searchRun(),this._getDomElement("node-projects-designer-search-container").onkeydown=t=>{t.key==="Enter"&&this._searchRun()},this.clickOverlay.oncontextmenu=t=>t.preventDefault(),this._resizeObserver=new ResizeObserver(()=>{this.extensionManager.refreshAllAppliedExtentions()}),this._resizeObserver.observe(this)}get designerWidth(){return this._canvasContainer.style.width}set designerWidth(e){this._canvasContainer.style.width=e,this._zoomFactorChanged()}get designerHeight(){return this._canvasContainer.style.height}set designerHeight(e){this._canvasContainer.style.height=e,this._zoomFactorChanged()}get designerPixelSize(){return{width:this._canvasContainer.offsetWidth,height:this._canvasContainer.offsetHeight}}getDesignSurfaceDimensions(){let e={width:null,height:null},t=getComputedStyle(this._canvasContainer);return this._canvasContainer.style.width&&(e.width=parseFloat(t.width)),this._canvasContainer.style.height&&(e.height=parseFloat(t.height)),e}get designerOffsetWidth(){return this._canvasContainer.offsetWidth}get designerOffsetHeight(){return this._canvasContainer.offsetHeight}set additionalStyles(e){this._additionalStyle=e,this.applyAllStyles()}get additionalStyles(){return this._additionalStyle}applyAllStyles(){if(this._window){let e=[];this._additionalStyle&&e.push(...this._additionalStyle),this.instanceServiceContainer.stylesheetService&&e.push(...this.instanceServiceContainer.stylesheetService.getStylesheets().map(t=>Rm(this._window,_a.patchStylesheetSelectorForDesigner(t.content)))),this._pauseAnimations&&e.push(_y),this._useIframe?this._iframe.contentWindow.document.adoptedStyleSheets=e:this._canvasShadowRoot.adoptedStyleSheets=e}else requestAnimationFrame(()=>this.applyAllStyles())}ignoreEvent(e){this._ignoreEvent=e}canExecuteCommand(e){let t=this.serviceContainer.modelCommandService;if(t){let i=this.instanceServiceContainer.selectionService.selectedElements,r=t.canExecuteCommand(this,e,i);if(r!==null)return r}return e.type===A.screenshot?!0:e.type===A.undo?this.instanceServiceContainer.undoService.canUndo():e.type===A.redo?this.instanceServiceContainer.undoService.canRedo():e.type===A.setTool?this.serviceContainer.designerTools.has(e.parameter):e.type===A.paste?!0:e.type===A.copy||e.type===A.cut||e.type===A.delete?this.instanceServiceContainer.selectionService.primarySelection!=null&&!this.instanceServiceContainer.selectionService.primarySelection.isRootItem:!1}async executeCommand(e){let t=this.serviceContainer.modelCommandService;if(t){let i=this.instanceServiceContainer.selectionService.selectedElements;if(await t.executeCommand(this,e,i)!=null){this.instanceServiceContainer.selectionService.setSelectedElements(null),this.instanceServiceContainer.selectionService.setSelectedElements(i);return}}switch(e.type){case A.screenshot:{ei.screenshotsEnabled||alert("you need to select current tab in next browser dialog, or screenshots will not work correctly");let a=this.instanceServiceContainer.selectionService.selectedElements;a?.length||(a=[...this.rootDesignItem.children(!0)]);let l=await this.serviceContainer.pngCreatorService.takePng(a,{removeSelection:!0});await qd(new Blob([new Uint8Array(l)],{type:"image/png"}),"screenshot.png")}break;case A.setTool:this.serviceContainer.globalContext.tool=this.serviceContainer.designerTools.get(e.parameter),this.extensionManager.reapplyAllAppliedExtentions();break;case A.setStrokeColor:this.serviceContainer.globalContext.strokeColor=e.parameter;break;case A.setFillBrush:this.serviceContainer.globalContext.fillBrush=e.parameter;break;case A.setStrokeThickness:this.serviceContainer.globalContext.strokeThickness=e.parameter;break;case A.delete:this.handleDeleteCommand();break;case A.undo:this.instanceServiceContainer.undoService.undo();break;case A.holdUndo:let i=this.instanceServiceContainer.undoService.getUndoEntryNames(20),r=Array.from(i).map((a,l)=>({title:"undo: "+a,action:()=>{for(let c=0;c<=l;c++)this.instanceServiceContainer.undoService.undo()}}));r.length>0&&be.show(r,e.event,{mode:"undo"});break;case A.redo:this.instanceServiceContainer.undoService.redo();break;case A.holdRedo:let n=this.instanceServiceContainer.undoService.getRedoEntryNames(20),o=Array.from(n).map((a,l)=>({title:"redo: "+a,action:()=>{for(let c=0;c<=l;c++)this.instanceServiceContainer.undoService.redo()}}));o.length>0&&be.show(o,e.event,{mode:"undo"});break;case A.copy:this.handleCopyCommand();break;case A.cut:this.handleCopyCommand(),this.handleDeleteCommand();break;case A.paste:this.handlePasteCommand(e.altKey==!0);break;case A.selectAll:this.handleSelectAll();break}}disableBackgroud(){this._canvasContainer.style.background="var(--node-projects-web-component-designer-screenshot-background, white)"}enableBackground(){this._canvasContainer.style.background=""}zoomToFit(){let t=0,i=0,r=0,n=0;this.canvasOffset={x:0,y:0},this.zoomFactor=1;for(let d of this.rootDesignItem.querySelectorAll("*"))if(d instanceof(d.ownerDocument.defaultView??window).Element){let p=Y(d);r=r<p.x?r:p.x,n=n<p.y?n:p.y,t=t>p.x+p.width+10?t:p.x+p.width+10,i=i>p.y+p.height+10?i:p.y+p.height+10}let o=this.getBoundingClientRect();t-=o.x,i-=o.y;let a=o.width/(t/this.zoomFactor),l=o.height/(i/this.zoomFactor),c=this.getDesignSurfaceDimensions();c.width&&(a=o.width/c.width),c.height&&(l=o.height/c.height);let h=a<l?a:l;isNaN(h)||(this.zoomFactor=h)}handleSelectAll(){let e=Array.from(this.rootDesignItem.children(!0)).filter(i=>!i.isEmptyTextNode),t=this.instanceServiceContainer.selectionService.primarySelection;if(t){let i=e.indexOf(t);i>=0&&(e.splice(i,1),e.unshift(t))}this.instanceServiceContainer.selectionService.setSelectedElements(e)}async handleCopyCommand(){this._currentPasteOffset=this.pasteOffset,this._lastCopiedPrimaryItem=this.instanceServiceContainer.selectionService.primarySelection,await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements)}async handlePasteCommand(e){let[t,i]=await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer,this.instanceServiceContainer),r=this.rootDesignItem.openGroup("Insert"),n=this._lastCopiedPrimaryItem,o=this._currentPasteOffset+this.pasteOffset,a=this.rootDesignItem,l=n?.parent??this.instanceServiceContainer.selectionService.primarySelection;for(;l!=null;){let c=getComputedStyle(l.element),h;if(h=this.serviceContainer.getLastServiceWhere("containerService",d=>d.serviceForContainer(l,c)),h)if(h.canEnter(l,t)){a=l;break}else{l=l.parent;continue}}if(t){let c=this.getNormalizedElementCoordinates(a.element);for(let d=0;d<t.length;d++){let p=t[d],m=i?i[d]:null;this.instanceServiceContainer.undoService.execute(new ve(a,a.childCount,p)),!e&&m&&p.nodeType==I.Element&&(p.setStyle("left",m.x-c.x+this._currentPasteOffset+"px"),p.setStyle("top",m.y-c.y+this._currentPasteOffset+"px"))}let h=this.serviceContainer.intializationService;if(h)for(let d of t)h.init(d);this.instanceServiceContainer.selectionService.setSelectedElements(t)}r.commit(),this.snapLines.clearSnaplines(),this._lastCopiedPrimaryItem=n,this._currentPasteOffset=o}handleDeleteCommand(){let e=this.instanceServiceContainer.selectionService.selectedElements;this.serviceContainer.deletionService.removeItems(e),this.instanceServiceContainer.selectionService.setSelectedElements(null)}initialize(e){this.serviceContainer=e,this.instanceServiceContainer=new Ca(this);let t=this.serviceContainer.getLastService("undoService");t&&this.instanceServiceContainer.register("undoService",t(this));let i=this.serviceContainer.getLastService("selectionService");i&&(this.instanceServiceContainer.register("selectionService",i(this)),this.instanceServiceContainer.selectionService.onSelectionChanged.on(()=>{this._lastCopiedPrimaryItem=null,this._currentPasteOffset=this.pasteOffset}));let r=this.serviceContainer.getLastService("designItemDocumentPositionService");r&&this.instanceServiceContainer.register("designItemDocumentPositionService",r(this)),this._useIframe?(this.rootDesignItem=M.GetOrCreateDesignItem(this._iframe,this._iframe,this.serviceContainer,this.instanceServiceContainer),requestAnimationFrame(()=>{this.rootDesignItem.updateChildrenFromNodesChildren()})):this.rootDesignItem=M.GetOrCreateDesignItem(this._canvas,this._canvas,this.serviceContainer,this.instanceServiceContainer);let n=this.serviceContainer.getLastService("stylesheetService");if(n){let a=n(this);this.instanceServiceContainer.register("stylesheetService",a),this.instanceServiceContainer.stylesheetService.stylesheetChanged.on(l=>{if(this.instanceServiceContainer.collaborationService?.isApplyingRemoteChanges){this.applyAllStyles();return}if(l.changeSource!="undo"){let c=new ba(this.instanceServiceContainer.stylesheetService,l.name,l.newStyle,l.oldStyle);this.instanceServiceContainer.undoService.execute(c),this.applyAllStyles()}else this.applyAllStyles()}),this.instanceServiceContainer.stylesheetService.stylesheetsChanged.on(()=>{this.applyAllStyles()})}let o=this.serviceContainer.getLastService("collaborationService");if(o){let a=o(this);this.instanceServiceContainer.collaborationService=a,this.instanceServiceContainer.register("collaborationService",a)}if(e.instanceServiceContainerCreatedCallbacks?.length&&e.instanceServiceContainerCreatedCallbacks.forEach(a=>a(this.instanceServiceContainer)),this.extensionManager=new Pa(this),this.instanceServiceContainer.collaborationService&&(this.instanceServiceContainer.collaborationService.onPeersChanged.on(a=>{a.source==="remote"&&this.extensionManager.refreshAllAppliedExtentions()}),this.instanceServiceContainer.collaborationService.onCommentsChanged.on(()=>{this.extensionManager.refreshAllAppliedExtentions()})),this.overlayLayer=new Gi(e),this.overlayLayer.style.pointerEvents="none",this.overlayLayer.style.setProperty("margin","0","important"),this.overlayLayer.style.setProperty("padding","0","important"),this.overlayLayer.style.setProperty("border","none","important"),this.clickOverlay.appendChild(this.overlayLayer),this.snapLines=new Ea(this.overlayLayer),this.snapLines.initialize(this.rootDesignItem),this.serviceContainer.designerPointerExtensions)for(let a of this.serviceContainer.designerPointerExtensions)this._pointerextensions||(this._pointerextensions=[]),this._pointerextensions.push(a.getExtension(this));if(this.children){let a=this.children;if(this.children.length==1&&this.children[0]instanceof HTMLSlotElement&&(a=this.children[0].assignedElements()),a?.length>0){let l=this.serviceContainer.getLastServiceWhere("htmlParserService",c=>c.constructor==Nt);this.addDesignItems(l.createDesignItems(a,this.serviceContainer,this.instanceServiceContainer))}}this.serviceContainer.options.zoomDesignerBackground||requestAnimationFrame(()=>{this._resizeBackgroundGrid()}),this.isConnected&&this.extensionManager.connected()}connectedCallback(){this._firstConnect||(this._firstConnect=!0,this._touchGestureHelper=ua.addTouchEvents(this.clickOverlay),this.clickOverlay.addEventListener(C.PointerDown,this._pointerEventHandler),this.clickOverlay.addEventListener(C.PointerMove,this._pointerEventHandler),this.clickOverlay.addEventListener(C.PointerUp,this._pointerEventHandler),this.clickOverlay.addEventListener(C.DragEnter,e=>this._onDragEnter(e)),this.clickOverlay.addEventListener(C.DragLeave,e=>this._onDragLeave(e)),this.clickOverlay.addEventListener(C.DragOver,e=>this._onDragOver(e)),this.clickOverlay.addEventListener(C.Drop,e=>this._onDrop(e)),this.clickOverlay.addEventListener(C.KeyDown,this.onKeyDown),this.clickOverlay.addEventListener(C.KeyUp,this.onKeyUp),this.clickOverlay.addEventListener(C.DblClick,this._onDblClick,!0),this.clickOverlay.addEventListener(C.Wheel,this._onWheel),this.clickOverlay.addEventListener("zoom",e=>{this.zoomFactor=this.zoomFactor+e.detail.diff/10}),this.clickOverlay.addEventListener("pan",e=>{let t={x:this.canvasOffset.x-e.detail.deltaX,y:this.canvasOffset.y-e.detail.deltaY};this.canvasOffset=t})),this.extensionManager&&this.extensionManager.connected()}disconnectedCallback(){this.extensionManager.disconnected()}_zoomFactorChanged(){this._canvasContainer.style.bottom=this._outercanvas2.offsetHeight>=this._canvasContainer.offsetHeight?"0":"",this._canvasContainer.style.right=this._outercanvas2.offsetWidth>=this._canvasContainer.offsetWidth?"0":"",this._updateTransform(),this.fillCalculationrects(),this.onZoomFactorChanged.emit(this._zoomFactor),this.serviceContainer.options.zoomDesignerBackground||this._resizeBackgroundGrid()}_resizeBackgroundGrid(){let r=2e3/this.canvas.getBoundingClientRect().width;this.canvas.style.backgroundSize=r.toString()+"%"}_updateTransform(){if(this._scaleFactor=this._zoomFactor,this._useIframe){let e=this._canvasOffset.x,t=this._canvasOffset.y;this._iframe.contentWindow.scrollTo(e*-1,t*-1),e+=this._iframe.contentWindow.scrollX,t+=this._iframe.contentWindow.scrollY,this._canvasContainer.style.transform="scale("+this._zoomFactor+") translate("+e+"px, "+t+"px)"}else this._canvasContainer.style.transform="scale("+this._zoomFactor+") translate("+(isNaN(this._canvasOffset.x)?"0":this._canvasOffset.x)+"px, "+(isNaN(this._canvasOffset.y)?"0":this._canvasOffset.y)+"px)";this._canvasContainer.style.transformOrigin="0 0",this.overlayLayer.style.transform=this._canvasContainer.style.transform,this.overlayLayer.style.transformOrigin="0 0",this.snapLines.clearSnaplines()}setDesignItems(e){this.instanceServiceContainer.undoService.clearTransactionstackIfNotEmpty();let t=new Sa(e,[...this.rootDesignItem.children()]);this.instanceServiceContainer.undoService.execute(t)}_internalSetDesignItems(e){this.fillCalculationrects(),this.overlayLayer.removeAllOverlays(),kd.removeAllChildnodes(this.overlayLayer);for(let t of[...this.rootDesignItem.children()])this.rootDesignItem._removeChildInternal(t);this.addDesignItems(e),this.lazyTriggerReparseDocumentStylesheets(),this.instanceServiceContainer.onContentChanged.emit([{changeType:"parsed"}]),this.instanceServiceContainer.selectionService._withoutUndoSetSelectedElements(null),setTimeout(()=>this.extensionManager.refreshAllAppliedExtentions(),50)}reparseTimeout;lazyTriggerReparseDocumentStylesheets(){this.reparseTimeout&&clearTimeout(this.reparseTimeout),this.reparseTimeout=setTimeout(async()=>{await this.reparseDocumentStylesheets(),clearTimeout(this.reparseTimeout)},20)}async reparseDocumentStylesheets(){if(this.instanceServiceContainer.stylesheetService){let e=this.rootDesignItem.querySelectorAll("style"),t=1,i=[...e].map(r=>({name:"&lt;style&gt; #"+(r.id?r.id+"("+t+++")":t++),content:M.GetDesignItem(r).content,designItem:M.GetDesignItem(r)}));await this.instanceServiceContainer.stylesheetService.setDocumentStylesheets(i)}}addDesignItems(e){e&&this.rootDesignItem._insertChildsInternal(e);let t=this.serviceContainer.intializationService;if(t)for(let i of e)t.init(i);this.snapLines.clearSnaplines()}_onDragEnter(e){if(this.fillCalculationrects(),e.preventDefault(),e.dataTransfer.types.indexOf(Yt)>=0){let i=this.serviceContainer.bindableObjectDragDropService;if(i){let r=this.getElementAtPoint({x:e.x,y:e.y});this._lastDdElement!=r&&(i.dragLeave(this,e,this._lastDdElement),i.dragEnter(this,e,r),this._lastDdElement=r)}else this._lastDdElement=null}else{this._lastDdElement=null;let i=this.serviceContainer.dragDropService;i&&i.dragEnter(this,e)}}_onDragLeave(e){this.fillCalculationrects(),e.preventDefault(),this._canvas.classList.remove("dragFileActive");let t=this.serviceContainer.dragDropService;t&&t.dragLeave(this,e)}_lastDdElement=null;_onDragOver(e){if(e.preventDefault(),this.fillCalculationrects(),e.dataTransfer.types.length>0&&e.dataTransfer.types[0]=="Files"){let t=this.serviceContainer.externalDragDropService;if(t){let i=t.dragOver(this,e);e.dataTransfer.dropEffect=i,i!=="none"&&this._canvas.classList.add("dragFileActive")}}else if(e.dataTransfer.types.indexOf(Yt)>=0){let i=this.serviceContainer.bindableObjectDragDropService;if(i){let r=this.getElementAtPoint({x:e.x,y:e.y});this._lastDdElement!=r&&(i.dragLeave(this,e,this._lastDdElement),i.dragEnter(this,e,r),this._lastDdElement=r);let n=i.dragOver(this,e,r);e.dataTransfer.dropEffect=n}}else{let i=this.serviceContainer.dragDropService;i&&i.dragOver(this,e)}}async _onDrop(e){if(this.serviceContainer.globalContext.tool=this.serviceContainer.designerTools.get(K.Pointer),this._lastDdElement=null,e.preventDefault(),this._canvas.classList.remove("dragFileActive"),this.fillCalculationrects(),e.dataTransfer.files?.length>0){let t=this.serviceContainer.externalDragDropService;t&&t.drop(this,e)}else{let t=e.dataTransfer.getData(Yt);if(t){let i=JSON.parse(t),r=this.serviceContainer.bindableObjectDragDropService;if(r){let n=this.getElementAtPoint({x:e.x,y:e.y});r.drop(this,e,i,n)}}else{let i=this.serviceContainer.dragDropService;i&&(this.fillCalculationrects(),i.drop(this,e))}}}showDesignItemContextMenu(e,t){let i=[];for(let n of this.serviceContainer.designerContextMenuExtensions)n.shouldProvideContextmenu(t,this,e,"designer")&&i.push(...n.provideContextMenuItems(t,this,e,"designer"));let r=new be(i,null);return r.display(t),r}_onDblClick(e){e.preventDefault(),e.target!==this.overlayLayer&&(e.altKey||(this.serviceContainer.globalContext.tool==null||this.serviceContainer.globalContext.tool===this.serviceContainer.designerTools.get(K.Pointer))&&(this.extensionManager.removeExtension(this.instanceServiceContainer.selectionService.primarySelection,P.PrimarySelectionRefreshed),this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection,P.Doubleclick,e)))}_searchShowOverlay(){if(this.serviceContainer.searchService){let e=this._getDomElement("node-projects-designer-search-container");e.style.display="",this._getDomElement("node-projects-designer-search-input").focus()}}_searchHideOverlay(){let e=this._getDomElement("node-projects-designer-search-container");e.style.display="none"}async _searchRun(){let e=this._getDomElement("node-projects-designer-search-input");if(this._getDomElement("node-projects-designer-search-result").innerHTML="0 selected",e.value!=""){let t=await this.serviceContainer.searchService.search(this,e.value);t?.length>0&&(this.instanceServiceContainer.selectionService.setSelectedElements(t.map(i=>i.designItem)),this._getDomElement("node-projects-designer-search-result").innerHTML=t.length.toString()+" selected")}}onKeyUp(e){this._ignoreEvent!==e&&(this.activeTool?.keyboardEventHandler&&(this.activeTool.keyboardEventHandler(this,e,null),e.defaultPrevented)||(this._moveGroup&&(this._moveGroup.commit(),this._moveGroup=null),e.preventDefault()))}onKeyDown(e){if(this._ignoreEvent!==e&&!(this.activeTool?.keyboardEventHandler&&(this.activeTool.keyboardEventHandler(this,e,null),e.defaultPrevented))){if(W(e)&&e.key==="z"&&!e.shiftKey)this.executeCommand({type:A.undo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="z"&&e.shiftKey)this.executeCommand({type:A.redo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="y")this.executeCommand({type:A.redo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="a")this.executeCommand({type:A.selectAll,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="c")this.executeCommand({type:A.copy,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="v")this.executeCommand({type:A.paste,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="x")this.executeCommand({type:A.cut,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(W(e)&&e.key==="f")this._searchShowOverlay();else{if(!this.instanceServiceContainer.selectionService.primarySelection)return;let i=1;switch(e.shiftKey&&(i=10),e.key){case"Delete":case"Backspace":this.executeCommand({type:A.delete,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});break;case"ArrowDown":case"ArrowUp":case"ArrowLeft":case"ArrowRight":{this._moveGroup||(this._moveGroup=this.rootDesignItem.openGroup("move items"));let r={x:0,y:0};e.key=="ArrowDown"&&(r.y=-i),e.key=="ArrowUp"&&(r.y=i),e.key=="ArrowRight"&&(r.x=-i),e.key=="ArrowLeft"&&(r.x=i);for(let n of ce(this.instanceServiceContainer.selectionService.selectedElements)){let o=getComputedStyle(n.parent.element);n.serviceContainer.getLastServiceWhere("containerService",a=>a.serviceForContainer(n.parent,o)).moveElements([n],r,!1)}}break}}e.preventDefault()}}getNormalizedEventCoordinates(e){let t=(e.clientX-this.outerRect.x)/this.zoomFactor,i=this.containerBoundingRect.x-this.outerRect.x,r=(e.clientY-this.outerRect.y)/this.zoomFactor,n=this.containerBoundingRect.y-this.outerRect.y;return{x:t-i/this.zoomFactor,y:r-n/this.zoomFactor}}getViewportCoordinates(e){return{x:e.clientX-this.outerRect.x,y:e.clientY-this.outerRect.y}}getNormalizedTextNodeCoordinates(e,t){let i=document.createRange();i.selectNodeContents(e);let r=i.getBoundingClientRect(),n=this.containerOffset;return{x:n.x+(r.x-this.containerBoundingRect.x)/(t?1:this.scaleFactor),y:n.y+(r.y-this.containerBoundingRect.y)/(t?1:this.scaleFactor),width:r.width/(t?1:this.scaleFactor),height:r.height/(t?1:this.scaleFactor)}}getNormalizedElementCoordinates(e,t){if(e.nodeType==I.TextNode)return this.getNormalizedTextNodeCoordinates(e,t);let i=Y(e),r=this.containerOffset;return{x:r.x+(i.x-this.containerBoundingRect.x)/(t?1:this.scaleFactor),y:r.y+(i.y-this.containerBoundingRect.y)/(t?1:this.scaleFactor),width:i.width/(t?1:this.scaleFactor),height:i.height/(t?1:this.scaleFactor)}}getNormalizedElementCoordinatesAndRealSizes(e){let t=this.getNormalizedElementCoordinates(e),i=getComputedStyle(e),r=t.width,n=t.height;return i.boxSizing!="border-box"&&(r=r-(parseFloat(i.borderLeft)+parseFloat(i.paddingLeft)+parseFloat(i.paddingRight)+parseFloat(i.borderRight)),n=n-(parseFloat(i.borderTop)+parseFloat(i.paddingTop)+parseFloat(i.paddingBottom)+parseFloat(i.borderBottom))),{...t,realWidth:r,realHeight:n}}getNormalizedOffsetInElement(e,t){let i=this.getNormalizedEventCoordinates(e),r=this.getNormalizedElementCoordinates(t);return{x:i.x-r.x,y:i.y-r.y}}transformPoint(e){if(this._useIframe){let t=this._canvasContainer.getBoundingClientRect();return{x:e.x-t.x,y:e.y-t.y}}return e}elementsFromPoint(e,t){let i=[],r=this.transformPoint({x:e,y:t}),n=this._canvasShadowRoot.elementsFromPoint(r.x,r.y);for(let o of n)o.getRootNode()===this._canvasShadowRoot&&i.push(o);return i}getElementAtPoint(e,t){let i=this.transformPoint(e),r=this._canvasShadowRoot.elementsFromPoint(i.x,i.y),n=null;for(let o=0;o<r.length;o++){if(n=r[o],t&&t(n)){n=null;continue}if(n.getRootNode()!==this._canvasShadowRoot){n=null;continue}if(!this.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements&&M.GetDesignItem(n).getStyleFromSheetOrLocal("pointer-events")=="none"){n=null;continue}break}return n}getDesignItemById(e){return M.GetDesignItem(this._canvasShadowRoot.getElementById(e))}querySelectorDesignItem(e){return M.GetDesignItem(this._canvasShadowRoot.querySelector(e))}querySelectorAllDesignItems(e){return[...this._canvasShadowRoot.querySelectorAll(e)].map(t=>M.GetDesignItem(t))}_hoverElement;showHoverExtension(e,t){let i=M.GetOrCreateDesignItem(e,e,this.serviceContainer,this.instanceServiceContainer);if(this._lastHoverDesignItem!=i&&(this._lastHoverDesignItem&&this.extensionManager.removeExtension(this._lastHoverDesignItem,P.MouseOver),i&&i!=this.rootDesignItem&&(!e.parentNode||kd.getHost(e.parentNode)!==this.overlayLayer)&&this.extensionManager.applyExtension(i,P.MouseOver,t),this._lastHoverDesignItem=i),this.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover&&this._hoverElement!==e){let r=this._hoverElement;for(;r&&r!==this._canvas;)r.removeAttribute(ut),r=r.parentElement;if(this._hoverElement=null,e){for(e.nodeType==I.TextNode&&(e=e.parentElement),r=e;r&&r!==this._canvas;)r.setAttribute(ut,""),r=r.parentElement;this._hoverElement=e}}}_onWheel(e){let t=this.getElementAtPoint({x:e.clientX,y:e.clientY});for(;t;){let i=getComputedStyle(t);if(i.overflowY==="scroll"||i.overflowY==="auto"){let r=t;r.scrollBy?r.scrollBy(e.deltaX,e.deltaY):(r.scrollLeft+=e.deltaX,r.scrollTop+=e.deltaY),e.stopPropagation();break}t=t.parentElement}}_pointerEventHandler(e,t=null){if(this._ignoreEvent===e||!this.serviceContainer||this._touchGestureHelper.multitouchEventActive)return;if(this.fillCalculationrects(),this._pointerextensions)for(let o of this._pointerextensions)o.refresh(e);let i;if(t)i=t;else if(i=this.serviceContainer.elementAtPointService.getElementAtPoint(this,{x:e.x,y:e.y}),!i)i=this._canvas;else if(this._enableSelectTextNodesOnClick){let o=this.getNormalizedEventCoordinates(e);for(let a of i.childNodes)if(a.nodeType==I.TextNode){let l=this.getNormalizedElementCoordinates(a);if(l.x<=o.x&&l.x+l.width>=o.x&&l.y<=o.y&&l.y+l.height>=o.y){i=a;break}}}if(this._activeTool){this._activeTool.pointerEventHandler(this,e,i);return}this.clickOverlay.style.cursor=this._canvas.style.cursor;let r=M.GetOrCreateDesignItem(i,i,this.serviceContainer,this.instanceServiceContainer);this.showHoverExtension(r.element,e),i&&kd.getHost(i.parentNode)===this.overlayLayer&&(i=this.instanceServiceContainer.selectionService.primarySelection?.element??this._canvas);let n=this.serviceContainer.globalContext.tool??this.serviceContainer.designerTools.get(K.Pointer);n.pointerEventHandler(this,e,i),this._canvas.style.cursor=n.cursor}captureActiveTool(e){this._activeTool=e}releaseActiveTool(){this._activeTool=null}get activeTool(){return this.serviceContainer.globalContext.tool}fillCalculationrects(){this.containerBoundingRect=this._canvasContainer.getBoundingClientRect(),this.outerRect=this._outercanvas2.getBoundingClientRect()}removeOverlay(e){this.overlayLayer.removeOverlay(e)}zoomOntoRectangle(e,t){let i={x:e.x<t.x?e.x:t.x,y:e.y<t.y?e.y:t.y,width:Math.abs(e.x-t.x),height:Math.abs(e.y-t.y)},r=this.outerRect.width/i.width,n=this.outerRect.height/i.height,o=r>=n?n:r,a={x:i.width/2+i.x,y:i.height/2+i.y};this.zoomPoint(a,o)}zoomPoint(e,t){this.zoomFactor=t;let i={x:-e.x+this.outerRect.width/this.zoomFactor/2,y:-e.y+this.outerRect.height/this.zoomFactor/2};this.canvasOffset=i}zoomConvertEventToViewPortCoordinates(e){let t=this.containerBoundingRect.x-this.outerRect.x,i=this.containerBoundingRect.y-this.outerRect.y;return{x:(e.x+t/this.zoomFactor)*this.zoomFactor,y:(e.y+i/this.zoomFactor)*this.zoomFactor}}zoomTowardsPoint(e,t){let i=t/this.zoomFactor,r=this.zoomConvertEventToViewPortCoordinates(e),n={x:-(r.x*(i-1)+i*-this.canvasOffsetUnzoomed.x),y:-(r.y*(i-1)+i*-this.canvasOffsetUnzoomed.y)};this.zoomFactor=t,this.canvasOffsetUnzoomed=n}};customElements.define("node-projects-designer-canvas",Wi);Ze();hr();he();bt();ot();import{BaseCustomWebComponentConstructorAppend as by,css as Sy,html as wy}from"@node-projects/base-custom-webcomponent";var Tr=class extends by{static style=Sy`node-projects-designer-tools-buttons{height:100%;width:100%}#toolButtons{scrollbar-width:none;overflow-y:auto;height:100%}#toolButtons::-webkit-scrollbar{display:none}#popup{position:absolute;top:calc(0px + 10px);height:100%;left:calc(24px + 4px + 10px)}`;static template=wy`<div id="popup"></div><div id="toolButtons"></div>`;_toolButtonsElem;_serviceContainer;_popupContainer;designerView;constructor(){super(),this._toolButtonsElem=this._getDomElement("toolButtons"),this._toolButtonsElem.onwheel=e=>e.stopPropagation(),this._popupContainer=this._getDomElement("popup")}initialize(e,t){this._serviceContainer=e,this.designerView=t;for(let i of this._serviceContainer.designViewToolbarButtons)this._toolButtonsElem.appendChild(i.provideButton(t.designerCanvas));this._serviceContainer.globalContext.onToolChanged.on(i=>{for(let r of this._toolButtonsElem.children)r instanceof ge&&r.setActiveTool(i.newValue.name)})}showPopup(e){if(this._popupContainer.children.length)this._popupContainer.innerHTML="";else{let t;typeof e.popup=="string"?t=document.createElement(e.popup):t=new e.popup,this._popupContainer.appendChild(t)}}setTool(e){this._popupContainer.children.length&&(this._popupContainer.innerHTML=""),this.designerView.designerCanvas.executeCommand({type:A.setTool,parameter:e})}setStrokeColor(e){this._popupContainer.children.length&&(this._popupContainer.innerHTML=""),this.designerView.designerCanvas.executeCommand({type:A.setStrokeColor,parameter:e})}setFillBrush(e){this._popupContainer.children.length&&(this._popupContainer.innerHTML=""),this.designerView.designerCanvas.executeCommand({type:A.setFillBrush,parameter:e})}setStrokeThickness(e){this._popupContainer.children.length&&(this._popupContainer.innerHTML=""),this.designerView.designerCanvas.executeCommand({type:A.setStrokeThickness,parameter:e})}};customElements.define("node-projects-designer-toolbar",Tr);var ti=class extends Ay{_sVert;_sHor;get serviceContainer(){return this._designerCanvas.serviceContainer}set serviceContainer(e){this._designerCanvas.serviceContainer=e}get instanceServiceContainer(){return this._designerCanvas.instanceServiceContainer}set instanceServiceContainer(e){this._designerCanvas.instanceServiceContainer=e}_designerCanvas;get designerCanvas(){return this._designerCanvas}get readOnly(){return this._designerCanvas.readOnly}set readOnly(e){this._designerCanvas.readOnly=e}_zoomInput;_lowertoolbar;_toolbar;static style=Cy`:host{display:block;box-sizing:border-box;width:100%;position:relative;transform:translateZ(0);overflow:hidden}*{touch-action:none}#lowertoolbar{height:16px;background:#787f82;display:flex;bottom:0;position:absolute;font-size:12px;width:100%}input{width:40px;height:16px;padding:0;border:0;font-size:12px;text-align:center;margin-right:1px}.toolbar-control{width:16px;height:16px;display:block;margin-right:1px;cursor:default;display:flex;justify-content:center;align-items:center}.selected{background-color:#00bfff}.toolbar-control:hover{background-color:rgba(164,206,249,.6)}#outer{user-select:none;display:flex;flex-direction:column;width:100%;height:100%}#canvas{left:24px;width:calc(100% - 24px - 16px);height:calc(100% - 32px)}#tool-bar{width:24px;height:calc(100% - 32px);position:absolute;background-color:#d3d3d3}.zoom-in{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAn9JREFUeNqkU11o01AUTtI06U/6tzHWbnNVS+k67FAG/gwfZEOcCrpNEBwEH2Q+Otqxh+5VEaHYV18UwQd9sk4Q+6CUKogbtSoM10qftJS2iGuT/iRpshvvDZu4DHHggY+TnHu+795zz7m4qqrYxfA6pjerlcHMZvMQQRCL8Hccoh+iBJECAMQEQci3Wk2MxP5iqgqmJUmIB3xkdTRoKgQG6Wr1JxBX1oTQx3UxCdcjMO2ZJiCK4g4y3HUIACV+bsL5dSRAWfwe636z0WBzWEFzn5vku5xyIZGsx2UF5AhEaDYbO8Dz3KLPi1X9B2iTy0pRiDx5/Z2bJgmGwDH8WMhuDxzEf6A8TYDneT3GR4JMzcVQThNlcCtANaM48pICutodxXTkkI1HeVslSPor6B/wWL7B3Z1n2KR3O3h05rkDOkd2eYoSxM025PVrAgAQeoFSuSLI3Q66jpJNRsIWPLvM5JJTTUkGGsqVtgJ5JU3AaLTqBVKZT9xh7yDT2Gh05G4bNQBzGETkBbkMVAxbzdadMJbSBDzCHXgKgKGZQJCp0IP32dnEaKhd6nOZAay7mXk6UUGeIHDDh88NKb0qumjaHiN391/1GjtrJ6ZPSb33H9eJYomuTJ601Qf7SKVYVlqplZblxRvOThrtEaC28qSOPAwncCYSWbzJsrO3XP4br9KZa1fTmcaOSTQYLDFFaeURh/yDfLynp/fCwkI0yrKX79ZqG49sUr2A44a3u+d08/fXVhfAeZ8vcDocjs6z7KV7xeL3JzBcwPZgmoAkScGlpdvzc3NXHuZyXxIwlMX2aJoAfFkvx8aGnRzH5WEpr7cXuerKPwVw1Lb/sV8CDACbf0U37X3NqwAAAABJRU5ErkJggg==)}.zoom-out{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmVJREFUeNqkU01oE0EUnv3Nf0xsS01jEzWUNCUplh7U4kEiVVEQqyBYWDxor5am5JBeFRGCuXpRBA8KHqIHMYISohdTYlQo2kguaghJUNvd/O1udjvr7NKWZHuw4IMHM/v9zHu8t5iiKCAYDAKi/xQ4MHEdbIXFYgUmk2kUx/EouoZRulGWUaYhhHGe5wutVhOQKtk3/RToQ1HgjCjyCb+PrE0GjEW/x1Cr/YFCdoUPffwqpBAeQbRnmoEgCD1i9OoohHLi7EnHt3E/bfb0m/pwDGBeF04P77Mpex1SMZliE5IMV3FV0Gw2erJe56I+L6iNHDQYnRaaVsXb5uh8JGS3+w9hv1SeVkG9Xtd3EB4PDBecVtplpAmHKMMesN2R2Ymg7fer9PfwZgui3sC932X+gV53nGZSXj2Yf36B5oWNNtK5NQMIcT2nXKnyUt8eA6uSUf1YNyhKsFmptmWkK2sGFGXRG6Rzn7jDXo+1sdboSBSJEd0gVABYzrMOpEtrBi7+DqoCAnUn1JTo0IP3+dnkZKhdHnKaIEUSXRPCiA+fG2JmWXAaDPY4uXP+ipfqrBybOSEO3n/M4qWyoXrmuE30DJHWUkVupbMt44u3nJ2k7BGotAqkTjyGNvBiJBK9yTCzt5wjN15ncteuZnKNnk0kCHNcllsFVUN2iY8ODAyeX1yMxRjm8t319bVHNpEtYhjxbseago3t0+YU4Dmfzz+9sBCbZ5hL90qln0/Q5yLYRWgGoigGlpZuz8/NXXm4uvolqY4a7DI0A/RnvZyaGnNwHFdArbzZArla9p8GmDq2/4m/AgwATHQSD48kJDUAAAAASUVORK5CYII=)}.snap-grid{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAblJREFUeNqkUjtLA0EQnntFyKNKJdiFgIlGC5G0FlaaIsYgiKAgKIKdjbV/wM7GImBhI6JFMFWKK3yBimBAhJDuUEgimMSYS0hunbncHRtFjLjw7X7z7ezszM4KjDEQRRG+jnlEgvYAAgLAJpoT1tYdA9gzAAqLuC/DD4N1EZC87v1IYnZ0MBj0k/6Szw/nTs7GO+8f62gWBCuDHTRG+ABxgGScsd3JlYWlJogu9TSjkT41NzM0AEbr5uDocJmxLTv3CCJpgbRkAKcWpq14vP7scVqrVKsbBOKktayS7BL4RzB5uxvAo7++SfV6vYnmBenESaM9/qCESFt4pPUJJzrlLpe/vQ9pTeex8A0EQcggwILJo9EohMPhNVW9ZqFQaJvsWCzWozGuCxJ3gck1TYNGo+Hy+XxQKpXalUoFisUi1Go1RyM/uwtZLsADYkxRlGnMZLXT6QQkSSqglsIV0HY0XddTdgkqV4LD6YPJsgwYzLSJEygQraz70YDvRg9Hh3O8DdptM1uTEwzDMDnvTHVfWfy+D8592W4Jt1wJfXOnC0h8XMw/cbuEHOKZc/iNX9qC2cb/jE8BBgAvhdOb37HVsgAAAABJRU5ErkJggg==)}.snap-guide{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYVJREFUeNqkU7tKA1EQnbs3CnlVqbQNARMjFilS+AnZQhIbW0ER/AA/wlYbhXR2wUKx0iKNYGMKDViEdEIgieBujGvCPpyz7sK6iWLIwJk798zsuXsfIxzHoXksAqcoij+vMbYq7MoszGxaEB3wtODlH3i5E5uojck210RCgq7SJie4MC0TsdO1cim/lMmkwHdarZWni+t16/1jz/FElJBAGc5imLzyakXNG0IuVo+OnwHE4JCzgisG7BJu/I3CQjyRuq1dvWi6vg8gBofcOHgGAZO+AFv88/VNDofDEcd3IBCD43ycfhEowY28Sazfnzh1cKMggWsUQvi4waiqKuVyud16/d7JZrOHxWJxKudMuQV3C81mk3RdX0wmk9Tr9UxN06jb7dJgMPjBwQRUAu/AtWg0SpZl7TDSUso2/1UVNWHOMIwJARzWBhcQwMXu1oJb9Ufbtsk0zYktPLrvgD8E/mWeYoNxxlj2xoZ3qI2/YrePQs10PksjTRPozCog5m3nLwEGABrLzseuHT6IAAAAAElFTkSuQmCC)}.bottom-scroll{width:calc(100% - 16px);position:absolute;bottom:16px;height:16px;box-sizing:border-box;z-index:1}.right-scroll{height:calc(100% - 32px);position:absolute;right:0;top:0;width:16px;box-sizing:border-box;z-index:1}.bottom-right{width:16px;height:16px;bottom:16px;right:0;position:absolute;background:#f0f0f0}`;static template=Py`<div id="outer"><node-projects-plain-scrollbar id="s-hor" value="0.5" class="bottom-scroll"></node-projects-plain-scrollbar><node-projects-plain-scrollbar id="s-vert" value="0.5" orientation="vertical" class="right-scroll"></node-projects-plain-scrollbar><div class="bottom-right"></div><div id="lowertoolbar"><input id="zoomInput" type="text" value="100%"><div title="decrease zoom" id="zoomIncrease" class="toolbar-control zoom-in"></div><div title="increase zoom" id="zoomDecrease" class="toolbar-control zoom-out"></div><div title="reset zoom" id="zoomReset" class="toolbar-control" style="width:16px;height:16px;font-size:14px;display:flex;align-items:center;justify-content:center">1</div><div title="zoom to fit" id="zoomFit" class="toolbar-control" style="width:16px;height:16px;font-size:8px;display:flex;align-items:center;justify-content:center">100%</div><div title="snap to grid" id="alignGrid" class="toolbar-control snap-grid"></div><div title="snap to elements" id="alignSnap" class="toolbar-control snap-guide"></div></div></div>`;constructor(e=!1){super(),this._restoreCachedInititalValues(),this._sVert=this._getDomElement("s-vert"),this._sHor=this._getDomElement("s-hor");let t=this._getDomElement("outer");this._designerCanvas=new Wi(e),this._designerCanvas.id="canvas",this._designerCanvas.appendChild(document.createElement("slot")),t.insertAdjacentElement("afterbegin",this._designerCanvas),this._toolbar=new Tr,this._toolbar.id="tool-bar",this._sVert.insertAdjacentElement("afterend",this._toolbar),this._designerCanvas.onZoomFactorChanged.on(()=>{this._zoomInput.value=Math.round(this._designerCanvas.zoomFactor*100)+"%";let c=this.designerCanvas.canvasOffset,h=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,d=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._sHor.value=c.x/(-2*h)+.5,this._sVert.value=c.y/(-2*d)+.5}),this._zoomInput=this._getDomElement("zoomInput"),this._zoomInput.onkeydown=c=>{c.key=="Enter"&&(this._designerCanvas.zoomFactor=parseFloat(this._zoomInput.value)/100)},this._zoomInput.onblur=()=>{this._designerCanvas.zoomFactor=parseFloat(this._zoomInput.value)/100},this._zoomInput.onclick=this._zoomInput.select;let i=this._getDomElement("zoomIncrease");i.onclick=()=>{let c=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,h=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._designerCanvas.zoomFactor>.1?this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor+.1):this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor+.01)};let r=this._getDomElement("zoomDecrease");r.onclick=()=>{let c=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,h=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._designerCanvas.zoomFactor>.11?this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor-.1):this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor-.01),this._designerCanvas.zoomFactor<.001&&this._designerCanvas.zoomPoint({x:c/2,y:h/2},.001)};let n=this._getDomElement("zoomReset");n.onclick=()=>{this.zoomReset()};let o=this._getDomElement("zoomFit");o.onclick=()=>{this.zoomToFit()},this.addEventListener(C.Wheel,c=>this._onWheel(c));let a=this._getDomElement("alignSnap");a.onclick=()=>{this._designerCanvas.alignOnSnap=!this._designerCanvas.alignOnSnap,a.style.backgroundColor=this._designerCanvas.alignOnSnap?"deepskyblue":""},a.style.backgroundColor=this._designerCanvas.alignOnSnap?"deepskyblue":"",a.oncontextmenu=c=>{c.preventDefault()};let l=this._getDomElement("alignGrid");l.onclick=()=>{this._designerCanvas.alignOnGrid=!this._designerCanvas.alignOnGrid,l.style.backgroundColor=this._designerCanvas.alignOnGrid?"deepskyblue":""},l.style.backgroundColor=this._designerCanvas.alignOnGrid?"deepskyblue":"",l.oncontextmenu=c=>{c.preventDefault();let h=prompt("raster size",this.designerCanvas.gridSize.toString());if(h){let d=parseInt(h);d>0&&(this.designerCanvas.gridSize=d)}},this._lowertoolbar=this._getDomElement("lowertoolbar"),this._sVert.addEventListener("scrollbar-input",c=>this._onScrollbar(c)),this._sHor.addEventListener("scrollbar-input",c=>this._onScrollbar(c))}zoomReset(){this._designerCanvas.canvasOffset={x:0,y:0},this._designerCanvas.zoomFactor=1,this._sVert.value=.5,this._sHor.value=.5,this._zoomInput.value=Math.round(this._designerCanvas.zoomFactor*100)+"%"}zoomToFit(){this._designerCanvas.zoomToFit()}_onScrollbar(e){e?.detail=="incrementLarge"?e.target.value+=.25:e?.detail=="decrementLarge"?e.target.value-=.25:e?.detail=="incrementSmall"?e.target.value+=.05:e?.detail=="decrementSmall"&&(e.target.value-=.05);let t=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,i=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight,r=t*(this._sHor.value-.5)*-2,n=i*(this._sVert.value-.5)*-2;this.designerCanvas.canvasOffset={x:r,y:n}}_onWheel(e){if(e.preventDefault(),e.ctrlKey){let t=this._designerCanvas.zoomFactor,i=e.deltaY<0?1:-1;t*=Math.exp(i*.2),t<.02&&(t=.02);let r=this.designerCanvas.getNormalizedEventCoordinates(e);this.designerCanvas.zoomTowardsPoint(r,t)}else e.shiftKey?(this._sHor.value+=e.deltaY/1e4,this._onScrollbar(null)):(this._sVert.value+=e.deltaY/1e4,this._onScrollbar(null),this._sHor.value+=e.deltaX/1e4,this._onScrollbar(null))}get designerWidth(){return this._designerCanvas.designerWidth}set designerWidth(e){this._designerCanvas.designerWidth=e}get designerHeight(){return this._designerCanvas.designerHeight}set designerHeight(e){this._designerCanvas.designerHeight=e}set additionalStyles(e){this._designerCanvas.additionalStyles=e}setDesignItems(e){this._designerCanvas.setDesignItems(e)}async executeCommand(e){this._designerCanvas.executeCommand(e)}canExecuteCommand(e){return this._designerCanvas.canExecuteCommand(e)}initialize(e){if(this.serviceContainer=e,this._designerCanvas.initialize(e),e.designViewConfigButtons)for(let t of e.designViewConfigButtons)for(let i of t.provideButtons(this,this._designerCanvas))this._lowertoolbar.appendChild(i);this._toolbar.initialize(this.serviceContainer,this)}getDesignerHTML(){return this._designerCanvas.rootDesignItem.childCount>0?Q.ConvertToString(Array.from(this._designerCanvas.rootDesignItem.children()),!0,!0):""}async parseDesignerHTML(e,t=!1){let i=this.serviceContainer.htmlParserService;if(!e)this._designerCanvas.overlayLayer.removeAllOverlays(),Ey.removeAllChildnodes(this._designerCanvas.overlayLayer),this._designerCanvas.rootDesignItem.clearChildren();else{let r=await i.parse(e,this.serviceContainer,this.instanceServiceContainer,!1);t?this._designerCanvas._internalSetDesignItems(r):this._designerCanvas.setDesignItems(r)}}static wrapInDesigner(e,t){let i=new Wi;i.initialize(t);let r=i.serviceContainer.getLastServiceWhere("htmlParserService",n=>n.constructor==Nt);return i.addDesignItems(r.createDesignItems(e,i.serviceContainer,i.instanceServiceContainer)),i}};customElements.define("node-projects-designer-view",ti);var Dd=class extends ti{constructor(){super()}async ready(){let e=await(await Promise.resolve().then(()=>(pa(),im))).default;this.initialize(e())}};customElements.define("node-projects-default-configured-designer-view",Dd);Ze();ah();rh();hh();nh();lh();sh();Oh();ud();xr();oh();ih();ch();Lh();ot();gt();Bh();rc();Yc();Xc();Kc();bc();mc();Sc();ic();_c();Ec();pc();md();fd();Je();ie();$e();re();Ic();kc();$l();Zl();id();rd();ha();Sd();Uh();Sh();fo();Pc();Ac();dh();ph();Dc();Cs();Jl();ec();Vh();Rh();Wh();jh();ze();Si();cr();Cl();El();Pl();Al();Il();kl();ze();var zm=class{read(e){let i=getComputedStyle(e).clipPath||e.getAttribute("style")?.match(/clip-path\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:clipPath",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):t.startsWith("path(")?this._parsePath(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],r=t.split(",");for(let n=0;n<r.length;n++){let o=r[n].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:n===0?_.Move:_.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:_.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),r=50,n=50,o=50;if(i>=0){r=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);n=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else r=parseFloat(t)||50;return{segments:[{type:_.Move,relative:!1,point:{x:n,y:o-r}},{type:_.Arc,relative:!1,point:{x:n+r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o+r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n-r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o-r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:n,y:o-r}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),r=50,n=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);r=parseFloat(c[0])||50,n=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:_.Move,relative:!1,point:{x:o,y:a-n}},{type:_.Arc,relative:!1,point:{x:o+r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a+n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o-r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a-n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:o,y:a-n}}],closed:!0}}_parsePath(e){let t=e.match(/path\(\s*["']([^"']+)["']\s*\)/);if(!t)return{segments:[],closed:!1};let i="http://www.w3.org/2000/svg",r=document.createElementNS(i,"svg"),n=document.createElementNS(i,"path");n.setAttribute("d",t[1]),r.appendChild(n),r.style.position="absolute",r.style.width="0",r.style.height="0",r.style.overflow="hidden",document.body.appendChild(r);try{let{SvgPathGeometryReader:o}=(cr(),zd(wl));return new o().read(n)}catch{return{segments:[],closed:!1}}finally{document.body.removeChild(r)}}_serializeGeometry(e){let t=e.segments.filter(n=>n.type!==_.Close);if(t.length===0)return"none";let i=t.filter(n=>n.type===_.Arc);if(i.length>=3&&i[0].arc){let n=t,o=n[0].point,a=n[1].point,l=n[2].point,c=n[3].point,h=(a.x+c.x)/2,d=(o.y+l.y)/2,p=Math.abs(a.x-c.x)/2,m=Math.abs(l.y-o.y)/2;return Math.abs(p-m)<.01?`circle(${p}px at ${h}px ${d}px)`:`ellipse(${p}px ${m}px at ${h}px ${d}px)`}return`polygon(${t.map(n=>`${n.point.x}px ${n.point.y}px`).join(", ")})`}};ze();var Fm=class{read(e){let i=getComputedStyle(e).shapeOutside||e.getAttribute("style")?.match(/shape-outside\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:shapeOutside",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],r=t.split(",");for(let n=0;n<r.length;n++){let o=r[n].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:n===0?_.Move:_.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:_.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),r=50,n=50,o=50;if(i>=0){r=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);n=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else r=parseFloat(t)||50;return{segments:[{type:_.Move,relative:!1,point:{x:n,y:o-r}},{type:_.Arc,relative:!1,point:{x:n+r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o+r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n-r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o-r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:n,y:o-r}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),r=50,n=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);r=parseFloat(c[0])||50,n=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:_.Move,relative:!1,point:{x:o,y:a-n}},{type:_.Arc,relative:!1,point:{x:o+r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a+n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o-r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a-n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:o,y:a-n}}],closed:!0}}_serializeGeometry(e){let t=e.segments.filter(n=>n.type!==_.Close);if(t.length===0)return"none";let i=t.filter(n=>n.type===_.Arc);if(i.length>=3&&i[0].arc){let n=t,o=n[0].point,a=n[1].point,l=n[2].point,c=n[3].point,h=(a.x+c.x)/2,d=(o.y+l.y)/2,p=Math.abs(a.x-c.x)/2,m=Math.abs(l.y-o.y)/2;return Math.abs(p-m)<.01?`circle(${p}px at ${h}px ${d}px)`:`ellipse(${p}px ${m}px at ${h}px ${d}px)`}return`polygon(${t.map(n=>`${n.point.x}px ${n.point.y}px`).join(", ")})`}};ze();var Bm=class{read(e){let i=getComputedStyle(e).offsetPath||e.getAttribute("style")?.match(/offset-path\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:offsetPath",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):t.startsWith("path(")?this._parsePath(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],r=t.split(",");for(let n=0;n<r.length;n++){let o=r[n].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:n===0?_.Move:_.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:_.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),r=50,n=50,o=50;if(i>=0){r=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);n=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else r=parseFloat(t)||50;return{segments:[{type:_.Move,relative:!1,point:{x:n,y:o-r}},{type:_.Arc,relative:!1,point:{x:n+r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o+r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n-r,y:o},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:n,y:o-r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:n,y:o-r}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),r=50,n=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);r=parseFloat(c[0])||50,n=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:_.Move,relative:!1,point:{x:o,y:a-n}},{type:_.Arc,relative:!1,point:{x:o+r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a+n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o-r,y:a},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Arc,relative:!1,point:{x:o,y:a-n},arc:{rx:r,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:_.Close,relative:!1,point:{x:o,y:a-n}}],closed:!0}}_parsePath(e){let t=e.match(/path\(\s*["']([^"']+)["']\s*\)/);if(!t)return{segments:[],closed:!1};let i="http://www.w3.org/2000/svg",r=document.createElementNS(i,"svg"),n=document.createElementNS(i,"path");n.setAttribute("d",t[1]),r.appendChild(n),r.style.position="absolute",r.style.width="0",r.style.height="0",r.style.overflow="hidden",document.body.appendChild(r);try{let{SvgPathGeometryReader:o}=(cr(),zd(wl));return new o().read(n)}catch{return{segments:[],closed:!1}}finally{document.body.removeChild(r)}}_serializeGeometry(e){let t=e.segments.filter(n=>n.type!==_.Close);if(t.length===0)return"none";let i=t.filter(n=>n.type===_.Arc);if(i.length>=3&&i[0].arc){let n=t,o=n[0].point,a=n[1].point,l=n[2].point,c=n[3].point,h=(a.x+c.x)/2,d=(o.y+l.y)/2,p=Math.abs(a.x-c.x)/2,m=Math.abs(l.y-o.y)/2;return Math.abs(p-m)<.01?`circle(${p}px at ${h}px ${d}px)`:`ellipse(${p}px ${m}px at ${h}px ${d}px)`}return`polygon(${t.map(n=>`${n.point.x}px ${n.point.y}px`).join(", ")})`}};Ql();ql();Ol();Vl();oc();ac();Fe();Pe();_t();re();rs();var Aa=class extends z{_skewXLine;_skewYLine;_skewXCircle;_skewYCircle;_skewXReferencePoint={x:0,y:0};_skewYReferencePoint={x:0,y:0};_activeAxis=null;_baseTransform="";_skewX=0;_skewY=0;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let r=[i.p1,i.p2,i.p3,i.p4];if(r.some(m=>!Number.isFinite(m.x)||!Number.isFinite(m.y))){this.remove();return}let n=this.designerCanvas.zoomFactor;if(!this._valuesHaveChanges(n,...r.flatMap(m=>[m.x,m.y])))return;let o=Di(i),a=Oe(i.p1,i.p2,o,56/n,{x:0,y:-1}),l=Oe(i.p1,i.p2,o,48/n,{x:0,y:-1}),c=Oe(i.p1,i.p2,o,38/n,{x:0,y:-1}),h=Oe(i.p2,i.p3,o,30/n,{x:1,y:0}),d=Oe(i.p2,i.p3,o,22/n,{x:1,y:0}),p=Oe(i.p2,i.p3,o,6/n,{x:1,y:0});this._skewXLine=this._drawLine(l.x,l.y,c.x,c.y,"svg-primary-skew-line",this._skewXLine),this._skewYLine=this._drawLine(d.x,d.y,p.x,p.y,"svg-primary-skew-line",this._skewYLine),this._skewXLine.style.strokeWidth=(1/n).toString(),this._skewYLine.style.strokeWidth=(1/n).toString(),this._skewXCircle?this._skewXCircle=this._drawCircle(a.x,a.y,5/n,"svg-primary-skew",this._skewXCircle):(this._skewXCircle=this._drawCircle(a.x,a.y,5/n,"svg-primary-skew",this._skewXCircle),this._skewXCircle.addEventListener("pointerdown",m=>this._handlePointerEvent("x",m)),this._skewXCircle.addEventListener("pointermove",m=>this._handlePointerEvent("x",m)),this._skewXCircle.addEventListener("pointerup",m=>this._handlePointerEvent("x",m))),this._skewXCircle.style.strokeWidth=(1/n).toString(),this._skewXCircle.style.cursor="ew-resize",this._skewYCircle?this._skewYCircle=this._drawCircle(h.x,h.y,5/n,"svg-primary-skew",this._skewYCircle):(this._skewYCircle=this._drawCircle(h.x,h.y,5/n,"svg-primary-skew",this._skewYCircle),this._skewYCircle.addEventListener("pointerdown",m=>this._handlePointerEvent("y",m)),this._skewYCircle.addEventListener("pointermove",m=>this._handlePointerEvent("y",m)),this._skewYCircle.addEventListener("pointerup",m=>this._handlePointerEvent("y",m))),this._skewYCircle.style.strokeWidth=(1/n).toString(),this._skewYCircle.style.cursor="ns-resize",this._skewYCircle.style.fill="#eaf5ff"}_handlePointerEvent(e,t){t.stopPropagation();let i=t.target;switch(t.type){case"pointerdown":i.setPointerCapture(t.pointerId),this._readPersistedTransform(),e==="x"?this._skewXReferencePoint=this._getSkewReferencePoint("x"):this._skewYReferencePoint=this._getSkewReferencePoint("y"),this._activeAxis=e;break;case"pointermove":if(this._activeAxis===e&&t.buttons>0){let r=this._getSkewAngle(e,t);e==="x"?this._skewX=r:this._skewY=r,this._setPreviewTransform()}break;case"pointerup":if(this._activeAxis===e){i.releasePointerCapture(t.pointerId);let r=this._getSkewAngle(e,t);e==="x"?this._skewX=r:this._skewY=r,this._commitTransform(),this._activeAxis=null}break}}_readPersistedTransform(){let{baseTransform:e,skewX:t,skewY:i}=this._parseTransform(this.extendedItem.getStyleFromSheetOrLocal("transform")??"");this._baseTransform=e,this._skewX=t,this._skewY=i}_getSkewReferencePoint(e){let t=this.extendedItem.element,i=Le(this.extendedItem.element),r=this.designerCanvas.zoomFactor,n=e==="x"?{x:i.width/2,y:-56/r}:{x:i.width+30/r,y:i.height/2},o=t.style.transform;try{t.style.transform=this._buildTransform(this._baseTransform,e==="x"?0:this._skewX,e==="y"?0:this._skewY);let a=t.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!a)return n;let l=Di(a),c=e==="x"?Oe(a.p1,a.p2,l,56/r,{x:0,y:-1}):Oe(a.p2,a.p3,l,30/r,{x:1,y:0}),h=t.convertPointFromNode(c,this.designerCanvas.canvas);return!Number.isFinite(h.x)||!Number.isFinite(h.y)?n:{x:h.x,y:h.y}}finally{t.style.transform=o}}_setPreviewTransform(){this.extendedItem.element.style.transform=this._buildTransform(this._baseTransform,this._skewX,this._skewY)}_commitTransform(){let e=this._buildTransform(this._baseTransform,this._skewX,this._skewY);e?this.extendedItem.updateStyleInSheetOrLocal("transform",e):this.extendedItem.hasStyle("transform")?this.extendedItem.removeStyle("transform"):this.extendedItem.updateStyleInSheetOrLocal("transform",null);let t=this.extendedItem.element;this.extendedItem.hasStyle("transform")?t.style.transform=this.extendedItem.getStyle("transform")??"":t.style.transform=""}_getSkewAngle(e,t){let i=this.extendedItem.element;i.style.transform=this._buildTransform(this._baseTransform,e==="x"?0:this._skewX,e==="y"?0:this._skewY);let r=this.designerCanvas.getNormalizedEventCoordinates(t),n=i.convertPointFromNode({x:r.x,y:r.y},this.designerCanvas.canvas),a=getComputedStyle(i).transformOrigin.split(" "),l={x:parseFloat(a[0]),y:parseFloat(a[1])},c=Le(i),h;if(e==="x"){let d=this._skewXReferencePoint.y-l.y;Math.abs(d)<.5&&(d=-Math.max(c.height/2,1)),h=Math.atan((n.x-l.x)/d)*180/Math.PI}else{let d=this._skewYReferencePoint.x-l.x;Math.abs(d)<.5&&(d=Math.max(c.width/2,1)),h=Math.atan((n.y-l.y)/d)*180/Math.PI}return h=Math.max(-80,Math.min(80,h)),W(t)||(h=Math.round(h/15)*15),parseFloat(N(this.extendedItem,h))}_buildTransform(e,t,i){let r=[];return e?.trim()&&r.push(e.trim()),Math.abs(t)>.001&&r.push(`skewX(${t}deg)`),Math.abs(i)>.001&&r.push(`skewY(${i}deg)`),r.join(" ").trim()}_parseTransform(e){if(!e||e==="none")return{baseTransform:"",skewX:0,skewY:0};let t=0,i=0,r=[];for(let n of this._splitTransformFunctions(e)){let o=n.slice(0,n.indexOf("(")).trim().toLowerCase(),l=n.slice(n.indexOf("(")+1,-1).split(",").map(c=>c.trim());o==="skewx"?t=this._parseAngle(l[0]):o==="skewy"?i=this._parseAngle(l[0]):o==="skew"?(t=this._parseAngle(l[0]),l.length>1&&(i=this._parseAngle(l[1]))):r.push(n)}return{baseTransform:r.join(" ").trim(),skewX:t,skewY:i}}_splitTransformFunctions(e){let t=[],i=-1,r=0;for(let n=0;n<e.length;n++){let o=e[n];o==="("?r++:o===")"?(r--,r===0&&i!==-1&&(t.push(e.slice(i,n+1).trim()),i=-1)):r===0&&i===-1&&o.trim()&&(i=n)}return!t.length&&e.trim()&&t.push(e.trim()),t}_parseAngle(e){if(!e)return 0;let t=parseFloat(e);return isNaN(t)?0:e.endsWith("rad")?t*180/Math.PI:e.endsWith("grad")?t*.9:e.endsWith("turn")?t*360:t}dispose(){this._removeAllOverlays()}};import{css as Iy}from"@node-projects/base-custom-webcomponent";var Hm=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new Aa(e,t,i)}static style=Iy`.svg-primary-skew{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto}.svg-primary-skew-line{stroke:#3899ec;fill:none;stroke-width:1}`};lc();cc();hc();dc();nc();sc();Xl();Kl();_h();bh();ld();cd();Zh();Qh();Kh();$h();Dh();Th();jc();vr();nd();sd();Jh();ed();Yh();Xh();Mh();Eh();Ch();Uc();Wt();Wc();en();td();Hh();dd();gs();zc();bd();qh();uc();Mc();pd();xc();qc();Qc();Xs();th();yc();eh();Jc();kh();od();hd();gc();Ll();var Ia=class extends Ci{extendedItem;constructor(e,t){super(e,t)}};ie();import{css as ky}from"@node-projects/base-custom-webcomponent";var ka=class extends Ia{_lineOffset=5;_lineLength=10;_circle;_line1;_line2;_line3;_line4;refresh(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e);this._circle=this._drawCircle(t.x,t.y,1,"svg-cursor-line",this._circle,T.Foreground),this._line1=this._drawLine(t.x,t.y-this._lineOffset,t.x,t.y-this._lineOffset-this._lineLength,"svg-cursor-line",this._line1,T.Foreground),this._line2=this._drawLine(t.x,t.y+this._lineOffset,t.x,t.y+this._lineOffset+this._lineLength,"svg-cursor-line",this._line2,T.Foreground),this._line3=this._drawLine(t.x-this._lineOffset,t.y,t.x-this._lineOffset-this._lineLength,t.y,"svg-cursor-line",this._line3,T.Foreground),this._line4=this._drawLine(t.x+this._lineOffset,t.y,t.x+this._lineOffset+this._lineLength,t.y,"svg-cursor-line",this._line4,T.Foreground)}dispose(){super._removeAllOverlays()}style=ky`.svg-cursor-line{stroke:#000;pointer-events:none}`};import{css as Dy}from"@node-projects/base-custom-webcomponent";var Gm=class{getExtension(e){return new ka(e.extensionManager,e)}style=Dy`.svg-cursor-line{stroke:#000;pointer-events:none}`};import{BaseCustomWebComponentConstructorAppend as Ty,css as My,html as Ny}from"@node-projects/base-custom-webcomponent";var Td=class extends Ty{static style=My`:host{overflow:hidden;display:block;width:100%;height:100%;position:relative}#outerDiv{width:100%;height:100%}#innerDiv{transform-origin:top left;height:100%;width:100%;image-rendering:pixelated}#above{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;background:0 0;cursor:pointer}#viewRect{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #000;pointer-events:none}`;static template=Ny`<div id="outerDiv"><div id="innerDiv"></div></div><div id="above"><div id="viewRect"></div></div>`;_innerDiv;_outerDiv;_above;_instanceServiceContainer;_contentChangedHandler;_maxX=0;_maxY=0;_resizeObserver;_innerShadow;_zoomFactorChangedHandler;_viewRect;_minatureScaleX=1;_minatureScaleY=1;_reRenderFlag=!1;_isDragging=!1;_boundMouseMove;_boundMouseUp;constructor(){super(),this._restoreCachedInititalValues(),this._outerDiv=this._getDomElement("outerDiv"),this._innerDiv=this._getDomElement("innerDiv"),this._viewRect=this._getDomElement("viewRect"),this._above=this._getDomElement("above"),this._innerShadow=this._innerDiv.attachShadow({mode:"open"}),this._boundMouseMove=this._onMouseMove.bind(this),this._boundMouseUp=this._onMouseUp.bind(this),this._above.addEventListener("mousedown",e=>this._onMouseDown(e)),this._resizeObserver=new ResizeObserver(()=>{this._reSize()})}ready(){this._resizeObserver.observe(this)}_reSize(){let e=this._outerDiv.getBoundingClientRect();this._minatureScaleX=e.width/this._maxX,this._minatureScaleY=e.height/this._maxY,this._innerDiv.style.scale=this._minatureScaleX+" "+this._minatureScaleY}async _reRender(){if(this._instanceServiceContainer){let e=this._instanceServiceContainer?.designerCanvas;this._innerShadow.adoptedStyleSheets=[...e.rootDesignItem.element.shadowRoot.adoptedStyleSheets];let t=e.designerPixelSize;this._maxX=t.width,this._maxY=t.height;let i=await this._instanceServiceContainer.designerCanvas.serviceContainer.miniatureViewService.provideMiniatureView(e);this._innerShadow.replaceChildren(i),this._reSize(),this._reDrawRect(),this._reRenderFlag=!1}}_reDrawRect(){let e=this._instanceServiceContainer?.designerCanvas,t=e.canvasOffset,i=e.zoomFactor;this._viewRect.style.left=-t.x/this._maxX*100+"%",this._viewRect.style.top=-t.y/this._maxY*100+"%",this._viewRect.style.width=e.clientWidth/i/this._maxX*100+"%",this._viewRect.style.height=e.clientHeight/i/this._maxY*100+"%"}_onMouseDown(e){this._instanceServiceContainer&&(this._isDragging=!0,this._moveCanvasToMousePosition(e),window.addEventListener("mousemove",this._boundMouseMove),window.addEventListener("mouseup",this._boundMouseUp),e.preventDefault())}_onMouseMove(e){this._isDragging&&(this._moveCanvasToMousePosition(e),e.preventDefault())}_onMouseUp(e){this._isDragging=!1,window.removeEventListener("mousemove",this._boundMouseMove),window.removeEventListener("mouseup",this._boundMouseUp)}_moveCanvasToMousePosition(e){let t=this._instanceServiceContainer.designerCanvas,i=t.zoomFactor,r=this._above.getBoundingClientRect(),n=e.clientX-r.left,o=e.clientY-r.top,a=n/r.width*this._maxX,l=o/r.height*this._maxY,c=t.clientWidth/i/2,h=t.clientHeight/i/2;t.canvasOffset={x:-(a-c),y:-(l-h)}}set instanceServiceContainer(e){this._contentChangedHandler?.dispose(),this._zoomFactorChangedHandler?.dispose(),this._instanceServiceContainer=e,this._instanceServiceContainer?(this._zoomFactorChangedHandler=this._instanceServiceContainer.designerCanvas.onZoomFactorChanged.on(()=>{this._reDrawRect()}),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this._reRenderFlag===!1&&(this._reRenderFlag=!0,setTimeout(()=>this._reRender(),50))}),this._reRenderFlag===!1&&(this._reRenderFlag=!0,setTimeout(()=>this._reRender(),50))):this._innerShadow.innerHTML=""}};customElements.define("node-projects-web-component-designer-miniature-view",Td);ne();import{BaseCustomWebComponentConstructorAppend as Ly,css as Oy,html as Vy}from"@node-projects/base-custom-webcomponent";function Wm(s){if(!s)return"";let e,t=s.nodeName.toLowerCase();return s.id?e="#"+s.getAttribute("id"):s.getAttribute("class")&&(e="."+s.getAttribute("class").split(" ").join(".")),e?t+e:t}var Da=function(s){if(!s||s.nodeName==="HTML"||s.nodeName==="#document")return{node:document.documentElement,reason:"root"};if(s.nodeName==="#document-fragment")return Da(s.host);let e=s.ownerDocument.defaultView.getComputedStyle(s);if(e.position==="fixed"||e.position==="sticky")return{node:s,reason:`position: ${e.position}`};if(e.zIndex!=="auto"&&e.position!=="static")return{node:s,reason:`position: ${e.position}; z-index: ${e.zIndex}`};if(e.opacity!=="1")return{node:s,reason:`opacity: ${e.opacity}`};if(e.transform!=="none")return{node:s,reason:`transform: ${e.transform}`};if(e.scale!=="none")return{node:s,reason:`scale: ${e.scale}`};if(e.translate!=="none")return{node:s,reason:`translate: ${e.translate}`};if(e.rotate!=="none")return{node:s,reason:`rotate: ${e.rotate}`};if(e.mixBlendMode!=="normal")return{node:s,reason:`mixBlendMode: ${e.mixBlendMode}`};if(e.filter!=="none")return{node:s,reason:`filter: ${e.filter}`};if(e.backdropFilter!=="none")return{node:s,reason:`backdropFilter: ${e.backdropFilter}`};if(e.perspective!=="none")return{node:s,reason:`perspective: ${e.perspective}`};if(e.clipPath!=="none")return{node:s,reason:`clip-path: ${e.clipPath} `};let t=e.mask||e.webkitMask;if(t!=="none"&&t!==void 0)return{node:s,reason:`mask: ${t}`};let i=e.maskImage||e.webkitMaskImage;if(i!=="none"&&i!==void 0)return{node:s,reason:`mask-image: ${i}`};let r=e.maskBorder||e.webkitMaskBorder;if(r!=="none"&&r!==void 0)return{node:s,reason:`mask-border: ${r}`};if(e.isolation==="isolate")return{node:s,reason:`isolation: ${e.isolation}`};if(e.willChange==="transform"||e.willChange==="opacity"||e.willChange==="scale"||e.willChange==="translate"||e.willChange==="rotate")return{node:s,reason:`willChange: ${e.willChange}`};if(e.zIndex!=="auto"){let o=s.ownerDocument.defaultView.getComputedStyle(s.parentNode);if(o.display==="flex"||o.display==="inline-flex")return{node:s,reason:`flex-item; z-index: ${e.zIndex}`};if(o.grid!=="none / none / none / row / auto / auto")return{node:s,reason:`child of grid container; z-index: ${e.zIndex}`}}let n=e.contain;return["layout","paint","strict","content"].indexOf(n)>-1||n.indexOf("paint")>-1||n.indexOf("layout")>-1?{node:s,reason:`contain: ${n}`}:Da(s.parentNode)},Md=class extends Ly{static template=Vy`<div><table><tr><th colspan="2">Styling</th></tr><tr><td>display</td><td>[[?this.computedStyle.display]]</td></tr><tr><td>position</td><td>[[?this.computedStyle.position]]</td></tr><tr><td>visibility</td><td>[[?this.computedStyle.visibility]]</td></tr><tr><td>pointerEvents</td><td>[[?this.computedStyle.pointerEvents]]</td></tr><tr><td>zIndex</td><td>[[?this.computedStyle.zIndex]]</td></tr><tr><th colspan="2">Context</th></tr><tr><td>offsetParent</td><td class="lnk" @click="[[this._clickLink(event, 'offsetParent')]]">[[?this.selectedElementOffsetParentText]]</td></tr><tr><td>createsStackingContext</td><td>[[this.createsStackingContext]]</td></tr><tr><td>stackingContextReason</td><td>[[this.createsStackingContextReason]]</td></tr><tr><td>stackingContextParent</td><td class="lnk" @click="[[this._clickLink(event, 'stackingContextParent')]]">[[?this.parentStackingContextText]]</td></tr></table></div>`;static style=Oy`:host{overflow:auto;height:100%;display:block;font-size:12px}table{font-family:Arial,Helvetica,sans-serif;border-collapse:collapse;width:100%}table td,table th{border:1px solid #ddd;padding:2px 4px}table tr:nth-child(even){background-color:#f2f2f2}table tr:hover{background-color:#ddd}table th{text-align:left;background-color:#989898;color:#fff}.lnk{color:#00f}.lnk:hover{text-decoration:underline;cursor:pointer}`;_ready;computedStyle;createsStackingContext="";createsStackingContextReason="";parentStackingContext;parentStackingContextText;selectedElementOffsetParent;selectedElementOffsetParentText;constructor(){super(),this._restoreCachedInititalValues()}ready(){this._parseAttributesToProperties(),this._bindingsParse(),this._ready=!0}_clickLink(e,t){if(t=="offsetParent"){if(this.selectedElementOffsetParent){let i=M.GetDesignItem(this.selectedElementOffsetParent);i.instanceServiceContainer.selectionService.setSelectedElements([i])}}else if(t=="stackingContextParent"&&this.parentStackingContext){let i=M.GetDesignItem(this.parentStackingContext);i.instanceServiceContainer.selectionService.setSelectedElements([i])}}update(e){this._ready&&requestAnimationFrame(()=>{let t=e?.element;if(t?.nodeType==3&&(t=t.parentNode),t&&t.nodeType!=8&&t.nodeType!=11){if(this.computedStyle=t.ownerDocument.defaultView.getComputedStyle(t),this.selectedElementOffsetParent=t.offsetParent,this.selectedElementOffsetParent==e.instanceServiceContainer.designerCanvas.rootDesignItem.element||this.selectedElementOffsetParent==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement?(this.selectedElementOffsetParentText=null,this.selectedElementOffsetParent=null):this.selectedElementOffsetParentText=Wm(t.offsetParent),t&&t.nodeType===1){let i=Da(t);this.createsStackingContext=t===i.node,this.createsStackingContextReason=this.createsStackingContext?i.reason:"not a stacking context",this.parentStackingContext=i.node,this.createsStackingContext&&t.nodeName!=="HTML"&&(this.parentStackingContext=Da(t.parentNode).node),this.parentStackingContext==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement||this.parentStackingContext==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement.parentElement?(this.parentStackingContextText=null,this.parentStackingContext=null):this.parentStackingContextText=Wm(this.parentStackingContext)}}else this.computedStyle={},this.createsStackingContext=!1,this.createsStackingContextReason="",this.createsStackingContext=!1,this.selectedElementOffsetParent=null,this.selectedElementOffsetParentText=null,this.parentStackingContext=null,this.parentStackingContextText=null;this._bindingsRefresh()})}};customElements.define("node-projects-debug-view",Md);import{BaseCustomWebComponentConstructorAppend as Ry,css as zy,html as Fy}from"@node-projects/base-custom-webcomponent";var Ta=class extends Ry{static template=Fy`<div id="root"><div class="search"><span>search</span> <input style="flex-grow:1;min-width:0" value="{{this.searchText}}"> <span>replace</span> <input style="flex-grow:1;min-width:0" value="{{this.replaceText}}"> <button @click="[[this.replace()]]" style="grid-column:2">replace</button></div><hr><template repeat:item="[[this.refactorings]]"><details open><summary>[[item[1][0].itemType]]-name:<input value="[[item[1][0].name]]" @keydown="[[this._refactor(item, event)]]" style="flex-grow:1;min-width:0"></summary><ul><template repeat:reft="[[item[1]]]"><li>[[reft.type]]/[[reft.display]]</li></template></ul></details></template></div>`;static style=zy`:host{box-sizing:border-box;font-family:monospace;height:100%;width:100%;position:absolute;overflow:hidden}.search{display:grid;grid-template-columns:40px 1fr;align-items:center}span{font-size:10px}summary{cursor:pointer;font-size:10px;display:flex;align-items:center;white-space:nowrap}ul{margin:4px;padding-left:20px;font-size:10px}#root{padding:5px;display:flex;flex-direction:column;gap:4px;overflow-y:auto;height:calc(100% - 10px)}`;static is="node-projects-refactor-view";static properties={};_instanceServiceContainer;_selectionChangedHandler;_selectedItems;searchText="(.*)";replaceText="$1";refactorings=new Map;ready(){this._bindingsParse()}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectedItems=t.selectedElements}),this.selectedItems=this._instanceServiceContainer.selectionService.selectedElements}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems!=e&&(this._selectedItems=e,this.updateRefactorlist(this._selectedItems))}replace(){let e=null;for(let t of this.refactorings){let i=t[1][0].name,r=new RegExp(this.searchText);if(i.match(r)){e||(e=t[1][0].designItem.openGroup("refactor with regex "+this.searchText+" -> "+this.replaceText));let o=i.replace(r,this.replaceText);o!=i&&this.applyRefactoring(t,o)}}e||e.commit()}_refactor(e,t){let i=t.target;t.key=="Enter"&&this.applyRefactoring(e,i.value)}applyRefactoring(e,t){let i=e[1][0].designItem.openGroup("refactor "+e[1][0].name+" to "+t);for(let r of e[1])r.service.refactor(r,r.name,t);i.commit()}updateRefactorlist(e){if(this.refactorings.clear(),e&&e.length){let t=[],i=e[0].serviceContainer;for(let r of i.refactorServices){let n=r.getRefactorings(e);t.push(...n)}for(let r of t){let n=this.refactorings.get(r.itemType+"|"+r.name);n===void 0&&(n=[],this.refactorings.set(r.itemType+"|"+r.name,n)),n.push(r)}}this._bindingsRefresh()}};customElements.define(Ta.is,Ta);Fa();se();gt();import{BaseCustomWebComponentLazyAppend as By,css as Hy,html as Gy}from"@node-projects/base-custom-webcomponent";var Mr=class extends By{static style=Hy`:host{display:block;box-sizing:border-box;height:100%;overflow:auto}button{background-color:transparent;color:#fff;border:none;font-size:13px;display:block;cursor:pointer;width:100%;text-align:left;padding:8px 14px}button:hover{background:var(--light-grey,#383f52)}table{width:100%}td{color:#fff;font-size:13px}div{text-transform:uppercase;font-size:12px;font-weight:700;padding:4px 14px}`;static template=Gy`<table id="table"></table>`;_table;constructor(){super(),this._table=this._getDomElement("table")}loadElements(e,t,i){for(let r of t){let n=document.createElement("tr"),o=document.createElement("td"),a=document.createElement("button");if(a.setAttribute("part","button"),r.icon&&!r.displayHtml){let c=r.icon;r.icon.startsWith("data:")||(c=i+r.icon),a.innerHTML='<table><tr><td align="left" valign="middle" style="width:20px;"><img style="width:16px;height:16px" src="'+c+'"></td><td align="left" >'+r.tag+`</td></tr></table>
14
+ `}else r.displayHtml?a.innerHTML=r.displayHtml:a.innerText=r.name?r.name:r.tag;a.draggable=!0,a.ondragstart=c=>{if(c.dataTransfer.setData(vi,JSON.stringify(r)),c.currentTarget.style.outline="dashed",r.ghostElement)if(typeof r.ghostElement=="string"){let h=document.createRange();h.selectNode(document.body);let p=h.createContextualFragment(r.ghostElement).firstChild;p.style.position="absolute",p.style.top="-1000px",document.body.appendChild(p),c.dataTransfer.setDragImage(p,0,0),requestAnimationFrame(()=>document.body.removeChild(p))}else c.dataTransfer.setDragImage(r.ghostElement,0,0);else if(!r.import)try{let h=document.createElement(r.tag);if(r.defaultContent&&(h.innerHTML=r.defaultContent),r.defaultWidth&&(h.style.width=r.defaultWidth),r.defaultHeight&&(h.style.height=r.defaultHeight),r.defaultAttributes)for(let p in r.defaultAttributes)h.setAttribute(p,r.defaultAttributes[p]);if(r.defaultStyles)for(let p in r.defaultStyles)h.style[p]=r.defaultStyles[p];h.style.position="absolute",r.defaultWidth?h.style.top="-"+(parseInt(r.defaultHeight)+500)+"px":h.style.top="-500px",r.defaultWidth?h.style.left="-"+(parseInt(r.defaultWidth)+500)+"px":h.style.left="-500px",document.body.appendChild(h);let d=h.getBoundingClientRect();d.width>0&&d.height>0&&c.dataTransfer.setDragImage(h,0,0),requestAnimationFrame(()=>document.body.removeChild(h))}catch(h){console.warn("error creating gost elment",h)}},a.ondragend=c=>{r.import=null,c.currentTarget.style.outline="none"},a.ontouchstart=c=>{c.preventDefault()},a.onclick=c=>{let h=e.designerTools.get(r.tool??K.DrawElementTool);typeof h=="function"&&(h=new h(r)),e.globalContext.tool=h},o.appendChild(a),n.appendChild(o);let l=document.createElement("td");l.innerText=r.description??"",n.appendChild(l),this._table.appendChild(n)}}};customElements.define("node-projects-palette-elements",Mr);import{BaseCustomWebComponentLazyAppend as Wy,css as jy}from"@node-projects/base-custom-webcomponent";var Nd=class extends Wy{selected="native";_designerTabControl;static style=jy`:host{display:flex;flex-direction:column;flex:1;height:100%}`;constructor(){super(),this._restoreCachedInititalValues(),this._designerTabControl=new dt,this._designerTabControl.selectedIndex=0,this.shadowRoot.appendChild(this._designerTabControl)}async loadControls(e,t){this._designerTabControl.innerHTML="";for(let i of t)try{let r=await i.getElements(),n=new Mr;n.title=i.name,this._designerTabControl.appendChild(n),n.loadElements(e,r)}catch(r){console.warn("Error loading elements",r)}this._designerTabControl.refreshItems()}};customElements.define("node-projects-palette-view",Nd);ne();import{BaseCustomWebComponentLazyAppend as Uy,css as Yy}from"@node-projects/base-custom-webcomponent";var Ld=class extends Uy{_items;_index;_previouslySelected;_treeDiv;_instanceServiceContainer;_selectionChangedHandler;_contentChangedHandler;_mapElementTreeitem;_rootItem;static style=Yy`:host{--horz-margin:20px;--vert-margin:0px;--horz-shift:calc(var(--horz-margin) / 2);--vert-shift:12px;display:inline-block;position:relative;width:100%;height:100%;background:var(--dark-grey,#232733);overflow-y:auto}button{border:none;font-size:13px;display:block;padding:4px 0;cursor:pointer;width:100%;text-align:left;display:inline-block;margin:0;background:var(--dark-grey,#232733);position:relative;color:#fff}button:focus,button:hover{background:var(--light-grey,#383f52)}span{margin:4px}.id{font-style:italic;color:var(--highlight-pink,#e91e63)}.selected{background:var(--light-grey,#383f52);outline:0}li,ul{margin:0;padding:0}.tree ul{margin-left:var(--horz-margin)}.tree li{list-style-type:none;margin-top:var(--vert-margin);margin-bottom:var(--vert-margin);position:relative}.tree li::before{content:"";position:absolute;top:calc(0px - var(--vert-margin));left:calc(var(--horz-shift) - var(--horz-margin));width:calc(var(--horz-margin) - var(--horz-shift));height:calc(var(--vert-shift) + var(--vert-margin));border-left:1px solid #ccc;border-bottom:1px solid #ccc;border-radius:0}.tree li::after{position:absolute;content:"";top:var(--vert-shift);left:calc(var(--horz-shift) - var(--horz-margin));width:calc(var(--horz-margin) - var(--horz-shift));height:calc(100% - var(--vert-shift));border-left:1px solid #ccc;border-top:1px solid #ccc;border-radius:0}ul.tree>li:first-child::before{display:none}.tree li:last-child::after{display:none}ul.tree>li:first-child::after{border-radius:5px 0 0 0}.tree li:last-child:before{border-radius:0 0 0 5px}`;constructor(){super(),this._restoreCachedInititalValues(),this._treeDiv=document.createElement("div"),this._treeDiv.style.userSelect="none",this.shadowRoot.appendChild(this._treeDiv),this._treeDiv.addEventListener("click",this._clickElement.bind(this))}createTree(e){this._rootItem=e,e!=null&&this._recomputeTree(e.element,null)}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectionChanged(t)}),this._contentChangedHandler?.dispose(),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this.createTree(e.designerCanvas.rootDesignItem)}),this.createTree(e.designerCanvas.rootDesignItem)}selectionChanged(e){this._selectTreeElements(e.selectedElements.map(t=>this._mapElementTreeitem.get(t.element)))}_recomputeTree(e,t){this._mapElementTreeitem=new Map,this._treeDiv.innerHTML="";let i=document.createElement("ul");return i.classList.add("tree"),this._treeDiv.appendChild(i),this._index=0,this._items=this._getChildren(e,i),this._highlight(t),this._items}_makeButton(e,t,i){let r=document.createElement("button");r.dataset.index=i;let n=document.createElement("span");n.className="tag",n.textContent=e;let o=document.createElement("span");return o.className="id",o.textContent=t,r.appendChild(n),r.appendChild(o),r}_getChildren(e,t){let i=e.id==="viewContainer",r={tag:i?"main-app":e.tagName.toLowerCase(),id:i?"":e.id?"#"+e.id:"",text:i?"":'"'+e.textContent+'"',ref:e,index:this._index},n=document.createElement("li"),o=this._makeButton(r.tag,r.id,r.index);n.appendChild(o),t.appendChild(n),this._mapElementTreeitem.set(r.ref,o),this._index++;let a=[r],l=null;for(let c=0;c<e.children.length;c++){let h=e.children[c];h.localName!=="style"&&(l==null&&(l=document.createElement("ul"),n.appendChild(l)),a=a.concat(this._getChildren(h,l)))}return a}_clickElement(e){let t=e.target;t.localName==="span"&&(t=t.parentElement),this._selectTreeElements([t]),this._selectDesignerElement(t)}_selectTreeElements(e){if(this._previouslySelected)for(let t of this._previouslySelected)t&&t.classList.remove("selected");if(this._previouslySelected=e,e)for(let t of e)t&&t.classList.add("selected")}_selectDesignerElement(e){let t=e.dataset.index,i=this._items[t].ref,r=M.GetOrCreateDesignItem(i,i,this._rootItem.serviceContainer,this._rootItem.instanceServiceContainer);r.instanceServiceContainer.selectionService.setSelectedElements([r])}_highlight(e){if(!e)return;let t=this.shadowRoot.querySelectorAll("button");if(t.length===this._items.length){for(let i=0;i<this._items.length;i++)if(this._items[i].ref===e){this._selectTreeElements([t[i]]);return}}}};customElements.define("node-projects-tree-view",Ld);Ba();import{BaseCustomWebComponentLazyAppend as Zy,css as Qy,cssFromString as qy,debounce as Jy,TypedEvent as Od}from"@node-projects/base-custom-webcomponent";import{BaseCustomWebComponentConstructorAppend as Xy,css as Ky,html as $y}from"@node-projects/base-custom-webcomponent";var Nr=class extends Xy{static style=Ky`:host{display:block}#split{position:relative;height:100%;width:100%;grid-template-rows:calc(var(--split) * 1%) 5px calc(((100 - var(--split)) * 1%) - 5px);grid-template-columns:100%;display:grid;align-items:center}#splitter{user-select:none;-webkit-user-select:none}:host(:not([orientation=vertical]))>div>#splitter{cursor:ew-resize;width:5px}:host([orientation=vertical])>div>#splitter{cursor:ns-resize;height:5px}`;static template=$y`<div id="split" style="--split:50"><slot name="top"></slot><div id="splitter"></div><slot name="bottom"></slot></div>`;static properties={orientation:String};orientation="vertical";constructor(){super()}ready(){this._parseAttributesToProperties(),this.setAttribute("orientation",this.orientation);let e=this._getDomElement("split"),t=this._getDomElement("splitter"),i=null;t.addEventListener("pointerdown",r=>{t.setPointerCapture(r.pointerId),i=!0}),t.addEventListener("pointerup",r=>{t.releasePointerCapture(r.pointerId),i=null}),t.addEventListener("pointermove",r=>{if(i!==null){let n=parseFloat(e.style.getPropertyValue("--split"));this.orientation==="horizontal"?n+=r.movementX*100/e.clientWidth:n+=r.movementY*100/e.clientHeight,isNaN(n)||e.style.setProperty("--split",n)}})}};customElements.define("node-projects-simple-split-view",Nr);Ne();$e();var H;(function(s){s[s.designer=0]="designer",s[s.code=1]="code",s[s.split=2]="split",s[s.preview=3]="preview"})(H||(H={}));var Vd=class extends Zy{designerView;codeView;demoView;additionalData;_firstLoad=!0;_stylesheetChangedEventRegistered;_additionalStyle;set additionalStyleString(e){this._additionalStyle=e,this.designerView.additionalStyles=[qy(e)]}get additionalStyleString(){return this._additionalStyle}_additionalStyles;set additionalStyles(e){this._additionalStyles=e,this.designerView.additionalStyles=this._additionalStyles}get additionalStyles(){return this._additionalStyles}_additionalStylesheets;set additionalStylesheets(e){this._additionalStylesheets=e,this.designerView.instanceServiceContainer.stylesheetService&&(this.designerView.instanceServiceContainer.stylesheetService.setStylesheets(e),this._stylesheetChangedEventRegistered||(this._stylesheetChangedEventRegistered=!0,this.designerView.instanceServiceContainer.stylesheetService.stylesheetChanged.on(t=>this.additionalStylesheetChanged.emit({name:t.name,newStyle:t.newStyle,oldStyle:t.oldStyle,changeSource:t.changeSource}))))}get additionalStylesheets(){return this._additionalStylesheets}additionalStylesheetChanged=new Od;get readOnly(){return this.designerView?.readOnly}set readOnly(e){this.designerView&&(this.designerView.readOnly=e),this.codeView&&(this.codeView.readOnly=e)}onContentChanged=new Od;onTabChanged=new Od;_contentChangeSource="designer";_serviceContainer;_content="";_tabControl;_selectionPosition;_splitDiv;_designerDiv;_codeDiv;refreshInSplitViewDebounced;_disableChangeNotificationDesigner;_disableChangeNotificationEditor;static get style(){return Qy`div{height:100%;display:flex;flex-direction:column}node-projects-designer-view{height:100%;overflow:hidden}`}constructor(e,t,i=!1){super(),this.refreshInSplitViewDebounced=Jy(this.refreshInSplitView,200),this._serviceContainer=e,t!=null&&(this._content=t);let r=document.createElement("div");this._tabControl=new dt,r.appendChild(this._tabControl),this.designerView=new ti(i),this.designerView.setAttribute("exportparts","canvas"),this.designerView.slot="top",this._designerDiv=document.createElement("div"),this._tabControl.appendChild(this._designerDiv),this._designerDiv.appendChild(this.designerView),this._designerDiv.dataset.title="Designer",this.designerView.initialize(this._serviceContainer),this.designerView.instanceServiceContainer.documentContainer=this,this.designerView.instanceServiceContainer.selectionService.onSelectionChanged.on(n=>this.designerSelectionChanged(n)),this.designerView.instanceServiceContainer.onContentChanged.on(()=>this.designerContentChanged()),this.codeView=new e.config.codeViewWidget,this.codeView.slot="bottom",this.codeView.style.position="relative",this._codeDiv=document.createElement("div"),this._tabControl.appendChild(this._codeDiv),this._codeDiv.style.position="relative",this._codeDiv.appendChild(this.codeView),this._codeDiv.dataset.title="Code",this.codeView.onTextChanged.on(n=>{this._disableChangeNotificationDesigner||(this._tabControl.selectedIndex===H.code||this._tabControl.selectedIndex===H.split)&&(this._disableChangeNotificationEditor=!0,this._content=n,this.refreshInSplitViewDebounced())}),this._splitDiv=new Nr,this._splitDiv.style.height="100%",this._splitDiv.dataset.title="Split",this._tabControl.appendChild(this._splitDiv),e.config.demoViewWidget&&(this.demoView=new e.config.demoViewWidget,this.demoView.dataset.title="Preview",this._tabControl.appendChild(this.demoView)),queueMicrotask(()=>{this.shadowRoot.appendChild(r),this._tabControl.selectedIndex=H.designer})}async refreshInSplitView(){try{await this.updateDesignerHtml()}catch(e){console.error(e)}this._disableChangeNotificationEditor=!1}get currentView(){return this._tabControl.selectedIndex==H.designer?"designer":this._tabControl.selectedIndex==H.split?"split":this._tabControl.selectedIndex==H.code?"code":this._tabControl.selectedIndex==H.preview?"preview":null}set currentView(e){e=="designer"&&(this._tabControl.selectedIndex=H.designer),e=="split"&&(this._tabControl.selectedIndex=H.split),e=="code"&&(this._tabControl.selectedIndex=H.code),e=="preview"&&(this._tabControl.selectedIndex=H.preview)}designerSelectionChanged(e){if(this._tabControl.selectedIndex===H.split){let t=this.instanceServiceContainer.selectionService.primarySelection;t&&this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(t),this._selectionPosition&&this.codeView.setSelection(this._selectionPosition),this._selectionPosition=null)}}designerContentChanged(){if(this.onContentChanged.emit({source:this._contentChangeSource}),!this._disableChangeNotificationEditor){if(this._disableChangeNotificationDesigner=!0,this._tabControl.selectedIndex===H.code||this._tabControl.selectedIndex===H.split){let e=this.instanceServiceContainer.selectionService.primarySelection;this._content=this.designerView.getDesignerHTML(),this.codeView.update(this._content,this.designerView.instanceServiceContainer),e&&this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(e),this._selectionPosition&&this.codeView.setSelection(this._selectionPosition),this._selectionPosition=null)}this._disableChangeNotificationDesigner=!1}}dispose(){this.designerView?.instanceServiceContainer?.collaborationService&&(this.designerView.instanceServiceContainer.collaborationService.disconnect(),this.designerView.instanceServiceContainer.collaborationService.detachTransport()),this.codeView.dispose(),this.demoView.dispose()}executeCommand(e){this._tabControl.selectedIndex===H.designer||this._tabControl.selectedIndex===H.split?this.designerView.executeCommand(e):this._tabControl.selectedIndex===H.code?this.codeView.executeCommand(e):this._tabControl.selectedIndex===H.preview&&this.demoView.executeCommand(e)}canExecuteCommand(e){if(this._tabControl.selectedIndex===H.designer||this._tabControl.selectedIndex===H.split){if(this.designerView?.canExecuteCommand)return this.designerView.canExecuteCommand(e)}else if(this._tabControl.selectedIndex===H.code){if(this.codeView?.canExecuteCommand)return this.codeView.canExecuteCommand(e)}else if(this._tabControl.selectedIndex===H.preview&&this.demoView?.canExecuteCommand)return this.demoView.canExecuteCommand(e);return!1}async setContentAsync(e){this._content=e,this._tabControl&&(this._tabControl.selectedIndex===H.designer?await this.updateDesignerHtml():this._tabControl.selectedIndex===H.code?this.codeView.update(this._content,this.designerView.instanceServiceContainer):this._tabControl.selectedIndex===H.split||this._tabControl.selectedIndex===H.preview&&this.demoView.display(this._serviceContainer,this.designerView.instanceServiceContainer,this._content,this.additionalStyleString))}set content(e){this.setContentAsync(e)}get content(){return this._tabControl?(this._tabControl.selectedIndex===H.designer?this._content=this.designerView.getDesignerHTML():this._tabControl.selectedIndex===H.code&&(this._content=this.codeView.getText()),this._content):null}ready(){this._tabControl.onSelectedTabChanged.on(e=>{if(e.oldIndex===H.designer){let t=this.instanceServiceContainer.selectionService.primarySelection;this._content=this.designerView.getDesignerHTML(),this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(t))}else e.oldIndex===H.code?this._content=this.codeView.getText():e.oldIndex===H.split?(this._designerDiv.appendChild(this.designerView),this._codeDiv.appendChild(this.codeView)):e.oldIndex===H.preview&&this.demoView?.stopDisplay&&this.demoView.stopDisplay();(e.newIndex===H.designer||e.newIndex===H.split)&&this.updateDesignerHtml(),(e.newIndex===H.code||e.newIndex===H.split)&&(this.codeView.update(this._content,this.designerView.instanceServiceContainer),this._selectionPosition&&(this.codeView.setSelection(this._selectionPosition),mt(20).then(t=>{this._selectionPosition&&this.codeView.setSelection(this._selectionPosition),this._selectionPosition=null})),e.changedViaClick&&this.codeView.focusEditor()),e.newIndex===H.split&&(this._splitDiv.appendChild(this.designerView),this._splitDiv.appendChild(this.codeView)),e.newIndex===H.preview&&this.demoView.display(this._serviceContainer,this.designerView.instanceServiceContainer,this._content,this.additionalStyleString),this._content&&(this._firstLoad=!1),this.onTabChanged.emit({oldTab:H[e.oldIndex],newTab:H[e.newIndex]})}),this._content&&(this.content=this._content,this._firstLoad=!1)}async updateDesignerHtml(){if(this._firstLoad)return this.designerView.parseDesignerHTML(this._content,this._firstLoad);if(this.designerView.getDesignerHTML()!=this._content){this._contentChangeSource="code",await this.designerView.parseDesignerHTML(this._content,this._firstLoad),this._contentChangeSource="designer";return}else this.instanceServiceContainer.undoService.clearTransactionstackIfNotEmpty(),this.designerView.designerCanvas.overlayLayer.removeAllOverlays(),this.designerView.designerCanvas.extensionManager.reapplyAllAppliedExtentions(null,[P.Permanent,P.Selection,P.PrimarySelection,P.PrimarySelectionContainer,P.OnlyOneItemSelected,P.MultipleItemsSelected])}get instanceServiceContainer(){return this.designerView.instanceServiceContainer}};customElements.define("node-projects-document-container",Vd);he();tc();bt();se();pa();export{ya as AbsolutePlacementService,Vt as AbstractBaseToolPopup,Li as AbstractCssPropertiesService,We as AbstractDesignViewConfigButton,Ia as AbstractDesignerPointerExtension,z as AbstractExtension,Ws as AbstractHtmlWriterService,it as AbstractPolymerLikePropertiesService,ee as AbstractPropertiesService,_a as AbstractStylesheetService,$o as AlignItemsContextMenu,_s as AltToEnterContainerExtension,bs as AltToEnterContainerExtensionProvider,om as AlwaysAbsolutePlacementService,Oi as ApplyFirstMachingExtensionProvider,no as AttachedPropertiesService,ir as AttributeAndPropertyChangeAction,er as AttributeChangeAction,Ni as AttributesPropertiesService,Sn as BaseCustomWebComponentPropertiesService,sm as BaseCustomWebcomponentBindingsService,hm as BaseCustomWebcomponentDesignItemService,te as BasePropertyEditor,oi as BaseServiceContainer,ca as BasicContextMenu,Be as BasicStackedToolbarExtension,Zo as BasicWebcomponentPropertiesService,nm as BindableObjectType,kr as BindingMode,L as BindingTarget,xm as BindingsRefactorService,Bo as BlockToolbarExtension,Ho as BlockToolbarExtensionProvider,pn as BooleanPropertyEditor,wt as ButtonSeperatorProvider,vo as ChangeGroup,Jt as ChildContextMenu,ta as ChildrenContextMenu,qi as CodeViewSimple,an as ColorPropertyEditor,A as CommandType,Ge as CommonPropertiesService,Ct as ConditionExtensionProvider,va as ContentAndIdPropertiesService,be as ContextMenu,lm as CopyPasteAsJsonService,hs as CopyPasteContextMenu,Os as CopyPasteService,$r as CssAttributeParser,zm as CssClipPathGeometryReader,Mi as CssCombiner,Qt as CssCurrentPropertiesService,qt as CssCustomPropertiesService,Kr as CssEntry,Bm as CssOffsetPathGeometryReader,Ve as CssPropertiesService,Fm as CssShapeOutsideGeometryReader,ci as CssStyleChangeAction,ka as CursorLinePointerExtension,Gm as CursorLinePointerExtensionProvider,ln as DatePropertyEditor,Md as DebugView,Dd as DefaultConfiguredDesignerView,bn as DefaultEditorTypesService,Nt as DefaultHtmlParserService,on as DefaultInstanceService,Vs as DefaultModelCommandService,nt as DefaultPlacementService,ra as DeleteAction,na as DeletionService,Zi as DemoView,M as DesignItem,Eo as DesignItemDocumentPositionService,zi as DesignItemService,Wi as DesignerCanvas,dt as DesignerTabControl,Tr as DesignerToolbar,ge as DesignerToolbarButton,ti as DesignerView,Rs as DisplayGridExtension,Zt as DisplayGridExtensionProvider,aa as DisplayMediaPngWriterService,Vd as DocumentContainer,Q as DomConverter,ko as DragDropService,To as DrawElementTool,Bs as DrawEllipsisTool,Hs as DrawLineTool,qn as DrawPathTool,Fs as DrawRectTool,eo as DrawToolButtonProvider,br as DrawToolPopup,wo as EditGridColumnRowSizesExtension,Co as EditGridColumnRowSizesExtensionProvider,Ti as EditTextExtension,Ts as EditTextExtensionProvider,am as ElectronPngWriterService,As as ElementAtPointService,Re as ElementDisplayType,On as ElementDragTitleExtension,Vn as ElementDragTitleExtensionProvider,C as EventNames,ke as EventsService,Pa as ExtensionManager,P as ExtensionType,Ds as ExternalDragDropService,Is as FlexBoxPlacementService,zo as FlexToolbarExtension,Fo as FlexToolbarExtensionProvider,uo as FlexboxExtension,go as FlexboxExtensionDesignViewConfigButtons,Er as FlexboxExtensionProvider,Jo as ForceCssContextMenu,mm as FormatingHtmlWriterService,ro as GrayOutDragOverContainerExtension,wr as GrayOutDragOverContainerExtensionProvider,vs as GrayOutExtension,xs as GrayOutExtensionProvider,so as GridAssignedRowColumnPropertyEditor,Xo as GridChildResizeExtension,Ko as GridChildResizeExtensionProvider,Go as GridChildToolbarExtension,Wo as GridChildToolbarExtensionProvider,zs as GridExtensionDesignViewConfigButtons,Ps as GridPlacementService,Vo as GridToolbarExtension,Ro as GridToolbarExtensionProvider,Kn as HighlightElementExtension,$n as HighlightElementExtensionProvider,js as HtmlWriterService,cm as IframeDemoProviderService,mn as ImageButtonListPropertyEditor,Zr as IndentedTextWriter,ve as InsertAction,Dt as InsertChildAction,Ca as InstanceServiceContainer,Ss as InvisibleElementExtension,yo as InvisibleElementExtensionDesignViewConfigButtons,ws as InvisibleElementExtensionProvider,Es as ItemsBelowContextMenu,dm as JsonFileElementsService,cn as JsonPropertyEditor,gm as JsonPropertyPopupEditor,So as JumpToElementContextMenu,ym as ListPropertiesService,Ln as Lit2PropertiesService,Ur as LitElementPropertiesService,us as MagicWandSelectorTool,jn as MarginExtension,Un as MarginExtensionProvider,Vi as MarginTool,No as MathMLElementsPropertiesService,oo as MetricsPropertyEditor,Td as MiniatureView,sa as MiniatureViewService,fm as MultiplayerService,ms as MultipleItemsSelectedContextMenu,Ao as MultipleSelectionRectExtension,Io as MultipleSelectionRectExtensionProvider,K as NamedTools,Yr as NativeElementsPropertiesService,I as NodeType,rm as NpmPackageLoader,hn as NumberPropertyEditor,$i as NumericStyleInput,ma as ObservedCustomElementsRegistry,ea as OptionsContextMenuButton,T as OverlayLayer,Gi as OverlayLayerView,Uo as PaddingExtension,Yo as PaddingExtensionProvider,Ri as PaddingTool,Mr as PaletteElements,Nd as PaletteView,cs as PanTool,ds as PasteFormatContextMenu,Ys as PathContextMenu,fs as PickColorTool,po as PlacementExtension,mo as PlacementExtensionProvider,za as PlainScrollbar,xe as PointerActionType,Zn as PointerTool,qs as PointerToolButtonProvider,_r as PointerToolPopup,jr as PolymerPropertiesService,Yn as PositionExtension,Xn as PositionExtensionProvider,fa as PreDefinedElementsService,Qo as PreviousElementSelectExtension,qo as PreviousElementSelectExtensionProvider,Fi as ProjectiveTransformExtension,da as ProjectiveTransformExtensionProvider,R as PropertiesHelper,rn as PropertyChangeAction,Ad as PropertyGrid,He as PropertyGridPropertyList,Id as PropertyGridWithHeader,ho as PropertyGroupsService,x as PropertyType,Us as RectContextMenu,fr as RectangleSelectorTool,Ta as RefactorView,B as RefreshMode,ts as ResizeExtension,is as ResizeExtensionProvider,ns as RotateExtension,ss as RotateExtensionProvider,os as RotateGroupExtension,as as RotateGroupExtensionProvider,Zs as RotateLeftAndRight,Mo as RoundPixelsDesignViewConfigButton,Xr as SVGElementsPropertiesService,ei as Screenshot,la as SearchService,_ as SegmentType,Qs as SelectAllChildrenContextMenu,rr as SelectPropertyEditor,Jn as SelectionDefaultExtension,es as SelectionDefaultExtensionProvider,bo as SelectionService,Sr as SelectionToolPopup,io as SelectorToolButtonProvider,Ie as SeperatorContextMenu,at as SeperatorToolProvider,Br as ServiceContainer,Sa as SetDesignItemsAction,Do as SimpleDemoProviderService,Ir as SimpleToolButtonProvider,Aa as SkewExtension,Hm as SkewExtensionProvider,ks as SnaplinesProviderService,ba as StylesheetChangedAction,qr as StylesheetServiceDesignViewConfigButtons,In as SvgCircleGeometryReader,An as SvgEllipseGeometryReader,Pn as SvgLineGeometryReader,lr as SvgPathGeometryReader,kn as SvgPolygonGeometryReader,Dn as SvgPolylineGeometryReader,En as SvgRectGeometryReader,tn as TextContentChangeAction,dn as TextPropertyEditor,_m as TextRefactorService,ys as TextTool,to as TextToolButtonProvider,fn as ThicknessPropertyEditor,jo as ToolbarExtensionsDesignViewConfigButtons,ua as TouchGestureHelper,Gn as TransformOriginExtension,Wn as TransformOriginExtensionProvider,Po as TransformToolButtonProvider,Pr as TransformToolPopup,Ld as TreeView,xo as UndoService,Lo as UnifiedGeometryExtension,Oo as UnifiedGeometryExtensionProvider,_n as UnitPropertyEditor,vm as UnkownElementsPropertiesService,G as ValueType,ga as WebcomponentManifestElementsService,pm as WebcomponentManifestEventsService,um as WebcomponentManifestParserService,Bi as WebcomponentManifestPropertiesService,ps as ZMoveContextMenu,$s as ZoomToElementContextMenu,ls as ZoomTool,Js as ZoomToolButtonProvider,kx as arraysEqual,w as assetsPath,lt as basicStackedToolbarExtensionOverlayOptionName,fp as calculateAlpha,bi as calculateNormLegth,Gt as calculateOuterRect,Pd as calculateSpecificity,si as combineNumericStyleInputValue,P0 as copyTextToClipboard,gr as copyToClipboard,tm as createDefaultServiceContainer,oC as createPasteFormatSnapshot,Hp as createPasteFormatSnapshotFromEntries,ar as createPathD,Ax as dataURItoBlob,Jd as deepValue,Yt as dragDropFormatNameBindingObject,vi as dragDropFormatNameElementDefinition,dl as dragDropFormatNamePropertyGrid,Jr as enableStylesheetService,qd as exportData,ce as filterChildPlaceItems,Tl as filterNonElementItems,wh as flexboxExtensionShowOverlayOptionName,hi as forceActiveAttributeName,pi as forceFocusAttributeName,ui as forceFocusVisibleAttributeName,mi as forceFocusWithinAttributeName,ut as forceHoverAttributeName,di as forceVisitedAttributeName,Lr as formatNumericStyleInputNumber,Dv as getActiveElement,Y as getBoundingClientRectAlsoForDisplayContents,Kg as getCollaborationNodeIndex,WN as getCollaborationNodeIndexes,Kd as getContentBoxContentOffsets,kb as getCustomGeometryReader,jN as getDesignItemByCollaborationNodeIndex,Mn as getDesignItemCurrentPos,Fp as getEdgeMidpoint,Oe as getEdgeOffsetPoint,Xd as getElementDisplaytype,Tv as getElementOffsetParent,Mv as getElementOffsetsInContainer,Wr as getElementZoomFactor,Nv as getElementsWindowOffsetWithoutSelfAndParentTransformations,Ns as getFromClipboard,Mt as getGeometryReader,Wf as getOutwardNormal,Yd as getParentElementIncludingSlots,Gp as getPasteFormatEntries,Di as getQuadCenter,Ms as getTextFromClipboard,yr as gridExtensionShowOverlayOptionName,W as hasCommandKey,fi as hideAtDesignTimeAttributeName,gi as hideAtRunTimeAttributeName,Zd as htmlAsString,kv as inDesigner,It as instanceOf,Ji as instanceOfAny,Tc as invisibleElementExtensionShowOverlayOptionName,Qd as isAppleDevice,Gr as isEmptyTextNode,nn as isFirefox,kt as isInline,Ht as isInlineAfter,Ut as lockAtDesignTimeAttributeName,gp as moveSVGPath,Hr as newElementFromString,ki as normalizeToAbsolutePosition,ni as parseNumericStyleInputValue,sC as pasteFormatKinds,Nn as placeDesignItem,Ix as pointInRect,Yp as positionsJsonMime,ng as provideSnaplinesWithDistance,sg as provideSnaplinesWithDistanceDistance,Ib as registerGeometryReader,Se as removeLeading,jt as removeTrailing,tr as requestAnimationFramePromise,N as roundValue,qa as setDeepValue,wc as shadowrootGetSelection,pM as showPopup,mt as sleep,ft as straightenLine,Wp as switchContainer,yi as w3color,Up as wrapSelectionInSpans};
15
15
  // @license
16
16
  //# sourceMappingURL=index-min.js.map