@sankhyalabs/sankhyablocks 8.16.0-ms.10 → 8.16.0-ms.12

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 (476) hide show
  1. package/dist/cjs/{ClientSideExporterProvider-fe52f7cf.js → ClientSideExporterProvider-0ce2bcd9.js} +23 -28
  2. package/dist/cjs/{ConfigStorage-6b633b10.js → ConfigStorage-48ba265b.js} +47 -19
  3. package/dist/cjs/{DataFetcher-875371e9.js → DataFetcher-1afdb18e.js} +14 -2
  4. package/dist/cjs/FormConfigHelper-c664dbae.js +260 -0
  5. package/dist/cjs/{pesquisa-fetcher-30cab386.js → ISave-c76e2c51.js} +35 -3
  6. package/dist/cjs/{PersonalizedFilterUtils-0184ffbb.js → PersonalizedFilterUtils-7259cf65.js} +1 -1
  7. package/dist/cjs/{SnkFormConfigManager-d680be08.js → SnkFormConfigManager-aa4631bd.js} +4 -5
  8. package/dist/cjs/{SnkMessageBuilder-bae64d0d.js → SnkMessageBuilder-e3b7850b.js} +63 -30
  9. package/dist/cjs/{auth-fetcher-24ba4135.js → auth-fetcher-1687ac0a.js} +1 -1
  10. package/dist/cjs/config-header.cjs.entry.js +79 -0
  11. package/dist/cjs/configs-button.cjs.entry.js +61 -0
  12. package/dist/cjs/{constants-241934b3.js → constants-6d82e405.js} +9 -38
  13. package/dist/cjs/{dataunit-fetcher-b95768e8.js → dataunit-fetcher-a723f0dc.js} +12 -8
  14. package/dist/cjs/default-filters-a09bf82b.js +8 -0
  15. package/dist/cjs/field-config_2.cjs.entry.js +324 -0
  16. package/dist/cjs/fields-layout.cjs.entry.js +341 -0
  17. package/dist/cjs/fields-selector.cjs.entry.js +74 -0
  18. package/dist/cjs/{filter-type.enum-b14ce507.js → filter-type.enum-2bb46d2a.js} +1 -0
  19. package/dist/cjs/{form-config-fetcher-e0a512c3.js → form-config-fetcher-40d3f752.js} +15 -1
  20. package/dist/cjs/guides-configurator.cjs.entry.js +164 -0
  21. package/dist/cjs/{index-ab1cfb44.js → index-0ad2baeb.js} +1 -1
  22. package/dist/cjs/{index-f9e81701.js → index-1cf293c1.js} +34 -12
  23. package/dist/cjs/{index-c5771aba.js → index-62760a9c.js} +5 -0
  24. package/dist/cjs/loader.cjs.js +2 -2
  25. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +7 -8
  26. package/dist/cjs/sankhyablocks.cjs.js +2 -2
  27. package/dist/cjs/{snk-actions-button_5.cjs.entry.js → snk-actions-button_8.cjs.entry.js} +132 -10
  28. package/dist/cjs/snk-actions-form.cjs.entry.js +1 -1
  29. package/dist/cjs/snk-application.cjs.entry.js +185 -24
  30. package/dist/cjs/snk-attach.cjs.entry.js +9 -10
  31. package/dist/cjs/snk-client-confirm.cjs.entry.js +1 -1
  32. package/dist/cjs/snk-configurator.cjs.entry.js +10 -3
  33. package/dist/cjs/snk-crud.cjs.entry.js +48 -76
  34. package/dist/cjs/snk-custom-slot-elements.cjs.entry.js +1 -1
  35. package/dist/cjs/snk-data-exporter.cjs.entry.js +8 -9
  36. package/dist/cjs/{snk-data-unit-33937ffe.js → snk-data-unit-3684c96e.js} +227 -13
  37. package/dist/cjs/snk-data-unit.cjs.entry.js +5 -5
  38. package/dist/cjs/snk-default-filter.cjs.entry.js +77 -0
  39. package/dist/cjs/snk-detail-view.cjs.entry.js +68 -16
  40. package/dist/cjs/snk-entity-list.cjs.entry.js +3 -8
  41. package/dist/cjs/snk-exporter-email-sender.cjs.entry.js +1 -1
  42. package/dist/cjs/snk-expression-group_2.cjs.entry.js +10 -8
  43. package/dist/cjs/snk-filter-advanced-mode_2.cjs.entry.js +5 -4
  44. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +85 -31
  45. package/dist/cjs/snk-filter-binary-select.cjs.entry.js +1 -1
  46. package/dist/cjs/snk-filter-checkbox-list.cjs.entry.js +1 -1
  47. package/dist/cjs/snk-filter-detail.cjs.entry.js +3 -3
  48. package/dist/cjs/snk-filter-field-search_2.cjs.entry.js +3 -3
  49. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +5 -5
  50. package/dist/cjs/snk-filter-multi-select.cjs.entry.js +1 -1
  51. package/dist/cjs/snk-filter-number.cjs.entry.js +1 -1
  52. package/dist/cjs/snk-filter-period.cjs.entry.js +1 -1
  53. package/dist/cjs/snk-filter-search.cjs.entry.js +19 -6
  54. package/dist/cjs/snk-filter-text.cjs.entry.js +1 -1
  55. package/dist/cjs/snk-form-summary.cjs.entry.js +1 -1
  56. package/dist/cjs/snk-form-view.cjs.entry.js +20 -8
  57. package/dist/cjs/snk-form_2.cjs.entry.js +433 -0
  58. package/dist/cjs/snk-grid.cjs.entry.js +52 -39
  59. package/dist/cjs/{snk-guides-viewer-b6002ea7.js → snk-guides-viewer-edc0a00a.js} +139 -73
  60. package/dist/cjs/snk-guides-viewer.cjs.entry.js +13 -13
  61. package/dist/cjs/snk-personalized-filter-editor.cjs.entry.js +1 -1
  62. package/dist/cjs/snk-personalized-filter.cjs.entry.js +55 -20
  63. package/dist/cjs/snk-pesquisa.cjs.entry.js +14 -15
  64. package/dist/cjs/snk-print-selector.cjs.entry.js +1 -1
  65. package/dist/cjs/snk-simple-bar.cjs.entry.js +1 -1
  66. package/dist/cjs/snk-simple-crud.cjs.entry.js +148 -114
  67. package/dist/cjs/snk-taskbar.cjs.entry.js +10 -5
  68. package/dist/cjs/sortable.esm-9a110bb7.js +2668 -0
  69. package/dist/cjs/{taskbar-elements-ebddaef4.js → taskbar-elements-3b74cd21.js} +13 -2
  70. package/dist/cjs/{field-search-68e34bf4.js → taskbar-processor-2fba34a8.js} +0 -35
  71. package/dist/cjs/teste-pesquisa.cjs.entry.js +1 -1
  72. package/dist/collection/collection-manifest.json +11 -14
  73. package/dist/collection/components/snk-application/errorhandler/snk-error-handler.js +5 -2
  74. package/dist/collection/components/snk-application/search-strategy/exec-prepared-search-plus.js +107 -0
  75. package/dist/collection/components/snk-application/snk-application.js +133 -13
  76. package/dist/collection/components/snk-configurator/snk-configurator.js +26 -1
  77. package/dist/collection/components/snk-crud/snk-crud.js +76 -67
  78. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.css +10 -1
  79. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +82 -4
  80. package/dist/collection/components/snk-crud/subcomponents/snk-form-view.js +54 -7
  81. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +152 -82
  82. package/dist/collection/components/snk-data-exporter/interfaces/IExporterProvider.js +15 -19
  83. package/dist/collection/components/snk-data-unit/MultipleUpdateHelper.js +128 -0
  84. package/dist/collection/components/snk-data-unit/snk-data-unit.js +107 -12
  85. package/dist/collection/components/snk-entity-list/snk-entity-list.js +2 -7
  86. package/dist/collection/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.js +1 -1
  87. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +18 -5
  88. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +80 -12
  89. package/dist/collection/components/snk-filter-bar/filter-modal/subcomponents/snk-default-filter/snk-default-filter.css +34 -0
  90. package/dist/collection/components/snk-filter-bar/filter-modal/subcomponents/snk-default-filter/snk-default-filter.js +142 -0
  91. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +24 -15
  92. package/dist/collection/components/snk-filter-bar/types/default-filters.js +6 -0
  93. package/dist/collection/components/snk-filter-bar/types/filter-type.enum.js +1 -0
  94. package/dist/collection/components/snk-filter-bar/utils/SnkFilterModalFactory.js +4 -4
  95. package/dist/collection/components/snk-form-config/FormConfigHelper.js +245 -0
  96. package/dist/collection/components/snk-form-config/SnkFormConfigManager.js +4 -5
  97. package/dist/collection/components/snk-form-config/config-header/config-header.css +18 -0
  98. package/dist/collection/components/snk-form-config/config-header/config-header.js +236 -0
  99. package/dist/collection/components/snk-form-config/config-header/configs-button/configs-button.css +41 -0
  100. package/dist/collection/components/snk-form-config/config-header/configs-button/configs-button.js +170 -0
  101. package/dist/collection/components/snk-form-config/field-item/field-config/field-config.css +21 -0
  102. package/dist/collection/components/snk-form-config/field-item/field-config/field-config.js +408 -0
  103. package/dist/collection/components/snk-form-config/field-item/field-item.css +108 -0
  104. package/dist/collection/components/snk-form-config/field-item/field-item.js +206 -0
  105. package/dist/collection/components/snk-form-config/fields-layout/fields-layout.css +133 -0
  106. package/dist/collection/components/snk-form-config/fields-layout/fields-layout.js +578 -0
  107. package/dist/collection/components/snk-form-config/fields-selector/fields-selector.css +38 -0
  108. package/dist/collection/components/snk-form-config/fields-selector/fields-selector.js +146 -0
  109. package/dist/collection/components/snk-form-config/guides-configurator/guides-configurator.css +132 -0
  110. package/dist/collection/components/snk-form-config/guides-configurator/guides-configurator.js +317 -0
  111. package/dist/collection/components/snk-form-config/snk-form-config.css +16 -229
  112. package/dist/collection/components/snk-form-config/snk-form-config.js +288 -980
  113. package/dist/collection/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.js +2 -2
  114. package/dist/collection/components/snk-grid/snk-grid.js +93 -42
  115. package/dist/collection/components/snk-grid-config/snk-grid-config.js +2 -0
  116. package/dist/collection/components/snk-layout-form-config/snk-layout-form-config.css +3 -0
  117. package/dist/collection/components/snk-layout-form-config/snk-layout-form-config.js +73 -0
  118. package/dist/collection/components/snk-layout-form-config/snk-view-representation/snk-view-representation.css +78 -0
  119. package/dist/collection/components/snk-layout-form-config/snk-view-representation/snk-view-representation.js +57 -0
  120. package/dist/collection/components/snk-personalized-filter/interfaces/index.js +5 -0
  121. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +67 -13
  122. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.css +3 -0
  123. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.js +20 -1
  124. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.js +22 -3
  125. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.js +20 -1
  126. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +177 -104
  127. package/dist/collection/components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button.css +13 -0
  128. package/dist/collection/components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button.js +1 -1
  129. package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +11 -0
  130. package/dist/collection/components/snk-taskbar/elements/taskbar-split-button/taskbar-split-button.css +0 -0
  131. package/dist/collection/components/snk-taskbar/elements/taskbar-split-button/taskbar-split-button.js +220 -0
  132. package/dist/collection/components/snk-taskbar/snk-taskbar.js +30 -4
  133. package/dist/collection/lib/configs/ConfigStorage.js +16 -8
  134. package/dist/collection/lib/configs/LayoutFormConfig.js +25 -0
  135. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +14 -2
  136. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +5 -2
  137. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +6 -5
  138. package/dist/collection/lib/http/data-fetcher/fetchers/form-config-fetcher.js +14 -0
  139. package/dist/collection/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.js +29 -9
  140. package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +26 -2
  141. package/dist/collection/lib/message/SnkMessageBuilder.js +1 -0
  142. package/dist/collection/lib/message/resources/snk-crud.msg.js +1 -1
  143. package/dist/collection/lib/message/resources/snk-data-unit.msg.js +28 -23
  144. package/dist/collection/lib/message/resources/snk-filter-bar.msg.js +6 -0
  145. package/dist/collection/lib/message/resources/snk-form.msg.js +16 -2
  146. package/dist/collection/lib/message/resources/snk-grid.msg.js +1 -1
  147. package/dist/collection/lib/message/resources/snk-personalized-filter.msg.js +6 -1
  148. package/dist/collection/lib/message/resources/snk-simple-crud.msg.js +2 -1
  149. package/dist/collection/lib/message/resources/snk-taskbar.msg.js +1 -0
  150. package/dist/collection/lib/utils/constants.js +8 -1
  151. package/dist/components/ConfigStorage.js +45 -17
  152. package/dist/components/ContinuousInsertUtils.js +19 -54
  153. package/dist/components/DataFetcher.js +14 -2
  154. package/dist/components/ISave.js +26 -2
  155. package/dist/components/PersonalizedFilterUtils.js +6 -1
  156. package/dist/components/SnkFormConfigManager.js +2 -3
  157. package/dist/components/SnkMessageBuilder.js +63 -30
  158. package/dist/components/{snk-tab-config.d.ts → config-header.d.ts} +4 -4
  159. package/dist/components/config-header.js +6 -0
  160. package/dist/components/config-header2.js +103 -0
  161. package/dist/components/configs-button.d.ts +11 -0
  162. package/dist/components/configs-button.js +6 -0
  163. package/dist/components/configs-button2.js +76 -0
  164. package/dist/components/constants.js +9 -34
  165. package/dist/components/dataunit-fetcher.js +11 -7
  166. package/dist/components/field-config.d.ts +11 -0
  167. package/dist/components/field-config.js +6 -0
  168. package/dist/components/field-config2.js +525 -0
  169. package/dist/components/field-item.d.ts +11 -0
  170. package/dist/components/field-item.js +6 -0
  171. package/dist/components/field-item2.js +93 -0
  172. package/dist/components/fields-layout.d.ts +11 -0
  173. package/dist/components/fields-layout.js +6 -0
  174. package/dist/components/fields-layout2.js +370 -0
  175. package/dist/components/{snk-field-config.d.ts → fields-selector.d.ts} +4 -4
  176. package/dist/components/fields-selector.js +6 -0
  177. package/dist/components/fields-selector2.js +98 -0
  178. package/dist/components/form-config-fetcher.js +14 -0
  179. package/dist/components/guides-configurator.d.ts +11 -0
  180. package/dist/components/guides-configurator.js +6 -0
  181. package/dist/components/guides-configurator2.js +182 -0
  182. package/dist/components/index.d.ts +11 -3
  183. package/dist/components/index.js +11 -3
  184. package/dist/components/snk-application2.js +182 -16
  185. package/dist/components/snk-attach2.js +42 -24
  186. package/dist/components/snk-configurator2.js +22 -2
  187. package/dist/components/snk-crud.js +145 -128
  188. package/dist/components/snk-data-unit2.js +225 -11
  189. package/dist/components/{snk-config-options.d.ts → snk-default-filter.d.ts} +4 -4
  190. package/dist/components/snk-default-filter.js +6 -0
  191. package/dist/components/snk-default-filter2.js +97 -0
  192. package/dist/components/snk-detail-view2.js +331 -152
  193. package/dist/components/snk-entity-list.js +2 -7
  194. package/dist/components/snk-expression-group2.js +4 -2
  195. package/dist/components/snk-expression-item2.js +5 -3
  196. package/dist/components/snk-filter-assistent-mode2.js +4 -2
  197. package/dist/components/snk-filter-bar2.js +29 -20
  198. package/dist/components/snk-filter-modal-item2.js +1 -0
  199. package/dist/components/snk-filter-modal.js +59 -8
  200. package/dist/components/snk-filter-search.js +18 -5
  201. package/dist/components/snk-form-config2.js +253 -953
  202. package/dist/components/snk-form-view2.js +22 -8
  203. package/dist/components/snk-form.js +33 -9
  204. package/dist/components/snk-grid-config2.js +2 -0
  205. package/dist/components/snk-grid2.js +85 -63
  206. package/dist/components/snk-layout-form-config.d.ts +11 -0
  207. package/dist/components/snk-layout-form-config.js +6 -0
  208. package/dist/components/snk-layout-form-config2.js +73 -0
  209. package/dist/components/snk-personalized-filter2.js +50 -14
  210. package/dist/components/snk-simple-crud2.js +180 -124
  211. package/dist/components/snk-taskbar2.js +33 -10
  212. package/dist/components/snk-view-representation.d.ts +11 -0
  213. package/dist/components/snk-view-representation.js +6 -0
  214. package/dist/components/snk-view-representation2.js +41 -0
  215. package/dist/components/sortable.esm.js +2666 -0
  216. package/dist/components/taskbar-actions-button2.js +2 -2
  217. package/dist/components/taskbar-split-button.d.ts +11 -0
  218. package/dist/components/taskbar-split-button.js +6 -0
  219. package/dist/components/taskbar-split-button2.js +87 -0
  220. package/dist/esm/{ClientSideExporterProvider-bd24a4b3.js → ClientSideExporterProvider-3ed744fd.js} +23 -28
  221. package/dist/esm/{ConfigStorage-e5c1f4c0.js → ConfigStorage-79b9e180.js} +47 -19
  222. package/dist/esm/{DataFetcher-ecf5f903.js → DataFetcher-88e56266.js} +14 -2
  223. package/dist/esm/FormConfigHelper-49fe72ca.js +248 -0
  224. package/dist/esm/{pesquisa-fetcher-e26c3295.js → ISave-5efafc97.js} +36 -4
  225. package/dist/esm/{PersonalizedFilterUtils-e2b38ef7.js → PersonalizedFilterUtils-2db38ff2.js} +1 -1
  226. package/dist/esm/{SnkFormConfigManager-1efd102b.js → SnkFormConfigManager-b4b93298.js} +4 -5
  227. package/dist/esm/{SnkMessageBuilder-6fff4a4c.js → SnkMessageBuilder-9c269caf.js} +63 -30
  228. package/dist/esm/{auth-fetcher-9987c66e.js → auth-fetcher-3510520e.js} +1 -1
  229. package/dist/esm/config-header.entry.js +75 -0
  230. package/dist/esm/configs-button.entry.js +57 -0
  231. package/dist/esm/{constants-75abb876.js → constants-7b422de0.js} +9 -34
  232. package/dist/esm/{dataunit-fetcher-ed6e65ef.js → dataunit-fetcher-0e025732.js} +12 -8
  233. package/dist/esm/default-filters-50105e43.js +8 -0
  234. package/dist/esm/field-config_2.entry.js +319 -0
  235. package/dist/esm/fields-layout.entry.js +337 -0
  236. package/dist/esm/fields-selector.entry.js +70 -0
  237. package/dist/esm/{filter-type.enum-a80c1b6b.js → filter-type.enum-f6a8fe23.js} +1 -0
  238. package/dist/esm/{form-config-fetcher-34becd23.js → form-config-fetcher-fa208a6c.js} +15 -1
  239. package/dist/esm/guides-configurator.entry.js +160 -0
  240. package/dist/esm/{index-a7d3d3f1.js → index-479e1293.js} +34 -12
  241. package/dist/esm/{index-ae591a44.js → index-8acbae97.js} +6 -1
  242. package/dist/esm/{index-c57e49af.js → index-b72af127.js} +1 -1
  243. package/dist/esm/loader.js +3 -3
  244. package/dist/esm/pesquisa-grid_2.entry.js +6 -7
  245. package/dist/esm/sankhyablocks.js +3 -3
  246. package/dist/esm/{snk-actions-button_5.entry.js → snk-actions-button_8.entry.js} +131 -12
  247. package/dist/esm/snk-actions-form.entry.js +1 -1
  248. package/dist/esm/snk-application.entry.js +185 -24
  249. package/dist/esm/snk-attach.entry.js +9 -10
  250. package/dist/esm/snk-client-confirm.entry.js +1 -1
  251. package/dist/esm/snk-configurator.entry.js +10 -3
  252. package/dist/esm/snk-crud.entry.js +49 -77
  253. package/dist/esm/snk-custom-slot-elements.entry.js +1 -1
  254. package/dist/esm/snk-data-exporter.entry.js +8 -9
  255. package/dist/esm/{snk-data-unit-6258b8ae.js → snk-data-unit-027bca56.js} +227 -13
  256. package/dist/esm/snk-data-unit.entry.js +5 -5
  257. package/dist/esm/snk-default-filter.entry.js +73 -0
  258. package/dist/esm/snk-detail-view.entry.js +69 -17
  259. package/dist/esm/snk-entity-list.entry.js +3 -8
  260. package/dist/esm/snk-exporter-email-sender.entry.js +1 -1
  261. package/dist/esm/snk-expression-group_2.entry.js +10 -8
  262. package/dist/esm/snk-filter-advanced-mode_2.entry.js +5 -4
  263. package/dist/esm/snk-filter-bar_4.entry.js +85 -31
  264. package/dist/esm/snk-filter-binary-select.entry.js +1 -1
  265. package/dist/esm/snk-filter-checkbox-list.entry.js +1 -1
  266. package/dist/esm/snk-filter-detail.entry.js +3 -3
  267. package/dist/esm/snk-filter-field-search_2.entry.js +3 -3
  268. package/dist/esm/snk-filter-modal-item.entry.js +5 -5
  269. package/dist/esm/snk-filter-multi-select.entry.js +1 -1
  270. package/dist/esm/snk-filter-number.entry.js +1 -1
  271. package/dist/esm/snk-filter-period.entry.js +1 -1
  272. package/dist/esm/snk-filter-search.entry.js +19 -6
  273. package/dist/esm/snk-filter-text.entry.js +1 -1
  274. package/dist/esm/snk-form-summary.entry.js +1 -1
  275. package/dist/esm/snk-form-view.entry.js +20 -8
  276. package/dist/esm/snk-form_2.entry.js +428 -0
  277. package/dist/esm/snk-grid.entry.js +50 -37
  278. package/dist/esm/{snk-guides-viewer-39fae8d5.js → snk-guides-viewer-32f3d3ab.js} +140 -74
  279. package/dist/esm/snk-guides-viewer.entry.js +13 -13
  280. package/dist/esm/snk-personalized-filter-editor.entry.js +1 -1
  281. package/dist/esm/snk-personalized-filter.entry.js +55 -20
  282. package/dist/esm/snk-pesquisa.entry.js +6 -7
  283. package/dist/esm/snk-print-selector.entry.js +1 -1
  284. package/dist/esm/snk-simple-bar.entry.js +1 -1
  285. package/dist/esm/snk-simple-crud.entry.js +150 -116
  286. package/dist/esm/snk-taskbar.entry.js +10 -5
  287. package/dist/esm/sortable.esm-842f85a3.js +2666 -0
  288. package/dist/esm/{taskbar-elements-ed51e143.js → taskbar-elements-171476d4.js} +13 -2
  289. package/dist/esm/{field-search-f8b1d91e.js → taskbar-processor-3436124c.js} +1 -34
  290. package/dist/esm/teste-pesquisa.entry.js +1 -1
  291. package/dist/sankhyablocks/p-0024d3fd.entry.js +1 -0
  292. package/dist/sankhyablocks/p-09e60995.entry.js +11 -0
  293. package/dist/sankhyablocks/p-0cb295c1.entry.js +1 -0
  294. package/dist/sankhyablocks/p-1456d7cb.entry.js +1 -0
  295. package/dist/sankhyablocks/{p-9531fd46.entry.js → p-180716b2.entry.js} +1 -1
  296. package/dist/sankhyablocks/p-19156e59.entry.js +1 -0
  297. package/dist/sankhyablocks/p-1a0caadb.js +1 -0
  298. package/dist/sankhyablocks/p-21107f0d.entry.js +1 -0
  299. package/dist/sankhyablocks/{p-118e769b.entry.js → p-27482793.entry.js} +1 -1
  300. package/dist/sankhyablocks/p-2bde486e.js +1 -0
  301. package/dist/sankhyablocks/{p-26b0ce3e.entry.js → p-2fdac5e6.entry.js} +1 -1
  302. package/dist/sankhyablocks/p-349d1968.entry.js +1 -0
  303. package/dist/sankhyablocks/p-35e73c5d.js +1 -0
  304. package/dist/sankhyablocks/{p-89c92727.entry.js → p-398cdd67.entry.js} +1 -1
  305. package/dist/sankhyablocks/p-3a48bff3.entry.js +1 -0
  306. package/dist/sankhyablocks/{p-434817f0.entry.js → p-3d41f5a8.entry.js} +1 -1
  307. package/dist/sankhyablocks/p-3f24c9b2.js +1 -0
  308. package/dist/sankhyablocks/{p-8002dcd0.entry.js → p-471b34f4.entry.js} +1 -1
  309. package/dist/sankhyablocks/{p-7e2ded86.entry.js → p-49d968e2.entry.js} +1 -1
  310. package/dist/sankhyablocks/p-4d2ff2fb.entry.js +1 -0
  311. package/dist/sankhyablocks/p-51833248.js +7 -0
  312. package/dist/sankhyablocks/p-601b252b.js +26 -0
  313. package/dist/sankhyablocks/p-60dd1d27.entry.js +1 -0
  314. package/dist/sankhyablocks/p-6416975c.js +56 -0
  315. package/dist/sankhyablocks/p-65c5d430.entry.js +1 -0
  316. package/dist/sankhyablocks/{p-21a81901.entry.js → p-667cab42.entry.js} +1 -1
  317. package/dist/sankhyablocks/p-67d6d0c8.entry.js +1 -0
  318. package/dist/sankhyablocks/p-6a4b21dd.js +1 -0
  319. package/dist/sankhyablocks/p-6dd38d7b.js +6 -0
  320. package/dist/sankhyablocks/p-71a05822.entry.js +1 -0
  321. package/dist/sankhyablocks/p-72c8c847.entry.js +1 -0
  322. package/dist/sankhyablocks/{p-a77bdadc.js → p-73285a8a.js} +1 -1
  323. package/dist/sankhyablocks/{p-ac8d1cd6.entry.js → p-7345782c.entry.js} +1 -1
  324. package/dist/sankhyablocks/p-763b04fa.js +1 -0
  325. package/dist/sankhyablocks/p-7993b2e3.js +60 -0
  326. package/dist/sankhyablocks/p-7de79adf.js +1 -0
  327. package/dist/sankhyablocks/p-7e250432.entry.js +1 -0
  328. package/dist/sankhyablocks/{p-47178038.entry.js → p-83c100f2.entry.js} +1 -1
  329. package/dist/sankhyablocks/p-84345e7a.js +1 -0
  330. package/dist/sankhyablocks/p-86bd4478.entry.js +1 -0
  331. package/dist/sankhyablocks/p-9019a32f.js +1 -0
  332. package/dist/sankhyablocks/{p-54a5d52a.entry.js → p-90805683.entry.js} +1 -1
  333. package/dist/sankhyablocks/{p-c2e468c9.entry.js → p-91a9abb6.entry.js} +1 -1
  334. package/dist/sankhyablocks/p-9751c42f.entry.js +1 -0
  335. package/dist/sankhyablocks/{p-057fad05.js → p-988afe78.js} +1 -1
  336. package/dist/sankhyablocks/{p-16a1dd18.entry.js → p-9a63f3f7.entry.js} +1 -1
  337. package/dist/sankhyablocks/p-9ad3557c.entry.js +1 -0
  338. package/dist/sankhyablocks/p-9fd87bfd.entry.js +1 -0
  339. package/dist/sankhyablocks/p-a06bf7b9.entry.js +1 -0
  340. package/dist/sankhyablocks/{p-5e9fbd76.js → p-a349689a.js} +1 -1
  341. package/dist/sankhyablocks/p-a5bb2f93.entry.js +1 -0
  342. package/dist/sankhyablocks/{p-3ce68be5.js → p-a6513fcb.js} +1 -1
  343. package/dist/sankhyablocks/{p-8c235d4c.entry.js → p-a76e6d51.entry.js} +1 -1
  344. package/dist/sankhyablocks/p-b568c1d4.js +1 -0
  345. package/dist/sankhyablocks/p-bd665460.entry.js +1 -0
  346. package/dist/sankhyablocks/p-c3324d79.entry.js +1 -0
  347. package/dist/sankhyablocks/{p-bf2acf72.entry.js → p-c6a8a8bc.entry.js} +1 -1
  348. package/dist/sankhyablocks/{p-d3b9b377.entry.js → p-c926cf6b.entry.js} +1 -1
  349. package/dist/sankhyablocks/p-cfd0a4c6.entry.js +1 -0
  350. package/dist/sankhyablocks/{p-79f823f3.entry.js → p-d67526b6.entry.js} +1 -1
  351. package/dist/sankhyablocks/{p-d2d301a6.js → p-d8d8169b.js} +1 -1
  352. package/dist/sankhyablocks/p-d9491f6f.entry.js +1 -0
  353. package/dist/sankhyablocks/{p-5f157b09.entry.js → p-dff65083.entry.js} +1 -1
  354. package/dist/sankhyablocks/{p-2746d606.entry.js → p-e3521eae.entry.js} +1 -1
  355. package/dist/sankhyablocks/p-e7cccc45.entry.js +1 -0
  356. package/dist/sankhyablocks/{p-33718dfc.entry.js → p-e824d565.entry.js} +1 -1
  357. package/dist/sankhyablocks/{p-5a7e18f4.js → p-fbba7e3d.js} +1 -1
  358. package/dist/sankhyablocks/p-fc0b609e.js +1 -0
  359. package/dist/sankhyablocks/p-ff7060bc.entry.js +1 -0
  360. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  361. package/dist/types/components/snk-application/search-strategy/exec-prepared-search-plus.d.ts +5 -0
  362. package/dist/types/components/snk-application/snk-application.d.ts +17 -2
  363. package/dist/types/components/snk-configurator/snk-configurator.d.ts +6 -0
  364. package/dist/types/components/snk-crud/snk-crud.d.ts +9 -3
  365. package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +17 -0
  366. package/dist/types/components/snk-crud/subcomponents/snk-form-view.d.ts +11 -1
  367. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +16 -7
  368. package/dist/types/components/snk-data-unit/MultipleUpdateHelper.d.ts +9 -0
  369. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +17 -0
  370. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-search.d.ts +5 -3
  371. package/dist/types/components/snk-filter-bar/filter-modal/snk-filter-modal.d.ts +16 -4
  372. package/dist/types/components/snk-filter-bar/filter-modal/subcomponents/snk-default-filter/snk-default-filter.d.ts +27 -0
  373. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +4 -3
  374. package/dist/types/components/snk-filter-bar/types/default-filters.d.ts +5 -0
  375. package/dist/types/components/snk-filter-bar/types/filter-type.enum.d.ts +2 -1
  376. package/dist/types/components/snk-filter-bar/utils/SnkFilterModalFactory.d.ts +3 -3
  377. package/dist/types/components/snk-form-config/FormConfigHelper.d.ts +31 -0
  378. package/dist/types/components/snk-form-config/SnkFormConfigManager.d.ts +3 -3
  379. package/dist/types/components/snk-form-config/config-header/config-header.d.ts +23 -0
  380. package/dist/types/components/snk-form-config/config-header/configs-button/configs-button.d.ts +19 -0
  381. package/dist/types/components/snk-form-config/field-item/field-config/field-config.d.ts +56 -0
  382. package/dist/types/components/snk-form-config/fields-layout/fields-layout.d.ts +63 -0
  383. package/dist/types/components/snk-form-config/fields-selector/fields-selector.d.ts +18 -0
  384. package/dist/types/components/snk-form-config/guides-configurator/guides-configurator.d.ts +42 -0
  385. package/dist/types/components/snk-form-config/snk-form-config.d.ts +51 -120
  386. package/dist/types/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.d.ts +2 -1
  387. package/dist/types/components/snk-grid/snk-grid.d.ts +16 -5
  388. package/dist/types/components/snk-grid-config/snk-grid-config.d.ts +1 -0
  389. package/dist/types/components/snk-layout-form-config/snk-layout-form-config.d.ts +15 -0
  390. package/dist/types/components/snk-layout-form-config/snk-view-representation/snk-view-representation.d.ts +10 -0
  391. package/dist/types/components/snk-personalized-filter/interfaces/index.d.ts +4 -0
  392. package/dist/types/components/snk-personalized-filter/snk-personalized-filter.d.ts +7 -1
  393. package/dist/types/components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.d.ts +4 -0
  394. package/dist/types/components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.d.ts +4 -0
  395. package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.d.ts +4 -0
  396. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +24 -12
  397. package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +2 -1
  398. package/dist/types/components/snk-taskbar/elements/taskbar-split-button/taskbar-split-button.d.ts +44 -0
  399. package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +6 -0
  400. package/dist/types/components.d.ts +502 -212
  401. package/dist/types/lib/configs/ConfigStorage.d.ts +4 -2
  402. package/dist/types/lib/configs/LayoutFormConfig.d.ts +11 -0
  403. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.d.ts +1 -1
  404. package/dist/types/lib/http/data-fetcher/fetchers/form-config-fetcher.d.ts +6 -0
  405. package/dist/types/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.d.ts +8 -4
  406. package/dist/types/lib/http/data-fetcher/fetchers/pesquisa-fetcher.d.ts +4 -1
  407. package/dist/types/lib/message/SnkMessageBuilder.d.ts +2 -1
  408. package/dist/types/lib/utils/constants.d.ts +7 -0
  409. package/package.json +8 -6
  410. package/react/components.d.ts +11 -3
  411. package/react/components.js +11 -3
  412. package/react/components.js.map +1 -1
  413. package/dist/cjs/ISave-e91b70a7.js +0 -9
  414. package/dist/cjs/Sortable-fb1c4cbb.js +0 -2853
  415. package/dist/cjs/snk-config-options_3.cjs.entry.js +0 -1388
  416. package/dist/cjs/snk-field-config.cjs.entry.js +0 -60
  417. package/dist/cjs/snk-tab-config.cjs.entry.js +0 -332
  418. package/dist/collection/components/snk-form-config/subcomponents/snk-config-options/snk-config-options.css +0 -16
  419. package/dist/collection/components/snk-form-config/subcomponents/snk-config-options/snk-config-options.js +0 -344
  420. package/dist/collection/components/snk-form-config/subcomponents/snk-field-config/snk-field-config.css +0 -219
  421. package/dist/collection/components/snk-form-config/subcomponents/snk-field-config/snk-field-config.js +0 -184
  422. package/dist/collection/components/snk-form-config/subcomponents/snk-tab-config/snk-tab-config.css +0 -323
  423. package/dist/collection/components/snk-form-config/subcomponents/snk-tab-config/snk-tab-config.js +0 -527
  424. package/dist/collection/components/snk-taskbar/subcomponents/field-search.js +0 -31
  425. package/dist/components/snk-config-options.js +0 -6
  426. package/dist/components/snk-config-options2.js +0 -255
  427. package/dist/components/snk-field-config.js +0 -6
  428. package/dist/components/snk-field-config2.js +0 -76
  429. package/dist/components/snk-tab-config.js +0 -6
  430. package/dist/components/snk-tab-config2.js +0 -3202
  431. package/dist/esm/ISave-d8c8bc59.js +0 -9
  432. package/dist/esm/Sortable-83960219.js +0 -2851
  433. package/dist/esm/snk-config-options_3.entry.js +0 -1382
  434. package/dist/esm/snk-field-config.entry.js +0 -56
  435. package/dist/esm/snk-tab-config.entry.js +0 -328
  436. package/dist/sankhyablocks/p-11afea24.entry.js +0 -1
  437. package/dist/sankhyablocks/p-17425c72.js +0 -1
  438. package/dist/sankhyablocks/p-18389343.entry.js +0 -1
  439. package/dist/sankhyablocks/p-1d19a5b0.js +0 -1
  440. package/dist/sankhyablocks/p-1db45d26.entry.js +0 -1
  441. package/dist/sankhyablocks/p-21749402.js +0 -1
  442. package/dist/sankhyablocks/p-22ddc147.js +0 -26
  443. package/dist/sankhyablocks/p-23736d75.js +0 -1
  444. package/dist/sankhyablocks/p-23cd6abf.entry.js +0 -1
  445. package/dist/sankhyablocks/p-240ac47f.entry.js +0 -1
  446. package/dist/sankhyablocks/p-2953c481.entry.js +0 -1
  447. package/dist/sankhyablocks/p-3ab6df3d.entry.js +0 -1
  448. package/dist/sankhyablocks/p-3fcb90d6.js +0 -56
  449. package/dist/sankhyablocks/p-43769aa9.js +0 -1
  450. package/dist/sankhyablocks/p-4b01cbad.entry.js +0 -11
  451. package/dist/sankhyablocks/p-4c9adf1c.entry.js +0 -1
  452. package/dist/sankhyablocks/p-517efc93.js +0 -1
  453. package/dist/sankhyablocks/p-6b898a51.entry.js +0 -1
  454. package/dist/sankhyablocks/p-77168ab4.entry.js +0 -1
  455. package/dist/sankhyablocks/p-7e0a0aae.js +0 -60
  456. package/dist/sankhyablocks/p-91708c3d.entry.js +0 -1
  457. package/dist/sankhyablocks/p-933c0c0b.js +0 -1
  458. package/dist/sankhyablocks/p-9523fc40.entry.js +0 -1
  459. package/dist/sankhyablocks/p-9887a437.entry.js +0 -1
  460. package/dist/sankhyablocks/p-9ebc3f3b.entry.js +0 -1
  461. package/dist/sankhyablocks/p-a5bdcb3f.entry.js +0 -1
  462. package/dist/sankhyablocks/p-a61bbe18.entry.js +0 -1
  463. package/dist/sankhyablocks/p-abd9681c.js +0 -1
  464. package/dist/sankhyablocks/p-bfdf92e9.entry.js +0 -1
  465. package/dist/sankhyablocks/p-c8622597.entry.js +0 -1
  466. package/dist/sankhyablocks/p-cb1e77e0.entry.js +0 -1
  467. package/dist/sankhyablocks/p-d9804798.js +0 -1
  468. package/dist/sankhyablocks/p-e289826a.js +0 -1
  469. package/dist/sankhyablocks/p-e51c52cf.entry.js +0 -1
  470. package/dist/sankhyablocks/p-e66bcb5c.entry.js +0 -1
  471. package/dist/sankhyablocks/p-ef076eea.js +0 -6
  472. package/dist/sankhyablocks/p-fa816fb2.js +0 -1
  473. package/dist/types/components/snk-form-config/subcomponents/snk-config-options/snk-config-options.d.ts +0 -57
  474. package/dist/types/components/snk-form-config/subcomponents/snk-field-config/snk-field-config.d.ts +0 -43
  475. package/dist/types/components/snk-form-config/subcomponents/snk-tab-config/snk-tab-config.d.ts +0 -105
  476. package/dist/types/components/snk-taskbar/subcomponents/field-search.d.ts +0 -4
@@ -1,2853 +0,0 @@
1
- 'use strict';
2
-
3
- class AbstractEvent {
4
-
5
- constructor(data) {
6
-
7
- this._canceled = false;
8
- this.data = data;
9
- }
10
-
11
- get type() {
12
- return this.constructor.type;
13
- }
14
-
15
- get cancelable() {
16
- return this.constructor.cancelable;
17
- }
18
-
19
- cancel() {
20
- this._canceled = true;
21
- }
22
-
23
- canceled() {
24
- return this._canceled;
25
- }
26
-
27
- clone(data) {
28
- return new this.constructor({
29
- ...this.data,
30
- ...data
31
- });
32
- }
33
- }
34
-
35
- AbstractEvent.type = 'event';
36
-
37
- AbstractEvent.cancelable = false;
38
-
39
- class AbstractPlugin {
40
-
41
- constructor(draggable) {
42
- this.draggable = draggable;
43
- }
44
-
45
- attach() {
46
- throw new Error('Not Implemented');
47
- }
48
-
49
- detach() {
50
- throw new Error('Not Implemented');
51
- }
52
- }
53
-
54
- const defaultDelay = {
55
- mouse: 0,
56
- drag: 0,
57
- touch: 100
58
- };
59
-
60
- class Sensor {
61
-
62
- constructor(containers = [], options = {}) {
63
-
64
- this.containers = [...containers];
65
-
66
- this.options = {
67
- ...options
68
- };
69
-
70
- this.dragging = false;
71
-
72
- this.currentContainer = null;
73
-
74
- this.originalSource = null;
75
-
76
- this.startEvent = null;
77
-
78
- this.delay = calcDelay(options.delay);
79
- }
80
-
81
- attach() {
82
- return this;
83
- }
84
-
85
- detach() {
86
- return this;
87
- }
88
-
89
- addContainer(...containers) {
90
- this.containers = [...this.containers, ...containers];
91
- }
92
-
93
- removeContainer(...containers) {
94
- this.containers = this.containers.filter(container => !containers.includes(container));
95
- }
96
-
97
- trigger(element, sensorEvent) {
98
- const event = document.createEvent('Event');
99
- event.detail = sensorEvent;
100
- event.initEvent(sensorEvent.type, true, true);
101
- element.dispatchEvent(event);
102
- this.lastEvent = sensorEvent;
103
- return sensorEvent;
104
- }
105
- }
106
-
107
- function calcDelay(optionsDelay) {
108
- const delay = {};
109
- if (optionsDelay === undefined) {
110
- return {
111
- ...defaultDelay
112
- };
113
- }
114
- if (typeof optionsDelay === 'number') {
115
- for (const key in defaultDelay) {
116
- if (Object.prototype.hasOwnProperty.call(defaultDelay, key)) {
117
- delay[key] = optionsDelay;
118
- }
119
- }
120
- return delay;
121
- }
122
- for (const key in defaultDelay) {
123
- if (Object.prototype.hasOwnProperty.call(defaultDelay, key)) {
124
- if (optionsDelay[key] === undefined) {
125
- delay[key] = defaultDelay[key];
126
- } else {
127
- delay[key] = optionsDelay[key];
128
- }
129
- }
130
- }
131
- return delay;
132
- }
133
-
134
- function closest(node, value) {
135
- if (node == null) {
136
- return null;
137
- }
138
- function conditionFn(currentNode) {
139
- if (currentNode == null || value == null) {
140
- return false;
141
- } else if (isSelector(value)) {
142
- return Element.prototype.matches.call(currentNode, value);
143
- } else if (isNodeList(value)) {
144
- return [...value].includes(currentNode);
145
- } else if (isElement(value)) {
146
- return value === currentNode;
147
- } else if (isFunction(value)) {
148
- return value(currentNode);
149
- } else {
150
- return false;
151
- }
152
- }
153
- let current = node;
154
- do {
155
- current = current.correspondingUseElement || current.correspondingElement || current;
156
- if (conditionFn(current)) {
157
- return current;
158
- }
159
- current = current?.parentNode || null;
160
- } while (current != null && current !== document.body && current !== document);
161
- return null;
162
- }
163
- function isSelector(value) {
164
- return Boolean(typeof value === 'string');
165
- }
166
- function isNodeList(value) {
167
- return Boolean(value instanceof NodeList || value instanceof Array);
168
- }
169
- function isElement(value) {
170
- return Boolean(value instanceof Node);
171
- }
172
- function isFunction(value) {
173
- return Boolean(typeof value === 'function');
174
- }
175
-
176
- function distance(x1, y1, x2, y2) {
177
- return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
178
- }
179
-
180
- class SensorEvent extends AbstractEvent {
181
-
182
- get originalEvent() {
183
- return this.data.originalEvent;
184
- }
185
-
186
- get clientX() {
187
- return this.data.clientX;
188
- }
189
-
190
- get clientY() {
191
- return this.data.clientY;
192
- }
193
-
194
- get target() {
195
- return this.data.target;
196
- }
197
-
198
- get container() {
199
- return this.data.container;
200
- }
201
-
202
- get originalSource() {
203
- return this.data.originalSource;
204
- }
205
-
206
- get pressure() {
207
- return this.data.pressure;
208
- }
209
- }
210
-
211
- class DragStartSensorEvent extends SensorEvent {}
212
-
213
- DragStartSensorEvent.type = 'drag:start';
214
- class DragMoveSensorEvent extends SensorEvent {}
215
-
216
- DragMoveSensorEvent.type = 'drag:move';
217
- class DragStopSensorEvent extends SensorEvent {}
218
-
219
- DragStopSensorEvent.type = 'drag:stop';
220
-
221
- const onContextMenuWhileDragging = Symbol('onContextMenuWhileDragging');
222
- const onMouseDown = Symbol('onMouseDown');
223
- const onMouseMove = Symbol('onMouseMove');
224
- const onMouseUp = Symbol('onMouseUp');
225
- const startDrag$1 = Symbol('startDrag');
226
- const onDistanceChange$1 = Symbol('onDistanceChange');
227
-
228
- class MouseSensor extends Sensor {
229
-
230
- constructor(containers = [], options = {}) {
231
- super(containers, options);
232
-
233
- this.mouseDownTimeout = null;
234
-
235
- this.pageX = null;
236
-
237
- this.pageY = null;
238
- this[onContextMenuWhileDragging] = this[onContextMenuWhileDragging].bind(this);
239
- this[onMouseDown] = this[onMouseDown].bind(this);
240
- this[onMouseMove] = this[onMouseMove].bind(this);
241
- this[onMouseUp] = this[onMouseUp].bind(this);
242
- this[startDrag$1] = this[startDrag$1].bind(this);
243
- this[onDistanceChange$1] = this[onDistanceChange$1].bind(this);
244
- }
245
-
246
- attach() {
247
- document.addEventListener('mousedown', this[onMouseDown], true);
248
- }
249
-
250
- detach() {
251
- document.removeEventListener('mousedown', this[onMouseDown], true);
252
- }
253
-
254
- [onMouseDown](event) {
255
- if (event.button !== 0 || event.ctrlKey || event.metaKey) {
256
- return;
257
- }
258
- const container = closest(event.target, this.containers);
259
- if (!container) {
260
- return;
261
- }
262
- if (this.options.handle && event.target && !closest(event.target, this.options.handle)) {
263
- return;
264
- }
265
- const originalSource = closest(event.target, this.options.draggable);
266
- if (!originalSource) {
267
- return;
268
- }
269
- const {
270
- delay
271
- } = this;
272
- const {
273
- pageX,
274
- pageY
275
- } = event;
276
- Object.assign(this, {
277
- pageX,
278
- pageY
279
- });
280
- this.onMouseDownAt = Date.now();
281
- this.startEvent = event;
282
- this.currentContainer = container;
283
- this.originalSource = originalSource;
284
- document.addEventListener('mouseup', this[onMouseUp]);
285
- document.addEventListener('dragstart', preventNativeDragStart);
286
- document.addEventListener('mousemove', this[onDistanceChange$1]);
287
- this.mouseDownTimeout = window.setTimeout(() => {
288
- this[onDistanceChange$1]({
289
- pageX: this.pageX,
290
- pageY: this.pageY
291
- });
292
- }, delay.mouse);
293
- }
294
-
295
- [startDrag$1]() {
296
- const startEvent = this.startEvent;
297
- const container = this.currentContainer;
298
- const originalSource = this.originalSource;
299
- const dragStartEvent = new DragStartSensorEvent({
300
- clientX: startEvent.clientX,
301
- clientY: startEvent.clientY,
302
- target: startEvent.target,
303
- container,
304
- originalSource,
305
- originalEvent: startEvent
306
- });
307
- this.trigger(this.currentContainer, dragStartEvent);
308
- this.dragging = !dragStartEvent.canceled();
309
- if (this.dragging) {
310
- document.addEventListener('contextmenu', this[onContextMenuWhileDragging], true);
311
- document.addEventListener('mousemove', this[onMouseMove]);
312
- }
313
- }
314
-
315
- [onDistanceChange$1](event) {
316
- const {
317
- pageX,
318
- pageY
319
- } = event;
320
- const {
321
- distance: distance$1
322
- } = this.options;
323
- const {
324
- startEvent,
325
- delay
326
- } = this;
327
- Object.assign(this, {
328
- pageX,
329
- pageY
330
- });
331
- if (!this.currentContainer) {
332
- return;
333
- }
334
- const timeElapsed = Date.now() - this.onMouseDownAt;
335
- const distanceTravelled = distance(startEvent.pageX, startEvent.pageY, pageX, pageY) || 0;
336
- clearTimeout(this.mouseDownTimeout);
337
- if (timeElapsed < delay.mouse) {
338
-
339
- document.removeEventListener('mousemove', this[onDistanceChange$1]);
340
- } else if (distanceTravelled >= distance$1) {
341
- document.removeEventListener('mousemove', this[onDistanceChange$1]);
342
- this[startDrag$1]();
343
- }
344
- }
345
-
346
- [onMouseMove](event) {
347
- if (!this.dragging) {
348
- return;
349
- }
350
- const target = document.elementFromPoint(event.clientX, event.clientY);
351
- const dragMoveEvent = new DragMoveSensorEvent({
352
- clientX: event.clientX,
353
- clientY: event.clientY,
354
- target,
355
- container: this.currentContainer,
356
- originalEvent: event
357
- });
358
- this.trigger(this.currentContainer, dragMoveEvent);
359
- }
360
-
361
- [onMouseUp](event) {
362
- clearTimeout(this.mouseDownTimeout);
363
- if (event.button !== 0) {
364
- return;
365
- }
366
- document.removeEventListener('mouseup', this[onMouseUp]);
367
- document.removeEventListener('dragstart', preventNativeDragStart);
368
- document.removeEventListener('mousemove', this[onDistanceChange$1]);
369
- if (!this.dragging) {
370
- return;
371
- }
372
- const target = document.elementFromPoint(event.clientX, event.clientY);
373
- const dragStopEvent = new DragStopSensorEvent({
374
- clientX: event.clientX,
375
- clientY: event.clientY,
376
- target,
377
- container: this.currentContainer,
378
- originalEvent: event
379
- });
380
- this.trigger(this.currentContainer, dragStopEvent);
381
- document.removeEventListener('contextmenu', this[onContextMenuWhileDragging], true);
382
- document.removeEventListener('mousemove', this[onMouseMove]);
383
- this.currentContainer = null;
384
- this.dragging = false;
385
- this.startEvent = null;
386
- }
387
-
388
- [onContextMenuWhileDragging](event) {
389
- event.preventDefault();
390
- }
391
- }
392
- function preventNativeDragStart(event) {
393
- event.preventDefault();
394
- }
395
-
396
- function touchCoords(event) {
397
- const {
398
- touches,
399
- changedTouches
400
- } = event;
401
- return touches && touches[0] || changedTouches && changedTouches[0];
402
- }
403
-
404
- const onTouchStart = Symbol('onTouchStart');
405
- const onTouchEnd = Symbol('onTouchEnd');
406
- const onTouchMove = Symbol('onTouchMove');
407
- const startDrag = Symbol('startDrag');
408
- const onDistanceChange = Symbol('onDistanceChange');
409
-
410
- let preventScrolling = false;
411
-
412
- window.addEventListener('touchmove', event => {
413
- if (!preventScrolling) {
414
- return;
415
- }
416
-
417
- event.preventDefault();
418
- }, {
419
- passive: false
420
- });
421
-
422
- class TouchSensor extends Sensor {
423
-
424
- constructor(containers = [], options = {}) {
425
- super(containers, options);
426
-
427
- this.currentScrollableParent = null;
428
-
429
- this.tapTimeout = null;
430
-
431
- this.touchMoved = false;
432
-
433
- this.pageX = null;
434
-
435
- this.pageY = null;
436
- this[onTouchStart] = this[onTouchStart].bind(this);
437
- this[onTouchEnd] = this[onTouchEnd].bind(this);
438
- this[onTouchMove] = this[onTouchMove].bind(this);
439
- this[startDrag] = this[startDrag].bind(this);
440
- this[onDistanceChange] = this[onDistanceChange].bind(this);
441
- }
442
-
443
- attach() {
444
- document.addEventListener('touchstart', this[onTouchStart]);
445
- }
446
-
447
- detach() {
448
- document.removeEventListener('touchstart', this[onTouchStart]);
449
- }
450
-
451
- [onTouchStart](event) {
452
- const container = closest(event.target, this.containers);
453
- if (!container) {
454
- return;
455
- }
456
- if (this.options.handle && event.target && !closest(event.target, this.options.handle)) {
457
- return;
458
- }
459
- const originalSource = closest(event.target, this.options.draggable);
460
- if (!originalSource) {
461
- return;
462
- }
463
- const {
464
- distance = 0
465
- } = this.options;
466
- const {
467
- delay
468
- } = this;
469
- const {
470
- pageX,
471
- pageY
472
- } = touchCoords(event);
473
- Object.assign(this, {
474
- pageX,
475
- pageY
476
- });
477
- this.onTouchStartAt = Date.now();
478
- this.startEvent = event;
479
- this.currentContainer = container;
480
- this.originalSource = originalSource;
481
- document.addEventListener('touchend', this[onTouchEnd]);
482
- document.addEventListener('touchcancel', this[onTouchEnd]);
483
- document.addEventListener('touchmove', this[onDistanceChange]);
484
- container.addEventListener('contextmenu', onContextMenu);
485
- if (distance) {
486
- preventScrolling = true;
487
- }
488
- this.tapTimeout = window.setTimeout(() => {
489
- this[onDistanceChange]({
490
- touches: [{
491
- pageX: this.pageX,
492
- pageY: this.pageY
493
- }]
494
- });
495
- }, delay.touch);
496
- }
497
-
498
- [startDrag]() {
499
- const startEvent = this.startEvent;
500
- const container = this.currentContainer;
501
- const touch = touchCoords(startEvent);
502
- const originalSource = this.originalSource;
503
- const dragStartEvent = new DragStartSensorEvent({
504
- clientX: touch.pageX,
505
- clientY: touch.pageY,
506
- target: startEvent.target,
507
- container,
508
- originalSource,
509
- originalEvent: startEvent
510
- });
511
- this.trigger(this.currentContainer, dragStartEvent);
512
- this.dragging = !dragStartEvent.canceled();
513
- if (this.dragging) {
514
- document.addEventListener('touchmove', this[onTouchMove]);
515
- }
516
- preventScrolling = this.dragging;
517
- }
518
-
519
- [onDistanceChange](event) {
520
- const {
521
- distance: distance$1
522
- } = this.options;
523
- const {
524
- startEvent,
525
- delay
526
- } = this;
527
- const start = touchCoords(startEvent);
528
- const current = touchCoords(event);
529
- const timeElapsed = Date.now() - this.onTouchStartAt;
530
- const distanceTravelled = distance(start.pageX, start.pageY, current.pageX, current.pageY);
531
- Object.assign(this, current);
532
- clearTimeout(this.tapTimeout);
533
- if (timeElapsed < delay.touch) {
534
-
535
- document.removeEventListener('touchmove', this[onDistanceChange]);
536
- } else if (distanceTravelled >= distance$1) {
537
- document.removeEventListener('touchmove', this[onDistanceChange]);
538
- this[startDrag]();
539
- }
540
- }
541
-
542
- [onTouchMove](event) {
543
- if (!this.dragging) {
544
- return;
545
- }
546
- const {
547
- pageX,
548
- pageY
549
- } = touchCoords(event);
550
- const target = document.elementFromPoint(pageX - window.scrollX, pageY - window.scrollY);
551
- const dragMoveEvent = new DragMoveSensorEvent({
552
- clientX: pageX,
553
- clientY: pageY,
554
- target,
555
- container: this.currentContainer,
556
- originalEvent: event
557
- });
558
- this.trigger(this.currentContainer, dragMoveEvent);
559
- }
560
-
561
- [onTouchEnd](event) {
562
- clearTimeout(this.tapTimeout);
563
- preventScrolling = false;
564
- document.removeEventListener('touchend', this[onTouchEnd]);
565
- document.removeEventListener('touchcancel', this[onTouchEnd]);
566
- document.removeEventListener('touchmove', this[onDistanceChange]);
567
- if (this.currentContainer) {
568
- this.currentContainer.removeEventListener('contextmenu', onContextMenu);
569
- }
570
- if (!this.dragging) {
571
- return;
572
- }
573
- document.removeEventListener('touchmove', this[onTouchMove]);
574
- const {
575
- pageX,
576
- pageY
577
- } = touchCoords(event);
578
- const target = document.elementFromPoint(pageX - window.scrollX, pageY - window.scrollY);
579
- event.preventDefault();
580
- const dragStopEvent = new DragStopSensorEvent({
581
- clientX: pageX,
582
- clientY: pageY,
583
- target,
584
- container: this.currentContainer,
585
- originalEvent: event
586
- });
587
- this.trigger(this.currentContainer, dragStopEvent);
588
- this.currentContainer = null;
589
- this.dragging = false;
590
- this.startEvent = null;
591
- }
592
- }
593
- function onContextMenu(event) {
594
- event.preventDefault();
595
- event.stopPropagation();
596
- }
597
-
598
- function createAddInitializerMethod(e, t) {
599
- return function (r) {
600
- assertNotFinished(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r);
601
- };
602
- }
603
- function assertInstanceIfPrivate(e, t) {
604
- if (!e(t)) throw new TypeError("Attempted to access private element on non-instance");
605
- }
606
- function memberDec(e, t, r, a, n, i, s, o, c, l, u) {
607
- var f;
608
- switch (i) {
609
- case 1:
610
- f = "accessor";
611
- break;
612
- case 2:
613
- f = "method";
614
- break;
615
- case 3:
616
- f = "getter";
617
- break;
618
- case 4:
619
- f = "setter";
620
- break;
621
- default:
622
- f = "field";
623
- }
624
- var d,
625
- p,
626
- h = {
627
- kind: f,
628
- name: o ? "#" + r : r,
629
- static: s,
630
- private: o,
631
- metadata: u
632
- },
633
- v = {
634
- v: !1
635
- };
636
- if (0 !== i && (h.addInitializer = createAddInitializerMethod(n, v)), o || 0 !== i && 2 !== i) {
637
- if (2 === i) d = function (e) {
638
- return assertInstanceIfPrivate(l, e), a.value;
639
- };else {
640
- var y = 0 === i || 1 === i;
641
- (y || 3 === i) && (d = o ? function (e) {
642
- return assertInstanceIfPrivate(l, e), a.get.call(e);
643
- } : function (e) {
644
- return a.get.call(e);
645
- }), (y || 4 === i) && (p = o ? function (e, t) {
646
- assertInstanceIfPrivate(l, e), a.set.call(e, t);
647
- } : function (e, t) {
648
- a.set.call(e, t);
649
- });
650
- }
651
- } else d = function (e) {
652
- return e[r];
653
- }, 0 === i && (p = function (e, t) {
654
- e[r] = t;
655
- });
656
- var m = o ? l.bind() : function (e) {
657
- return r in e;
658
- };
659
- h.access = d && p ? {
660
- get: d,
661
- set: p,
662
- has: m
663
- } : d ? {
664
- get: d,
665
- has: m
666
- } : {
667
- set: p,
668
- has: m
669
- };
670
- try {
671
- return e.call(t, c, h);
672
- } finally {
673
- v.v = !0;
674
- }
675
- }
676
- function assertNotFinished(e, t) {
677
- if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
678
- }
679
- function assertCallable(e, t) {
680
- if ("function" != typeof e) throw new TypeError(t + " must be a function");
681
- }
682
- function assertValidReturnValue(e, t) {
683
- var r = typeof t;
684
- if (1 === e) {
685
- if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
686
- void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
687
- } else if ("function" !== r) {
688
- var a;
689
- throw a = 0 === e ? "field" : 5 === e ? "class" : "method", new TypeError(a + " decorators must return a function or void 0");
690
- }
691
- }
692
- function curryThis1(e) {
693
- return function () {
694
- return e(this);
695
- };
696
- }
697
- function curryThis2(e) {
698
- return function (t) {
699
- e(this, t);
700
- };
701
- }
702
- function applyMemberDec(e, t, r, a, n, i, s, o, c, l, u) {
703
- var f,
704
- d,
705
- p,
706
- h,
707
- v,
708
- y,
709
- m = r[0];
710
- a || Array.isArray(m) || (m = [m]), o ? f = 0 === i || 1 === i ? {
711
- get: curryThis1(r[3]),
712
- set: curryThis2(r[4])
713
- } : 3 === i ? {
714
- get: r[3]
715
- } : 4 === i ? {
716
- set: r[3]
717
- } : {
718
- value: r[3]
719
- } : 0 !== i && (f = Object.getOwnPropertyDescriptor(t, n)), 1 === i ? p = {
720
- get: f.get,
721
- set: f.set
722
- } : 2 === i ? p = f.value : 3 === i ? p = f.get : 4 === i && (p = f.set);
723
- for (var g = a ? 2 : 1, b = m.length - 1; b >= 0; b -= g) {
724
- var I;
725
- if (void 0 !== (h = memberDec(m[b], a ? m[b - 1] : void 0, n, f, c, i, s, o, p, l, u))) assertValidReturnValue(i, h), 0 === i ? I = h : 1 === i ? (I = h.init, v = h.get || p.get, y = h.set || p.set, p = {
726
- get: v,
727
- set: y
728
- }) : p = h, void 0 !== I && (void 0 === d ? d = I : "function" == typeof d ? d = [d, I] : d.push(I));
729
- }
730
- if (0 === i || 1 === i) {
731
- if (void 0 === d) d = function (e, t) {
732
- return t;
733
- };else if ("function" != typeof d) {
734
- var w = d;
735
- d = function (e, t) {
736
- for (var r = t, a = w.length - 1; a >= 0; a--) r = w[a].call(e, r);
737
- return r;
738
- };
739
- } else {
740
- var M = d;
741
- d = function (e, t) {
742
- return M.call(e, t);
743
- };
744
- }
745
- e.push(d);
746
- }
747
- 0 !== i && (1 === i ? (f.get = p.get, f.set = p.set) : 2 === i ? f.value = p : 3 === i ? f.get = p : 4 === i && (f.set = p), o ? 1 === i ? (e.push(function (e, t) {
748
- return p.get.call(e, t);
749
- }), e.push(function (e, t) {
750
- return p.set.call(e, t);
751
- })) : 2 === i ? e.push(p) : e.push(function (e, t) {
752
- return p.call(e, t);
753
- }) : Object.defineProperty(t, n, f));
754
- }
755
- function applyMemberDecs(e, t, r, a) {
756
- for (var n, i, s, o = [], c = new Map(), l = new Map(), u = 0; u < t.length; u++) {
757
- var f = t[u];
758
- if (Array.isArray(f)) {
759
- var d,
760
- p,
761
- h = f[1],
762
- v = f[2],
763
- y = f.length > 3,
764
- m = 16 & h,
765
- g = !!(8 & h),
766
- b = r;
767
- if (h &= 7, g ? (d = e, 0 !== h && (p = i = i || []), y && !s && (s = function (t) {
768
- return _checkInRHS(t) === e;
769
- }), b = s) : (d = e.prototype, 0 !== h && (p = n = n || [])), 0 !== h && !y) {
770
- var I = g ? l : c,
771
- w = I.get(v) || 0;
772
- if (!0 === w || 3 === w && 4 !== h || 4 === w && 3 !== h) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + v);
773
- I.set(v, !(!w && h > 2) || h);
774
- }
775
- applyMemberDec(o, d, f, m, v, h, g, y, p, b, a);
776
- }
777
- }
778
- return pushInitializers(o, n), pushInitializers(o, i), o;
779
- }
780
- function pushInitializers(e, t) {
781
- t && e.push(function (e) {
782
- for (var r = 0; r < t.length; r++) t[r].call(e);
783
- return e;
784
- });
785
- }
786
- function applyClassDecs(e, t, r, a) {
787
- if (t.length) {
788
- for (var n = [], i = e, s = e.name, o = r ? 2 : 1, c = t.length - 1; c >= 0; c -= o) {
789
- var l = {
790
- v: !1
791
- };
792
- try {
793
- var u = t[c].call(r ? t[c - 1] : void 0, i, {
794
- kind: "class",
795
- name: s,
796
- addInitializer: createAddInitializerMethod(n, l),
797
- metadata: a
798
- });
799
- } finally {
800
- l.v = !0;
801
- }
802
- void 0 !== u && (assertValidReturnValue(5, u), i = u);
803
- }
804
- return [defineMetadata(i, a), function () {
805
- for (var e = 0; e < n.length; e++) n[e].call(i);
806
- }];
807
- }
808
- }
809
- function defineMetadata(e, t) {
810
- return Object.defineProperty(e, Symbol.metadata || Symbol.for("Symbol.metadata"), {
811
- configurable: !0,
812
- enumerable: !0,
813
- value: t
814
- });
815
- }
816
- function _applyDecs2305(e, t, r, a, n, i) {
817
- if (arguments.length >= 6) var s = i[Symbol.metadata || Symbol.for("Symbol.metadata")];
818
- var o = Object.create(void 0 === s ? null : s),
819
- c = applyMemberDecs(e, t, n, o);
820
- return r.length || defineMetadata(e, o), {
821
- e: c,
822
- get c() {
823
- return applyClassDecs(e, r, a, o);
824
- }
825
- };
826
- }
827
- function _checkInRHS(e) {
828
- if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? typeof e : "null"));
829
- return e;
830
- }
831
-
832
- function AutoBind(originalMethod, {
833
- name,
834
- addInitializer
835
- }) {
836
- addInitializer(function () {
837
-
838
- this[name] = originalMethod.bind(this);
839
-
840
- });
841
- }
842
-
843
- function requestNextAnimationFrame(callback) {
844
- return requestAnimationFrame(() => {
845
- requestAnimationFrame(callback);
846
- });
847
- }
848
-
849
- class DragEvent extends AbstractEvent {
850
-
851
- constructor(data) {
852
- super(data);
853
- this.data = data;
854
- }
855
-
856
- get source() {
857
- return this.data.source;
858
- }
859
-
860
- get originalSource() {
861
- return this.data.originalSource;
862
- }
863
-
864
- get mirror() {
865
- return this.data.mirror;
866
- }
867
-
868
- get sourceContainer() {
869
- return this.data.sourceContainer;
870
- }
871
-
872
- get sensorEvent() {
873
- return this.data.sensorEvent;
874
- }
875
-
876
- get originalEvent() {
877
- if (this.sensorEvent) {
878
- return this.sensorEvent.originalEvent;
879
- }
880
- return null;
881
- }
882
- }
883
-
884
- DragEvent.type = 'drag';
885
- class DragStartEvent extends DragEvent {}
886
-
887
- DragStartEvent.type = 'drag:start';
888
- DragStartEvent.cancelable = true;
889
- class DragMoveEvent extends DragEvent {}
890
-
891
- DragMoveEvent.type = 'drag:move';
892
-
893
- class DragOverEvent extends DragEvent {
894
-
895
- get overContainer() {
896
- return this.data.overContainer;
897
- }
898
-
899
- get over() {
900
- return this.data.over;
901
- }
902
- }
903
- DragOverEvent.type = 'drag:over';
904
- DragOverEvent.cancelable = true;
905
- function isDragOverEvent(event) {
906
- return event.type === DragOverEvent.type;
907
- }
908
-
909
- class DragOutEvent extends DragEvent {
910
-
911
- get overContainer() {
912
- return this.data.overContainer;
913
- }
914
-
915
- get over() {
916
- return this.data.over;
917
- }
918
- }
919
-
920
- DragOutEvent.type = 'drag:out';
921
-
922
- class DragOverContainerEvent extends DragEvent {
923
-
924
- get overContainer() {
925
- return this.data.overContainer;
926
- }
927
- }
928
-
929
- DragOverContainerEvent.type = 'drag:over:container';
930
-
931
- class DragOutContainerEvent extends DragEvent {
932
-
933
- get overContainer() {
934
- return this.data.overContainer;
935
- }
936
- }
937
-
938
- DragOutContainerEvent.type = 'drag:out:container';
939
-
940
- class DragPressureEvent extends DragEvent {
941
-
942
- get pressure() {
943
- return this.data.pressure;
944
- }
945
- }
946
-
947
- DragPressureEvent.type = 'drag:pressure';
948
- class DragStopEvent extends DragEvent {}
949
-
950
- DragStopEvent.type = 'drag:stop';
951
- DragStopEvent.cancelable = true;
952
- class DragStoppedEvent extends DragEvent {}
953
- DragStoppedEvent.type = 'drag:stopped';
954
-
955
- var _initProto$1, _class$1;
956
-
957
- class ResizeMirror extends AbstractPlugin {
958
-
959
- constructor(draggable) {
960
- _initProto$1(super(draggable));
961
-
962
- this.lastWidth = 0;
963
-
964
- this.lastHeight = 0;
965
-
966
- this.mirror = null;
967
- }
968
-
969
- attach() {
970
- this.draggable.on('mirror:created', this.onMirrorCreated).on('drag:over', this.onDragOver).on('drag:over:container', this.onDragOver);
971
- }
972
-
973
- detach() {
974
- this.draggable.off('mirror:created', this.onMirrorCreated).off('mirror:destroy', this.onMirrorDestroy).off('drag:over', this.onDragOver).off('drag:over:container', this.onDragOver);
975
- }
976
-
977
- getOptions() {
978
- return this.draggable.options.resizeMirror || {};
979
- }
980
-
981
- onMirrorCreated({
982
- mirror
983
- }) {
984
- this.mirror = mirror;
985
- }
986
-
987
- onMirrorDestroy() {
988
- this.mirror = null;
989
- }
990
-
991
- onDragOver(dragEvent) {
992
- this.resize(dragEvent);
993
- }
994
-
995
- resize(dragEvent) {
996
- requestAnimationFrame(() => {
997
- let over = null;
998
- const {
999
- overContainer
1000
- } = dragEvent;
1001
- if (this.mirror == null || this.mirror.parentNode == null) {
1002
- return;
1003
- }
1004
- if (this.mirror.parentNode !== overContainer) {
1005
- overContainer.appendChild(this.mirror);
1006
- }
1007
- if (isDragOverEvent(dragEvent)) {
1008
- over = dragEvent.over;
1009
- }
1010
- const overElement = over || this.draggable.getDraggableElementsForContainer(overContainer)[0];
1011
- if (!overElement) {
1012
- return;
1013
- }
1014
- requestNextAnimationFrame(() => {
1015
- const overRect = overElement.getBoundingClientRect();
1016
- if (this.mirror == null || this.lastHeight === overRect.height && this.lastWidth === overRect.width) {
1017
- return;
1018
- }
1019
- this.mirror.style.width = `${overRect.width}px`;
1020
- this.mirror.style.height = `${overRect.height}px`;
1021
- this.lastWidth = overRect.width;
1022
- this.lastHeight = overRect.height;
1023
- });
1024
- });
1025
- }
1026
- }
1027
- _class$1 = ResizeMirror;
1028
- [_initProto$1] = _applyDecs2305(_class$1, [[AutoBind, 2, "onMirrorCreated"], [AutoBind, 2, "onMirrorDestroy"], [AutoBind, 2, "onDragOver"]], [], 0, void 0, AbstractPlugin).e;
1029
-
1030
- var _initProto, _class;
1031
-
1032
- const defaultOptions$5 = {
1033
- duration: 150,
1034
- easingFunction: 'ease-in-out',
1035
- horizontal: false
1036
- };
1037
-
1038
- class SwapAnimation extends AbstractPlugin {
1039
-
1040
- constructor(draggable) {
1041
- _initProto(super(draggable));
1042
-
1043
- this.options = {
1044
- ...defaultOptions$5,
1045
- ...this.getOptions()
1046
- };
1047
-
1048
- this.lastAnimationFrame = null;
1049
- }
1050
-
1051
- attach() {
1052
- this.draggable.on('sortable:sorted', this.onSortableSorted);
1053
- }
1054
-
1055
- detach() {
1056
- this.draggable.off('sortable:sorted', this.onSortableSorted);
1057
- }
1058
-
1059
- getOptions() {
1060
- return this.draggable.options.swapAnimation || {};
1061
- }
1062
-
1063
- onSortableSorted({
1064
- oldIndex,
1065
- newIndex,
1066
- dragEvent
1067
- }) {
1068
- const {
1069
- source,
1070
- over
1071
- } = dragEvent;
1072
- if (this.lastAnimationFrame) {
1073
- cancelAnimationFrame(this.lastAnimationFrame);
1074
- }
1075
-
1076
- this.lastAnimationFrame = requestAnimationFrame(() => {
1077
- if (oldIndex >= newIndex) {
1078
- animate(source, over, this.options);
1079
- } else {
1080
- animate(over, source, this.options);
1081
- }
1082
- });
1083
- }
1084
- }
1085
-
1086
- _class = SwapAnimation;
1087
- [_initProto] = _applyDecs2305(_class, [[AutoBind, 2, "onSortableSorted"]], [], 0, void 0, AbstractPlugin).e;
1088
- function animate(from, to, {
1089
- duration,
1090
- easingFunction,
1091
- horizontal
1092
- }) {
1093
- for (const element of [from, to]) {
1094
- element.style.pointerEvents = 'none';
1095
- }
1096
- if (horizontal) {
1097
- const width = from.offsetWidth;
1098
- from.style.transform = `translate3d(${width}px, 0, 0)`;
1099
- to.style.transform = `translate3d(-${width}px, 0, 0)`;
1100
- } else {
1101
- const height = from.offsetHeight;
1102
- from.style.transform = `translate3d(0, ${height}px, 0)`;
1103
- to.style.transform = `translate3d(0, -${height}px, 0)`;
1104
- }
1105
- requestAnimationFrame(() => {
1106
- for (const element of [from, to]) {
1107
- element.addEventListener('transitionend', resetElementOnTransitionEnd);
1108
- element.style.transition = `transform ${duration}ms ${easingFunction}`;
1109
- element.style.transform = '';
1110
- }
1111
- });
1112
- }
1113
-
1114
- function resetElementOnTransitionEnd(event) {
1115
- if (event.target == null || !isHTMLElement(event.target)) {
1116
- return;
1117
- }
1118
- event.target.style.transition = '';
1119
- event.target.style.pointerEvents = '';
1120
- event.target.removeEventListener('transitionend', resetElementOnTransitionEnd);
1121
- }
1122
- function isHTMLElement(eventTarget) {
1123
- return Boolean('style' in eventTarget);
1124
- }
1125
-
1126
- const onInitialize$1 = Symbol('onInitialize');
1127
- const onDestroy$1 = Symbol('onDestroy');
1128
- const announceEvent = Symbol('announceEvent');
1129
- const announceMessage = Symbol('announceMessage');
1130
- const ARIA_RELEVANT = 'aria-relevant';
1131
- const ARIA_ATOMIC = 'aria-atomic';
1132
- const ARIA_LIVE = 'aria-live';
1133
- const ROLE = 'role';
1134
-
1135
- const defaultOptions$4 = {
1136
- expire: 7000
1137
- };
1138
-
1139
- class Announcement extends AbstractPlugin {
1140
-
1141
- constructor(draggable) {
1142
- super(draggable);
1143
-
1144
- this.options = {
1145
- ...defaultOptions$4,
1146
- ...this.getOptions()
1147
- };
1148
-
1149
- this.originalTriggerMethod = this.draggable.trigger;
1150
- this[onInitialize$1] = this[onInitialize$1].bind(this);
1151
- this[onDestroy$1] = this[onDestroy$1].bind(this);
1152
- }
1153
-
1154
- attach() {
1155
- this.draggable.on('draggable:initialize', this[onInitialize$1]);
1156
- }
1157
-
1158
- detach() {
1159
- this.draggable.off('draggable:destroy', this[onDestroy$1]);
1160
- }
1161
-
1162
- getOptions() {
1163
- return this.draggable.options.announcements || {};
1164
- }
1165
-
1166
- [announceEvent](event) {
1167
- const message = this.options[event.type];
1168
- if (message && typeof message === 'string') {
1169
- this[announceMessage](message);
1170
- }
1171
- if (message && typeof message === 'function') {
1172
- this[announceMessage](message(event));
1173
- }
1174
- }
1175
-
1176
- [announceMessage](message) {
1177
- announce(message, {
1178
- expire: this.options.expire
1179
- });
1180
- }
1181
-
1182
- [onInitialize$1]() {
1183
-
1184
- this.draggable.trigger = event => {
1185
- try {
1186
- this[announceEvent](event);
1187
- } finally {
1188
-
1189
- this.originalTriggerMethod.call(this.draggable, event);
1190
- }
1191
- };
1192
- }
1193
-
1194
- [onDestroy$1]() {
1195
- this.draggable.trigger = this.originalTriggerMethod;
1196
- }
1197
- }
1198
-
1199
- const liveRegion = createRegion();
1200
-
1201
- function announce(message, {
1202
- expire
1203
- }) {
1204
- const element = document.createElement('div');
1205
- element.textContent = message;
1206
- liveRegion.appendChild(element);
1207
- return setTimeout(() => {
1208
- liveRegion.removeChild(element);
1209
- }, expire);
1210
- }
1211
-
1212
- function createRegion() {
1213
- const element = document.createElement('div');
1214
- element.setAttribute('id', 'draggable-live-region');
1215
- element.setAttribute(ARIA_RELEVANT, 'additions');
1216
- element.setAttribute(ARIA_ATOMIC, 'true');
1217
- element.setAttribute(ARIA_LIVE, 'assertive');
1218
- element.setAttribute(ROLE, 'log');
1219
- element.style.position = 'fixed';
1220
- element.style.width = '1px';
1221
- element.style.height = '1px';
1222
- element.style.top = '-1px';
1223
- element.style.overflow = 'hidden';
1224
- return element;
1225
- }
1226
-
1227
- document.addEventListener('DOMContentLoaded', () => {
1228
- document.body.appendChild(liveRegion);
1229
- });
1230
-
1231
- const onInitialize = Symbol('onInitialize');
1232
- const onDestroy = Symbol('onDestroy');
1233
-
1234
- const defaultOptions$3 = {};
1235
-
1236
- class Focusable extends AbstractPlugin {
1237
-
1238
- constructor(draggable) {
1239
- super(draggable);
1240
-
1241
- this.options = {
1242
- ...defaultOptions$3,
1243
- ...this.getOptions()
1244
- };
1245
- this[onInitialize] = this[onInitialize].bind(this);
1246
- this[onDestroy] = this[onDestroy].bind(this);
1247
- }
1248
-
1249
- attach() {
1250
- this.draggable.on('draggable:initialize', this[onInitialize]).on('draggable:destroy', this[onDestroy]);
1251
- }
1252
-
1253
- detach() {
1254
- this.draggable.off('draggable:initialize', this[onInitialize]).off('draggable:destroy', this[onDestroy]);
1255
-
1256
- this[onDestroy]();
1257
- }
1258
-
1259
- getOptions() {
1260
- return this.draggable.options.focusable || {};
1261
- }
1262
-
1263
- getElements() {
1264
- return [...this.draggable.containers, ...this.draggable.getDraggableElements()];
1265
- }
1266
-
1267
- [onInitialize]() {
1268
-
1269
- requestAnimationFrame(() => {
1270
- this.getElements().forEach(element => decorateElement(element));
1271
- });
1272
- }
1273
-
1274
- [onDestroy]() {
1275
-
1276
- requestAnimationFrame(() => {
1277
- this.getElements().forEach(element => stripElement(element));
1278
- });
1279
- }
1280
- }
1281
-
1282
- const elementsWithMissingTabIndex = [];
1283
-
1284
- function decorateElement(element) {
1285
- const hasMissingTabIndex = Boolean(!element.getAttribute('tabindex') && element.tabIndex === -1);
1286
- if (hasMissingTabIndex) {
1287
- elementsWithMissingTabIndex.push(element);
1288
- element.tabIndex = 0;
1289
- }
1290
- }
1291
-
1292
- function stripElement(element) {
1293
- const tabIndexElementPosition = elementsWithMissingTabIndex.indexOf(element);
1294
- if (tabIndexElementPosition !== -1) {
1295
- element.tabIndex = -1;
1296
- elementsWithMissingTabIndex.splice(tabIndexElementPosition, 1);
1297
- }
1298
- }
1299
-
1300
- class MirrorEvent extends AbstractEvent {
1301
-
1302
- constructor(data) {
1303
- super(data);
1304
- this.data = data;
1305
- }
1306
-
1307
- get source() {
1308
- return this.data.source;
1309
- }
1310
-
1311
- get originalSource() {
1312
- return this.data.originalSource;
1313
- }
1314
-
1315
- get sourceContainer() {
1316
- return this.data.sourceContainer;
1317
- }
1318
-
1319
- get sensorEvent() {
1320
- return this.data.sensorEvent;
1321
- }
1322
-
1323
- get dragEvent() {
1324
- return this.data.dragEvent;
1325
- }
1326
-
1327
- get originalEvent() {
1328
- if (this.sensorEvent) {
1329
- return this.sensorEvent.originalEvent;
1330
- }
1331
- return null;
1332
- }
1333
- }
1334
-
1335
- class MirrorCreateEvent extends MirrorEvent {}
1336
- MirrorCreateEvent.type = 'mirror:create';
1337
-
1338
- class MirrorCreatedEvent extends MirrorEvent {
1339
-
1340
- get mirror() {
1341
- return this.data.mirror;
1342
- }
1343
- }
1344
- MirrorCreatedEvent.type = 'mirror:created';
1345
-
1346
- class MirrorAttachedEvent extends MirrorEvent {
1347
-
1348
- get mirror() {
1349
- return this.data.mirror;
1350
- }
1351
- }
1352
- MirrorAttachedEvent.type = 'mirror:attached';
1353
-
1354
- class MirrorMoveEvent extends MirrorEvent {
1355
-
1356
- get mirror() {
1357
- return this.data.mirror;
1358
- }
1359
-
1360
- get passedThreshX() {
1361
- return this.data.passedThreshX;
1362
- }
1363
-
1364
- get passedThreshY() {
1365
- return this.data.passedThreshY;
1366
- }
1367
- }
1368
- MirrorMoveEvent.type = 'mirror:move';
1369
- MirrorMoveEvent.cancelable = true;
1370
-
1371
- class MirrorMovedEvent extends MirrorEvent {
1372
-
1373
- get mirror() {
1374
- return this.data.mirror;
1375
- }
1376
-
1377
- get passedThreshX() {
1378
- return this.data.passedThreshX;
1379
- }
1380
-
1381
- get passedThreshY() {
1382
- return this.data.passedThreshY;
1383
- }
1384
- }
1385
- MirrorMovedEvent.type = 'mirror:moved';
1386
-
1387
- class MirrorDestroyEvent extends MirrorEvent {
1388
-
1389
- get mirror() {
1390
- return this.data.mirror;
1391
- }
1392
- }
1393
- MirrorDestroyEvent.type = 'mirror:destroy';
1394
- MirrorDestroyEvent.cancelable = true;
1395
-
1396
- const onDragStart$3 = Symbol('onDragStart');
1397
- const onDragMove$2 = Symbol('onDragMove');
1398
- const onDragStop$3 = Symbol('onDragStop');
1399
- const onMirrorCreated = Symbol('onMirrorCreated');
1400
- const onMirrorMove = Symbol('onMirrorMove');
1401
- const onScroll = Symbol('onScroll');
1402
- const getAppendableContainer = Symbol('getAppendableContainer');
1403
-
1404
- const defaultOptions$2 = {
1405
- constrainDimensions: false,
1406
- xAxis: true,
1407
- yAxis: true,
1408
- cursorOffsetX: null,
1409
- cursorOffsetY: null,
1410
- thresholdX: null,
1411
- thresholdY: null
1412
- };
1413
-
1414
- class Mirror extends AbstractPlugin {
1415
-
1416
- constructor(draggable) {
1417
- super(draggable);
1418
-
1419
- this.options = {
1420
- ...defaultOptions$2,
1421
- ...this.getOptions()
1422
- };
1423
-
1424
- this.scrollOffset = {
1425
- x: 0,
1426
- y: 0
1427
- };
1428
-
1429
- this.initialScrollOffset = {
1430
- x: window.scrollX,
1431
- y: window.scrollY
1432
- };
1433
- this[onDragStart$3] = this[onDragStart$3].bind(this);
1434
- this[onDragMove$2] = this[onDragMove$2].bind(this);
1435
- this[onDragStop$3] = this[onDragStop$3].bind(this);
1436
- this[onMirrorCreated] = this[onMirrorCreated].bind(this);
1437
- this[onMirrorMove] = this[onMirrorMove].bind(this);
1438
- this[onScroll] = this[onScroll].bind(this);
1439
- }
1440
-
1441
- attach() {
1442
- this.draggable.on('drag:start', this[onDragStart$3]).on('drag:move', this[onDragMove$2]).on('drag:stop', this[onDragStop$3]).on('mirror:created', this[onMirrorCreated]).on('mirror:move', this[onMirrorMove]);
1443
- }
1444
-
1445
- detach() {
1446
- this.draggable.off('drag:start', this[onDragStart$3]).off('drag:move', this[onDragMove$2]).off('drag:stop', this[onDragStop$3]).off('mirror:created', this[onMirrorCreated]).off('mirror:move', this[onMirrorMove]);
1447
- }
1448
-
1449
- getOptions() {
1450
- return this.draggable.options.mirror || {};
1451
- }
1452
- [onDragStart$3](dragEvent) {
1453
- if (dragEvent.canceled()) {
1454
- return;
1455
- }
1456
- if ('ontouchstart' in window) {
1457
- document.addEventListener('scroll', this[onScroll], true);
1458
- }
1459
- this.initialScrollOffset = {
1460
- x: window.scrollX,
1461
- y: window.scrollY
1462
- };
1463
- const {
1464
- source,
1465
- originalSource,
1466
- sourceContainer,
1467
- sensorEvent
1468
- } = dragEvent;
1469
-
1470
- this.lastMirrorMovedClient = {
1471
- x: sensorEvent.clientX,
1472
- y: sensorEvent.clientY
1473
- };
1474
- const mirrorCreateEvent = new MirrorCreateEvent({
1475
- source,
1476
- originalSource,
1477
- sourceContainer,
1478
- sensorEvent,
1479
- dragEvent
1480
- });
1481
- this.draggable.trigger(mirrorCreateEvent);
1482
- if (isNativeDragEvent(sensorEvent) || mirrorCreateEvent.canceled()) {
1483
- return;
1484
- }
1485
- const appendableContainer = this[getAppendableContainer](source) || sourceContainer;
1486
- this.mirror = source.cloneNode(true);
1487
- const mirrorCreatedEvent = new MirrorCreatedEvent({
1488
- source,
1489
- originalSource,
1490
- sourceContainer,
1491
- sensorEvent,
1492
- dragEvent,
1493
- mirror: this.mirror
1494
- });
1495
- const mirrorAttachedEvent = new MirrorAttachedEvent({
1496
- source,
1497
- originalSource,
1498
- sourceContainer,
1499
- sensorEvent,
1500
- dragEvent,
1501
- mirror: this.mirror
1502
- });
1503
- this.draggable.trigger(mirrorCreatedEvent);
1504
- appendableContainer.appendChild(this.mirror);
1505
- this.draggable.trigger(mirrorAttachedEvent);
1506
- }
1507
- [onDragMove$2](dragEvent) {
1508
- if (!this.mirror || dragEvent.canceled()) {
1509
- return;
1510
- }
1511
- const {
1512
- source,
1513
- originalSource,
1514
- sourceContainer,
1515
- sensorEvent
1516
- } = dragEvent;
1517
- let passedThreshX = true;
1518
- let passedThreshY = true;
1519
- if (this.options.thresholdX || this.options.thresholdY) {
1520
- const {
1521
- x: lastX,
1522
- y: lastY
1523
- } = this.lastMirrorMovedClient;
1524
- if (Math.abs(lastX - sensorEvent.clientX) < this.options.thresholdX) {
1525
- passedThreshX = false;
1526
- } else {
1527
- this.lastMirrorMovedClient.x = sensorEvent.clientX;
1528
- }
1529
- if (Math.abs(lastY - sensorEvent.clientY) < this.options.thresholdY) {
1530
- passedThreshY = false;
1531
- } else {
1532
- this.lastMirrorMovedClient.y = sensorEvent.clientY;
1533
- }
1534
- if (!passedThreshX && !passedThreshY) {
1535
- return;
1536
- }
1537
- }
1538
- const mirrorMoveEvent = new MirrorMoveEvent({
1539
- source,
1540
- originalSource,
1541
- sourceContainer,
1542
- sensorEvent,
1543
- dragEvent,
1544
- mirror: this.mirror,
1545
- passedThreshX,
1546
- passedThreshY
1547
- });
1548
- this.draggable.trigger(mirrorMoveEvent);
1549
- }
1550
- [onDragStop$3](dragEvent) {
1551
- if ('ontouchstart' in window) {
1552
- document.removeEventListener('scroll', this[onScroll], true);
1553
- }
1554
- this.initialScrollOffset = {
1555
- x: 0,
1556
- y: 0
1557
- };
1558
- this.scrollOffset = {
1559
- x: 0,
1560
- y: 0
1561
- };
1562
- if (!this.mirror) {
1563
- return;
1564
- }
1565
- const {
1566
- source,
1567
- sourceContainer,
1568
- sensorEvent
1569
- } = dragEvent;
1570
- const mirrorDestroyEvent = new MirrorDestroyEvent({
1571
- source,
1572
- mirror: this.mirror,
1573
- sourceContainer,
1574
- sensorEvent,
1575
- dragEvent
1576
- });
1577
- this.draggable.trigger(mirrorDestroyEvent);
1578
- if (!mirrorDestroyEvent.canceled()) {
1579
- this.mirror.remove();
1580
- }
1581
- }
1582
- [onScroll]() {
1583
- this.scrollOffset = {
1584
- x: window.scrollX - this.initialScrollOffset.x,
1585
- y: window.scrollY - this.initialScrollOffset.y
1586
- };
1587
- }
1588
-
1589
- [onMirrorCreated]({
1590
- mirror,
1591
- source,
1592
- sensorEvent
1593
- }) {
1594
- const mirrorClasses = this.draggable.getClassNamesFor('mirror');
1595
- const setState = ({
1596
- mirrorOffset,
1597
- initialX,
1598
- initialY,
1599
- ...args
1600
- }) => {
1601
- this.mirrorOffset = mirrorOffset;
1602
- this.initialX = initialX;
1603
- this.initialY = initialY;
1604
- this.lastMovedX = initialX;
1605
- this.lastMovedY = initialY;
1606
- return {
1607
- mirrorOffset,
1608
- initialX,
1609
- initialY,
1610
- ...args
1611
- };
1612
- };
1613
- mirror.style.display = 'none';
1614
- const initialState = {
1615
- mirror,
1616
- source,
1617
- sensorEvent,
1618
- mirrorClasses,
1619
- scrollOffset: this.scrollOffset,
1620
- options: this.options,
1621
- passedThreshX: true,
1622
- passedThreshY: true
1623
- };
1624
- return Promise.resolve(initialState)
1625
-
1626
- .then(computeMirrorDimensions).then(calculateMirrorOffset).then(resetMirror).then(addMirrorClasses).then(positionMirror({
1627
- initial: true
1628
- })).then(removeMirrorID).then(setState);
1629
- }
1630
-
1631
- [onMirrorMove](mirrorEvent) {
1632
- if (mirrorEvent.canceled()) {
1633
- return null;
1634
- }
1635
- const setState = ({
1636
- lastMovedX,
1637
- lastMovedY,
1638
- ...args
1639
- }) => {
1640
- this.lastMovedX = lastMovedX;
1641
- this.lastMovedY = lastMovedY;
1642
- return {
1643
- lastMovedX,
1644
- lastMovedY,
1645
- ...args
1646
- };
1647
- };
1648
- const triggerMoved = args => {
1649
- const mirrorMovedEvent = new MirrorMovedEvent({
1650
- source: mirrorEvent.source,
1651
- originalSource: mirrorEvent.originalSource,
1652
- sourceContainer: mirrorEvent.sourceContainer,
1653
- sensorEvent: mirrorEvent.sensorEvent,
1654
- dragEvent: mirrorEvent.dragEvent,
1655
- mirror: this.mirror,
1656
- passedThreshX: mirrorEvent.passedThreshX,
1657
- passedThreshY: mirrorEvent.passedThreshY
1658
- });
1659
- this.draggable.trigger(mirrorMovedEvent);
1660
- return args;
1661
- };
1662
- const initialState = {
1663
- mirror: mirrorEvent.mirror,
1664
- sensorEvent: mirrorEvent.sensorEvent,
1665
- mirrorOffset: this.mirrorOffset,
1666
- options: this.options,
1667
- initialX: this.initialX,
1668
- initialY: this.initialY,
1669
- scrollOffset: this.scrollOffset,
1670
- passedThreshX: mirrorEvent.passedThreshX,
1671
- passedThreshY: mirrorEvent.passedThreshY,
1672
- lastMovedX: this.lastMovedX,
1673
- lastMovedY: this.lastMovedY
1674
- };
1675
- return Promise.resolve(initialState).then(positionMirror({
1676
- raf: true
1677
- })).then(setState).then(triggerMoved);
1678
- }
1679
-
1680
- [getAppendableContainer](source) {
1681
- const appendTo = this.options.appendTo;
1682
- if (typeof appendTo === 'string') {
1683
- return document.querySelector(appendTo);
1684
- } else if (appendTo instanceof HTMLElement) {
1685
- return appendTo;
1686
- } else if (typeof appendTo === 'function') {
1687
- return appendTo(source);
1688
- } else {
1689
- return source.parentNode;
1690
- }
1691
- }
1692
- }
1693
-
1694
- function computeMirrorDimensions({
1695
- source,
1696
- ...args
1697
- }) {
1698
- return withPromise(resolve => {
1699
- const sourceRect = source.getBoundingClientRect();
1700
- resolve({
1701
- source,
1702
- sourceRect,
1703
- ...args
1704
- });
1705
- });
1706
- }
1707
-
1708
- function calculateMirrorOffset({
1709
- sensorEvent,
1710
- sourceRect,
1711
- options,
1712
- ...args
1713
- }) {
1714
- return withPromise(resolve => {
1715
- const top = options.cursorOffsetY === null ? sensorEvent.clientY - sourceRect.top : options.cursorOffsetY;
1716
- const left = options.cursorOffsetX === null ? sensorEvent.clientX - sourceRect.left : options.cursorOffsetX;
1717
- const mirrorOffset = {
1718
- top,
1719
- left
1720
- };
1721
- resolve({
1722
- sensorEvent,
1723
- sourceRect,
1724
- mirrorOffset,
1725
- options,
1726
- ...args
1727
- });
1728
- });
1729
- }
1730
-
1731
- function resetMirror({
1732
- mirror,
1733
- source,
1734
- options,
1735
- ...args
1736
- }) {
1737
- return withPromise(resolve => {
1738
- let offsetHeight;
1739
- let offsetWidth;
1740
- if (options.constrainDimensions) {
1741
- const computedSourceStyles = getComputedStyle(source);
1742
- offsetHeight = computedSourceStyles.getPropertyValue('height');
1743
- offsetWidth = computedSourceStyles.getPropertyValue('width');
1744
- }
1745
- mirror.style.display = null;
1746
- mirror.style.position = 'fixed';
1747
- mirror.style.pointerEvents = 'none';
1748
- mirror.style.top = 0;
1749
- mirror.style.left = 0;
1750
- mirror.style.margin = 0;
1751
- if (options.constrainDimensions) {
1752
- mirror.style.height = offsetHeight;
1753
- mirror.style.width = offsetWidth;
1754
- }
1755
- resolve({
1756
- mirror,
1757
- source,
1758
- options,
1759
- ...args
1760
- });
1761
- });
1762
- }
1763
-
1764
- function addMirrorClasses({
1765
- mirror,
1766
- mirrorClasses,
1767
- ...args
1768
- }) {
1769
- return withPromise(resolve => {
1770
- mirror.classList.add(...mirrorClasses);
1771
- resolve({
1772
- mirror,
1773
- mirrorClasses,
1774
- ...args
1775
- });
1776
- });
1777
- }
1778
-
1779
- function removeMirrorID({
1780
- mirror,
1781
- ...args
1782
- }) {
1783
- return withPromise(resolve => {
1784
- mirror.removeAttribute('id');
1785
- delete mirror.id;
1786
- resolve({
1787
- mirror,
1788
- ...args
1789
- });
1790
- });
1791
- }
1792
-
1793
- function positionMirror({
1794
- withFrame = false,
1795
- initial = false
1796
- } = {}) {
1797
- return ({
1798
- mirror,
1799
- sensorEvent,
1800
- mirrorOffset,
1801
- initialY,
1802
- initialX,
1803
- scrollOffset,
1804
- options,
1805
- passedThreshX,
1806
- passedThreshY,
1807
- lastMovedX,
1808
- lastMovedY,
1809
- ...args
1810
- }) => {
1811
- return withPromise(resolve => {
1812
- const result = {
1813
- mirror,
1814
- sensorEvent,
1815
- mirrorOffset,
1816
- options,
1817
- ...args
1818
- };
1819
- if (mirrorOffset) {
1820
- const x = passedThreshX ? Math.round((sensorEvent.clientX - mirrorOffset.left - scrollOffset.x) / (options.thresholdX || 1)) * (options.thresholdX || 1) : Math.round(lastMovedX);
1821
- const y = passedThreshY ? Math.round((sensorEvent.clientY - mirrorOffset.top - scrollOffset.y) / (options.thresholdY || 1)) * (options.thresholdY || 1) : Math.round(lastMovedY);
1822
- if (options.xAxis && options.yAxis || initial) {
1823
- mirror.style.transform = `translate3d(${x}px, ${y}px, 0)`;
1824
- } else if (options.xAxis && !options.yAxis) {
1825
- mirror.style.transform = `translate3d(${x}px, ${initialY}px, 0)`;
1826
- } else if (options.yAxis && !options.xAxis) {
1827
- mirror.style.transform = `translate3d(${initialX}px, ${y}px, 0)`;
1828
- }
1829
- if (initial) {
1830
- result.initialX = x;
1831
- result.initialY = y;
1832
- }
1833
- result.lastMovedX = x;
1834
- result.lastMovedY = y;
1835
- }
1836
- resolve(result);
1837
- }, {
1838
- frame: withFrame
1839
- });
1840
- };
1841
- }
1842
-
1843
- function withPromise(callback, {
1844
- raf = false
1845
- } = {}) {
1846
- return new Promise((resolve, reject) => {
1847
- if (raf) {
1848
- requestAnimationFrame(() => {
1849
- callback(resolve, reject);
1850
- });
1851
- } else {
1852
- callback(resolve, reject);
1853
- }
1854
- });
1855
- }
1856
-
1857
- function isNativeDragEvent(sensorEvent) {
1858
- return /^drag/.test(sensorEvent.originalEvent.type);
1859
- }
1860
-
1861
- const onDragStart$2 = Symbol('onDragStart');
1862
- const onDragMove$1 = Symbol('onDragMove');
1863
- const onDragStop$2 = Symbol('onDragStop');
1864
- const scroll = Symbol('scroll');
1865
-
1866
- const defaultOptions$1 = {
1867
- speed: 6,
1868
- sensitivity: 50,
1869
- scrollableElements: []
1870
- };
1871
-
1872
- class Scrollable extends AbstractPlugin {
1873
-
1874
- constructor(draggable) {
1875
- super(draggable);
1876
-
1877
- this.options = {
1878
- ...defaultOptions$1,
1879
- ...this.getOptions()
1880
- };
1881
-
1882
- this.currentMousePosition = null;
1883
-
1884
- this.scrollAnimationFrame = null;
1885
-
1886
- this.scrollableElement = null;
1887
-
1888
- this.findScrollableElementFrame = null;
1889
- this[onDragStart$2] = this[onDragStart$2].bind(this);
1890
- this[onDragMove$1] = this[onDragMove$1].bind(this);
1891
- this[onDragStop$2] = this[onDragStop$2].bind(this);
1892
- this[scroll] = this[scroll].bind(this);
1893
- }
1894
-
1895
- attach() {
1896
- this.draggable.on('drag:start', this[onDragStart$2]).on('drag:move', this[onDragMove$1]).on('drag:stop', this[onDragStop$2]);
1897
- }
1898
-
1899
- detach() {
1900
- this.draggable.off('drag:start', this[onDragStart$2]).off('drag:move', this[onDragMove$1]).off('drag:stop', this[onDragStop$2]);
1901
- }
1902
-
1903
- getOptions() {
1904
- return this.draggable.options.scrollable || {};
1905
- }
1906
-
1907
- getScrollableElement(target) {
1908
- if (this.hasDefinedScrollableElements()) {
1909
- return closest(target, this.options.scrollableElements) || document.documentElement;
1910
- } else {
1911
- return closestScrollableElement(target);
1912
- }
1913
- }
1914
-
1915
- hasDefinedScrollableElements() {
1916
- return Boolean(this.options.scrollableElements.length !== 0);
1917
- }
1918
-
1919
- [onDragStart$2](dragEvent) {
1920
- this.findScrollableElementFrame = requestAnimationFrame(() => {
1921
- this.scrollableElement = this.getScrollableElement(dragEvent.source);
1922
- });
1923
- }
1924
-
1925
- [onDragMove$1](dragEvent) {
1926
- this.findScrollableElementFrame = requestAnimationFrame(() => {
1927
- this.scrollableElement = this.getScrollableElement(dragEvent.sensorEvent.target);
1928
- });
1929
- if (!this.scrollableElement) {
1930
- return;
1931
- }
1932
- const sensorEvent = dragEvent.sensorEvent;
1933
- const scrollOffset = {
1934
- x: 0,
1935
- y: 0
1936
- };
1937
- if ('ontouchstart' in window) {
1938
- scrollOffset.y = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
1939
- scrollOffset.x = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
1940
- }
1941
- this.currentMousePosition = {
1942
- clientX: sensorEvent.clientX - scrollOffset.x,
1943
- clientY: sensorEvent.clientY - scrollOffset.y
1944
- };
1945
- this.scrollAnimationFrame = requestAnimationFrame(this[scroll]);
1946
- }
1947
-
1948
- [onDragStop$2]() {
1949
- cancelAnimationFrame(this.scrollAnimationFrame);
1950
- cancelAnimationFrame(this.findScrollableElementFrame);
1951
- this.scrollableElement = null;
1952
- this.scrollAnimationFrame = null;
1953
- this.findScrollableElementFrame = null;
1954
- this.currentMousePosition = null;
1955
- }
1956
-
1957
- [scroll]() {
1958
- if (!this.scrollableElement || !this.currentMousePosition) {
1959
- return;
1960
- }
1961
- cancelAnimationFrame(this.scrollAnimationFrame);
1962
- const {
1963
- speed,
1964
- sensitivity
1965
- } = this.options;
1966
- const rect = this.scrollableElement.getBoundingClientRect();
1967
- const bottomCutOff = rect.bottom > window.innerHeight;
1968
- const topCutOff = rect.top < 0;
1969
- const cutOff = topCutOff || bottomCutOff;
1970
- const documentScrollingElement = getDocumentScrollingElement();
1971
- const scrollableElement = this.scrollableElement;
1972
- const clientX = this.currentMousePosition.clientX;
1973
- const clientY = this.currentMousePosition.clientY;
1974
- if (scrollableElement !== document.body && scrollableElement !== document.documentElement && !cutOff) {
1975
- const {
1976
- offsetHeight,
1977
- offsetWidth
1978
- } = scrollableElement;
1979
- if (rect.top + offsetHeight - clientY < sensitivity) {
1980
- scrollableElement.scrollTop += speed;
1981
- } else if (clientY - rect.top < sensitivity) {
1982
- scrollableElement.scrollTop -= speed;
1983
- }
1984
- if (rect.left + offsetWidth - clientX < sensitivity) {
1985
- scrollableElement.scrollLeft += speed;
1986
- } else if (clientX - rect.left < sensitivity) {
1987
- scrollableElement.scrollLeft -= speed;
1988
- }
1989
- } else {
1990
- const {
1991
- innerHeight,
1992
- innerWidth
1993
- } = window;
1994
- if (clientY < sensitivity) {
1995
- documentScrollingElement.scrollTop -= speed;
1996
- } else if (innerHeight - clientY < sensitivity) {
1997
- documentScrollingElement.scrollTop += speed;
1998
- }
1999
- if (clientX < sensitivity) {
2000
- documentScrollingElement.scrollLeft -= speed;
2001
- } else if (innerWidth - clientX < sensitivity) {
2002
- documentScrollingElement.scrollLeft += speed;
2003
- }
2004
- }
2005
- this.scrollAnimationFrame = requestAnimationFrame(this[scroll]);
2006
- }
2007
- }
2008
-
2009
- function hasOverflow(element) {
2010
- const overflowRegex = /(auto|scroll)/;
2011
- const computedStyles = getComputedStyle(element, null);
2012
- const overflow = computedStyles.getPropertyValue('overflow') + computedStyles.getPropertyValue('overflow-y') + computedStyles.getPropertyValue('overflow-x');
2013
- return overflowRegex.test(overflow);
2014
- }
2015
-
2016
- function isStaticallyPositioned(element) {
2017
- const position = getComputedStyle(element).getPropertyValue('position');
2018
- return position === 'static';
2019
- }
2020
-
2021
- function closestScrollableElement(element) {
2022
- if (!element) {
2023
- return getDocumentScrollingElement();
2024
- }
2025
- const position = getComputedStyle(element).getPropertyValue('position');
2026
- const excludeStaticParents = position === 'absolute';
2027
- const scrollableElement = closest(element, parent => {
2028
- if (excludeStaticParents && isStaticallyPositioned(parent)) {
2029
- return false;
2030
- }
2031
- return hasOverflow(parent);
2032
- });
2033
- if (position === 'fixed' || !scrollableElement) {
2034
- return getDocumentScrollingElement();
2035
- } else {
2036
- return scrollableElement;
2037
- }
2038
- }
2039
-
2040
- function getDocumentScrollingElement() {
2041
- return document.scrollingElement || document.documentElement;
2042
- }
2043
-
2044
- class Emitter {
2045
- constructor() {
2046
- this.callbacks = {};
2047
- }
2048
-
2049
- on(type, ...callbacks) {
2050
- if (!this.callbacks[type]) {
2051
- this.callbacks[type] = [];
2052
- }
2053
- this.callbacks[type].push(...callbacks);
2054
- return this;
2055
- }
2056
-
2057
- off(type, callback) {
2058
- if (!this.callbacks[type]) {
2059
- return null;
2060
- }
2061
- const copy = this.callbacks[type].slice(0);
2062
- for (let i = 0; i < copy.length; i++) {
2063
- if (callback === copy[i]) {
2064
- this.callbacks[type].splice(i, 1);
2065
- }
2066
- }
2067
- return this;
2068
- }
2069
-
2070
- trigger(event) {
2071
- if (!this.callbacks[event.type]) {
2072
- return null;
2073
- }
2074
- const callbacks = [...this.callbacks[event.type]];
2075
- const caughtErrors = [];
2076
- for (let i = callbacks.length - 1; i >= 0; i--) {
2077
- const callback = callbacks[i];
2078
- try {
2079
- callback(event);
2080
- } catch (error) {
2081
- caughtErrors.push(error);
2082
- }
2083
- }
2084
- if (caughtErrors.length) {
2085
-
2086
- console.error(`Draggable caught errors while triggering '${event.type}'`, caughtErrors);
2087
-
2088
- }
2089
-
2090
- return this;
2091
- }
2092
- }
2093
-
2094
- class DraggableEvent extends AbstractEvent {
2095
-
2096
- get draggable() {
2097
- return this.data.draggable;
2098
- }
2099
- }
2100
-
2101
- DraggableEvent.type = 'draggable';
2102
- class DraggableInitializedEvent extends DraggableEvent {}
2103
-
2104
- DraggableInitializedEvent.type = 'draggable:initialize';
2105
- class DraggableDestroyEvent extends DraggableEvent {}
2106
- DraggableDestroyEvent.type = 'draggable:destroy';
2107
-
2108
- const onDragStart$1 = Symbol('onDragStart');
2109
- const onDragMove = Symbol('onDragMove');
2110
- const onDragStop$1 = Symbol('onDragStop');
2111
- const onDragPressure = Symbol('onDragPressure');
2112
- const dragStop = Symbol('dragStop');
2113
-
2114
- const defaultAnnouncements$1 = {
2115
- 'drag:start': event => `Picked up ${event.source.textContent.trim() || event.source.id || 'draggable element'}`,
2116
- 'drag:stop': event => `Released ${event.source.textContent.trim() || event.source.id || 'draggable element'}`
2117
- };
2118
- const defaultClasses = {
2119
- 'container:dragging': 'draggable-container--is-dragging',
2120
- 'source:dragging': 'draggable-source--is-dragging',
2121
- 'source:placed': 'draggable-source--placed',
2122
- 'container:placed': 'draggable-container--placed',
2123
- 'body:dragging': 'draggable--is-dragging',
2124
- 'draggable:over': 'draggable--over',
2125
- 'container:over': 'draggable-container--over',
2126
- 'source:original': 'draggable--original',
2127
- mirror: 'draggable-mirror'
2128
- };
2129
- const defaultOptions = {
2130
- draggable: '.draggable-source',
2131
- handle: null,
2132
- delay: {},
2133
- distance: 0,
2134
- placedTimeout: 800,
2135
- plugins: [],
2136
- sensors: [],
2137
- exclude: {
2138
- plugins: [],
2139
- sensors: []
2140
- }
2141
- };
2142
-
2143
- class Draggable {
2144
-
2145
- constructor(containers = [document.body], options = {}) {
2146
-
2147
- if (containers instanceof NodeList || containers instanceof Array) {
2148
- this.containers = [...containers];
2149
- } else if (containers instanceof HTMLElement) {
2150
- this.containers = [containers];
2151
- } else {
2152
- throw new Error('Draggable containers are expected to be of type `NodeList`, `HTMLElement[]` or `HTMLElement`');
2153
- }
2154
- this.options = {
2155
- ...defaultOptions,
2156
- ...options,
2157
- classes: {
2158
- ...defaultClasses,
2159
- ...(options.classes || {})
2160
- },
2161
- announcements: {
2162
- ...defaultAnnouncements$1,
2163
- ...(options.announcements || {})
2164
- },
2165
- exclude: {
2166
- plugins: options.exclude && options.exclude.plugins || [],
2167
- sensors: options.exclude && options.exclude.sensors || []
2168
- }
2169
- };
2170
-
2171
- this.emitter = new Emitter();
2172
-
2173
- this.dragging = false;
2174
-
2175
- this.plugins = [];
2176
-
2177
- this.sensors = [];
2178
- this[onDragStart$1] = this[onDragStart$1].bind(this);
2179
- this[onDragMove] = this[onDragMove].bind(this);
2180
- this[onDragStop$1] = this[onDragStop$1].bind(this);
2181
- this[onDragPressure] = this[onDragPressure].bind(this);
2182
- this[dragStop] = this[dragStop].bind(this);
2183
- document.addEventListener('drag:start', this[onDragStart$1], true);
2184
- document.addEventListener('drag:move', this[onDragMove], true);
2185
- document.addEventListener('drag:stop', this[onDragStop$1], true);
2186
- document.addEventListener('drag:pressure', this[onDragPressure], true);
2187
- const defaultPlugins = Object.values(Draggable.Plugins).filter(Plugin => !this.options.exclude.plugins.includes(Plugin));
2188
- const defaultSensors = Object.values(Draggable.Sensors).filter(sensor => !this.options.exclude.sensors.includes(sensor));
2189
- this.addPlugin(...[...defaultPlugins, ...this.options.plugins]);
2190
- this.addSensor(...[...defaultSensors, ...this.options.sensors]);
2191
- const draggableInitializedEvent = new DraggableInitializedEvent({
2192
- draggable: this
2193
- });
2194
- this.on('mirror:created', ({
2195
- mirror
2196
- }) => this.mirror = mirror);
2197
- this.on('mirror:destroy', () => this.mirror = null);
2198
- this.trigger(draggableInitializedEvent);
2199
- }
2200
-
2201
- destroy() {
2202
- document.removeEventListener('drag:start', this[onDragStart$1], true);
2203
- document.removeEventListener('drag:move', this[onDragMove], true);
2204
- document.removeEventListener('drag:stop', this[onDragStop$1], true);
2205
- document.removeEventListener('drag:pressure', this[onDragPressure], true);
2206
- const draggableDestroyEvent = new DraggableDestroyEvent({
2207
- draggable: this
2208
- });
2209
- this.trigger(draggableDestroyEvent);
2210
- this.removePlugin(...this.plugins.map(plugin => plugin.constructor));
2211
- this.removeSensor(...this.sensors.map(sensor => sensor.constructor));
2212
- }
2213
-
2214
- addPlugin(...plugins) {
2215
- const activePlugins = plugins.map(Plugin => new Plugin(this));
2216
- activePlugins.forEach(plugin => plugin.attach());
2217
- this.plugins = [...this.plugins, ...activePlugins];
2218
- return this;
2219
- }
2220
-
2221
- removePlugin(...plugins) {
2222
- const removedPlugins = this.plugins.filter(plugin => plugins.includes(plugin.constructor));
2223
- removedPlugins.forEach(plugin => plugin.detach());
2224
- this.plugins = this.plugins.filter(plugin => !plugins.includes(plugin.constructor));
2225
- return this;
2226
- }
2227
-
2228
- addSensor(...sensors) {
2229
- const activeSensors = sensors.map(Sensor => new Sensor(this.containers, this.options));
2230
- activeSensors.forEach(sensor => sensor.attach());
2231
- this.sensors = [...this.sensors, ...activeSensors];
2232
- return this;
2233
- }
2234
-
2235
- removeSensor(...sensors) {
2236
- const removedSensors = this.sensors.filter(sensor => sensors.includes(sensor.constructor));
2237
- removedSensors.forEach(sensor => sensor.detach());
2238
- this.sensors = this.sensors.filter(sensor => !sensors.includes(sensor.constructor));
2239
- return this;
2240
- }
2241
-
2242
- addContainer(...containers) {
2243
- this.containers = [...this.containers, ...containers];
2244
- this.sensors.forEach(sensor => sensor.addContainer(...containers));
2245
- return this;
2246
- }
2247
-
2248
- removeContainer(...containers) {
2249
- this.containers = this.containers.filter(container => !containers.includes(container));
2250
- this.sensors.forEach(sensor => sensor.removeContainer(...containers));
2251
- return this;
2252
- }
2253
-
2254
- on(type, ...callbacks) {
2255
- this.emitter.on(type, ...callbacks);
2256
- return this;
2257
- }
2258
-
2259
- off(type, callback) {
2260
- this.emitter.off(type, callback);
2261
- return this;
2262
- }
2263
-
2264
- trigger(event) {
2265
- this.emitter.trigger(event);
2266
- return this;
2267
- }
2268
-
2269
- getClassNameFor(name) {
2270
- return this.getClassNamesFor(name)[0];
2271
- }
2272
-
2273
- getClassNamesFor(name) {
2274
- const classNames = this.options.classes[name];
2275
- if (classNames instanceof Array) {
2276
- return classNames;
2277
- } else if (typeof classNames === 'string' || classNames instanceof String) {
2278
- return [classNames];
2279
- } else {
2280
- return [];
2281
- }
2282
- }
2283
-
2284
- isDragging() {
2285
- return Boolean(this.dragging);
2286
- }
2287
-
2288
- getDraggableElements() {
2289
- return this.containers.reduce((current, container) => {
2290
- return [...current, ...this.getDraggableElementsForContainer(container)];
2291
- }, []);
2292
- }
2293
-
2294
- getDraggableElementsForContainer(container) {
2295
- const allDraggableElements = container.querySelectorAll(this.options.draggable);
2296
- return [...allDraggableElements].filter(childElement => {
2297
- return childElement !== this.originalSource && childElement !== this.mirror;
2298
- });
2299
- }
2300
-
2301
- cancel() {
2302
- this[dragStop]();
2303
- }
2304
-
2305
- [onDragStart$1](event) {
2306
- const sensorEvent = getSensorEvent(event);
2307
- const {
2308
- target,
2309
- container,
2310
- originalSource
2311
- } = sensorEvent;
2312
- if (!this.containers.includes(container)) {
2313
- return;
2314
- }
2315
- if (this.options.handle && target && !closest(target, this.options.handle)) {
2316
- sensorEvent.cancel();
2317
- return;
2318
- }
2319
- this.originalSource = originalSource;
2320
- this.sourceContainer = container;
2321
- if (this.lastPlacedSource && this.lastPlacedContainer) {
2322
- clearTimeout(this.placedTimeoutID);
2323
- this.lastPlacedSource.classList.remove(...this.getClassNamesFor('source:placed'));
2324
- this.lastPlacedContainer.classList.remove(...this.getClassNamesFor('container:placed'));
2325
- }
2326
- this.source = this.originalSource.cloneNode(true);
2327
- this.originalSource.parentNode.insertBefore(this.source, this.originalSource);
2328
- this.originalSource.style.display = 'none';
2329
- const dragStartEvent = new DragStartEvent({
2330
- source: this.source,
2331
- originalSource: this.originalSource,
2332
- sourceContainer: container,
2333
- sensorEvent
2334
- });
2335
- this.trigger(dragStartEvent);
2336
- this.dragging = !dragStartEvent.canceled();
2337
- if (dragStartEvent.canceled()) {
2338
- this.source.remove();
2339
- this.originalSource.style.display = null;
2340
- return;
2341
- }
2342
- this.originalSource.classList.add(...this.getClassNamesFor('source:original'));
2343
- this.source.classList.add(...this.getClassNamesFor('source:dragging'));
2344
- this.sourceContainer.classList.add(...this.getClassNamesFor('container:dragging'));
2345
- document.body.classList.add(...this.getClassNamesFor('body:dragging'));
2346
- applyUserSelect(document.body, 'none');
2347
- requestAnimationFrame(() => {
2348
- const oldSensorEvent = getSensorEvent(event);
2349
- const newSensorEvent = oldSensorEvent.clone({
2350
- target: this.source
2351
- });
2352
- this[onDragMove]({
2353
- ...event,
2354
- detail: newSensorEvent
2355
- });
2356
- });
2357
- }
2358
-
2359
- [onDragMove](event) {
2360
- if (!this.dragging) {
2361
- return;
2362
- }
2363
- const sensorEvent = getSensorEvent(event);
2364
- const {
2365
- container
2366
- } = sensorEvent;
2367
- let target = sensorEvent.target;
2368
- const dragMoveEvent = new DragMoveEvent({
2369
- source: this.source,
2370
- originalSource: this.originalSource,
2371
- sourceContainer: container,
2372
- sensorEvent
2373
- });
2374
- this.trigger(dragMoveEvent);
2375
- if (dragMoveEvent.canceled()) {
2376
- sensorEvent.cancel();
2377
- }
2378
- target = closest(target, this.options.draggable);
2379
- const withinCorrectContainer = closest(sensorEvent.target, this.containers);
2380
- const overContainer = sensorEvent.overContainer || withinCorrectContainer;
2381
- const isLeavingContainer = this.currentOverContainer && overContainer !== this.currentOverContainer;
2382
- const isLeavingDraggable = this.currentOver && target !== this.currentOver;
2383
- const isOverContainer = overContainer && this.currentOverContainer !== overContainer;
2384
- const isOverDraggable = withinCorrectContainer && target && this.currentOver !== target;
2385
- if (isLeavingDraggable) {
2386
- const dragOutEvent = new DragOutEvent({
2387
- source: this.source,
2388
- originalSource: this.originalSource,
2389
- sourceContainer: container,
2390
- sensorEvent,
2391
- over: this.currentOver,
2392
- overContainer: this.currentOverContainer
2393
- });
2394
- this.currentOver.classList.remove(...this.getClassNamesFor('draggable:over'));
2395
- this.currentOver = null;
2396
- this.trigger(dragOutEvent);
2397
- }
2398
- if (isLeavingContainer) {
2399
- const dragOutContainerEvent = new DragOutContainerEvent({
2400
- source: this.source,
2401
- originalSource: this.originalSource,
2402
- sourceContainer: container,
2403
- sensorEvent,
2404
- overContainer: this.currentOverContainer
2405
- });
2406
- this.currentOverContainer.classList.remove(...this.getClassNamesFor('container:over'));
2407
- this.currentOverContainer = null;
2408
- this.trigger(dragOutContainerEvent);
2409
- }
2410
- if (isOverContainer) {
2411
- overContainer.classList.add(...this.getClassNamesFor('container:over'));
2412
- const dragOverContainerEvent = new DragOverContainerEvent({
2413
- source: this.source,
2414
- originalSource: this.originalSource,
2415
- sourceContainer: container,
2416
- sensorEvent,
2417
- overContainer
2418
- });
2419
- this.currentOverContainer = overContainer;
2420
- this.trigger(dragOverContainerEvent);
2421
- }
2422
- if (isOverDraggable) {
2423
- target.classList.add(...this.getClassNamesFor('draggable:over'));
2424
- const dragOverEvent = new DragOverEvent({
2425
- source: this.source,
2426
- originalSource: this.originalSource,
2427
- sourceContainer: container,
2428
- sensorEvent,
2429
- overContainer,
2430
- over: target
2431
- });
2432
- this.currentOver = target;
2433
- this.trigger(dragOverEvent);
2434
- }
2435
- }
2436
-
2437
- [dragStop](event) {
2438
- if (!this.dragging) {
2439
- return;
2440
- }
2441
- this.dragging = false;
2442
- const dragStopEvent = new DragStopEvent({
2443
- source: this.source,
2444
- originalSource: this.originalSource,
2445
- sensorEvent: event ? event.sensorEvent : null,
2446
- sourceContainer: this.sourceContainer
2447
- });
2448
- this.trigger(dragStopEvent);
2449
- if (!dragStopEvent.canceled()) this.source.parentNode.insertBefore(this.originalSource, this.source);
2450
- this.source.remove();
2451
- this.originalSource.style.display = '';
2452
- this.source.classList.remove(...this.getClassNamesFor('source:dragging'));
2453
- this.originalSource.classList.remove(...this.getClassNamesFor('source:original'));
2454
- this.originalSource.classList.add(...this.getClassNamesFor('source:placed'));
2455
- this.sourceContainer.classList.add(...this.getClassNamesFor('container:placed'));
2456
- this.sourceContainer.classList.remove(...this.getClassNamesFor('container:dragging'));
2457
- document.body.classList.remove(...this.getClassNamesFor('body:dragging'));
2458
- applyUserSelect(document.body, '');
2459
- if (this.currentOver) {
2460
- this.currentOver.classList.remove(...this.getClassNamesFor('draggable:over'));
2461
- }
2462
- if (this.currentOverContainer) {
2463
- this.currentOverContainer.classList.remove(...this.getClassNamesFor('container:over'));
2464
- }
2465
- this.lastPlacedSource = this.originalSource;
2466
- this.lastPlacedContainer = this.sourceContainer;
2467
- this.placedTimeoutID = setTimeout(() => {
2468
- if (this.lastPlacedSource) {
2469
- this.lastPlacedSource.classList.remove(...this.getClassNamesFor('source:placed'));
2470
- }
2471
- if (this.lastPlacedContainer) {
2472
- this.lastPlacedContainer.classList.remove(...this.getClassNamesFor('container:placed'));
2473
- }
2474
- this.lastPlacedSource = null;
2475
- this.lastPlacedContainer = null;
2476
- }, this.options.placedTimeout);
2477
- const dragStoppedEvent = new DragStoppedEvent({
2478
- source: this.source,
2479
- originalSource: this.originalSource,
2480
- sensorEvent: event ? event.sensorEvent : null,
2481
- sourceContainer: this.sourceContainer
2482
- });
2483
- this.trigger(dragStoppedEvent);
2484
- this.source = null;
2485
- this.originalSource = null;
2486
- this.currentOverContainer = null;
2487
- this.currentOver = null;
2488
- this.sourceContainer = null;
2489
- }
2490
-
2491
- [onDragStop$1](event) {
2492
- this[dragStop](event);
2493
- }
2494
-
2495
- [onDragPressure](event) {
2496
- if (!this.dragging) {
2497
- return;
2498
- }
2499
- const sensorEvent = getSensorEvent(event);
2500
- const source = this.source || closest(sensorEvent.originalEvent.target, this.options.draggable);
2501
- const dragPressureEvent = new DragPressureEvent({
2502
- sensorEvent,
2503
- source,
2504
- pressure: sensorEvent.pressure
2505
- });
2506
- this.trigger(dragPressureEvent);
2507
- }
2508
- }
2509
-
2510
- Draggable.Plugins = {
2511
- Announcement,
2512
- Focusable,
2513
- Mirror,
2514
- Scrollable
2515
- };
2516
-
2517
- Draggable.Sensors = {
2518
- MouseSensor,
2519
- TouchSensor
2520
- };
2521
- function getSensorEvent(event) {
2522
- return event.detail;
2523
- }
2524
- function applyUserSelect(element, value) {
2525
- element.style.webkitUserSelect = value;
2526
- element.style.mozUserSelect = value;
2527
- element.style.msUserSelect = value;
2528
- element.style.oUserSelect = value;
2529
- element.style.userSelect = value;
2530
- }
2531
-
2532
- class SortableEvent extends AbstractEvent {
2533
-
2534
- constructor(data) {
2535
- super(data);
2536
- this.data = data;
2537
- }
2538
-
2539
- get dragEvent() {
2540
- return this.data.dragEvent;
2541
- }
2542
- }
2543
- SortableEvent.type = 'sortable';
2544
-
2545
- class SortableStartEvent extends SortableEvent {
2546
-
2547
- get startIndex() {
2548
- return this.data.startIndex;
2549
- }
2550
-
2551
- get startContainer() {
2552
- return this.data.startContainer;
2553
- }
2554
- }
2555
- SortableStartEvent.type = 'sortable:start';
2556
- SortableStartEvent.cancelable = true;
2557
-
2558
- class SortableSortEvent extends SortableEvent {
2559
-
2560
- get currentIndex() {
2561
- return this.data.currentIndex;
2562
- }
2563
-
2564
- get over() {
2565
- return this.data.over;
2566
- }
2567
-
2568
- get overContainer() {
2569
- return this.data.dragEvent.overContainer;
2570
- }
2571
- }
2572
- SortableSortEvent.type = 'sortable:sort';
2573
- SortableSortEvent.cancelable = true;
2574
-
2575
- class SortableSortedEvent extends SortableEvent {
2576
-
2577
- get oldIndex() {
2578
- return this.data.oldIndex;
2579
- }
2580
-
2581
- get newIndex() {
2582
- return this.data.newIndex;
2583
- }
2584
-
2585
- get oldContainer() {
2586
- return this.data.oldContainer;
2587
- }
2588
-
2589
- get newContainer() {
2590
- return this.data.newContainer;
2591
- }
2592
- }
2593
- SortableSortedEvent.type = 'sortable:sorted';
2594
-
2595
- class SortableStopEvent extends SortableEvent {
2596
-
2597
- get oldIndex() {
2598
- return this.data.oldIndex;
2599
- }
2600
-
2601
- get newIndex() {
2602
- return this.data.newIndex;
2603
- }
2604
-
2605
- get oldContainer() {
2606
- return this.data.oldContainer;
2607
- }
2608
-
2609
- get newContainer() {
2610
- return this.data.newContainer;
2611
- }
2612
- }
2613
- SortableStopEvent.type = 'sortable:stop';
2614
-
2615
- const onDragStart = Symbol('onDragStart');
2616
- const onDragOverContainer = Symbol('onDragOverContainer');
2617
- const onDragOver = Symbol('onDragOver');
2618
- const onDragStop = Symbol('onDragStop');
2619
-
2620
- function onSortableSortedDefaultAnnouncement({
2621
- dragEvent
2622
- }) {
2623
- const sourceText = dragEvent.source.textContent.trim() || dragEvent.source.id || 'sortable element';
2624
- if (dragEvent.over) {
2625
- const overText = dragEvent.over.textContent.trim() || dragEvent.over.id || 'sortable element';
2626
- const isFollowing = dragEvent.source.compareDocumentPosition(dragEvent.over) & Node.DOCUMENT_POSITION_FOLLOWING;
2627
- if (isFollowing) {
2628
- return `Placed ${sourceText} after ${overText}`;
2629
- } else {
2630
- return `Placed ${sourceText} before ${overText}`;
2631
- }
2632
- } else {
2633
-
2634
- return `Placed ${sourceText} into a different container`;
2635
- }
2636
- }
2637
-
2638
- const defaultAnnouncements = {
2639
- 'sortable:sorted': onSortableSortedDefaultAnnouncement
2640
- };
2641
-
2642
- class Sortable extends Draggable {
2643
-
2644
- constructor(containers = [], options = {}) {
2645
- super(containers, {
2646
- ...options,
2647
- announcements: {
2648
- ...defaultAnnouncements,
2649
- ...(options.announcements || {})
2650
- }
2651
- });
2652
-
2653
- this.startIndex = null;
2654
-
2655
- this.startContainer = null;
2656
- this[onDragStart] = this[onDragStart].bind(this);
2657
- this[onDragOverContainer] = this[onDragOverContainer].bind(this);
2658
- this[onDragOver] = this[onDragOver].bind(this);
2659
- this[onDragStop] = this[onDragStop].bind(this);
2660
- this.on('drag:start', this[onDragStart]).on('drag:over:container', this[onDragOverContainer]).on('drag:over', this[onDragOver]).on('drag:stop', this[onDragStop]);
2661
- }
2662
-
2663
- destroy() {
2664
- super.destroy();
2665
- this.off('drag:start', this[onDragStart]).off('drag:over:container', this[onDragOverContainer]).off('drag:over', this[onDragOver]).off('drag:stop', this[onDragStop]);
2666
- }
2667
-
2668
- index(element) {
2669
- return this.getSortableElementsForContainer(element.parentNode).indexOf(element);
2670
- }
2671
-
2672
- getSortableElementsForContainer(container) {
2673
- const allSortableElements = container.querySelectorAll(this.options.draggable);
2674
- return [...allSortableElements].filter(childElement => {
2675
- return childElement !== this.originalSource && childElement !== this.mirror && childElement.parentNode === container;
2676
- });
2677
- }
2678
-
2679
- [onDragStart](event) {
2680
- this.startContainer = event.source.parentNode;
2681
- this.startIndex = this.index(event.source);
2682
- const sortableStartEvent = new SortableStartEvent({
2683
- dragEvent: event,
2684
- startIndex: this.startIndex,
2685
- startContainer: this.startContainer
2686
- });
2687
- this.trigger(sortableStartEvent);
2688
- if (sortableStartEvent.canceled()) {
2689
- event.cancel();
2690
- }
2691
- }
2692
-
2693
- [onDragOverContainer](event) {
2694
- if (event.canceled()) {
2695
- return;
2696
- }
2697
- const {
2698
- source,
2699
- over,
2700
- overContainer
2701
- } = event;
2702
- const oldIndex = this.index(source);
2703
- const sortableSortEvent = new SortableSortEvent({
2704
- dragEvent: event,
2705
- currentIndex: oldIndex,
2706
- source,
2707
- over
2708
- });
2709
- this.trigger(sortableSortEvent);
2710
- if (sortableSortEvent.canceled()) {
2711
- return;
2712
- }
2713
- const children = this.getSortableElementsForContainer(overContainer);
2714
- const moves = move({
2715
- source,
2716
- over,
2717
- overContainer,
2718
- children
2719
- });
2720
- if (!moves) {
2721
- return;
2722
- }
2723
- const {
2724
- oldContainer,
2725
- newContainer
2726
- } = moves;
2727
- const newIndex = this.index(event.source);
2728
- const sortableSortedEvent = new SortableSortedEvent({
2729
- dragEvent: event,
2730
- oldIndex,
2731
- newIndex,
2732
- oldContainer,
2733
- newContainer
2734
- });
2735
- this.trigger(sortableSortedEvent);
2736
- }
2737
-
2738
- [onDragOver](event) {
2739
- if (event.over === event.originalSource || event.over === event.source) {
2740
- return;
2741
- }
2742
- const {
2743
- source,
2744
- over,
2745
- overContainer
2746
- } = event;
2747
- const oldIndex = this.index(source);
2748
- const sortableSortEvent = new SortableSortEvent({
2749
- dragEvent: event,
2750
- currentIndex: oldIndex,
2751
- source,
2752
- over
2753
- });
2754
- this.trigger(sortableSortEvent);
2755
- if (sortableSortEvent.canceled()) {
2756
- return;
2757
- }
2758
- const children = this.getDraggableElementsForContainer(overContainer);
2759
- const moves = move({
2760
- source,
2761
- over,
2762
- overContainer,
2763
- children
2764
- });
2765
- if (!moves) {
2766
- return;
2767
- }
2768
- const {
2769
- oldContainer,
2770
- newContainer
2771
- } = moves;
2772
- const newIndex = this.index(source);
2773
- const sortableSortedEvent = new SortableSortedEvent({
2774
- dragEvent: event,
2775
- oldIndex,
2776
- newIndex,
2777
- oldContainer,
2778
- newContainer
2779
- });
2780
- this.trigger(sortableSortedEvent);
2781
- }
2782
-
2783
- [onDragStop](event) {
2784
- const sortableStopEvent = new SortableStopEvent({
2785
- dragEvent: event,
2786
- oldIndex: this.startIndex,
2787
- newIndex: this.index(event.source),
2788
- oldContainer: this.startContainer,
2789
- newContainer: event.source.parentNode
2790
- });
2791
- this.trigger(sortableStopEvent);
2792
- this.startIndex = null;
2793
- this.startContainer = null;
2794
- }
2795
- }
2796
- function index(element) {
2797
- return Array.prototype.indexOf.call(element.parentNode.children, element);
2798
- }
2799
- function move({
2800
- source,
2801
- over,
2802
- overContainer,
2803
- children
2804
- }) {
2805
- const emptyOverContainer = !children.length;
2806
- const differentContainer = source.parentNode !== overContainer;
2807
- const sameContainer = over && source.parentNode === over.parentNode;
2808
- if (emptyOverContainer) {
2809
- return moveInsideEmptyContainer(source, overContainer);
2810
- } else if (sameContainer) {
2811
- return moveWithinContainer(source, over);
2812
- } else if (differentContainer) {
2813
- return moveOutsideContainer(source, over, overContainer);
2814
- } else {
2815
- return null;
2816
- }
2817
- }
2818
- function moveInsideEmptyContainer(source, overContainer) {
2819
- const oldContainer = source.parentNode;
2820
- overContainer.appendChild(source);
2821
- return {
2822
- oldContainer,
2823
- newContainer: overContainer
2824
- };
2825
- }
2826
- function moveWithinContainer(source, over) {
2827
- const oldIndex = index(source);
2828
- const newIndex = index(over);
2829
- if (oldIndex < newIndex) {
2830
- source.parentNode.insertBefore(source, over.nextElementSibling);
2831
- } else {
2832
- source.parentNode.insertBefore(source, over);
2833
- }
2834
- return {
2835
- oldContainer: source.parentNode,
2836
- newContainer: source.parentNode
2837
- };
2838
- }
2839
- function moveOutsideContainer(source, over, overContainer) {
2840
- const oldContainer = source.parentNode;
2841
- if (over) {
2842
- over.parentNode.insertBefore(source, over);
2843
- } else {
2844
-
2845
- overContainer.appendChild(source);
2846
- }
2847
- return {
2848
- oldContainer,
2849
- newContainer: source.parentNode
2850
- };
2851
- }
2852
-
2853
- exports.Sortable = Sortable;