@dnncommunity/dnn-elements 0.14.1 → 0.15.0-beta.3

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 (422) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +24 -24
  3. package/dist/.storybook/utilities.js +16 -0
  4. package/dist/.storybook/utilities.js.map +1 -0
  5. package/dist/cjs/{css-shim-3bfdba4f.js → css-shim-aaf4fec9.js} +3 -3
  6. package/dist/cjs/css-shim-aaf4fec9.js.map +1 -0
  7. package/dist/cjs/{debounce-1de79bc7.js → debounce-901e1f0c.js} +18 -18
  8. package/dist/cjs/{debounce-1de79bc7.js.map → debounce-901e1f0c.js.map} +1 -1
  9. package/dist/cjs/dnn-button.cjs.entry.js +80 -76
  10. package/dist/cjs/dnn-button.cjs.entry.js.map +1 -1
  11. package/dist/cjs/{dnn-button_16.cjs.entry.js → dnn-button_17.cjs.entry.js} +2024 -1710
  12. package/dist/cjs/dnn-button_17.cjs.entry.js.map +1 -0
  13. package/dist/cjs/dnn-checkbox.cjs.entry.js +47 -47
  14. package/dist/cjs/dnn-checkbox.cjs.entry.js.map +1 -1
  15. package/dist/cjs/dnn-chevron.cjs.entry.js +22 -22
  16. package/dist/cjs/dnn-chevron.cjs.entry.js.map +1 -1
  17. package/dist/cjs/dnn-collapsible.cjs.entry.js +57 -54
  18. package/dist/cjs/dnn-collapsible.cjs.entry.js.map +1 -1
  19. package/dist/cjs/dnn-color-picker.cjs.entry.js +494 -494
  20. package/dist/cjs/dnn-color-picker.cjs.entry.js.map +1 -1
  21. package/dist/cjs/dnn-dropzone.cjs.entry.js +141 -141
  22. package/dist/cjs/dnn-dropzone.cjs.entry.js.map +1 -1
  23. package/dist/cjs/dnn-image-cropper.cjs.entry.js +394 -394
  24. package/dist/cjs/dnn-image-cropper.cjs.entry.js.map +1 -1
  25. package/dist/cjs/dnn-modal.cjs.entry.js +53 -50
  26. package/dist/cjs/dnn-modal.cjs.entry.js.map +1 -1
  27. package/dist/cjs/dnn-permissions-grid.cjs.entry.js +320 -0
  28. package/dist/cjs/dnn-permissions-grid.cjs.entry.js.map +1 -0
  29. package/dist/cjs/dnn-searchbox.cjs.entry.js +54 -54
  30. package/dist/cjs/dnn-searchbox.cjs.entry.js.map +1 -1
  31. package/dist/cjs/dnn-sort-icon.cjs.entry.js +32 -32
  32. package/dist/cjs/dnn-sort-icon.cjs.entry.js.map +1 -1
  33. package/dist/cjs/dnn-tab.cjs.entry.js +19 -19
  34. package/dist/cjs/dnn-tab.cjs.entry.js.map +1 -1
  35. package/dist/cjs/dnn-tabs.cjs.entry.js +40 -40
  36. package/dist/cjs/dnn-tabs.cjs.entry.js.map +1 -1
  37. package/dist/cjs/dnn-toggle.cjs.entry.js +26 -26
  38. package/dist/cjs/dnn-toggle.cjs.entry.js.map +1 -1
  39. package/dist/cjs/dnn-treeview-item.cjs.entry.js +56 -56
  40. package/dist/cjs/dnn-treeview-item.cjs.entry.js.map +1 -1
  41. package/dist/cjs/dnn-vertical-overflow-menu.cjs.entry.js +113 -111
  42. package/dist/cjs/dnn-vertical-overflow-menu.cjs.entry.js.map +1 -1
  43. package/dist/cjs/dnn-vertical-splitview.cjs.entry.js +121 -121
  44. package/dist/cjs/dnn-vertical-splitview.cjs.entry.js.map +1 -1
  45. package/dist/cjs/dnn.cjs.js +8 -4
  46. package/dist/cjs/dnn.cjs.js.map +1 -1
  47. package/dist/cjs/{dom-8ac1ad03.js → dom-14886762.js} +2 -2
  48. package/dist/cjs/{dom-8ac1ad03.js.map → dom-14886762.js.map} +1 -1
  49. package/dist/cjs/{index-7505bd72.js → index-514ef6dd.js} +32 -2
  50. package/dist/cjs/index-514ef6dd.js.map +1 -0
  51. package/dist/cjs/{index-aff4d89a.js → index-d53702a3.js} +30 -4
  52. package/dist/cjs/index-d53702a3.js.map +1 -0
  53. package/dist/cjs/index.cjs.js +41 -41
  54. package/dist/cjs/loader.cjs.js +4 -4
  55. package/dist/cjs/loader.cjs.js.map +1 -1
  56. package/dist/cjs/{mouseUtilities-75be531a.js → mouseUtilities-ecd5ecf7.js} +19 -19
  57. package/dist/cjs/{mouseUtilities-75be531a.js.map → mouseUtilities-ecd5ecf7.js.map} +1 -1
  58. package/dist/cjs/{shadow-css-41d9783d.js → shadow-css-c44ea13a.js} +2 -2
  59. package/dist/cjs/{shadow-css-41d9783d.js.map → shadow-css-c44ea13a.js.map} +1 -1
  60. package/dist/collection/collection-manifest.json +3 -2
  61. package/dist/collection/components/dnn-button/dnn-button.js +275 -271
  62. package/dist/collection/components/dnn-button/dnn-button.js.map +1 -1
  63. package/dist/collection/components/dnn-button/dnn-button.stories.js +72 -0
  64. package/dist/collection/components/dnn-button/dnn-button.stories.js.map +1 -0
  65. package/dist/collection/components/dnn-checkbox/dnn-checkbox.css +6 -0
  66. package/dist/collection/components/dnn-checkbox/dnn-checkbox.js +151 -139
  67. package/dist/collection/components/dnn-checkbox/dnn-checkbox.js.map +1 -1
  68. package/dist/collection/components/dnn-checkbox/dnn-checkbox.stories.js +39 -0
  69. package/dist/collection/components/dnn-checkbox/dnn-checkbox.stories.js.map +1 -0
  70. package/dist/collection/components/dnn-chevron/dnn-chevron.js +106 -106
  71. package/dist/collection/components/dnn-chevron/dnn-chevron.js.map +1 -1
  72. package/dist/collection/components/dnn-chevron/dnn-chevron.stories.js +38 -0
  73. package/dist/collection/components/dnn-chevron/dnn-chevron.stories.js.map +1 -0
  74. package/dist/collection/components/dnn-collapsible/dnn-collapsible.js +145 -142
  75. package/dist/collection/components/dnn-collapsible/dnn-collapsible.js.map +1 -1
  76. package/dist/collection/components/dnn-collapsible/dnn-collapsible.stories.js +39 -0
  77. package/dist/collection/components/dnn-collapsible/dnn-collapsible.stories.js.map +1 -0
  78. package/dist/collection/components/dnn-color-picker/dnn-color-picker.js +433 -433
  79. package/dist/collection/components/dnn-color-picker/dnn-color-picker.js.map +1 -1
  80. package/dist/collection/components/dnn-color-picker/dnn-color-picker.stories.js +33 -0
  81. package/dist/collection/components/dnn-color-picker/dnn-color-picker.stories.js.map +1 -0
  82. package/dist/collection/components/dnn-dropzone/dnn-dropzone.js +265 -265
  83. package/dist/collection/components/dnn-dropzone/dnn-dropzone.js.map +1 -1
  84. package/dist/collection/components/dnn-dropzone/dnn-dropzone.stories.js +48 -0
  85. package/dist/collection/components/dnn-dropzone/dnn-dropzone.stories.js.map +1 -0
  86. package/dist/collection/components/dnn-image-cropper/CornerType.js +8 -8
  87. package/dist/collection/components/dnn-image-cropper/CornerType.js.map +1 -1
  88. package/dist/collection/components/dnn-image-cropper/dnn-image-cropper.js +522 -522
  89. package/dist/collection/components/dnn-image-cropper/dnn-image-cropper.js.map +1 -1
  90. package/dist/collection/components/dnn-image-cropper/dnn-image-cropper.stories.js +60 -0
  91. package/dist/collection/components/dnn-image-cropper/dnn-image-cropper.stories.js.map +1 -0
  92. package/dist/collection/components/dnn-modal/dnn-modal.js +190 -172
  93. package/dist/collection/components/dnn-modal/dnn-modal.js.map +1 -1
  94. package/dist/collection/components/dnn-modal/dnn-modal.stories.js +47 -0
  95. package/dist/collection/components/dnn-modal/dnn-modal.stories.js.map +1 -0
  96. package/dist/collection/components/dnn-permissions-grid/dnn-permissions-grid.css +83 -0
  97. package/dist/collection/components/dnn-permissions-grid/dnn-permissions-grid.js +531 -0
  98. package/dist/collection/components/dnn-permissions-grid/dnn-permissions-grid.js.map +1 -0
  99. package/dist/collection/components/dnn-permissions-grid/dnn-permissions-grid.stories.js +273 -0
  100. package/dist/collection/components/dnn-permissions-grid/dnn-permissions-grid.stories.js.map +1 -0
  101. package/dist/collection/components/dnn-permissions-grid/localization-interface.js +3 -0
  102. package/dist/collection/components/dnn-permissions-grid/localization-interface.js.map +1 -0
  103. package/dist/collection/components/dnn-permissions-grid/permissions-interface.js +3 -0
  104. package/dist/collection/components/dnn-permissions-grid/permissions-interface.js.map +1 -0
  105. package/dist/collection/components/dnn-permissions-grid/role-group-interface.js +2 -0
  106. package/dist/collection/components/dnn-permissions-grid/role-group-interface.js.map +1 -0
  107. package/dist/collection/components/dnn-permissions-grid/role-interface.js +2 -0
  108. package/dist/collection/components/dnn-permissions-grid/role-interface.js.map +1 -0
  109. package/dist/collection/components/dnn-permissions-grid/searched-user-interface.js +2 -0
  110. package/dist/collection/components/dnn-permissions-grid/searched-user-interface.js.map +1 -0
  111. package/dist/collection/components/dnn-searchbox/dnn-searchbox.js +136 -136
  112. package/dist/collection/components/dnn-searchbox/dnn-searchbox.js.map +1 -1
  113. package/dist/collection/components/dnn-searchbox/dnn-searchbox.stories.js +26 -0
  114. package/dist/collection/components/dnn-searchbox/dnn-searchbox.stories.js.map +1 -0
  115. package/dist/collection/components/dnn-sort-icon/dnn-sort-icon.css +6 -3
  116. package/dist/collection/components/dnn-sort-icon/dnn-sort-icon.js +80 -80
  117. package/dist/collection/components/dnn-sort-icon/dnn-sort-icon.js.map +1 -1
  118. package/dist/collection/components/dnn-sort-icon/dnn-sort-icon.stories.js +58 -0
  119. package/dist/collection/components/dnn-sort-icon/dnn-sort-icon.stories.js.map +1 -0
  120. package/dist/collection/components/dnn-tab/dnn-tab.js +83 -83
  121. package/dist/collection/components/dnn-tab/dnn-tab.js.map +1 -1
  122. package/dist/collection/components/dnn-tab/dnn-tab.stories.js +25 -0
  123. package/dist/collection/components/dnn-tab/dnn-tab.stories.js.map +1 -0
  124. package/dist/collection/components/dnn-tabs/dnn-tabs.js +54 -54
  125. package/dist/collection/components/dnn-tabs/dnn-tabs.js.map +1 -1
  126. package/dist/collection/components/dnn-tabs/dnn-tabs.stories.js +48 -0
  127. package/dist/collection/components/dnn-tabs/dnn-tabs.stories.js.map +1 -0
  128. package/dist/collection/components/dnn-toggle/dnn-toggle.css +1 -1
  129. package/dist/collection/components/dnn-toggle/dnn-toggle.js +93 -93
  130. package/dist/collection/components/dnn-toggle/dnn-toggle.js.map +1 -1
  131. package/dist/collection/components/dnn-toggle/dnn-toggle.stories.js +53 -0
  132. package/dist/collection/components/dnn-toggle/dnn-toggle.stories.js.map +1 -0
  133. package/dist/collection/components/dnn-toggle/toggle-interface.js +1 -1
  134. package/dist/collection/components/dnn-toggle/toggle-interface.js.map +1 -1
  135. package/dist/collection/components/dnn-treeview-item/dnn-treeview-item.js +130 -126
  136. package/dist/collection/components/dnn-treeview-item/dnn-treeview-item.js.map +1 -1
  137. package/dist/collection/components/dnn-treeview-item/dnn-treeview-item.stories.js +36 -0
  138. package/dist/collection/components/dnn-treeview-item/dnn-treeview-item.stories.js.map +1 -0
  139. package/dist/collection/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.css +6 -7
  140. package/dist/collection/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.js +133 -131
  141. package/dist/collection/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.js.map +1 -1
  142. package/dist/collection/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.stories.js +60 -0
  143. package/dist/collection/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.stories.js.map +1 -0
  144. package/dist/collection/components/dnn-vertical-splitview/dnn-vertical-splitview.css +4 -2
  145. package/dist/collection/components/dnn-vertical-splitview/dnn-vertical-splitview.js +233 -233
  146. package/dist/collection/components/dnn-vertical-splitview/dnn-vertical-splitview.js.map +1 -1
  147. package/dist/collection/components/dnn-vertical-splitview/dnn-vertical-splitview.stories.js +75 -0
  148. package/dist/collection/components/dnn-vertical-splitview/dnn-vertical-splitview.stories.js.map +1 -0
  149. package/dist/collection/index.js +2 -2
  150. package/dist/collection/index.js.map +1 -1
  151. package/dist/collection/utilities/colorInfo.js +190 -190
  152. package/dist/collection/utilities/colorInfo.js.map +1 -1
  153. package/dist/collection/utilities/debounce.js +18 -18
  154. package/dist/collection/utilities/debounce.js.map +1 -1
  155. package/dist/collection/utilities/dnnServicesFramework.js +41 -41
  156. package/dist/collection/utilities/dnnServicesFramework.js.map +1 -1
  157. package/dist/collection/utilities/mouseUtilities.js +19 -19
  158. package/dist/collection/utilities/mouseUtilities.js.map +1 -1
  159. package/dist/{esm/css-shim-20dbffa5.js → dnn/css-shim-091f949f.js} +3 -3
  160. package/dist/dnn/css-shim-091f949f.js.map +1 -0
  161. package/dist/dnn/{css-shim-856c55de.system.js → css-shim-c5bffe6b.system.js} +2 -2
  162. package/dist/dnn/css-shim-c5bffe6b.system.js.map +1 -0
  163. package/dist/{esm/debounce-06f55268.js → dnn/debounce-6be67abd.js} +18 -18
  164. package/dist/dnn/{debounce-06f55268.js.map → debounce-6be67abd.js.map} +1 -1
  165. package/dist/dnn/{debounce-eef81bf7.system.js → debounce-db438a09.system.js} +1 -1
  166. package/dist/dnn/{debounce-eef81bf7.system.js.map → debounce-db438a09.system.js.map} +0 -0
  167. package/dist/dnn/dnn-button.entry.js +80 -76
  168. package/dist/dnn/dnn-button.entry.js.map +1 -1
  169. package/dist/dnn/dnn-button.system.entry.js +1 -1
  170. package/dist/dnn/dnn-button.system.entry.js.map +1 -1
  171. package/dist/dnn/dnn-checkbox.entry.js +47 -47
  172. package/dist/dnn/dnn-checkbox.entry.js.map +1 -1
  173. package/dist/dnn/dnn-checkbox.system.entry.js +1 -1
  174. package/dist/dnn/dnn-checkbox.system.entry.js.map +1 -1
  175. package/dist/dnn/dnn-chevron.entry.js +22 -22
  176. package/dist/dnn/dnn-chevron.entry.js.map +1 -1
  177. package/dist/dnn/dnn-chevron.system.entry.js +1 -1
  178. package/dist/dnn/dnn-chevron.system.entry.js.map +1 -1
  179. package/dist/dnn/dnn-collapsible.entry.js +57 -54
  180. package/dist/dnn/dnn-collapsible.entry.js.map +1 -1
  181. package/dist/dnn/dnn-collapsible.system.entry.js +1 -1
  182. package/dist/dnn/dnn-collapsible.system.entry.js.map +1 -1
  183. package/dist/dnn/dnn-color-picker.entry.js +494 -494
  184. package/dist/dnn/dnn-color-picker.entry.js.map +1 -1
  185. package/dist/dnn/dnn-color-picker.system.entry.js +2 -2
  186. package/dist/dnn/dnn-color-picker.system.entry.js.map +1 -1
  187. package/dist/dnn/dnn-dropzone.entry.js +141 -141
  188. package/dist/dnn/dnn-dropzone.entry.js.map +1 -1
  189. package/dist/dnn/dnn-dropzone.system.entry.js +1 -1
  190. package/dist/dnn/dnn-dropzone.system.entry.js.map +1 -1
  191. package/dist/dnn/dnn-image-cropper.entry.js +394 -394
  192. package/dist/dnn/dnn-image-cropper.entry.js.map +1 -1
  193. package/dist/dnn/dnn-image-cropper.system.entry.js +1 -1
  194. package/dist/dnn/dnn-image-cropper.system.entry.js.map +1 -1
  195. package/dist/dnn/dnn-modal.entry.js +53 -50
  196. package/dist/dnn/dnn-modal.entry.js.map +1 -1
  197. package/dist/dnn/dnn-modal.system.entry.js +1 -1
  198. package/dist/dnn/dnn-modal.system.entry.js.map +1 -1
  199. package/dist/dnn/dnn-permissions-grid.entry.js +316 -0
  200. package/dist/dnn/dnn-permissions-grid.entry.js.map +1 -0
  201. package/dist/dnn/dnn-permissions-grid.system.entry.js +2 -0
  202. package/dist/dnn/dnn-permissions-grid.system.entry.js.map +1 -0
  203. package/dist/dnn/dnn-searchbox.entry.js +54 -54
  204. package/dist/dnn/dnn-searchbox.entry.js.map +1 -1
  205. package/dist/dnn/dnn-searchbox.system.entry.js +1 -1
  206. package/dist/dnn/dnn-searchbox.system.entry.js.map +1 -1
  207. package/dist/dnn/dnn-sort-icon.entry.js +32 -32
  208. package/dist/dnn/dnn-sort-icon.entry.js.map +1 -1
  209. package/dist/dnn/dnn-sort-icon.system.entry.js +1 -1
  210. package/dist/dnn/dnn-sort-icon.system.entry.js.map +1 -1
  211. package/dist/dnn/dnn-tab.entry.js +19 -19
  212. package/dist/dnn/dnn-tab.entry.js.map +1 -1
  213. package/dist/dnn/dnn-tab.system.entry.js +1 -1
  214. package/dist/dnn/dnn-tabs.entry.js +40 -40
  215. package/dist/dnn/dnn-tabs.entry.js.map +1 -1
  216. package/dist/dnn/dnn-tabs.system.entry.js +1 -1
  217. package/dist/dnn/dnn-tabs.system.entry.js.map +1 -1
  218. package/dist/dnn/dnn-toggle.entry.js +26 -26
  219. package/dist/dnn/dnn-toggle.entry.js.map +1 -1
  220. package/dist/dnn/dnn-toggle.system.entry.js +1 -1
  221. package/dist/dnn/dnn-toggle.system.entry.js.map +1 -1
  222. package/dist/dnn/dnn-treeview-item.entry.js +56 -56
  223. package/dist/dnn/dnn-treeview-item.entry.js.map +1 -1
  224. package/dist/dnn/dnn-treeview-item.system.entry.js +1 -1
  225. package/dist/dnn/dnn-treeview-item.system.entry.js.map +1 -1
  226. package/dist/dnn/dnn-vertical-overflow-menu.entry.js +113 -111
  227. package/dist/dnn/dnn-vertical-overflow-menu.entry.js.map +1 -1
  228. package/dist/dnn/dnn-vertical-overflow-menu.system.entry.js +1 -1
  229. package/dist/dnn/dnn-vertical-overflow-menu.system.entry.js.map +1 -1
  230. package/dist/dnn/dnn-vertical-splitview.entry.js +121 -121
  231. package/dist/dnn/dnn-vertical-splitview.entry.js.map +1 -1
  232. package/dist/dnn/dnn-vertical-splitview.system.entry.js +1 -1
  233. package/dist/dnn/dnn-vertical-splitview.system.entry.js.map +1 -1
  234. package/dist/dnn/dnn.esm.js +8 -4
  235. package/dist/dnn/dnn.esm.js.map +1 -1
  236. package/dist/dnn/dnn.system.js +1 -1
  237. package/dist/dnn/dnn.system.js.map +1 -1
  238. package/dist/dnn/{dom-938307ec.system.js → dom-99eb7b76.system.js} +1 -1
  239. package/dist/dnn/{dom-938307ec.system.js.map → dom-99eb7b76.system.js.map} +1 -1
  240. package/dist/dnn/{dom-c5ed0ba5.js → dom-a385e381.js} +2 -2
  241. package/dist/{esm/dom-c5ed0ba5.js.map → dnn/dom-a385e381.js.map} +1 -1
  242. package/dist/dnn/{index-b5a28c1d.js → index-20e42ad7.js} +30 -4
  243. package/dist/dnn/index-20e42ad7.js.map +1 -0
  244. package/dist/dnn/index-c3cc3b5b.system.js +2 -0
  245. package/dist/dnn/index-c3cc3b5b.system.js.map +1 -0
  246. package/dist/dnn/index.esm.js +41 -41
  247. package/dist/dnn/index.system.js +1 -1
  248. package/dist/dnn/{mouseUtilities-e7e4e78f.system.js → mouseUtilities-233ad7e3.system.js} +1 -1
  249. package/dist/dnn/{mouseUtilities-e7e4e78f.system.js.map → mouseUtilities-233ad7e3.system.js.map} +0 -0
  250. package/dist/{esm/mouseUtilities-817973b4.js → dnn/mouseUtilities-b261ca4f.js} +19 -19
  251. package/dist/dnn/{mouseUtilities-817973b4.js.map → mouseUtilities-b261ca4f.js.map} +1 -1
  252. package/dist/dnn/{p-646cfb1b.system.js → p-1e26a4e1.system.js} +1 -1
  253. package/dist/dnn/{p-646cfb1b.system.js.map → p-1e26a4e1.system.js.map} +0 -0
  254. package/dist/dnn/p-31dc68a7.system.entry.js +11 -0
  255. package/dist/dnn/p-31dc68a7.system.entry.js.map +1 -0
  256. package/dist/dnn/p-5bcf3629.system.js +2 -0
  257. package/dist/dnn/p-5bcf3629.system.js.map +1 -0
  258. package/dist/dnn/{p-fb637662.system.js → p-78561bb1.system.js} +2 -2
  259. package/dist/dnn/{p-fb637662.system.js.map → p-78561bb1.system.js.map} +0 -0
  260. package/dist/dnn/p-7ffdbed1.js +2 -0
  261. package/dist/dnn/p-7ffdbed1.js.map +1 -0
  262. package/dist/dnn/{p-0e94f5ee.js → p-9b8731a9.js} +1 -1
  263. package/dist/dnn/{p-0e94f5ee.js.map → p-9b8731a9.js.map} +0 -0
  264. package/dist/dnn/p-b8064287.system.js +2 -0
  265. package/dist/dnn/p-b8064287.system.js.map +1 -0
  266. package/dist/dnn/p-c222c8b7.entry.js +11 -0
  267. package/dist/dnn/p-c222c8b7.entry.js.map +1 -0
  268. package/dist/dnn/shadow-css-27708fdd.system.js +14 -0
  269. package/dist/dnn/shadow-css-27708fdd.system.js.map +1 -0
  270. package/dist/dnn/{shadow-css-8c625855.js → shadow-css-ef431969.js} +2 -2
  271. package/dist/{esm/shadow-css-8c625855.js.map → dnn/shadow-css-ef431969.js.map} +1 -1
  272. package/dist/{dnn/css-shim-20dbffa5.js → esm/css-shim-091f949f.js} +3 -3
  273. package/dist/esm/css-shim-091f949f.js.map +1 -0
  274. package/dist/{dnn/debounce-06f55268.js → esm/debounce-6be67abd.js} +18 -18
  275. package/dist/esm/{debounce-06f55268.js.map → debounce-6be67abd.js.map} +1 -1
  276. package/dist/esm/dnn-button.entry.js +80 -76
  277. package/dist/esm/dnn-button.entry.js.map +1 -1
  278. package/dist/esm/{dnn-button_16.entry.js → dnn-button_17.entry.js} +2024 -1711
  279. package/dist/esm/dnn-button_17.entry.js.map +1 -0
  280. package/dist/esm/dnn-checkbox.entry.js +47 -47
  281. package/dist/esm/dnn-checkbox.entry.js.map +1 -1
  282. package/dist/esm/dnn-chevron.entry.js +22 -22
  283. package/dist/esm/dnn-chevron.entry.js.map +1 -1
  284. package/dist/esm/dnn-collapsible.entry.js +57 -54
  285. package/dist/esm/dnn-collapsible.entry.js.map +1 -1
  286. package/dist/esm/dnn-color-picker.entry.js +494 -494
  287. package/dist/esm/dnn-color-picker.entry.js.map +1 -1
  288. package/dist/esm/dnn-dropzone.entry.js +141 -141
  289. package/dist/esm/dnn-dropzone.entry.js.map +1 -1
  290. package/dist/esm/dnn-image-cropper.entry.js +394 -394
  291. package/dist/esm/dnn-image-cropper.entry.js.map +1 -1
  292. package/dist/esm/dnn-modal.entry.js +53 -50
  293. package/dist/esm/dnn-modal.entry.js.map +1 -1
  294. package/dist/esm/dnn-permissions-grid.entry.js +316 -0
  295. package/dist/esm/dnn-permissions-grid.entry.js.map +1 -0
  296. package/dist/esm/dnn-searchbox.entry.js +54 -54
  297. package/dist/esm/dnn-searchbox.entry.js.map +1 -1
  298. package/dist/esm/dnn-sort-icon.entry.js +32 -32
  299. package/dist/esm/dnn-sort-icon.entry.js.map +1 -1
  300. package/dist/esm/dnn-tab.entry.js +19 -19
  301. package/dist/esm/dnn-tab.entry.js.map +1 -1
  302. package/dist/esm/dnn-tabs.entry.js +40 -40
  303. package/dist/esm/dnn-tabs.entry.js.map +1 -1
  304. package/dist/esm/dnn-toggle.entry.js +26 -26
  305. package/dist/esm/dnn-toggle.entry.js.map +1 -1
  306. package/dist/esm/dnn-treeview-item.entry.js +56 -56
  307. package/dist/esm/dnn-treeview-item.entry.js.map +1 -1
  308. package/dist/esm/dnn-vertical-overflow-menu.entry.js +113 -111
  309. package/dist/esm/dnn-vertical-overflow-menu.entry.js.map +1 -1
  310. package/dist/esm/dnn-vertical-splitview.entry.js +121 -121
  311. package/dist/esm/dnn-vertical-splitview.entry.js.map +1 -1
  312. package/dist/esm/dnn.js +8 -4
  313. package/dist/esm/dnn.js.map +1 -1
  314. package/dist/esm/{dom-c5ed0ba5.js → dom-a385e381.js} +2 -2
  315. package/dist/{dnn/dom-c5ed0ba5.js.map → esm/dom-a385e381.js.map} +1 -1
  316. package/dist/esm/{index-b5a28c1d.js → index-20e42ad7.js} +30 -4
  317. package/dist/esm/index-20e42ad7.js.map +1 -0
  318. package/dist/esm/{index-cdbad319.js → index-59e0950f.js} +32 -2
  319. package/dist/esm/index-59e0950f.js.map +1 -0
  320. package/dist/esm/index.js +41 -41
  321. package/dist/esm/loader.js +4 -4
  322. package/dist/esm/loader.js.map +1 -1
  323. package/dist/{dnn/mouseUtilities-817973b4.js → esm/mouseUtilities-b261ca4f.js} +19 -19
  324. package/dist/esm/{mouseUtilities-817973b4.js.map → mouseUtilities-b261ca4f.js.map} +1 -1
  325. package/dist/esm/polyfills/core-js.js +0 -0
  326. package/dist/esm/polyfills/css-shim.js +1 -1
  327. package/dist/esm/polyfills/dom.js +0 -0
  328. package/dist/esm/polyfills/es5-html-element.js +0 -0
  329. package/dist/esm/polyfills/index.js +0 -0
  330. package/dist/esm/polyfills/system.js +0 -0
  331. package/dist/esm/{shadow-css-8c625855.js → shadow-css-ef431969.js} +2 -2
  332. package/dist/{dnn/shadow-css-8c625855.js.map → esm/shadow-css-ef431969.js.map} +1 -1
  333. package/dist/esm-es5/{debounce-06f55268.js → debounce-6be67abd.js} +1 -1
  334. package/dist/esm-es5/{debounce-06f55268.js.map → debounce-6be67abd.js.map} +0 -0
  335. package/dist/esm-es5/dnn-button_17.entry.js +11 -0
  336. package/dist/esm-es5/dnn-button_17.entry.js.map +1 -0
  337. package/dist/esm-es5/dnn.js +1 -1
  338. package/dist/esm-es5/dnn.js.map +1 -1
  339. package/dist/esm-es5/index-59e0950f.js +2 -0
  340. package/dist/esm-es5/index-59e0950f.js.map +1 -0
  341. package/dist/esm-es5/index.js +1 -1
  342. package/dist/esm-es5/loader.js +1 -1
  343. package/dist/esm-es5/loader.js.map +1 -1
  344. package/dist/types/components/dnn-button/dnn-button.d.ts +56 -55
  345. package/dist/types/components/dnn-button/dnn-button.stories.d.ts +4 -0
  346. package/dist/types/components/dnn-checkbox/dnn-checkbox.d.ts +20 -16
  347. package/dist/types/components/dnn-checkbox/dnn-checkbox.stories.d.ts +4 -0
  348. package/dist/types/components/dnn-chevron/dnn-chevron.d.ts +13 -13
  349. package/dist/types/components/dnn-chevron/dnn-chevron.stories.d.ts +4 -0
  350. package/dist/types/components/dnn-collapsible/dnn-collapsible.d.ts +19 -18
  351. package/dist/types/components/dnn-collapsible/dnn-collapsible.stories.d.ts +4 -0
  352. package/dist/types/components/dnn-color-picker/dnn-color-picker.d.ts +46 -46
  353. package/dist/types/components/dnn-color-picker/dnn-color-picker.stories.d.ts +4 -0
  354. package/dist/types/components/dnn-dropzone/dnn-dropzone.d.ts +45 -45
  355. package/dist/types/components/dnn-dropzone/dnn-dropzone.stories.d.ts +4 -0
  356. package/dist/types/components/dnn-image-cropper/CornerType.d.ts +6 -6
  357. package/dist/types/components/dnn-image-cropper/dnn-image-cropper.d.ts +61 -61
  358. package/dist/types/components/dnn-image-cropper/dnn-image-cropper.stories.d.ts +4 -0
  359. package/dist/types/components/dnn-modal/dnn-modal.d.ts +38 -35
  360. package/dist/types/components/dnn-modal/dnn-modal.stories.d.ts +4 -0
  361. package/dist/types/components/dnn-permissions-grid/dnn-permissions-grid.d.ts +47 -0
  362. package/dist/types/components/dnn-permissions-grid/dnn-permissions-grid.stories.d.ts +4 -0
  363. package/dist/types/components/dnn-permissions-grid/localization-interface.d.ts +11 -0
  364. package/dist/types/components/dnn-permissions-grid/permissions-interface.d.ts +26 -0
  365. package/dist/types/components/dnn-permissions-grid/role-group-interface.d.ts +6 -0
  366. package/dist/types/components/dnn-permissions-grid/role-interface.d.ts +6 -0
  367. package/dist/types/components/dnn-permissions-grid/searched-user-interface.d.ts +4 -0
  368. package/dist/types/components/dnn-searchbox/dnn-searchbox.d.ts +22 -22
  369. package/dist/types/components/dnn-searchbox/dnn-searchbox.stories.d.ts +4 -0
  370. package/dist/types/components/dnn-sort-icon/dnn-sort-icon.d.ts +9 -9
  371. package/dist/types/components/dnn-sort-icon/dnn-sort-icon.stories.d.ts +4 -0
  372. package/dist/types/components/dnn-tab/dnn-tab.d.ts +11 -11
  373. package/dist/types/components/dnn-tab/dnn-tab.stories.d.ts +4 -0
  374. package/dist/types/components/dnn-tabs/dnn-tabs.d.ts +11 -11
  375. package/dist/types/components/dnn-tabs/dnn-tabs.stories.d.ts +4 -0
  376. package/dist/types/components/dnn-toggle/dnn-toggle.d.ts +13 -13
  377. package/dist/types/components/dnn-toggle/dnn-toggle.stories.d.ts +4 -0
  378. package/dist/types/components/dnn-toggle/toggle-interface.d.ts +3 -3
  379. package/dist/types/components/dnn-treeview-item/dnn-treeview-item.d.ts +28 -24
  380. package/dist/types/components/dnn-treeview-item/dnn-treeview-item.stories.d.ts +4 -0
  381. package/dist/types/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.d.ts +16 -16
  382. package/dist/types/components/dnn-vertical-overflow-menu/dnn-vertical-overflow-menu.stories.d.ts +4 -0
  383. package/dist/types/components/dnn-vertical-splitview/dnn-vertical-splitview.d.ts +28 -28
  384. package/dist/types/components/dnn-vertical-splitview/dnn-vertical-splitview.stories.d.ts +4 -0
  385. package/dist/types/components.d.ts +108 -34
  386. package/dist/types/global.d.ts +1 -0
  387. package/dist/types/home/runner/work/dnn-elements/dnn-elements/.stencil/.storybook/utilities.d.ts +1 -0
  388. package/dist/types/index.d.ts +3 -3
  389. package/dist/types/utilities/colorInfo.d.ts +52 -52
  390. package/dist/types/utilities/debounce.d.ts +5 -5
  391. package/dist/types/utilities/dnnServicesFramework.d.ts +19 -19
  392. package/dist/types/utilities/mouseUtilities.d.ts +4 -4
  393. package/package.json +63 -48
  394. package/dist/cjs/css-shim-3bfdba4f.js.map +0 -1
  395. package/dist/cjs/dnn-button_16.cjs.entry.js.map +0 -1
  396. package/dist/cjs/index-7505bd72.js.map +0 -1
  397. package/dist/cjs/index-aff4d89a.js.map +0 -1
  398. package/dist/dnn/css-shim-20dbffa5.js.map +0 -1
  399. package/dist/dnn/css-shim-856c55de.system.js.map +0 -1
  400. package/dist/dnn/index-a3a55419.system.js +0 -2
  401. package/dist/dnn/index-a3a55419.system.js.map +0 -1
  402. package/dist/dnn/index-b5a28c1d.js.map +0 -1
  403. package/dist/dnn/p-058ba146.system.js +0 -2
  404. package/dist/dnn/p-058ba146.system.js.map +0 -1
  405. package/dist/dnn/p-45ce2139.js +0 -2
  406. package/dist/dnn/p-45ce2139.js.map +0 -1
  407. package/dist/dnn/p-755d047d.system.entry.js +0 -11
  408. package/dist/dnn/p-755d047d.system.entry.js.map +0 -1
  409. package/dist/dnn/p-8ec1f3a8.entry.js +0 -11
  410. package/dist/dnn/p-8ec1f3a8.entry.js.map +0 -1
  411. package/dist/dnn/p-f91193e2.system.js +0 -2
  412. package/dist/dnn/p-f91193e2.system.js.map +0 -1
  413. package/dist/dnn/shadow-css-d573707f.system.js +0 -14
  414. package/dist/dnn/shadow-css-d573707f.system.js.map +0 -1
  415. package/dist/esm/css-shim-20dbffa5.js.map +0 -1
  416. package/dist/esm/dnn-button_16.entry.js.map +0 -1
  417. package/dist/esm/index-b5a28c1d.js.map +0 -1
  418. package/dist/esm/index-cdbad319.js.map +0 -1
  419. package/dist/esm-es5/dnn-button_16.entry.js +0 -11
  420. package/dist/esm-es5/dnn-button_16.entry.js.map +0 -1
  421. package/dist/esm-es5/index-cdbad319.js +0 -2
  422. package/dist/esm-es5/index-cdbad319.js.map +0 -1
@@ -2,405 +2,405 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-aff4d89a.js');
6
- const mouseUtilities = require('./mouseUtilities-75be531a.js');
5
+ const index = require('./index-d53702a3.js');
6
+ const mouseUtilities = require('./mouseUtilities-ecd5ecf7.js');
7
7
 
8
- var CornerType;
9
- (function (CornerType) {
10
- CornerType[CornerType["nw"] = 0] = "nw";
11
- CornerType[CornerType["ne"] = 1] = "ne";
12
- CornerType[CornerType["se"] = 2] = "se";
13
- CornerType[CornerType["sw"] = 3] = "sw";
14
- })(CornerType || (CornerType = {}));
8
+ var CornerType;
9
+ (function (CornerType) {
10
+ CornerType[CornerType["nw"] = 0] = "nw";
11
+ CornerType[CornerType["ne"] = 1] = "ne";
12
+ CornerType[CornerType["se"] = 2] = "se";
13
+ CornerType[CornerType["sw"] = 3] = "sw";
14
+ })(CornerType || (CornerType = {}));
15
15
  ;
16
16
 
17
17
  const dnnImageCropperCss = ":host{display:block}canvas{display:none}.view{visibility:hidden;opacity:0;height:0;overflow:hidden;-webkit-transition:all 300ms ease-in-out;transition:all 300ms ease-in-out}.view.visible{visibility:visible;opacity:1;height:initial;overflow:visible}.view .cropper{position:relative;width:100%}.view .cropper img{width:100%;display:block;margin:0 auto}.view .cropper .backdrop{-webkit-backdrop-filter:saturate(0.5);backdrop-filter:saturate(0.5);-webkit-backdrop-filter:brightness(0.5);backdrop-filter:brightness(0.5);position:absolute;left:0;top:0;width:100%;height:100%}.view .cropper .crop{position:absolute;top:0;left:0;width:100%;height:100%;outline:2px dashed white;-webkit-box-shadow:black 0 0 0px 2px;box-shadow:black 0 0 0px 2px;-webkit-backdrop-filter:saturate(2);backdrop-filter:saturate(2);-webkit-backdrop-filter:brightness(2);backdrop-filter:brightness(2);cursor:move}.view .cropper .crop>div{width:20px;height:20px;background-color:white;border:2px solid rgba(0, 0, 0, 0.5);position:absolute}.view .cropper .crop>div.nw,.view .cropper .crop>div.ne{top:-17px}.view .cropper .crop>div.ne,.view .cropper .crop>div.se{right:-17px}.view .cropper .crop>div.se,.view .cropper .crop>div.sw{bottom:-17px}.view .cropper .crop>div.sw,.view .cropper .crop>div.nw{left:-17px}.view .cropper .crop>div.nw,.view .cropper .crop>div.se{cursor:nwse-resize}.view .cropper .crop>div.ne,.view .cropper .crop>div.sw{cursor:nesw-resize}dnn-modal{--max-width:512px}";
18
18
 
19
- let DnnImageCropper = class {
20
- constructor(hostRef) {
21
- index.registerInstance(this, hostRef);
22
- this.imageCropChanged = index.createEvent(this, "imageCropChanged", 7);
23
- /** Sets the desired final image width. */
24
- this.width = 600;
25
- /** Sets the desired final image height. */
26
- this.height = 600;
27
- /** Can be used to customize controls text.
28
- * Some values support tokens, see default values for examples.
29
- */
30
- this.resx = {
31
- capture: "Capture",
32
- dragAndDropFile: "Drag and drop an image",
33
- or: "or",
34
- takePicture: "Take a picture",
35
- uploadFile: "Upload an image",
36
- imageTooSmall: "The image you are attempting to upload does not meet the minimum size requirement of {width} pixels by {height} pixels. Please upload a larger image.",
37
- modalCloseText: "Close",
38
- };
39
- /** Sets the output quality of the corpped image (number between 0 and 1). */
40
- this.quality = 0.8;
41
- /** When set to true, prevents cropping an image smaller than the required size, which would blow pixel and make the final picture look blurry. */
42
- this.preventUndersized = false;
43
- this.handleCropMouseDown = (event) => {
44
- event.stopPropagation();
45
- event.preventDefault();
46
- const element = event.target;
47
- const className = element.classList[0];
48
- document.addEventListener("mouseup", this.handleImageCropFinished, false);
49
- document.addEventListener("touchend", this.handleImageCropFinished, false);
50
- switch (className) {
51
- case "crop":
52
- document.addEventListener("mousemove", this.handleCropDrag, false);
53
- document.addEventListener("touchmove", this.handleCropDrag, false);
54
- document.addEventListener("mouseup", () => document.removeEventListener("mousemove", this.handleCropDrag));
55
- document.addEventListener("touchend", () => document.removeEventListener("touchmove", this.handleCropDrag));
56
- break;
57
- case "nw":
58
- document.addEventListener("mousemove", this.handleNwMouseMove, false);
59
- document.addEventListener("touchmove", this.handleNwMouseMove, false);
60
- document.addEventListener("mouseup", () => document.removeEventListener("mousemove", this.handleNwMouseMove));
61
- document.addEventListener("touchend", () => document.removeEventListener("touchmove", this.handleNwMouseMove));
62
- break;
63
- case "ne":
64
- document.addEventListener("mousemove", this.handleNeMouseMove, false);
65
- document.addEventListener("touchmove", this.handleNeMouseMove, false);
66
- document.addEventListener("mouseup", () => document.removeEventListener("mousemove", this.handleNeMouseMove));
67
- document.addEventListener("touchend", () => document.removeEventListener("touchmove", this.handleNeMouseMove));
68
- break;
69
- case "se":
70
- document.addEventListener("mousemove", this.handleSeMouseMove, false);
71
- document.addEventListener("touchmove", this.handleSeMouseMove, false);
72
- document.addEventListener("mouseup", () => document.removeEventListener("mousemove", this.handleSeMouseMove));
73
- document.addEventListener("touchend", () => document.removeEventListener("touchmove", this.handleSeMouseMove));
74
- break;
75
- case "sw":
76
- document.addEventListener("mousemove", this.handleSwMouseMove, false);
77
- document.addEventListener("touchmove", this.handleSwMouseMove, false);
78
- document.addEventListener("mouseup", () => document.removeEventListener("mousemove", this.handleSwMouseMove));
79
- document.addEventListener("touchend", () => document.removeEventListener("touchmove", this.handleSwMouseMove));
80
- break;
81
- default:
82
- break;
83
- }
84
- };
85
- this.handleImageCropFinished = (_ev) => {
86
- this.emitImage();
87
- document.removeEventListener("mouseup", this.handleImageCropFinished);
88
- this.previousTouch = undefined;
89
- };
90
- this.handleNwMouseMove = (event) => {
91
- this.handleCornerDrag(event, CornerType.nw);
92
- };
93
- this.handleNeMouseMove = (event) => {
94
- this.handleCornerDrag(event, CornerType.ne);
95
- };
96
- this.handleSeMouseMove = (event) => {
97
- this.handleCornerDrag(event, CornerType.se);
98
- };
99
- this.handleSwMouseMove = (event) => {
100
- this.handleCornerDrag(event, CornerType.sw);
101
- };
102
- this.handleCornerDrag = (event, corner) => {
103
- if (!this.isMouseStillInTarget(event)) {
104
- return;
105
- }
106
- let { left, top } = this.getCornerLeftTop(corner);
107
- let newWidth = 0;
108
- let newHeight = 0;
109
- let orientation = "horizontal";
110
- const wantedRatio = this.width / this.height;
111
- const cropRect = this.crop.getBoundingClientRect();
112
- const imageRect = this.image.getBoundingClientRect();
113
- let { movementX, movementY } = mouseUtilities.getMovementFromEvent(event, this.previousTouch);
114
- if (Math.abs(movementX) < Math.abs(movementY)) {
115
- orientation = "vertical";
116
- }
117
- if (orientation == "horizontal") {
118
- switch (corner) {
119
- case CornerType.nw:
120
- case CornerType.sw:
121
- newWidth = cropRect.width - movementX;
122
- newHeight = newWidth / wantedRatio;
123
- break;
124
- case CornerType.ne:
125
- case CornerType.se:
126
- newWidth = cropRect.width + movementX;
127
- newHeight = newWidth / wantedRatio;
128
- break;
129
- default:
130
- break;
131
- }
132
- }
133
- else {
134
- switch (corner) {
135
- case CornerType.nw:
136
- case CornerType.ne:
137
- newHeight = cropRect.height - movementY;
138
- newWidth = newHeight * wantedRatio;
139
- break;
140
- case CornerType.se:
141
- case CornerType.sw:
142
- newHeight = cropRect.height + movementY;
143
- newWidth = newHeight * wantedRatio;
144
- break;
145
- default:
146
- break;
147
- }
148
- }
149
- switch (corner) {
150
- case CornerType.ne:
151
- case CornerType.nw:
152
- const topOffset = cropRect.height - newHeight;
153
- top = this.crop.offsetTop + topOffset;
154
- default:
155
- break;
156
- }
157
- switch (corner) {
158
- case CornerType.nw:
159
- case CornerType.sw:
160
- const leftOffset = cropRect.width - newWidth;
161
- left = this.crop.offsetLeft + leftOffset;
162
- if (left < 0)
163
- left = 0;
164
- if (left > imageRect.width)
165
- left = imageRect.width;
166
- if (top < 0)
167
- top = 0;
168
- if (top > imageRect.height)
169
- top = imageRect.height;
170
- if (left + newWidth > imageRect.width)
171
- newWidth = imageRect.width - left;
172
- if (top + newHeight > imageRect.height)
173
- newHeight = imageRect.height - top;
174
- break;
175
- case CornerType.ne:
176
- case CornerType.se:
177
- if (top < 0)
178
- top = 0;
179
- if (top > imageRect.height)
180
- top = imageRect.height;
181
- if (left + newWidth > imageRect.width)
182
- newWidth = imageRect.width - left;
183
- if (top + newHeight > imageRect.height)
184
- newHeight = imageRect.height - top;
185
- break;
186
- default:
187
- break;
188
- }
189
- if (newWidth / newHeight != wantedRatio) {
190
- return;
191
- }
192
- if (this.preventUndersized) {
193
- const zoomRatio = this.image.width / this.image.naturalWidth;
194
- if (newWidth / zoomRatio < this.width || newHeight / zoomRatio < this.height) {
195
- return;
196
- }
197
- }
198
- switch (corner) {
199
- case CornerType.ne:
200
- this.crop.style.top = `${top}px`;
201
- this.crop.style.width = `${newWidth}px`;
202
- this.crop.style.height = `${newHeight}px`;
203
- break;
204
- case CornerType.nw:
205
- this.crop.style.left = `${left}px`;
206
- this.crop.style.top = `${top}px`;
207
- this.crop.style.width = `${newWidth}px`;
208
- this.crop.style.height = `${newHeight}px`;
209
- break;
210
- case CornerType.se:
211
- this.crop.style.width = `${newWidth}px`;
212
- this.crop.style.height = `${newHeight}px`;
213
- break;
214
- case CornerType.sw:
215
- this.crop.style.left = `${left}px`;
216
- this.crop.style.width = `${newWidth}px`;
217
- this.crop.style.height = `${newHeight}px`;
218
- break;
219
- default:
220
- break;
221
- }
222
- };
223
- this.handleCropDrag = (ev) => {
224
- if (!this.isMouseStillInTarget(ev)) {
225
- return;
226
- }
227
- let { movementX, movementY } = mouseUtilities.getMovementFromEvent(ev, this.previousTouch);
228
- let newLeft = this.crop.offsetLeft + movementX;
229
- let newTop = this.crop.offsetTop + movementY;
230
- var imageRect = this.image.getBoundingClientRect();
231
- var cropRect = this.crop.getBoundingClientRect();
232
- if (newLeft < 0) {
233
- newLeft = 0;
234
- }
235
- if (newTop < 0) {
236
- newTop = 0;
237
- }
238
- if (newLeft + cropRect.width > imageRect.width) {
239
- newLeft = this.crop.offsetLeft;
240
- }
241
- if (newTop + cropRect.height > imageRect.height) {
242
- newTop = this.crop.offsetTop;
243
- }
244
- this.crop.style.left = newLeft + "px";
245
- this.crop.style.top = newTop + "px";
246
- };
247
- }
248
- componentDidLoad() {
249
- requestAnimationFrame(() => {
250
- this.setView("noPictureView");
251
- });
252
- }
253
- setView(newView) {
254
- const views = this.host.shadowRoot.querySelectorAll(".view");
255
- views.forEach(v => v.classList.remove("visible"));
256
- switch (newView) {
257
- case "noPictureView":
258
- this.noPictureView.classList.add("visible");
259
- break;
260
- case "hasPictureView":
261
- this.hasPictureView.classList.add("visible");
262
- break;
263
- default:
264
- break;
265
- }
266
- this.view = newView;
267
- }
268
- initCrop() {
269
- var wantedRatio = this.width / this.height;
270
- var imageRect = this.image.getBoundingClientRect();
271
- var imageRatio = imageRect.width / imageRect.height;
272
- if (wantedRatio > imageRatio) {
273
- var wantedHeight = imageRect.width / wantedRatio;
274
- var diff = imageRect.height - wantedHeight;
275
- this.crop.style.top = Math.round(diff / 2).toString() + "px";
276
- this.crop.style.height = Math.round(wantedHeight).toString() + "px";
277
- }
278
- else {
279
- var wantedWidth = imageRect.height * wantedRatio;
280
- var diff = imageRect.width - wantedWidth;
281
- this.crop.style.left = Math.round(diff / 2).toString() + "px";
282
- this.crop.style.width = Math.round(wantedWidth).toString() + "px";
283
- }
284
- }
285
- setImage() {
286
- this.image.addEventListener('load', () => {
287
- this.initCrop();
288
- this.emitImage();
289
- });
290
- this.image.src = this.canvas.toDataURL();
291
- }
292
- handleNewFile(file) {
293
- if (file.type.split('/')[0] != "image") {
294
- return;
295
- }
296
- var reader = new FileReader();
297
- reader.onload = readerLoadEvent => {
298
- var img = new Image();
299
- img.onload = () => {
300
- this.canvas.width = img.width;
301
- this.canvas.height = img.height;
302
- if (this.preventUndersized && (img.width < this.width || img.height < this.height)) {
303
- this.imageTooSmallModal.show();
304
- return;
305
- }
306
- var ctx = this.canvas.getContext("2d");
307
- ctx.drawImage(img, 0, 0);
308
- this.setView("hasPictureView");
309
- this.setImage();
310
- };
311
- img.src = readerLoadEvent.target.result.toString();
312
- };
313
- reader.readAsDataURL(file);
314
- }
315
- emitImage() {
316
- var x = this.crop.offsetLeft / this.image.width * this.image.naturalWidth;
317
- var y = this.crop.offsetTop / this.image.height * this.image.naturalHeight;
318
- var cropRect = this.crop.getBoundingClientRect();
319
- var width = cropRect.width / this.image.width * this.image.naturalWidth;
320
- var height = cropRect.height / this.image.height * this.image.naturalHeight;
321
- if (x < 0)
322
- x = 0;
323
- if (x > this.image.naturalWidth)
324
- x = this.image.naturalWidth;
325
- if (y < 0)
326
- y = 0;
327
- if (y > this.image.naturalWidth)
328
- y = this.image.naturalWidth;
329
- if (width > this.image.naturalWidth)
330
- width = this.image.naturalWidth;
331
- if (height > this.image.naturalHeight)
332
- height = this.image.naturalHeight;
333
- var dataUrl = this.generateCroppedImage(x, y, width, height, this.width, this.height);
334
- this.imageCropChanged.emit(dataUrl);
335
- }
336
- generateCroppedImage(x, y, width, height, desiredWidth, desiredHeight) {
337
- this.canvas.width = desiredWidth;
338
- this.canvas.height = desiredHeight;
339
- const context = this.canvas.getContext("2d");
340
- context.clearRect(0, 0, desiredWidth, desiredHeight);
341
- context.drawImage(this.image, x, y, width, height, 0, 0, desiredWidth, desiredHeight);
342
- return this.canvas.toDataURL("image/jpeg", this.quality);
343
- }
344
- getCornerLeftTop(corner) {
345
- let left = 0;
346
- let top = 0;
347
- switch (corner) {
348
- case CornerType.se:
349
- left = this.crop.offsetLeft;
350
- top = this.crop.offsetTop;
351
- break;
352
- case CornerType.sw:
353
- top = this.crop.offsetTop;
354
- break;
355
- default:
356
- break;
357
- }
358
- return { top, left };
359
- }
360
- isMouseStillInTarget(event) {
361
- var inside = false;
362
- let mouseX;
363
- let mouseY;
364
- const imageRect = this.image.getBoundingClientRect();
365
- if (event instanceof MouseEvent) {
366
- mouseX = event.clientX;
367
- mouseY = event.clientY;
368
- }
369
- if (typeof TouchEvent !== "undefined") {
370
- if (event instanceof TouchEvent) {
371
- var touch = event.touches[0];
372
- mouseX = touch.clientX;
373
- mouseY = touch.clientY;
374
- }
375
- }
376
- if (mouseX >= imageRect.x &&
377
- mouseY >= imageRect.y &&
378
- mouseX <= imageRect.left + imageRect.width &&
379
- mouseY <= imageRect.top + imageRect.height) {
380
- inside = true;
381
- }
382
- var corners = this.crop.querySelectorAll("div");
383
- corners.forEach(corner => {
384
- var cornerRect = corner.getBoundingClientRect();
385
- if (mouseX >= cornerRect.x &&
386
- mouseY >= cornerRect.y &&
387
- mouseX <= cornerRect.left + cornerRect.width &&
388
- mouseY <= cornerRect.top + cornerRect.height) {
389
- inside = true;
390
- }
391
- });
392
- return inside;
393
- }
394
- render() {
395
- return (index.h(index.Host, { ref: el => this.host = el }, index.h("canvas", { ref: el => this.canvas = el }), index.h("div", { class: "view", ref: el => this.hasPictureView = el }, index.h("div", { class: "cropper" }, index.h("img", { ref: el => this.image = el }), index.h("div", { class: "backdrop" }), index.h("div", { class: "crop", ref: e => this.crop = e, onMouseDown: this.handleCropMouseDown, onTouchStart: this.handleCropMouseDown }, index.h("div", { class: "nw" }), index.h("div", { class: "ne" }), index.h("div", { class: "se" }), index.h("div", { class: "sw" })))), index.h("div", { class: "view", ref: el => this.noPictureView = el }, index.h("dnn-dropzone", { allowCameraMode: true, onFilesSelected: e => this.handleNewFile(e.detail[0]), resx: {
396
- capture: this.resx.capture,
397
- dragAndDropFile: this.resx.dragAndDropFile,
398
- or: this.resx.or,
399
- takePicture: this.resx.takePicture,
400
- uploadFile: this.resx.uploadFile,
401
- } })), index.h("dnn-modal", { ref: el => this.imageTooSmallModal = el, "close-text": this.resx.modalCloseText }, index.h("p", null, this.resx.imageTooSmall.replace("{width}", this.width.toString()).replace("{height}", this.height.toString())))));
402
- }
403
- };
19
+ const DnnImageCropper = class {
20
+ constructor(hostRef) {
21
+ index.registerInstance(this, hostRef);
22
+ this.imageCropChanged = index.createEvent(this, "imageCropChanged", 7);
23
+ /** Sets the desired final image width. */
24
+ this.width = 600;
25
+ /** Sets the desired final image height. */
26
+ this.height = 600;
27
+ /** Can be used to customize controls text.
28
+ * Some values support tokens, see default values for examples.
29
+ */
30
+ this.resx = {
31
+ capture: "Capture",
32
+ dragAndDropFile: "Drag and drop an image",
33
+ or: "or",
34
+ takePicture: "Take a picture",
35
+ uploadFile: "Upload an image",
36
+ imageTooSmall: "The image you are attempting to upload does not meet the minimum size requirement of {width} pixels by {height} pixels. Please upload a larger image.",
37
+ modalCloseText: "Close",
38
+ };
39
+ /** Sets the output quality of the corpped image (number between 0 and 1). */
40
+ this.quality = 0.8;
41
+ /** When set to true, prevents cropping an image smaller than the required size, which would blow pixel and make the final picture look blurry. */
42
+ this.preventUndersized = false;
43
+ this.handleCropMouseDown = (event) => {
44
+ event.stopPropagation();
45
+ event.preventDefault();
46
+ const element = event.target;
47
+ const className = element.classList[0];
48
+ document.addEventListener("mouseup", this.handleImageCropFinished, false);
49
+ document.addEventListener("touchend", this.handleImageCropFinished, false);
50
+ switch (className) {
51
+ case "crop":
52
+ document.addEventListener("mousemove", this.handleCropDrag, false);
53
+ document.addEventListener("touchmove", this.handleCropDrag, false);
54
+ document.addEventListener("mouseup", () => document.removeEventListener("mousemove", this.handleCropDrag));
55
+ document.addEventListener("touchend", () => document.removeEventListener("touchmove", this.handleCropDrag));
56
+ break;
57
+ case "nw":
58
+ document.addEventListener("mousemove", this.handleNwMouseMove, false);
59
+ document.addEventListener("touchmove", this.handleNwMouseMove, false);
60
+ document.addEventListener("mouseup", () => document.removeEventListener("mousemove", this.handleNwMouseMove));
61
+ document.addEventListener("touchend", () => document.removeEventListener("touchmove", this.handleNwMouseMove));
62
+ break;
63
+ case "ne":
64
+ document.addEventListener("mousemove", this.handleNeMouseMove, false);
65
+ document.addEventListener("touchmove", this.handleNeMouseMove, false);
66
+ document.addEventListener("mouseup", () => document.removeEventListener("mousemove", this.handleNeMouseMove));
67
+ document.addEventListener("touchend", () => document.removeEventListener("touchmove", this.handleNeMouseMove));
68
+ break;
69
+ case "se":
70
+ document.addEventListener("mousemove", this.handleSeMouseMove, false);
71
+ document.addEventListener("touchmove", this.handleSeMouseMove, false);
72
+ document.addEventListener("mouseup", () => document.removeEventListener("mousemove", this.handleSeMouseMove));
73
+ document.addEventListener("touchend", () => document.removeEventListener("touchmove", this.handleSeMouseMove));
74
+ break;
75
+ case "sw":
76
+ document.addEventListener("mousemove", this.handleSwMouseMove, false);
77
+ document.addEventListener("touchmove", this.handleSwMouseMove, false);
78
+ document.addEventListener("mouseup", () => document.removeEventListener("mousemove", this.handleSwMouseMove));
79
+ document.addEventListener("touchend", () => document.removeEventListener("touchmove", this.handleSwMouseMove));
80
+ break;
81
+ default:
82
+ break;
83
+ }
84
+ };
85
+ this.handleImageCropFinished = (_ev) => {
86
+ this.emitImage();
87
+ document.removeEventListener("mouseup", this.handleImageCropFinished);
88
+ this.previousTouch = undefined;
89
+ };
90
+ this.handleNwMouseMove = (event) => {
91
+ this.handleCornerDrag(event, CornerType.nw);
92
+ };
93
+ this.handleNeMouseMove = (event) => {
94
+ this.handleCornerDrag(event, CornerType.ne);
95
+ };
96
+ this.handleSeMouseMove = (event) => {
97
+ this.handleCornerDrag(event, CornerType.se);
98
+ };
99
+ this.handleSwMouseMove = (event) => {
100
+ this.handleCornerDrag(event, CornerType.sw);
101
+ };
102
+ this.handleCornerDrag = (event, corner) => {
103
+ if (!this.isMouseStillInTarget(event)) {
104
+ return;
105
+ }
106
+ let { left, top } = this.getCornerLeftTop(corner);
107
+ let newWidth = 0;
108
+ let newHeight = 0;
109
+ let orientation = "horizontal";
110
+ const wantedRatio = this.width / this.height;
111
+ const cropRect = this.crop.getBoundingClientRect();
112
+ const imageRect = this.image.getBoundingClientRect();
113
+ let { movementX, movementY } = mouseUtilities.getMovementFromEvent(event, this.previousTouch);
114
+ if (Math.abs(movementX) < Math.abs(movementY)) {
115
+ orientation = "vertical";
116
+ }
117
+ if (orientation == "horizontal") {
118
+ switch (corner) {
119
+ case CornerType.nw:
120
+ case CornerType.sw:
121
+ newWidth = cropRect.width - movementX;
122
+ newHeight = newWidth / wantedRatio;
123
+ break;
124
+ case CornerType.ne:
125
+ case CornerType.se:
126
+ newWidth = cropRect.width + movementX;
127
+ newHeight = newWidth / wantedRatio;
128
+ break;
129
+ default:
130
+ break;
131
+ }
132
+ }
133
+ else {
134
+ switch (corner) {
135
+ case CornerType.nw:
136
+ case CornerType.ne:
137
+ newHeight = cropRect.height - movementY;
138
+ newWidth = newHeight * wantedRatio;
139
+ break;
140
+ case CornerType.se:
141
+ case CornerType.sw:
142
+ newHeight = cropRect.height + movementY;
143
+ newWidth = newHeight * wantedRatio;
144
+ break;
145
+ default:
146
+ break;
147
+ }
148
+ }
149
+ switch (corner) {
150
+ case CornerType.ne:
151
+ case CornerType.nw:
152
+ const topOffset = cropRect.height - newHeight;
153
+ top = this.crop.offsetTop + topOffset;
154
+ default:
155
+ break;
156
+ }
157
+ switch (corner) {
158
+ case CornerType.nw:
159
+ case CornerType.sw:
160
+ const leftOffset = cropRect.width - newWidth;
161
+ left = this.crop.offsetLeft + leftOffset;
162
+ if (left < 0)
163
+ left = 0;
164
+ if (left > imageRect.width)
165
+ left = imageRect.width;
166
+ if (top < 0)
167
+ top = 0;
168
+ if (top > imageRect.height)
169
+ top = imageRect.height;
170
+ if (left + newWidth > imageRect.width)
171
+ newWidth = imageRect.width - left;
172
+ if (top + newHeight > imageRect.height)
173
+ newHeight = imageRect.height - top;
174
+ break;
175
+ case CornerType.ne:
176
+ case CornerType.se:
177
+ if (top < 0)
178
+ top = 0;
179
+ if (top > imageRect.height)
180
+ top = imageRect.height;
181
+ if (left + newWidth > imageRect.width)
182
+ newWidth = imageRect.width - left;
183
+ if (top + newHeight > imageRect.height)
184
+ newHeight = imageRect.height - top;
185
+ break;
186
+ default:
187
+ break;
188
+ }
189
+ if (newWidth / newHeight != wantedRatio) {
190
+ return;
191
+ }
192
+ if (this.preventUndersized) {
193
+ const zoomRatio = this.image.width / this.image.naturalWidth;
194
+ if (newWidth / zoomRatio < this.width || newHeight / zoomRatio < this.height) {
195
+ return;
196
+ }
197
+ }
198
+ switch (corner) {
199
+ case CornerType.ne:
200
+ this.crop.style.top = `${top}px`;
201
+ this.crop.style.width = `${newWidth}px`;
202
+ this.crop.style.height = `${newHeight}px`;
203
+ break;
204
+ case CornerType.nw:
205
+ this.crop.style.left = `${left}px`;
206
+ this.crop.style.top = `${top}px`;
207
+ this.crop.style.width = `${newWidth}px`;
208
+ this.crop.style.height = `${newHeight}px`;
209
+ break;
210
+ case CornerType.se:
211
+ this.crop.style.width = `${newWidth}px`;
212
+ this.crop.style.height = `${newHeight}px`;
213
+ break;
214
+ case CornerType.sw:
215
+ this.crop.style.left = `${left}px`;
216
+ this.crop.style.width = `${newWidth}px`;
217
+ this.crop.style.height = `${newHeight}px`;
218
+ break;
219
+ default:
220
+ break;
221
+ }
222
+ };
223
+ this.handleCropDrag = (ev) => {
224
+ if (!this.isMouseStillInTarget(ev)) {
225
+ return;
226
+ }
227
+ let { movementX, movementY } = mouseUtilities.getMovementFromEvent(ev, this.previousTouch);
228
+ let newLeft = this.crop.offsetLeft + movementX;
229
+ let newTop = this.crop.offsetTop + movementY;
230
+ var imageRect = this.image.getBoundingClientRect();
231
+ var cropRect = this.crop.getBoundingClientRect();
232
+ if (newLeft < 0) {
233
+ newLeft = 0;
234
+ }
235
+ if (newTop < 0) {
236
+ newTop = 0;
237
+ }
238
+ if (newLeft + cropRect.width > imageRect.width) {
239
+ newLeft = this.crop.offsetLeft;
240
+ }
241
+ if (newTop + cropRect.height > imageRect.height) {
242
+ newTop = this.crop.offsetTop;
243
+ }
244
+ this.crop.style.left = newLeft + "px";
245
+ this.crop.style.top = newTop + "px";
246
+ };
247
+ }
248
+ componentDidLoad() {
249
+ requestAnimationFrame(() => {
250
+ this.setView("noPictureView");
251
+ });
252
+ }
253
+ setView(newView) {
254
+ const views = this.host.shadowRoot.querySelectorAll(".view");
255
+ views.forEach(v => v.classList.remove("visible"));
256
+ switch (newView) {
257
+ case "noPictureView":
258
+ this.noPictureView.classList.add("visible");
259
+ break;
260
+ case "hasPictureView":
261
+ this.hasPictureView.classList.add("visible");
262
+ break;
263
+ default:
264
+ break;
265
+ }
266
+ this.view = newView;
267
+ }
268
+ initCrop() {
269
+ var wantedRatio = this.width / this.height;
270
+ var imageRect = this.image.getBoundingClientRect();
271
+ var imageRatio = imageRect.width / imageRect.height;
272
+ if (wantedRatio > imageRatio) {
273
+ var wantedHeight = imageRect.width / wantedRatio;
274
+ var diff = imageRect.height - wantedHeight;
275
+ this.crop.style.top = Math.round(diff / 2).toString() + "px";
276
+ this.crop.style.height = Math.round(wantedHeight).toString() + "px";
277
+ }
278
+ else {
279
+ var wantedWidth = imageRect.height * wantedRatio;
280
+ var diff = imageRect.width - wantedWidth;
281
+ this.crop.style.left = Math.round(diff / 2).toString() + "px";
282
+ this.crop.style.width = Math.round(wantedWidth).toString() + "px";
283
+ }
284
+ }
285
+ setImage() {
286
+ this.image.addEventListener('load', () => {
287
+ this.initCrop();
288
+ this.emitImage();
289
+ });
290
+ this.image.src = this.canvas.toDataURL();
291
+ }
292
+ handleNewFile(file) {
293
+ if (file.type.split('/')[0] != "image") {
294
+ return;
295
+ }
296
+ var reader = new FileReader();
297
+ reader.onload = readerLoadEvent => {
298
+ var img = new Image();
299
+ img.onload = () => {
300
+ this.canvas.width = img.width;
301
+ this.canvas.height = img.height;
302
+ if (this.preventUndersized && (img.width < this.width || img.height < this.height)) {
303
+ this.imageTooSmallModal.show();
304
+ return;
305
+ }
306
+ var ctx = this.canvas.getContext("2d");
307
+ ctx.drawImage(img, 0, 0);
308
+ this.setView("hasPictureView");
309
+ this.setImage();
310
+ };
311
+ img.src = readerLoadEvent.target.result.toString();
312
+ };
313
+ reader.readAsDataURL(file);
314
+ }
315
+ emitImage() {
316
+ var x = this.crop.offsetLeft / this.image.width * this.image.naturalWidth;
317
+ var y = this.crop.offsetTop / this.image.height * this.image.naturalHeight;
318
+ var cropRect = this.crop.getBoundingClientRect();
319
+ var width = cropRect.width / this.image.width * this.image.naturalWidth;
320
+ var height = cropRect.height / this.image.height * this.image.naturalHeight;
321
+ if (x < 0)
322
+ x = 0;
323
+ if (x > this.image.naturalWidth)
324
+ x = this.image.naturalWidth;
325
+ if (y < 0)
326
+ y = 0;
327
+ if (y > this.image.naturalWidth)
328
+ y = this.image.naturalWidth;
329
+ if (width > this.image.naturalWidth)
330
+ width = this.image.naturalWidth;
331
+ if (height > this.image.naturalHeight)
332
+ height = this.image.naturalHeight;
333
+ var dataUrl = this.generateCroppedImage(x, y, width, height, this.width, this.height);
334
+ this.imageCropChanged.emit(dataUrl);
335
+ }
336
+ generateCroppedImage(x, y, width, height, desiredWidth, desiredHeight) {
337
+ this.canvas.width = desiredWidth;
338
+ this.canvas.height = desiredHeight;
339
+ const context = this.canvas.getContext("2d");
340
+ context.clearRect(0, 0, desiredWidth, desiredHeight);
341
+ context.drawImage(this.image, x, y, width, height, 0, 0, desiredWidth, desiredHeight);
342
+ return this.canvas.toDataURL("image/jpeg", this.quality);
343
+ }
344
+ getCornerLeftTop(corner) {
345
+ let left = 0;
346
+ let top = 0;
347
+ switch (corner) {
348
+ case CornerType.se:
349
+ left = this.crop.offsetLeft;
350
+ top = this.crop.offsetTop;
351
+ break;
352
+ case CornerType.sw:
353
+ top = this.crop.offsetTop;
354
+ break;
355
+ default:
356
+ break;
357
+ }
358
+ return { top, left };
359
+ }
360
+ isMouseStillInTarget(event) {
361
+ var inside = false;
362
+ let mouseX;
363
+ let mouseY;
364
+ const imageRect = this.image.getBoundingClientRect();
365
+ if (event instanceof MouseEvent) {
366
+ mouseX = event.clientX;
367
+ mouseY = event.clientY;
368
+ }
369
+ if (typeof TouchEvent !== "undefined") {
370
+ if (event instanceof TouchEvent) {
371
+ var touch = event.touches[0];
372
+ mouseX = touch.clientX;
373
+ mouseY = touch.clientY;
374
+ }
375
+ }
376
+ if (mouseX >= imageRect.x &&
377
+ mouseY >= imageRect.y &&
378
+ mouseX <= imageRect.left + imageRect.width &&
379
+ mouseY <= imageRect.top + imageRect.height) {
380
+ inside = true;
381
+ }
382
+ var corners = this.crop.querySelectorAll("div");
383
+ corners.forEach(corner => {
384
+ var cornerRect = corner.getBoundingClientRect();
385
+ if (mouseX >= cornerRect.x &&
386
+ mouseY >= cornerRect.y &&
387
+ mouseX <= cornerRect.left + cornerRect.width &&
388
+ mouseY <= cornerRect.top + cornerRect.height) {
389
+ inside = true;
390
+ }
391
+ });
392
+ return inside;
393
+ }
394
+ render() {
395
+ return (index.h(index.Host, { ref: el => this.host = el }, index.h("canvas", { ref: el => this.canvas = el }), index.h("div", { class: "view", ref: el => this.hasPictureView = el }, index.h("div", { class: "cropper" }, index.h("img", { ref: el => this.image = el }), index.h("div", { class: "backdrop" }), index.h("div", { class: "crop", ref: e => this.crop = e, onMouseDown: this.handleCropMouseDown, onTouchStart: this.handleCropMouseDown }, index.h("div", { class: "nw" }), index.h("div", { class: "ne" }), index.h("div", { class: "se" }), index.h("div", { class: "sw" })))), index.h("div", { class: "view", ref: el => this.noPictureView = el }, index.h("dnn-dropzone", { allowCameraMode: true, onFilesSelected: e => this.handleNewFile(e.detail[0]), resx: {
396
+ capture: this.resx.capture,
397
+ dragAndDropFile: this.resx.dragAndDropFile,
398
+ or: this.resx.or,
399
+ takePicture: this.resx.takePicture,
400
+ uploadFile: this.resx.uploadFile,
401
+ } })), index.h("dnn-modal", { ref: el => this.imageTooSmallModal = el, "close-text": this.resx.modalCloseText }, index.h("p", null, this.resx.imageTooSmall.replace("{width}", this.width.toString()).replace("{height}", this.height.toString())))));
402
+ }
403
+ };
404
404
  DnnImageCropper.style = dnnImageCropperCss;
405
405
 
406
406
  exports.dnn_image_cropper = DnnImageCropper;