kritzel-stencil 0.0.128 → 0.0.130

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 (154) hide show
  1. package/dist/cjs/index-CUSIflVf.js +2 -2
  2. package/dist/cjs/{index-C7Read21.js → index-CfXjPLHb.js} +46 -28
  3. package/dist/cjs/index-CfXjPLHb.js.map +1 -0
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/{kritzel-brush-style_22.cjs.entry.js → kritzel-brush-style_23.cjs.entry.js} +502 -438
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/stencil.cjs.js +1 -1
  8. package/dist/collection/classes/commands/add-object.command.js +2 -2
  9. package/dist/collection/classes/commands/add-object.command.js.map +1 -1
  10. package/dist/collection/classes/commands/add-selection-group.command.js +3 -3
  11. package/dist/collection/classes/commands/add-selection-group.command.js.map +1 -1
  12. package/dist/collection/classes/commands/remove-object.command.js +4 -4
  13. package/dist/collection/classes/commands/remove-object.command.js.map +1 -1
  14. package/dist/collection/classes/commands/remove-selection-group.command.js +2 -2
  15. package/dist/collection/classes/commands/remove-selection-group.command.js.map +1 -1
  16. package/dist/collection/classes/commands/rotate-selection-group.command.js +2 -2
  17. package/dist/collection/classes/commands/rotate-selection-group.command.js.map +1 -1
  18. package/dist/collection/classes/handlers/selection.handler.js +5 -5
  19. package/dist/collection/classes/handlers/selection.handler.js.map +1 -1
  20. package/dist/collection/classes/objects/base-object.class.js +1 -1
  21. package/dist/collection/classes/objects/base-object.class.js.map +1 -1
  22. package/dist/collection/classes/objects/path.class.js +1 -1
  23. package/dist/collection/classes/objects/path.class.js.map +1 -1
  24. package/dist/collection/classes/objects/selection-group.class.js +6 -6
  25. package/dist/collection/classes/objects/selection-group.class.js.map +1 -1
  26. package/dist/collection/classes/store.class.js +9 -22
  27. package/dist/collection/classes/store.class.js.map +1 -1
  28. package/dist/collection/classes/structures/object-map.structure.js +42 -0
  29. package/dist/collection/classes/structures/object-map.structure.js.map +1 -0
  30. package/dist/collection/collection-manifest.json +1 -0
  31. package/dist/collection/components/core/kritzel-editor/kritzel-editor.css +7 -0
  32. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +12 -2
  33. package/dist/collection/components/core/kritzel-editor/kritzel-editor.js.map +1 -1
  34. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +17 -17
  35. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js.map +1 -1
  36. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +15 -155
  37. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +167 -177
  38. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js.map +1 -1
  39. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +129 -0
  40. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +261 -0
  41. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js.map +1 -0
  42. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +160 -43
  43. package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js.map +1 -1
  44. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.css +83 -74
  45. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +142 -118
  46. package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js.map +1 -1
  47. package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +1 -1
  48. package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +4 -4
  49. package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +2 -2
  50. package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +2 -2
  51. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +5 -8
  52. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +3 -3
  53. package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
  54. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +110 -88
  55. package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js.map +1 -1
  56. package/dist/collection/configs/default-engine-state.js +1 -1
  57. package/dist/collection/configs/default-engine-state.js.map +1 -1
  58. package/dist/collection/helpers/keyboard.helper.js +18 -0
  59. package/dist/collection/helpers/keyboard.helper.js.map +1 -1
  60. package/dist/collection/index.js +1 -0
  61. package/dist/collection/index.js.map +1 -1
  62. package/dist/collection/interfaces/engine-state.interface.js.map +1 -1
  63. package/dist/collection/interfaces/menu-item.interface.js.map +1 -1
  64. package/dist/components/index.d.ts +2 -0
  65. package/dist/components/index.js +3 -2
  66. package/dist/components/index.js.map +1 -1
  67. package/dist/components/kritzel-control-brush-config.js +1 -1
  68. package/dist/components/kritzel-control-text-config.js +1 -1
  69. package/dist/components/kritzel-controls.js +1 -1
  70. package/dist/components/kritzel-editor.js +53 -39
  71. package/dist/components/kritzel-editor.js.map +1 -1
  72. package/dist/components/kritzel-engine.js +1 -1
  73. package/dist/components/kritzel-menu-item.d.ts +11 -0
  74. package/dist/components/kritzel-menu-item.js +9 -0
  75. package/dist/components/kritzel-menu-item.js.map +1 -0
  76. package/dist/components/kritzel-menu.js +1 -1
  77. package/dist/components/kritzel-portal.js +1 -1
  78. package/dist/components/kritzel-split-button.js +1 -1
  79. package/dist/components/kritzel-stroke-size.js +1 -1
  80. package/dist/components/kritzel-tooltip.js +1 -1
  81. package/dist/components/kritzel-utility-panel.js +1 -1
  82. package/dist/components/kritzel-workspace-manager.js +1 -1
  83. package/dist/components/{p-jG1e48OE.js → p-26poIWa_.js} +6 -6
  84. package/dist/components/{p-jG1e48OE.js.map → p-26poIWa_.js.map} +1 -1
  85. package/dist/components/{p-rQeWFfPG.js → p-BGccckxP.js} +3 -3
  86. package/dist/components/{p-rQeWFfPG.js.map → p-BGccckxP.js.map} +1 -1
  87. package/dist/components/p-BcQWRzsB.js +183 -0
  88. package/dist/components/p-BcQWRzsB.js.map +1 -0
  89. package/dist/components/p-C-DqsDXz.js +238 -0
  90. package/dist/components/p-C-DqsDXz.js.map +1 -0
  91. package/dist/components/{p-B7VrEdgP.js → p-C9-70hiF.js} +25 -7
  92. package/dist/components/p-C9-70hiF.js.map +1 -0
  93. package/dist/components/p-CJKA5zIE.js +10 -0
  94. package/dist/components/p-CJKA5zIE.js.map +1 -0
  95. package/dist/components/p-CaPdvVd4.js +127 -0
  96. package/dist/components/p-CaPdvVd4.js.map +1 -0
  97. package/dist/components/{p-a7KmQzo4.js → p-Cb1IUD_g.js} +5 -5
  98. package/dist/components/{p-a7KmQzo4.js.map → p-Cb1IUD_g.js.map} +1 -1
  99. package/dist/components/{p-BaKb8ZLg.js → p-Crni2OI4.js} +4 -4
  100. package/dist/components/{p-BaKb8ZLg.js.map → p-Crni2OI4.js.map} +1 -1
  101. package/dist/components/{p-BB22cVkU.js → p-D_Uh-xv_.js} +13 -18
  102. package/dist/components/p-D_Uh-xv_.js.map +1 -0
  103. package/dist/components/{p-BzSz74Ci.js → p-fyfT6A5K.js} +3 -3
  104. package/dist/components/{p-BzSz74Ci.js.map → p-fyfT6A5K.js.map} +1 -1
  105. package/dist/components/{p-D-zg05gA.js → p-jGaWxggY.js} +93 -179
  106. package/dist/components/p-jGaWxggY.js.map +1 -0
  107. package/dist/components/p-jpGLgpoq.js +237 -0
  108. package/dist/components/p-jpGLgpoq.js.map +1 -0
  109. package/dist/esm/{index-J4NpPimy.js → index-DqqxAoZI.js} +47 -29
  110. package/dist/esm/index-DqqxAoZI.js.map +1 -0
  111. package/dist/esm/index-NiIEUDzj.js +2 -2
  112. package/dist/esm/index.js +1 -1
  113. package/dist/esm/{kritzel-brush-style_22.entry.js → kritzel-brush-style_23.entry.js} +502 -439
  114. package/dist/esm/loader.js +1 -1
  115. package/dist/esm/stencil.js +1 -1
  116. package/dist/stencil/index.esm.js +1 -1
  117. package/dist/stencil/p-DqqxAoZI.js +2 -0
  118. package/dist/stencil/p-DqqxAoZI.js.map +1 -0
  119. package/dist/stencil/p-eebdbf65.entry.js +2 -0
  120. package/dist/stencil/p-eebdbf65.entry.js.map +1 -0
  121. package/dist/stencil/stencil.esm.js +1 -1
  122. package/dist/types/classes/structures/object-map.structure.d.ts +11 -0
  123. package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +3 -0
  124. package/dist/types/components/shared/kritzel-menu/kritzel-menu.d.ts +18 -18
  125. package/dist/types/components/shared/kritzel-menu-item/kritzel-menu-item.d.ts +26 -0
  126. package/dist/types/components/shared/kritzel-portal/kritzel-portal.d.ts +15 -10
  127. package/dist/types/components/shared/kritzel-split-button/kritzel-split-button.d.ts +25 -16
  128. package/dist/types/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.d.ts +18 -14
  129. package/dist/types/components.d.ts +90 -61
  130. package/dist/types/helpers/keyboard.helper.d.ts +1 -0
  131. package/dist/types/index.d.ts +1 -0
  132. package/dist/types/interfaces/engine-state.interface.d.ts +2 -2
  133. package/dist/types/interfaces/menu-item.interface.d.ts +21 -7
  134. package/package.json +1 -1
  135. package/dist/cjs/index-C7Read21.js.map +0 -1
  136. package/dist/collection/classes/structures/octree.structure.js +0 -115
  137. package/dist/collection/classes/structures/octree.structure.js.map +0 -1
  138. package/dist/components/p-B7VrEdgP.js.map +0 -1
  139. package/dist/components/p-BB22cVkU.js.map +0 -1
  140. package/dist/components/p-BmJbJwkH.js +0 -167
  141. package/dist/components/p-BmJbJwkH.js.map +0 -1
  142. package/dist/components/p-D-zg05gA.js.map +0 -1
  143. package/dist/components/p-DV4ERZv5.js +0 -112
  144. package/dist/components/p-DV4ERZv5.js.map +0 -1
  145. package/dist/components/p-hSuNJiIq.js +0 -152
  146. package/dist/components/p-hSuNJiIq.js.map +0 -1
  147. package/dist/components/p-sQmW5NRu.js +0 -156
  148. package/dist/components/p-sQmW5NRu.js.map +0 -1
  149. package/dist/esm/index-J4NpPimy.js.map +0 -1
  150. package/dist/stencil/p-4a0009e7.entry.js +0 -2
  151. package/dist/stencil/p-4a0009e7.entry.js.map +0 -1
  152. package/dist/stencil/p-J4NpPimy.js +0 -2
  153. package/dist/stencil/p-J4NpPimy.js.map +0 -1
  154. package/dist/types/classes/structures/octree.structure.d.ts +0 -18
@@ -1 +0,0 @@
1
- {"file":"p-BmJbJwkH.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/helpers/html.helper.ts","src/components/shared/kritzel-portal/kritzel-portal.tsx"],"sourcesContent":["export class KritzelHTMLHelper {\r\n static getNumericValueFromStyle(element: HTMLElement, property: string): number {\r\n const value = window.getComputedStyle(element).getPropertyValue(property);\r\n return parseFloat(value) || 0;\r\n }\r\n\r\n static getScrollableParent(element: HTMLElement): HTMLElement | Window {\r\n if (!element) {\r\n return window;\r\n }\r\n\r\n const parent = ((element.parentNode as ShadowRoot)?.host as HTMLElement) ?? element.parentElement;\r\n\r\n if (!parent || parent.tagName === 'BODY') {\r\n return window;\r\n }\r\n\r\n const style = window.getComputedStyle(parent);\r\n if (style.overflow === 'auto' || style.overflowY === 'auto' || style.overflow === 'scroll' || style.overflowY === 'scroll') {\r\n return parent;\r\n }\r\n\r\n return this.getScrollableParent(parent);\r\n }\r\n\r\n static isElementInViewport(element: HTMLElement): boolean {\r\n if (!element) {\r\n return false;\r\n }\r\n\r\n const scrollableParent = this.getScrollableParent(element);\r\n const rect = element.getBoundingClientRect();\r\n\r\n if (scrollableParent === window) {\r\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\r\n const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\r\n\r\n return rect.top >= 0 && rect.left >= 0 && rect.bottom <= viewportHeight && rect.right <= viewportWidth;\r\n }\r\n\r\n const parentRect = (scrollableParent as HTMLElement).getBoundingClientRect();\r\n\r\n return rect.top >= parentRect.top && rect.left >= parentRect.left && rect.bottom <= parentRect.bottom && rect.right <= parentRect.right;\r\n }\r\n}","import { Component, Host, Listen, Prop, Watch, h, Event, EventEmitter } from '@stencil/core';\r\nimport { KritzelHTMLHelper } from '../../../helpers/html.helper';\r\n\r\nconst DEFAULT_OFFSET = 0;\r\nconst MIN_LEFT_POSITION = 0;\r\nconst Z_INDEX = '9005';\r\nconst ID_PORTAL = 'portal';\r\n\r\n@Component({\r\n tag: 'kritzel-portal',\r\n shadow: true,\r\n})\r\nexport class KritzelPortal {\r\n @Prop()\r\n anchor: HTMLElement;\r\n\r\n @Watch('anchor')\r\n anchorChanged(newValue: HTMLElement) {\r\n if (newValue) {\r\n this.calculatePosition();\r\n }\r\n }\r\n\r\n @Prop()\r\n offsetX: number;\r\n\r\n @Prop()\r\n offsetY: number;\r\n\r\n @Prop()\r\n autoFocus: boolean = true;\r\n\r\n @Event()\r\n close: EventEmitter<void>;\r\n\r\n private portal: HTMLElement;\r\n\r\n private element: HTMLElement;\r\n\r\n private moved: boolean = false;\r\n\r\n private scrollableParent: HTMLElement | Window;\r\n\r\n @Listen('resize', { target: 'window', capture: true })\r\n handleResize() {\r\n this.calculatePosition();\r\n }\r\n\r\n private handleScroll = () => {\r\n const isAnchorInViewport = KritzelHTMLHelper.isElementInViewport(this.anchor);\r\n\r\n if (!isAnchorInViewport) {\r\n this.close.emit();\r\n return;\r\n }\r\n\r\n this.calculatePosition();\r\n };\r\n\r\n private calculateLeft() {\r\n if (!this.anchor || !this.portal) return 0;\r\n const refRect = this.anchor.getBoundingClientRect();\r\n const portalRect = this.portal.getBoundingClientRect();\r\n\r\n const offset = this.offsetX ?? DEFAULT_OFFSET;\r\n let left = refRect.left + offset;\r\n\r\n const maxLeft = window.innerWidth - portalRect.width - MIN_LEFT_POSITION;\r\n if (left < MIN_LEFT_POSITION) left = MIN_LEFT_POSITION;\r\n if (left > maxLeft) left = maxLeft;\r\n\r\n return Math.round(left + window.scrollX);\r\n }\r\n\r\n private calculateTop() {\r\n if (!this.anchor || !this.portal) return 0;\r\n const refRect = this.anchor.getBoundingClientRect();\r\n const portalRect = this.portal.getBoundingClientRect();\r\n const offset = this.offsetY ?? DEFAULT_OFFSET;\r\n\r\n let top = refRect.bottom + offset;\r\n\r\n if (top + portalRect.height > window.innerHeight) {\r\n top = refRect.top - portalRect.height - offset;\r\n }\r\n\r\n return Math.round(top + window.scrollY);\r\n }\r\n\r\n private createPortal() {\r\n this.portal = document.createElement('div');\r\n this.portal.setAttribute('id', ID_PORTAL);\r\n this.portal.style.zIndex = Z_INDEX;\r\n this.portal.style.position = 'absolute';\r\n this.portal.style.top = '0px';\r\n this.portal.style.left = '0px';\r\n document.body.append(this.portal);\r\n }\r\n\r\n private moveElementToPortal() {\r\n this.portal.appendChild(this.element);\r\n this.moved = true;\r\n }\r\n\r\n private calculatePosition() {\r\n if (!this.anchor || !this.portal) return;\r\n const top = this.calculateTop();\r\n const left = this.calculateLeft();\r\n this.portal.style.top = `${top}px`;\r\n this.portal.style.left = `${left}px`;\r\n }\r\n\r\n componentWillLoad() {\r\n this.createPortal();\r\n }\r\n\r\n componentDidLoad() {\r\n this.moveElementToPortal();\r\n if (this.anchor) {\r\n this.calculatePosition();\r\n this.scrollableParent = KritzelHTMLHelper.getScrollableParent(this.anchor);\r\n this.scrollableParent?.addEventListener('scroll', this.handleScroll);\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n this.moved ? this.portal.remove() : (this.moved = true);\r\n this.scrollableParent?.removeEventListener('scroll', this.handleScroll);\r\n }\r\n\r\n render() {\r\n return (\r\n <Host ref={el => (this.element = el)}>\r\n <slot />\r\n </Host>\r\n );\r\n }\r\n}"],"version":3}