@soxa-ui/plugins 0.0.0-stage → 0.3.0-beta.1

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 (630) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +125 -2
  3. package/dist/base/base.class.d.ts +54 -0
  4. package/dist/base/base.class.js +69 -0
  5. package/dist/base/bundle.class.d.ts +25 -0
  6. package/dist/base/bundle.class.js +68 -0
  7. package/dist/base/index.d.ts +3 -0
  8. package/dist/base/types.d.ts +147 -0
  9. package/dist/custom/accordion/header.d.ts +19 -0
  10. package/dist/custom/accordion/header.js +38 -0
  11. package/dist/custom/accordion/index.d.ts +2 -0
  12. package/dist/custom/accordion/item-ids/index.d.ts +1 -0
  13. package/dist/custom/accordion/item-ids/item-ids.plugin.d.ts +24 -0
  14. package/dist/custom/accordion/item-ids/item-ids.plugin.js +44 -0
  15. package/dist/custom/action/action.plugin.d.ts +178 -0
  16. package/dist/custom/action/action.plugin.js +339 -0
  17. package/dist/custom/action/index.d.ts +2 -0
  18. package/dist/custom/action/types.d.ts +65 -0
  19. package/dist/custom/calendar/ids/ids.plugin.d.ts +25 -0
  20. package/dist/custom/calendar/ids/ids.plugin.js +44 -0
  21. package/dist/custom/calendar/ids/index.d.ts +1 -0
  22. package/dist/custom/calendar/index.d.ts +5 -0
  23. package/dist/custom/calendar/keyboard/index.d.ts +2 -0
  24. package/dist/custom/calendar/keyboard/keyboard.plugin.d.ts +114 -0
  25. package/dist/custom/calendar/keyboard/keyboard.plugin.js +249 -0
  26. package/dist/custom/calendar/keyboard/types.d.ts +16 -0
  27. package/dist/custom/calendar/names/index.d.ts +1 -0
  28. package/dist/custom/calendar/names/names.plugin.d.ts +24 -0
  29. package/dist/custom/calendar/names/names.plugin.js +45 -0
  30. package/dist/custom/calendar/parts.d.ts +58 -0
  31. package/dist/custom/calendar/parts.js +119 -0
  32. package/dist/custom/calendar/pointer/index.d.ts +2 -0
  33. package/dist/custom/calendar/pointer/pointer.plugin.d.ts +58 -0
  34. package/dist/custom/calendar/pointer/pointer.plugin.js +144 -0
  35. package/dist/custom/calendar/pointer/types.d.ts +6 -0
  36. package/dist/custom/calendar/stop.d.ts +20 -0
  37. package/dist/custom/calendar/stop.js +32 -0
  38. package/dist/custom/calendar/types.d.ts +16 -0
  39. package/dist/custom/clearable/index.d.ts +1 -0
  40. package/dist/custom/clearable/names/index.d.ts +1 -0
  41. package/dist/custom/clearable/names/names.plugin.d.ts +24 -0
  42. package/dist/custom/clearable/names/names.plugin.js +29 -0
  43. package/dist/custom/collection/bundles.plugin.d.ts +55 -0
  44. package/dist/custom/collection/bundles.plugin.js +100 -0
  45. package/dist/custom/collection/collection-bundles-access.plugin.d.ts +29 -0
  46. package/dist/custom/collection/collection-bundles-access.plugin.js +44 -0
  47. package/dist/custom/collection/collection-elements.plugin.d.ts +55 -0
  48. package/dist/custom/collection/collection-elements.plugin.js +100 -0
  49. package/dist/custom/collection/index.d.ts +4 -0
  50. package/dist/custom/collection/leaving-focus.d.ts +119 -0
  51. package/dist/custom/collection/leaving-focus.js +164 -0
  52. package/dist/custom/collection/reachable.d.ts +14 -0
  53. package/dist/custom/collection/reachable.js +18 -0
  54. package/dist/custom/collection/types.d.ts +14 -0
  55. package/dist/custom/component-view/aria.plugin.d.ts +102 -0
  56. package/dist/custom/component-view/aria.plugin.js +190 -0
  57. package/dist/custom/component-view/index.d.ts +2 -0
  58. package/dist/custom/component-view/types.d.ts +62 -0
  59. package/dist/custom/date-input/clipboard/clipboard.plugin.d.ts +41 -0
  60. package/dist/custom/date-input/clipboard/clipboard.plugin.js +98 -0
  61. package/dist/custom/date-input/clipboard/index.d.ts +2 -0
  62. package/dist/custom/date-input/clipboard/types.d.ts +6 -0
  63. package/dist/custom/date-input/ids/ids.plugin.d.ts +21 -0
  64. package/dist/custom/date-input/ids/ids.plugin.js +28 -0
  65. package/dist/custom/date-input/ids/index.d.ts +1 -0
  66. package/dist/custom/date-input/index.d.ts +6 -0
  67. package/dist/custom/date-input/keyboard/index.d.ts +2 -0
  68. package/dist/custom/date-input/keyboard/keyboard.plugin.d.ts +54 -0
  69. package/dist/custom/date-input/keyboard/keyboard.plugin.js +154 -0
  70. package/dist/custom/date-input/keyboard/types.d.ts +9 -0
  71. package/dist/custom/date-input/parts.d.ts +49 -0
  72. package/dist/custom/date-input/parts.js +127 -0
  73. package/dist/custom/date-input/pointer/index.d.ts +2 -0
  74. package/dist/custom/date-input/pointer/pointer.plugin.d.ts +51 -0
  75. package/dist/custom/date-input/pointer/pointer.plugin.js +141 -0
  76. package/dist/custom/date-input/pointer/types.d.ts +6 -0
  77. package/dist/custom/date-input/touch/index.d.ts +2 -0
  78. package/dist/custom/date-input/touch/touch.plugin.d.ts +100 -0
  79. package/dist/custom/date-input/touch/touch.plugin.js +276 -0
  80. package/dist/custom/date-input/touch/types.d.ts +6 -0
  81. package/dist/custom/date-input/types.d.ts +6 -0
  82. package/dist/custom/date-picker/field.d.ts +20 -0
  83. package/dist/custom/date-picker/field.js +27 -0
  84. package/dist/custom/date-picker/focus/focus.plugin.d.ts +56 -0
  85. package/dist/custom/date-picker/focus/focus.plugin.js +81 -0
  86. package/dist/custom/date-picker/focus/index.d.ts +2 -0
  87. package/dist/custom/date-picker/focus/types.d.ts +3 -0
  88. package/dist/custom/date-picker/ids/ids.plugin.d.ts +19 -0
  89. package/dist/custom/date-picker/ids/ids.plugin.js +28 -0
  90. package/dist/custom/date-picker/ids/index.d.ts +1 -0
  91. package/dist/custom/date-picker/index.d.ts +5 -0
  92. package/dist/custom/date-picker/names/index.d.ts +2 -0
  93. package/dist/custom/date-picker/names/names.plugin.d.ts +33 -0
  94. package/dist/custom/date-picker/names/names.plugin.js +80 -0
  95. package/dist/custom/date-picker/names/types.d.ts +12 -0
  96. package/dist/custom/date-picker/trigger/index.d.ts +2 -0
  97. package/dist/custom/date-picker/trigger/trigger.plugin.d.ts +37 -0
  98. package/dist/custom/date-picker/trigger/trigger.plugin.js +69 -0
  99. package/dist/custom/date-picker/trigger/types.d.ts +3 -0
  100. package/dist/custom/dialog/ids/ids.plugin.d.ts +15 -0
  101. package/dist/custom/dialog/ids/ids.plugin.js +28 -0
  102. package/dist/custom/dialog/ids/index.d.ts +1 -0
  103. package/dist/custom/dialog/index.d.ts +3 -0
  104. package/dist/custom/dialog/layout/index.d.ts +3 -0
  105. package/dist/custom/dialog/layout/layout.plugin.d.ts +42 -0
  106. package/dist/custom/dialog/layout/layout.plugin.js +78 -0
  107. package/dist/custom/dialog/layout/offset-event.d.ts +35 -0
  108. package/dist/custom/dialog/layout/offset-event.js +44 -0
  109. package/dist/custom/dialog/layout/types.d.ts +12 -0
  110. package/dist/custom/dialog/names/index.d.ts +1 -0
  111. package/dist/custom/dialog/names/names.plugin.d.ts +13 -0
  112. package/dist/custom/dialog/names/names.plugin.js +17 -0
  113. package/dist/custom/dismiss/dismiss.plugin.d.ts +174 -0
  114. package/dist/custom/dismiss/dismiss.plugin.js +287 -0
  115. package/dist/custom/dismiss/index.d.ts +2 -0
  116. package/dist/custom/dismiss/types.d.ts +59 -0
  117. package/dist/custom/drag-and-drop/drag.plugin.d.ts +87 -0
  118. package/dist/custom/drag-and-drop/drag.plugin.js +310 -0
  119. package/dist/custom/drag-and-drop/index.d.ts +2 -0
  120. package/dist/custom/drag-and-drop/types.d.ts +13 -0
  121. package/dist/custom/drawer/index.d.ts +1 -0
  122. package/dist/custom/drawer/layout/index.d.ts +2 -0
  123. package/dist/custom/drawer/layout/layout.plugin.d.ts +17 -0
  124. package/dist/custom/drawer/layout/layout.plugin.js +22 -0
  125. package/dist/custom/drawer/layout/types.d.ts +3 -0
  126. package/dist/custom/element/element.plugin.d.ts +35 -0
  127. package/dist/custom/element/element.plugin.js +58 -0
  128. package/dist/custom/element/index.d.ts +2 -0
  129. package/dist/custom/element/types.d.ts +18 -0
  130. package/dist/custom/field/ids/ids.plugin.d.ts +64 -0
  131. package/dist/custom/field/ids/ids.plugin.js +126 -0
  132. package/dist/custom/field/ids/index.d.ts +2 -0
  133. package/dist/custom/field/ids/types.d.ts +28 -0
  134. package/dist/custom/field/index.d.ts +1 -0
  135. package/dist/custom/frame/anchor/anchor.plugin.d.ts +483 -0
  136. package/dist/custom/frame/anchor/anchor.plugin.js +820 -0
  137. package/dist/custom/frame/anchor/index.d.ts +2 -0
  138. package/dist/custom/frame/anchor/types.d.ts +83 -0
  139. package/dist/custom/frame/index.d.ts +2 -0
  140. package/dist/custom/frame/layout/index.d.ts +2 -0
  141. package/dist/custom/frame/layout/layout.plugin.d.ts +24 -0
  142. package/dist/custom/frame/layout/layout.plugin.js +65 -0
  143. package/dist/custom/frame/layout/types.d.ts +5 -0
  144. package/dist/custom/icon/index.d.ts +2 -0
  145. package/dist/custom/icon/layout.plugin.d.ts +21 -0
  146. package/dist/custom/icon/layout.plugin.js +51 -0
  147. package/dist/custom/icon/types.d.ts +5 -0
  148. package/dist/custom/id/id.plugin.d.ts +32 -0
  149. package/dist/custom/id/id.plugin.js +42 -0
  150. package/dist/custom/id/index.d.ts +2 -0
  151. package/dist/custom/id/types.d.ts +6 -0
  152. package/dist/custom/index.d.ts +42 -0
  153. package/dist/custom/input/field.d.ts +16 -0
  154. package/dist/custom/input/field.js +27 -0
  155. package/dist/custom/input/index.d.ts +3 -0
  156. package/dist/custom/input/input.plugin.d.ts +12 -0
  157. package/dist/custom/input/input.plugin.js +46 -0
  158. package/dist/custom/input/types.d.ts +2 -0
  159. package/dist/custom/input-bool/index.d.ts +2 -0
  160. package/dist/custom/input-bool/input-bool.plugin.d.ts +30 -0
  161. package/dist/custom/input-bool/input-bool.plugin.js +77 -0
  162. package/dist/custom/input-bool/types.d.ts +5 -0
  163. package/dist/custom/input-control/index.d.ts +2 -0
  164. package/dist/custom/input-control/input-control.plugin.d.ts +12 -0
  165. package/dist/custom/input-control/input-control.plugin.js +40 -0
  166. package/dist/custom/input-control/types.d.ts +2 -0
  167. package/dist/custom/item-group/ids/ids.plugin.d.ts +19 -0
  168. package/dist/custom/item-group/ids/ids.plugin.js +32 -0
  169. package/dist/custom/item-group/ids/index.d.ts +1 -0
  170. package/dist/custom/item-group/index.d.ts +1 -0
  171. package/dist/custom/label/index.d.ts +1 -0
  172. package/dist/custom/label/nested-warn/index.d.ts +1 -0
  173. package/dist/custom/label/nested-warn/nested-warn.plugin.d.ts +21 -0
  174. package/dist/custom/label/nested-warn/nested-warn.plugin.js +41 -0
  175. package/dist/custom/list/height/height.plugin.d.ts +129 -0
  176. package/dist/custom/list/height/height.plugin.js +272 -0
  177. package/dist/custom/list/height/index.d.ts +2 -0
  178. package/dist/custom/list/height/types.d.ts +10 -0
  179. package/dist/custom/list/index.d.ts +7 -0
  180. package/dist/custom/list/item/index.d.ts +2 -0
  181. package/dist/custom/list/item/item.plugin.d.ts +25 -0
  182. package/dist/custom/list/item/item.plugin.js +46 -0
  183. package/dist/custom/list/item/types.d.ts +5 -0
  184. package/dist/custom/list/keyboard/index.d.ts +2 -0
  185. package/dist/custom/list/keyboard/keyboard.plugin.d.ts +133 -0
  186. package/dist/custom/list/keyboard/keyboard.plugin.js +199 -0
  187. package/dist/custom/list/keyboard/types.d.ts +3 -0
  188. package/dist/custom/list/navigation/index.d.ts +2 -0
  189. package/dist/custom/list/navigation/navigation.plugin.d.ts +262 -0
  190. package/dist/custom/list/navigation/navigation.plugin.js +402 -0
  191. package/dist/custom/list/navigation/types.d.ts +25 -0
  192. package/dist/custom/list/newly-selected.d.ts +17 -0
  193. package/dist/custom/list/newly-selected.js +22 -0
  194. package/dist/custom/list/option-ids/index.d.ts +1 -0
  195. package/dist/custom/list/option-ids/option-ids.plugin.d.ts +29 -0
  196. package/dist/custom/list/option-ids/option-ids.plugin.js +43 -0
  197. package/dist/custom/list/row.d.ts +50 -0
  198. package/dist/custom/list/row.js +99 -0
  199. package/dist/custom/list/scroll/index.d.ts +2 -0
  200. package/dist/custom/list/scroll/scroll.plugin.d.ts +132 -0
  201. package/dist/custom/list/scroll/scroll.plugin.js +286 -0
  202. package/dist/custom/list/scroll/types.d.ts +21 -0
  203. package/dist/custom/list/typeahead.d.ts +53 -0
  204. package/dist/custom/list/typeahead.js +58 -0
  205. package/dist/custom/menu/focus/focus.plugin.d.ts +61 -0
  206. package/dist/custom/menu/focus/focus.plugin.js +105 -0
  207. package/dist/custom/menu/focus/index.d.ts +2 -0
  208. package/dist/custom/menu/focus/types.d.ts +2 -0
  209. package/dist/custom/menu/hover/hover.plugin.d.ts +99 -0
  210. package/dist/custom/menu/hover/hover.plugin.js +235 -0
  211. package/dist/custom/menu/hover/index.d.ts +2 -0
  212. package/dist/custom/menu/hover/types.d.ts +2 -0
  213. package/dist/custom/menu/ids/ids.plugin.d.ts +29 -0
  214. package/dist/custom/menu/ids/ids.plugin.js +46 -0
  215. package/dist/custom/menu/ids/index.d.ts +1 -0
  216. package/dist/custom/menu/index.d.ts +11 -0
  217. package/dist/custom/menu/keyboard/index.d.ts +2 -0
  218. package/dist/custom/menu/keyboard/keyboard.plugin.d.ts +41 -0
  219. package/dist/custom/menu/keyboard/keyboard.plugin.js +68 -0
  220. package/dist/custom/menu/keyboard/types.d.ts +2 -0
  221. package/dist/custom/menu/navigation/index.d.ts +2 -0
  222. package/dist/custom/menu/navigation/navigation.plugin.d.ts +116 -0
  223. package/dist/custom/menu/navigation/navigation.plugin.js +222 -0
  224. package/dist/custom/menu/navigation/types.d.ts +2 -0
  225. package/dist/custom/menu/nested-layer.d.ts +13 -0
  226. package/dist/custom/menu/nested-layer.js +20 -0
  227. package/dist/custom/menu/pointer/index.d.ts +2 -0
  228. package/dist/custom/menu/pointer/pointer.plugin.d.ts +45 -0
  229. package/dist/custom/menu/pointer/pointer.plugin.js +95 -0
  230. package/dist/custom/menu/pointer/strategies/context.strategy.d.ts +70 -0
  231. package/dist/custom/menu/pointer/strategies/context.strategy.js +170 -0
  232. package/dist/custom/menu/pointer/strategies/index.d.ts +3 -0
  233. package/dist/custom/menu/pointer/strategies/press.strategy.d.ts +23 -0
  234. package/dist/custom/menu/pointer/strategies/press.strategy.js +33 -0
  235. package/dist/custom/menu/pointer/strategies/types.d.ts +49 -0
  236. package/dist/custom/menu/pointer/types.d.ts +2 -0
  237. package/dist/custom/menu/popover-item-focus/focus.plugin.d.ts +54 -0
  238. package/dist/custom/menu/popover-item-focus/focus.plugin.js +70 -0
  239. package/dist/custom/menu/popover-item-focus/index.d.ts +2 -0
  240. package/dist/custom/menu/popover-item-focus/types.d.ts +10 -0
  241. package/dist/custom/menu/popover-item-keyboard/index.d.ts +2 -0
  242. package/dist/custom/menu/popover-item-keyboard/keyboard.plugin.d.ts +43 -0
  243. package/dist/custom/menu/popover-item-keyboard/keyboard.plugin.js +79 -0
  244. package/dist/custom/menu/popover-item-keyboard/types.d.ts +2 -0
  245. package/dist/custom/menu/popup-ids/ids.plugin.d.ts +27 -0
  246. package/dist/custom/menu/popup-ids/ids.plugin.js +47 -0
  247. package/dist/custom/menu/popup-ids/index.d.ts +1 -0
  248. package/dist/custom/menu/submenu-focus/focus.plugin.d.ts +53 -0
  249. package/dist/custom/menu/submenu-focus/focus.plugin.js +84 -0
  250. package/dist/custom/menu/submenu-focus/index.d.ts +2 -0
  251. package/dist/custom/menu/submenu-focus/types.d.ts +10 -0
  252. package/dist/custom/menu/submenu-keyboard/index.d.ts +2 -0
  253. package/dist/custom/menu/submenu-keyboard/keyboard.plugin.d.ts +43 -0
  254. package/dist/custom/menu/submenu-keyboard/keyboard.plugin.js +74 -0
  255. package/dist/custom/menu/submenu-keyboard/types.d.ts +2 -0
  256. package/dist/custom/number-input/index.d.ts +5 -0
  257. package/dist/custom/number-input/keyboard/index.d.ts +2 -0
  258. package/dist/custom/number-input/keyboard/keyboard.plugin.d.ts +36 -0
  259. package/dist/custom/number-input/keyboard/keyboard.plugin.js +80 -0
  260. package/dist/custom/number-input/keyboard/types.d.ts +3 -0
  261. package/dist/custom/number-input/names/index.d.ts +1 -0
  262. package/dist/custom/number-input/names/names.plugin.d.ts +17 -0
  263. package/dist/custom/number-input/names/names.plugin.js +24 -0
  264. package/dist/custom/number-input/parts.d.ts +21 -0
  265. package/dist/custom/number-input/parts.js +39 -0
  266. package/dist/custom/number-input/stepper/index.d.ts +2 -0
  267. package/dist/custom/number-input/stepper/stepper.plugin.d.ts +59 -0
  268. package/dist/custom/number-input/stepper/stepper.plugin.js +166 -0
  269. package/dist/custom/number-input/stepper/types.d.ts +19 -0
  270. package/dist/custom/number-input/touch/index.d.ts +2 -0
  271. package/dist/custom/number-input/touch/touch.plugin.d.ts +25 -0
  272. package/dist/custom/number-input/touch/touch.plugin.js +53 -0
  273. package/dist/custom/number-input/touch/types.d.ts +3 -0
  274. package/dist/custom/number-input/types.d.ts +8 -0
  275. package/dist/custom/number-input/typing/index.d.ts +2 -0
  276. package/dist/custom/number-input/typing/types.d.ts +6 -0
  277. package/dist/custom/number-input/typing/typing.plugin.d.ts +47 -0
  278. package/dist/custom/number-input/typing/typing.plugin.js +149 -0
  279. package/dist/custom/overlay/focus/focus.plugin.d.ts +150 -0
  280. package/dist/custom/overlay/focus/focus.plugin.js +242 -0
  281. package/dist/custom/overlay/focus/index.d.ts +1 -0
  282. package/dist/custom/overlay/hide-outside/hide-outside.plugin.d.ts +84 -0
  283. package/dist/custom/overlay/hide-outside/hide-outside.plugin.js +187 -0
  284. package/dist/custom/overlay/hide-outside/index.d.ts +2 -0
  285. package/dist/custom/overlay/hide-outside/marks.d.ts +19 -0
  286. package/dist/custom/overlay/hide-outside/marks.js +43 -0
  287. package/dist/custom/overlay/hide-outside/types.d.ts +17 -0
  288. package/dist/custom/overlay/index.d.ts +9 -0
  289. package/dist/custom/overlay/modal-focus/index.d.ts +1 -0
  290. package/dist/custom/overlay/modal-focus/modal-focus.plugin.d.ts +72 -0
  291. package/dist/custom/overlay/modal-focus/modal-focus.plugin.js +109 -0
  292. package/dist/custom/overlay/modal-ids/index.d.ts +1 -0
  293. package/dist/custom/overlay/modal-ids/modal-ids.plugin.d.ts +21 -0
  294. package/dist/custom/overlay/modal-ids/modal-ids.plugin.js +30 -0
  295. package/dist/custom/overlay/modal-layout/index.d.ts +2 -0
  296. package/dist/custom/overlay/modal-layout/modal-layout.plugin.d.ts +66 -0
  297. package/dist/custom/overlay/modal-layout/modal-layout.plugin.js +119 -0
  298. package/dist/custom/overlay/modal-layout/types.d.ts +13 -0
  299. package/dist/custom/overlay/modal-names/index.d.ts +1 -0
  300. package/dist/custom/overlay/modal-names/modal-names.plugin.d.ts +14 -0
  301. package/dist/custom/overlay/modal-names/modal-names.plugin.js +17 -0
  302. package/dist/custom/overlay/open-state.d.ts +12 -0
  303. package/dist/custom/overlay/open-state.js +42 -0
  304. package/dist/custom/overlay/scroll-lock/index.d.ts +2 -0
  305. package/dist/custom/overlay/scroll-lock/lock.d.ts +17 -0
  306. package/dist/custom/overlay/scroll-lock/lock.js +83 -0
  307. package/dist/custom/overlay/scroll-lock/scroll-lock.plugin.d.ts +78 -0
  308. package/dist/custom/overlay/scroll-lock/scroll-lock.plugin.js +134 -0
  309. package/dist/custom/overlay/scroll-lock/types.d.ts +17 -0
  310. package/dist/custom/overlay/swipe/index.d.ts +2 -0
  311. package/dist/custom/overlay/swipe/swipe.plugin.d.ts +150 -0
  312. package/dist/custom/overlay/swipe/swipe.plugin.js +432 -0
  313. package/dist/custom/overlay/swipe/types.d.ts +62 -0
  314. package/dist/custom/overlay/types.d.ts +40 -0
  315. package/dist/custom/pagination/current.d.ts +24 -0
  316. package/dist/custom/pagination/current.js +34 -0
  317. package/dist/custom/pagination/focus/focus.plugin.d.ts +57 -0
  318. package/dist/custom/pagination/focus/focus.plugin.js +106 -0
  319. package/dist/custom/pagination/focus/index.d.ts +2 -0
  320. package/dist/custom/pagination/focus/types.d.ts +8 -0
  321. package/dist/custom/pagination/index.d.ts +3 -0
  322. package/dist/custom/pagination/names/index.d.ts +1 -0
  323. package/dist/custom/pagination/names/names.plugin.d.ts +15 -0
  324. package/dist/custom/pagination/names/names.plugin.js +19 -0
  325. package/dist/custom/popover/focus/focus.plugin.d.ts +69 -0
  326. package/dist/custom/popover/focus/focus.plugin.js +107 -0
  327. package/dist/custom/popover/focus/index.d.ts +2 -0
  328. package/dist/custom/popover/focus/types.d.ts +2 -0
  329. package/dist/custom/popover/ids/ids.plugin.d.ts +18 -0
  330. package/dist/custom/popover/ids/ids.plugin.js +27 -0
  331. package/dist/custom/popover/ids/index.d.ts +1 -0
  332. package/dist/custom/popover/index.d.ts +4 -0
  333. package/dist/custom/popover/names/index.d.ts +1 -0
  334. package/dist/custom/popover/names/names.plugin.d.ts +7 -0
  335. package/dist/custom/popover/names/names.plugin.js +10 -0
  336. package/dist/custom/popover/pointer/index.d.ts +2 -0
  337. package/dist/custom/popover/pointer/pointer.plugin.d.ts +35 -0
  338. package/dist/custom/popover/pointer/pointer.plugin.js +65 -0
  339. package/dist/custom/popover/pointer/types.d.ts +2 -0
  340. package/dist/custom/radio-group/checked/checked.plugin.d.ts +45 -0
  341. package/dist/custom/radio-group/checked/checked.plugin.js +81 -0
  342. package/dist/custom/radio-group/checked/index.d.ts +1 -0
  343. package/dist/custom/radio-group/index.d.ts +3 -0
  344. package/dist/custom/radio-group/name/index.d.ts +1 -0
  345. package/dist/custom/radio-group/name/name.plugin.d.ts +21 -0
  346. package/dist/custom/radio-group/name/name.plugin.js +39 -0
  347. package/dist/custom/radio-group/stop.d.ts +17 -0
  348. package/dist/custom/radio-group/stop.js +30 -0
  349. package/dist/custom/rating/hover/hover.plugin.d.ts +36 -0
  350. package/dist/custom/rating/hover/hover.plugin.js +71 -0
  351. package/dist/custom/rating/hover/index.d.ts +2 -0
  352. package/dist/custom/rating/hover/types.d.ts +7 -0
  353. package/dist/custom/rating/index.d.ts +3 -0
  354. package/dist/custom/rating/names/index.d.ts +1 -0
  355. package/dist/custom/rating/names/names.plugin.d.ts +25 -0
  356. package/dist/custom/rating/names/names.plugin.js +45 -0
  357. package/dist/custom/rating/validity/index.d.ts +2 -0
  358. package/dist/custom/rating/validity/types.d.ts +7 -0
  359. package/dist/custom/rating/validity/validity.plugin.d.ts +48 -0
  360. package/dist/custom/rating/validity/validity.plugin.js +91 -0
  361. package/dist/custom/ready/index.d.ts +1 -0
  362. package/dist/custom/ready/ready.plugin.d.ts +14 -0
  363. package/dist/custom/ready/ready.plugin.js +28 -0
  364. package/dist/custom/scroller/index.d.ts +2 -0
  365. package/dist/custom/scroller/names/index.d.ts +1 -0
  366. package/dist/custom/scroller/names/names.plugin.d.ts +11 -0
  367. package/dist/custom/scroller/names/names.plugin.js +15 -0
  368. package/dist/custom/scroller/viewport/edges.d.ts +34 -0
  369. package/dist/custom/scroller/viewport/edges.js +29 -0
  370. package/dist/custom/scroller/viewport/focus.d.ts +39 -0
  371. package/dist/custom/scroller/viewport/focus.js +61 -0
  372. package/dist/custom/scroller/viewport/index.d.ts +6 -0
  373. package/dist/custom/scroller/viewport/stop.d.ts +24 -0
  374. package/dist/custom/scroller/viewport/stop.js +34 -0
  375. package/dist/custom/scroller/viewport/types.d.ts +31 -0
  376. package/dist/custom/scroller/viewport/viewport.plugin.d.ts +163 -0
  377. package/dist/custom/scroller/viewport/viewport.plugin.js +352 -0
  378. package/dist/custom/select/backspace/backspace.plugin.d.ts +50 -0
  379. package/dist/custom/select/backspace/backspace.plugin.js +125 -0
  380. package/dist/custom/select/backspace/index.d.ts +2 -0
  381. package/dist/custom/select/backspace/types.d.ts +2 -0
  382. package/dist/custom/select/editable/editable.plugin.d.ts +193 -0
  383. package/dist/custom/select/editable/editable.plugin.js +347 -0
  384. package/dist/custom/select/editable/index.d.ts +2 -0
  385. package/dist/custom/select/editable/types.d.ts +6 -0
  386. package/dist/custom/select/ids/ids.plugin.d.ts +22 -0
  387. package/dist/custom/select/ids/ids.plugin.js +31 -0
  388. package/dist/custom/select/ids/index.d.ts +1 -0
  389. package/dist/custom/select/index.d.ts +5 -0
  390. package/dist/custom/select/keyboard/index.d.ts +2 -0
  391. package/dist/custom/select/keyboard/keyboard.plugin.d.ts +125 -0
  392. package/dist/custom/select/keyboard/keyboard.plugin.js +205 -0
  393. package/dist/custom/select/keyboard/strategies/base.strategy.d.ts +37 -0
  394. package/dist/custom/select/keyboard/strategies/base.strategy.js +81 -0
  395. package/dist/custom/select/keyboard/strategies/editable.strategy.d.ts +16 -0
  396. package/dist/custom/select/keyboard/strategies/editable.strategy.js +20 -0
  397. package/dist/custom/select/keyboard/strategies/index.d.ts +4 -0
  398. package/dist/custom/select/keyboard/strategies/select-only.strategy.d.ts +13 -0
  399. package/dist/custom/select/keyboard/strategies/select-only.strategy.js +59 -0
  400. package/dist/custom/select/keyboard/strategies/types.d.ts +29 -0
  401. package/dist/custom/select/keyboard/types.d.ts +18 -0
  402. package/dist/custom/select/pointer/index.d.ts +2 -0
  403. package/dist/custom/select/pointer/pointer.plugin.d.ts +59 -0
  404. package/dist/custom/select/pointer/pointer.plugin.js +104 -0
  405. package/dist/custom/select/pointer/types.d.ts +2 -0
  406. package/dist/custom/skeleton/index.d.ts +2 -0
  407. package/dist/custom/skeleton/layout.plugin.d.ts +18 -0
  408. package/dist/custom/skeleton/layout.plugin.js +47 -0
  409. package/dist/custom/skeleton/types.d.ts +5 -0
  410. package/dist/custom/slide/direction.d.ts +30 -0
  411. package/dist/custom/slide/direction.js +75 -0
  412. package/dist/custom/slide/index.d.ts +4 -0
  413. package/dist/custom/slide/keyboard/index.d.ts +2 -0
  414. package/dist/custom/slide/keyboard/keyboard.plugin.d.ts +46 -0
  415. package/dist/custom/slide/keyboard/keyboard.plugin.js +106 -0
  416. package/dist/custom/slide/keyboard/types.d.ts +6 -0
  417. package/dist/custom/slide/parts.d.ts +7 -0
  418. package/dist/custom/slide/parts.js +26 -0
  419. package/dist/custom/slide/pointer/index.d.ts +2 -0
  420. package/dist/custom/slide/pointer/pointer.plugin.d.ts +100 -0
  421. package/dist/custom/slide/pointer/pointer.plugin.js +268 -0
  422. package/dist/custom/slide/pointer/strategies/base.strategy.d.ts +16 -0
  423. package/dist/custom/slide/pointer/strategies/base.strategy.js +23 -0
  424. package/dist/custom/slide/pointer/strategies/hold.strategy.d.ts +28 -0
  425. package/dist/custom/slide/pointer/strategies/hold.strategy.js +48 -0
  426. package/dist/custom/slide/pointer/strategies/index.d.ts +7 -0
  427. package/dist/custom/slide/pointer/strategies/magnet.strategy.d.ts +11 -0
  428. package/dist/custom/slide/pointer/strategies/magnet.strategy.js +17 -0
  429. package/dist/custom/slide/pointer/strategies/none.strategy.d.ts +7 -0
  430. package/dist/custom/slide/pointer/strategies/none.strategy.js +9 -0
  431. package/dist/custom/slide/pointer/strategies/plateau.strategy.d.ts +24 -0
  432. package/dist/custom/slide/pointer/strategies/plateau.strategy.js +81 -0
  433. package/dist/custom/slide/pointer/strategies/points.d.ts +16 -0
  434. package/dist/custom/slide/pointer/strategies/points.js +32 -0
  435. package/dist/custom/slide/pointer/strategies/settle.strategy.d.ts +11 -0
  436. package/dist/custom/slide/pointer/strategies/settle.strategy.js +17 -0
  437. package/dist/custom/slide/pointer/strategies/types.d.ts +57 -0
  438. package/dist/custom/slide/pointer/types.d.ts +46 -0
  439. package/dist/custom/slide/types.d.ts +14 -0
  440. package/dist/custom/table/column-ids/column-ids.plugin.d.ts +26 -0
  441. package/dist/custom/table/column-ids/column-ids.plugin.js +36 -0
  442. package/dist/custom/table/column-ids/index.d.ts +1 -0
  443. package/dist/custom/table/column-names/column-names.plugin.d.ts +18 -0
  444. package/dist/custom/table/column-names/column-names.plugin.js +24 -0
  445. package/dist/custom/table/column-names/index.d.ts +1 -0
  446. package/dist/custom/table/column-reorder/column-reorder.plugin.d.ts +169 -0
  447. package/dist/custom/table/column-reorder/column-reorder.plugin.js +465 -0
  448. package/dist/custom/table/column-reorder/index.d.ts +2 -0
  449. package/dist/custom/table/column-reorder/types.d.ts +81 -0
  450. package/dist/custom/table/column-resize/column-resize.plugin.d.ts +96 -0
  451. package/dist/custom/table/column-resize/column-resize.plugin.js +271 -0
  452. package/dist/custom/table/column-resize/index.d.ts +2 -0
  453. package/dist/custom/table/column-resize/types.d.ts +38 -0
  454. package/dist/custom/table/grid/grid.plugin.d.ts +119 -0
  455. package/dist/custom/table/grid/grid.plugin.js +356 -0
  456. package/dist/custom/table/grid/index.d.ts +2 -0
  457. package/dist/custom/table/grid/types.d.ts +22 -0
  458. package/dist/custom/table/index.d.ts +8 -0
  459. package/dist/custom/table/layout/index.d.ts +2 -0
  460. package/dist/custom/table/layout/layout.plugin.d.ts +52 -0
  461. package/dist/custom/table/layout/layout.plugin.js +122 -0
  462. package/dist/custom/table/layout/types.d.ts +7 -0
  463. package/dist/custom/table/names/index.d.ts +2 -0
  464. package/dist/custom/table/names/names.plugin.d.ts +18 -0
  465. package/dist/custom/table/names/names.plugin.js +31 -0
  466. package/dist/custom/table/names/types.d.ts +6 -0
  467. package/dist/custom/table/row-ids/index.d.ts +1 -0
  468. package/dist/custom/table/row-ids/row-ids.plugin.d.ts +21 -0
  469. package/dist/custom/table/row-ids/row-ids.plugin.js +28 -0
  470. package/dist/custom/tabs/active-tab/active-tab.plugin.d.ts +42 -0
  471. package/dist/custom/tabs/active-tab/active-tab.plugin.js +103 -0
  472. package/dist/custom/tabs/active-tab/index.d.ts +2 -0
  473. package/dist/custom/tabs/active-tab/types.d.ts +17 -0
  474. package/dist/custom/tabs/content-warn/content-warn.plugin.d.ts +21 -0
  475. package/dist/custom/tabs/content-warn/content-warn.plugin.js +41 -0
  476. package/dist/custom/tabs/content-warn/index.d.ts +1 -0
  477. package/dist/custom/tabs/index.d.ts +7 -0
  478. package/dist/custom/tabs/item-ids/index.d.ts +1 -0
  479. package/dist/custom/tabs/item-ids/item-ids.plugin.d.ts +60 -0
  480. package/dist/custom/tabs/item-ids/item-ids.plugin.js +94 -0
  481. package/dist/custom/tabs/item-names/index.d.ts +1 -0
  482. package/dist/custom/tabs/item-names/item-names.plugin.d.ts +17 -0
  483. package/dist/custom/tabs/item-names/item-names.plugin.js +23 -0
  484. package/dist/custom/tabs/keyboard/index.d.ts +2 -0
  485. package/dist/custom/tabs/keyboard/keyboard.plugin.d.ts +105 -0
  486. package/dist/custom/tabs/keyboard/keyboard.plugin.js +206 -0
  487. package/dist/custom/tabs/keyboard/types.d.ts +6 -0
  488. package/dist/custom/tabs/layout/index.d.ts +2 -0
  489. package/dist/custom/tabs/layout/layout.plugin.d.ts +37 -0
  490. package/dist/custom/tabs/layout/layout.plugin.js +81 -0
  491. package/dist/custom/tabs/layout/types.d.ts +4 -0
  492. package/dist/custom/tabs/parts.d.ts +15 -0
  493. package/dist/custom/tabs/parts.js +21 -0
  494. package/dist/custom/tabs/tab.d.ts +29 -0
  495. package/dist/custom/tabs/tab.js +44 -0
  496. package/dist/custom/tags/index.d.ts +4 -0
  497. package/dist/custom/tags/item-names/index.d.ts +1 -0
  498. package/dist/custom/tags/item-names/item-names.plugin.d.ts +12 -0
  499. package/dist/custom/tags/item-names/item-names.plugin.js +18 -0
  500. package/dist/custom/tags/keyboard/index.d.ts +2 -0
  501. package/dist/custom/tags/keyboard/keyboard.plugin.d.ts +133 -0
  502. package/dist/custom/tags/keyboard/keyboard.plugin.js +253 -0
  503. package/dist/custom/tags/keyboard/types.d.ts +6 -0
  504. package/dist/custom/tags/scroll/index.d.ts +2 -0
  505. package/dist/custom/tags/scroll/scroll.plugin.d.ts +68 -0
  506. package/dist/custom/tags/scroll/scroll.plugin.js +120 -0
  507. package/dist/custom/tags/scroll/types.d.ts +6 -0
  508. package/dist/custom/tags/tag.d.ts +41 -0
  509. package/dist/custom/tags/tag.js +66 -0
  510. package/dist/custom/textarea/autoresize/autoresize.plugin.d.ts +70 -0
  511. package/dist/custom/textarea/autoresize/autoresize.plugin.js +176 -0
  512. package/dist/custom/textarea/autoresize/index.d.ts +2 -0
  513. package/dist/custom/textarea/autoresize/types.d.ts +6 -0
  514. package/dist/custom/textarea/ids/ids.plugin.d.ts +26 -0
  515. package/dist/custom/textarea/ids/ids.plugin.js +44 -0
  516. package/dist/custom/textarea/ids/index.d.ts +1 -0
  517. package/dist/custom/textarea/index.d.ts +3 -0
  518. package/dist/custom/textarea/names/index.d.ts +2 -0
  519. package/dist/custom/textarea/names/names.plugin.d.ts +33 -0
  520. package/dist/custom/textarea/names/names.plugin.js +65 -0
  521. package/dist/custom/textarea/names/types.d.ts +8 -0
  522. package/dist/custom/toasts/cascade/cascade.plugin.d.ts +81 -0
  523. package/dist/custom/toasts/cascade/cascade.plugin.js +214 -0
  524. package/dist/custom/toasts/cascade/index.d.ts +2 -0
  525. package/dist/custom/toasts/cascade/types.d.ts +15 -0
  526. package/dist/custom/toasts/index.d.ts +7 -0
  527. package/dist/custom/toasts/item-names/index.d.ts +1 -0
  528. package/dist/custom/toasts/item-names/item-names.plugin.d.ts +12 -0
  529. package/dist/custom/toasts/item-names/item-names.plugin.js +18 -0
  530. package/dist/custom/toasts/keyboard/index.d.ts +2 -0
  531. package/dist/custom/toasts/keyboard/keyboard.plugin.d.ts +57 -0
  532. package/dist/custom/toasts/keyboard/keyboard.plugin.js +136 -0
  533. package/dist/custom/toasts/keyboard/types.d.ts +6 -0
  534. package/dist/custom/toasts/layout/index.d.ts +2 -0
  535. package/dist/custom/toasts/layout/layout.plugin.d.ts +23 -0
  536. package/dist/custom/toasts/layout/layout.plugin.js +39 -0
  537. package/dist/custom/toasts/layout/types.d.ts +5 -0
  538. package/dist/custom/toasts/names/index.d.ts +1 -0
  539. package/dist/custom/toasts/names/names.plugin.d.ts +10 -0
  540. package/dist/custom/toasts/names/names.plugin.js +13 -0
  541. package/dist/custom/toasts/removal/index.d.ts +2 -0
  542. package/dist/custom/toasts/removal/removal.plugin.d.ts +35 -0
  543. package/dist/custom/toasts/removal/removal.plugin.js +69 -0
  544. package/dist/custom/toasts/removal/types.d.ts +6 -0
  545. package/dist/custom/toasts/timer/index.d.ts +2 -0
  546. package/dist/custom/toasts/timer/timer.plugin.d.ts +71 -0
  547. package/dist/custom/toasts/timer/timer.plugin.js +213 -0
  548. package/dist/custom/toasts/timer/types.d.ts +15 -0
  549. package/dist/custom/tooltip/ids/ids.plugin.d.ts +22 -0
  550. package/dist/custom/tooltip/ids/ids.plugin.js +42 -0
  551. package/dist/custom/tooltip/ids/index.d.ts +1 -0
  552. package/dist/custom/tooltip/index.d.ts +2 -0
  553. package/dist/custom/tooltip/trigger/document-state.d.ts +42 -0
  554. package/dist/custom/tooltip/trigger/document-state.js +50 -0
  555. package/dist/custom/tooltip/trigger/index.d.ts +2 -0
  556. package/dist/custom/tooltip/trigger/trigger.plugin.d.ts +133 -0
  557. package/dist/custom/tooltip/trigger/trigger.plugin.js +271 -0
  558. package/dist/custom/tooltip/trigger/types.d.ts +20 -0
  559. package/dist/custom/virtual/index.d.ts +2 -0
  560. package/dist/custom/virtual/types.d.ts +6 -0
  561. package/dist/custom/virtual/virtual.plugin.d.ts +126 -0
  562. package/dist/custom/virtual/virtual.plugin.js +311 -0
  563. package/dist/index.d.ts +7 -0
  564. package/dist/index.js +149 -0
  565. package/dist/locale/index.d.ts +6 -0
  566. package/dist/locale/locale.d.ts +38 -0
  567. package/dist/locale/locale.js +93 -0
  568. package/dist/locale/locale.plugin.d.ts +26 -0
  569. package/dist/locale/locale.plugin.js +35 -0
  570. package/dist/locale/locales/ar.d.ts +5 -0
  571. package/dist/locale/locales/ar.js +59 -0
  572. package/dist/locale/locales/en.d.ts +7 -0
  573. package/dist/locale/locales/en.js +61 -0
  574. package/dist/locale/locales/es.d.ts +2 -0
  575. package/dist/locale/locales/es.js +56 -0
  576. package/dist/locale/locales/fr.d.ts +2 -0
  577. package/dist/locale/locales/fr.js +56 -0
  578. package/dist/locale/locales/index.d.ts +6 -0
  579. package/dist/locale/locales/ru.d.ts +2 -0
  580. package/dist/locale/locales/ru.js +56 -0
  581. package/dist/locale/locales/zh.d.ts +2 -0
  582. package/dist/locale/locales/zh.js +56 -0
  583. package/dist/locale/names.plugin.d.ts +32 -0
  584. package/dist/locale/names.plugin.js +39 -0
  585. package/dist/locale/source.class.d.ts +22 -0
  586. package/dist/locale/source.class.js +32 -0
  587. package/dist/locale/types.d.ts +197 -0
  588. package/dist/motion/index.d.ts +2 -0
  589. package/dist/motion/motion.d.ts +28 -0
  590. package/dist/motion/motion.js +67 -0
  591. package/dist/motion/types.d.ts +14 -0
  592. package/dist/utils/afterTransitions.d.ts +49 -0
  593. package/dist/utils/afterTransitions.js +79 -0
  594. package/dist/utils/focusFirst.d.ts +13 -0
  595. package/dist/utils/focusFirst.js +24 -0
  596. package/dist/utils/graceArea.d.ts +21 -0
  597. package/dist/utils/graceArea.js +66 -0
  598. package/dist/utils/index.d.ts +18 -0
  599. package/dist/utils/isAboveLayer.d.ts +14 -0
  600. package/dist/utils/isAboveLayer.js +24 -0
  601. package/dist/utils/isAppleTouch.d.ts +10 -0
  602. package/dist/utils/isAppleTouch.js +17 -0
  603. package/dist/utils/isFocusableElement.d.ts +8 -0
  604. package/dist/utils/isFocusableElement.js +13 -0
  605. package/dist/utils/isMeasurableElement.d.ts +11 -0
  606. package/dist/utils/isMeasurableElement.js +16 -0
  607. package/dist/utils/isPrintableKey.d.ts +7 -0
  608. package/dist/utils/isPrintableKey.js +12 -0
  609. package/dist/utils/layerOf.d.ts +12 -0
  610. package/dist/utils/layerOf.js +21 -0
  611. package/dist/utils/nearestShift.d.ts +19 -0
  612. package/dist/utils/nearestShift.js +58 -0
  613. package/dist/utils/positionOrigin.d.ts +34 -0
  614. package/dist/utils/positionOrigin.js +71 -0
  615. package/dist/utils/scrollParent.d.ts +12 -0
  616. package/dist/utils/scrollParent.js +23 -0
  617. package/dist/utils/scrollWindow.d.ts +27 -0
  618. package/dist/utils/scrollWindow.js +50 -0
  619. package/dist/utils/tabStops.d.ts +44 -0
  620. package/dist/utils/tabStops.js +102 -0
  621. package/dist/utils/tabStopsAfter.d.ts +10 -0
  622. package/dist/utils/tabStopsAfter.js +16 -0
  623. package/dist/utils/tabStopsBefore.d.ts +11 -0
  624. package/dist/utils/tabStopsBefore.js +17 -0
  625. package/dist/utils/toCssValue.d.ts +8 -0
  626. package/dist/utils/toCssValue.js +17 -0
  627. package/dist/utils/trapTab.d.ts +16 -0
  628. package/dist/utils/trapTab.js +36 -0
  629. package/dist/utils/types.d.ts +64 -0
  630. package/package.json +43 -4
@@ -0,0 +1,465 @@
1
+ import { TBasePlugin } from "../../../base/base.class.js";
2
+ import { TCollectionBundlesPlugin } from "../../collection/bundles.plugin.js";
3
+ import { TElementPlugin } from "../../element/element.plugin.js";
4
+ import { isMeasurableElement } from "../../../utils/isMeasurableElement.js";
5
+ import { isFocusableElement } from "../../../utils/isFocusableElement.js";
6
+ import { afterTransitions } from "../../../utils/afterTransitions.js";
7
+ import { arrowStep, slideDirection } from "../../slide/direction.js";
8
+ //#region src/custom/table/column-reorder/column-reorder.plugin.ts
9
+ /**
10
+ * Переменная сдвига взятого заголовка — контракт с темой. Значение — px по
11
+ * оси окна от его места: пока колонку несут — от места нажатия, и заголовок
12
+ * идёт за указателем; когда отпустили — до места, куда колонка встанет, и
13
+ * тема довозит его туда переходом. Колонка под ним стоит на месте. Без жеста
14
+ * переменной нет.
15
+ */
16
+ var DRAG_VARIABLE = "--so-table-column-drag";
17
+ /**
18
+ * Переменная сдвига соседей — контракт с темой: ширина взятого заголовка, px.
19
+ * На неё уступают место колонки между взятой и местом, куда её несут
20
+ * (`data-shift`), — в шапке и, если тема ведёт тело, в теле.
21
+ *
22
+ * Лежит там, где её читают: в `head` — на шапке (`thead`), тело её не читает;
23
+ * в `column` — на корне, от него её наследуют и шапка, и тело. Переменная
24
+ * наследуется, и её запись пересчитывает стиль всем потомкам узла: на корне
25
+ * большой таблицы без окна — каждой ячейке тела. В `none` и без жеста
26
+ * переменной нет.
27
+ */
28
+ var SHIFT_VARIABLE = "--so-table-column-shift";
29
+ /**
30
+ * Сколько пройти от точки нажатия, чтобы нажатие стало жестом, px: меньше —
31
+ * это нажатие кнопки сортировки, а не перестановка. Порог тот же, что у жеста
32
+ * слоя (`TSwipePlugin`).
33
+ */
34
+ var START_DISTANCE = 6;
35
+ /**
36
+ * Ось шапки: колонки идут вдоль строки, к её концу. По ней направление письма
37
+ * сводится в сторону, куда колонка уходит дальше от начала (`slideDirection`),
38
+ * как у ручки ширины.
39
+ */
40
+ var AXIS = {
41
+ orientation: "horizontal",
42
+ inverted: false
43
+ };
44
+ /** Ребёнок узла с классом — только прямые дети: во вложенной таблице свои шапки. */
45
+ function childOf(node, className) {
46
+ return Array.from(node.children).find((child) => child.classList.contains(className)) ?? null;
47
+ }
48
+ /**
49
+ * Сдвиг взятого заголовка до места `place`: его край, дальний от исходного
50
+ * места, встаёт на тот же край заголовка, который там стоит, — там взятый
51
+ * окажется после перестановки, потому что колонки между ними уступают ему
52
+ * ровно его ширину. Направление письма считать не нужно: дальний край — тот,
53
+ * к которому заголовок едет. На своём месте — ноль.
54
+ */
55
+ function landingOffset(gesture, place) {
56
+ const own = gesture.boxes[gesture.from];
57
+ const target = gesture.boxes[place];
58
+ if (!own || !target) return 0;
59
+ return target.left > own.left ? target.left + target.width - (own.left + own.width) : target.left - own.left;
60
+ }
61
+ /**
62
+ * TTableColumnReorderPlugin — перестановка колонок пользователем: заголовок
63
+ * тащат указателем или сдвигают Ctrl+Shift+←/→.
64
+ *
65
+ * Операции над DOM — здесь, место колонки — у расширения `columns` коллекции
66
+ * строк: плагин переводит указатель и клавиши в его команды (`dragStart`,
67
+ * `dragOver`, `dragDrop`, `dragEnd`, `dragCancel`, `moveColumn`). Какую
68
+ * колонку можно взять, куда она встанет, какие метки получат колонки и что
69
+ * сообщить приложению, решает расширение. Движок плагин узнаёт от реестра
70
+ * bundles (`engine:bound`).
71
+ *
72
+ * **Заголовки** плагин находит в шапке своей таблицы — прямыми детьми, по
73
+ * классам владельца и колонки: заголовков таблица рисует по одному на
74
+ * показанную колонку и в её порядке, поэтому место заголовка в строке шапки —
75
+ * место колонки среди показанных. Колонку выбора и шапки вложенных таблиц
76
+ * поиск не видит.
77
+ *
78
+ * **Указатель** — на корне: нажатие на заголовке колонки, которую можно
79
+ * взять, становится жестом, когда указатель ушёл по строке дальше порога, —
80
+ * до этого оно остаётся нажатием, и кнопка сортировки сортирует. Нажатие,
81
+ * которое уже взяли (ручка ширины гасит своё), не наше. Жест захватывает
82
+ * указатель на корне: протяжка за таблицей и отпускание где угодно приходят
83
+ * сюда, а `click` отпускания до кнопки сортировки не доходит. Касание, в
84
+ * отличие от мыши, браузер с нажатия сам захватывает за узлом заголовка под
85
+ * пальцем, и начало жеста, перенося захват на корень, этот узел захвата
86
+ * лишает: его `lostpointercapture` всплывает до корня. Отнятым указатель
87
+ * считается, только когда захват потерял сам корень.
88
+ *
89
+ * Взяв колонку, плагин снимает коробки заголовков — относительно корня, один
90
+ * раз — и направление строки, а потом пишет ширину взятого
91
+ * (`--so-table-column-shift`) туда, где её читает тема: в `head` — шапке, в
92
+ * `column` — корню. На неё тема сдвигает соседей, которым расширение
93
+ * поставило `data-shift`. Место, куда колонка встанет, плагин считает по
94
+ * серединам остальных заголовков из снимка, а не из документа: сдвинутые
95
+ * соседи не двигают пороги, и место не прыгает, а прокрутку посреди жеста
96
+ * учитывает коробка корня. Взятый заголовок идёт за указателем — переменная
97
+ * сдвига на нём.
98
+ *
99
+ * В обработчике указателя — сначала чтения, потом записи: снимок,
100
+ * направление и место считаются, пока стиль и раскладка те, что в кадре.
101
+ * Чтение после записи заставило бы браузер пересчитать стиль синхронно,
102
+ * прямо в обработчике, а в кадре — ещё раз. Направление строки — из снимка:
103
+ * стиль на шагах жеста плагин не читает.
104
+ *
105
+ * **Шапка стоит** — таблица в `none` (`dragPreview` расширения на старте
106
+ * жеста): ширину взятого плагин не пишет никуда, а отпускание переставляет
107
+ * колонку сразу, `dragEnd` (отмена — `dragCancel`), без приземления — как
108
+ * до живого жеста. Остальное то же: снимок, место, заголовок за указателем.
109
+ *
110
+ * **Отпустили** — колонка не переставляется сразу: расширение замораживает
111
+ * место (`dragDrop`, `data-landing`), а кадром позже, когда метка уже в
112
+ * разметке, заголовок получает сдвиг до места, где встанет, и тема довозит
113
+ * его переходом. Доиграл переход заголовка — `dragEnd`: перестановка и снятие
114
+ * меток одной операцией, и переменные сняты тут же. К этому времени заголовки
115
+ * и ячейки стоят там, где их поставит новая раскладка, а переходы тема
116
+ * выключает вместе с жестом, — ничего не отъезжает. Без движения переходов
117
+ * нет, и колонка встаёт через кадр. Отнятый указатель (`pointercancel` или
118
+ * захват, потерянный корнем) и Escape — то же приземление на своё место и
119
+ * `dragCancel`. Сколько ждать, решает тема — плагин режима движения не читает.
120
+ *
121
+ * Нажатие и Ctrl+Shift+←/→, пришедшие, пока заголовок приземляется,
122
+ * доводят приземление сразу: следующее действие видит модель и шапку в одном
123
+ * порядке. Заголовок под ними плагин находит до доводки — после неё модель
124
+ * уже в новом порядке, а шапка ещё нет.
125
+ *
126
+ * **Клавиши** — Ctrl+Shift+←/→ на заголовке под фокусом (на кнопке
127
+ * сортировки и поле ручки, а в Grid — на самой ячейке): шаг к началу или к
128
+ * концу строки по вычисленному направлению письма, в RTL ← — к концу.
129
+ * Таблица перерисовывает шапку, и узел под фокусом браузер при переносе мог
130
+ * потерять — плагин возвращает ему фокус кадром позже.
131
+ */
132
+ var TTableColumnReorderPlugin = class extends TBasePlugin {
133
+ _owner = null;
134
+ _root = null;
135
+ _engine = null;
136
+ _press = null;
137
+ _landing = null;
138
+ _frame = null;
139
+ install(ctx) {
140
+ super.install(ctx);
141
+ this._owner = ctx.getInstance() ?? null;
142
+ const element = ctx.get(TElementPlugin);
143
+ element?.events.on("ready", (node) => this._attach(node));
144
+ element?.events.on("removed", () => this._detach());
145
+ ctx.get(TCollectionBundlesPlugin)?.events.on("engine:bound", (engine) => {
146
+ this._engine = engine;
147
+ });
148
+ }
149
+ destroy() {
150
+ this._detach();
151
+ this._owner = null;
152
+ this._engine = null;
153
+ super.destroy();
154
+ }
155
+ _attach(root) {
156
+ this._detach();
157
+ this._root = root;
158
+ const target = root;
159
+ target.addEventListener("pointerdown", this._onPointerDown);
160
+ target.addEventListener("pointermove", this._onPointerMove);
161
+ target.addEventListener("pointerup", this._onPointerUp);
162
+ target.addEventListener("pointercancel", this._onPointerCancel);
163
+ target.addEventListener("lostpointercapture", this._onLostCapture);
164
+ target.addEventListener("keydown", this._onKeyDown);
165
+ }
166
+ _detach() {
167
+ this._abort();
168
+ this._cancelFrame();
169
+ const target = this._root;
170
+ target?.removeEventListener("pointerdown", this._onPointerDown);
171
+ target?.removeEventListener("pointermove", this._onPointerMove);
172
+ target?.removeEventListener("pointerup", this._onPointerUp);
173
+ target?.removeEventListener("pointercancel", this._onPointerCancel);
174
+ target?.removeEventListener("lostpointercapture", this._onLostCapture);
175
+ target?.removeEventListener("keydown", this._onKeyDown);
176
+ this._root = null;
177
+ }
178
+ /** Показанные колонки — по ним разложены заголовки шапки. */
179
+ get _shown() {
180
+ return this._engine?.extensions.columns.shownColumns ?? [];
181
+ }
182
+ /** Шапка своей таблицы — прямой ребёнок корня: у вложенной таблицы своя. */
183
+ _head() {
184
+ const root = this._root;
185
+ const owner = this._owner;
186
+ return root && owner ? childOf(root, owner.classes.resolve("__head")) : null;
187
+ }
188
+ /**
189
+ * Заголовки шапки своей таблицы — по одному на показанную колонку, в её
190
+ * порядке. Шапка ещё не дорисовала смену колонок — заголовков нет: место
191
+ * в строке не совпало бы с местом колонки.
192
+ */
193
+ _headers() {
194
+ const owner = this._owner;
195
+ const shown = this._shown;
196
+ const base = shown[0]?.classes.base;
197
+ const head = this._head();
198
+ if (!owner || !base) return [];
199
+ const row = head && childOf(head, owner.classes.resolve("__head-row"));
200
+ const cells = row ? Array.from(row.children).filter((cell) => cell.classList.contains(base)) : [];
201
+ return cells.length === shown.length ? cells : [];
202
+ }
203
+ /** Заголовок, в котором лежит цель события, и его колонка. */
204
+ _hit(target) {
205
+ if (!(target instanceof Node)) return void 0;
206
+ const headers = this._headers();
207
+ const index = headers.findIndex((cell) => cell.contains(target));
208
+ return index === -1 ? void 0 : {
209
+ column: this._shown[index],
210
+ cell: headers[index]
211
+ };
212
+ }
213
+ /** Коробки заголовков по строке — относительно корня: снимок на старте жеста. */
214
+ _boxes(root) {
215
+ const origin = root.getBoundingClientRect().left;
216
+ return this._headers().map((cell) => {
217
+ const box = cell.getBoundingClientRect();
218
+ return {
219
+ left: box.left - origin,
220
+ width: box.width
221
+ };
222
+ });
223
+ }
224
+ /**
225
+ * Место среди показанных, куда встанет взятая колонка, — сколько остальных
226
+ * заголовков серединой стоят раньше указателя по строке. Середины — из
227
+ * снимка на старте жеста, от нынешнего края корня: заголовки, которые тема
228
+ * сдвинула, порогов не двигают. Свой заголовок не в счёт: он идёт за
229
+ * указателем. Направление строки — тоже из снимка: стиль здесь не читается.
230
+ */
231
+ _placeAt(x, root, gesture) {
232
+ const ltr = gesture.direction === "from-left";
233
+ const origin = root.getBoundingClientRect().left;
234
+ return gesture.boxes.filter((box, index) => {
235
+ if (index === gesture.from) return false;
236
+ const middle = origin + box.left + box.width / 2;
237
+ return ltr ? x > middle : x < middle;
238
+ }).length;
239
+ }
240
+ _onPointerDown = (event) => {
241
+ if (this._press) return;
242
+ const hit = this._hit(event.target);
243
+ this._finishLanding();
244
+ if (event.button !== 0 || event.defaultPrevented) return;
245
+ if (!hit || !hit.column.reorderable || hit.column.disabled) return;
246
+ this._press = {
247
+ pointer: event.pointerId,
248
+ origin: event.clientX,
249
+ column: hit.column,
250
+ cell: hit.cell,
251
+ gesture: null
252
+ };
253
+ };
254
+ _onPointerMove = (event) => {
255
+ const press = this._press;
256
+ const root = this._root;
257
+ const columns = this._engine?.extensions.columns;
258
+ if (!press || !root || !columns || event.pointerId !== press.pointer) return;
259
+ const offset = event.clientX - press.origin;
260
+ if (press.gesture) press.gesture.place = this._placeAt(event.clientX, root, press.gesture);
261
+ else {
262
+ if (Math.abs(offset) < START_DISTANCE) return;
263
+ press.gesture = this._takeGesture(root, press.column, event.clientX);
264
+ if (!press.gesture) {
265
+ this._press = null;
266
+ return;
267
+ }
268
+ if ("setPointerCapture" in root) root.setPointerCapture(event.pointerId);
269
+ root.ownerDocument.getSelection()?.removeAllRanges();
270
+ root.ownerDocument.addEventListener("keydown", this._onEscape, true);
271
+ }
272
+ if (isMeasurableElement(press.cell)) press.cell.style.setProperty(DRAG_VARIABLE, `${offset}px`);
273
+ columns.dragOver(press.gesture.place);
274
+ };
275
+ /**
276
+ * Колонку взяли. Сначала чтения — коробки заголовков (до сдвига взятого),
277
+ * направление строки и место под указателем, — потом записи: жест у
278
+ * расширения и ширина взятого там, где её читает тема (`_shiftHolder`).
279
+ * Шапка стоит (`still`, таблица в `none`) — ширины нет: соседям сдвигаться
280
+ * не на что. Заголовков нет или колонку не дали взять — жеста нет.
281
+ */
282
+ _takeGesture(root, column, x) {
283
+ const columns = this._engine?.extensions.columns;
284
+ const boxes = this._boxes(root);
285
+ const from = this._shown.indexOf(column);
286
+ const own = boxes[from];
287
+ if (!columns || !own) return null;
288
+ const direction = slideDirection(AXIS, root);
289
+ const place = this._placeAt(x, root, {
290
+ boxes,
291
+ from,
292
+ direction
293
+ });
294
+ if (!columns.dragStart(column)) return null;
295
+ const preview = columns.dragPreview;
296
+ const shiftHolder = this._shiftHolder(root, preview);
297
+ if (isMeasurableElement(shiftHolder)) shiftHolder.style.setProperty(SHIFT_VARIABLE, `${own.width}px`);
298
+ return {
299
+ boxes,
300
+ from,
301
+ place,
302
+ direction,
303
+ still: preview === "none",
304
+ shiftHolder
305
+ };
306
+ }
307
+ /**
308
+ * Узел для ширины взятого — там, где её читает тема: в `head` — шапка, в
309
+ * `column` — корень, от которого её наследует и тело. На корне большой
310
+ * таблицы запись пересчитала бы стиль каждой ячейке тела, а в `head` тело
311
+ * стоит. В `none` соседям сдвигаться не на что — узла нет.
312
+ */
313
+ _shiftHolder(root, preview) {
314
+ switch (preview) {
315
+ case "column": return root;
316
+ case "head": return this._head();
317
+ default: return null;
318
+ }
319
+ }
320
+ _onPointerUp = (event) => {
321
+ if (this._press?.pointer !== event.pointerId) return;
322
+ this._release(true);
323
+ };
324
+ /** Браузер отнял указатель — колонка возвращается на место. */
325
+ _onPointerCancel = (event) => {
326
+ if (this._press?.pointer !== event.pointerId) return;
327
+ this._release(false);
328
+ };
329
+ /**
330
+ * Захват потерял корень — указатель у него отняли, и жест кончен, как от
331
+ * `pointercancel`. Узел под пальцем теряет захват и посреди жеста: касание
332
+ * браузер сам захватывает за ним, а начало жеста переносит захват на
333
+ * корень. Это событие всплывает до корня, но жест не кончает — указатель
334
+ * по-прежнему у корня.
335
+ */
336
+ _onLostCapture = (event) => {
337
+ if (event.target === this._root) this._onPointerCancel(event);
338
+ };
339
+ /** Escape посреди жеста — отмена. Слушается на документе: фокус бывает вне таблицы. */
340
+ _onEscape = (event) => {
341
+ if (event.key !== "Escape" || !this._press?.gesture) return;
342
+ event.preventDefault();
343
+ this._release(false);
344
+ };
345
+ /**
346
+ * Закончить нажатие: отпустили — заголовок приземляется на место, куда
347
+ * колонку принесли, отмена — на своё, и соседи возвращаются. Коллекцию
348
+ * переставит конец приземления.
349
+ */
350
+ _release(commit) {
351
+ const press = this._press;
352
+ const gesture = press?.gesture;
353
+ this._press = null;
354
+ if (!press || !gesture) return;
355
+ this._root?.ownerDocument.removeEventListener("keydown", this._onEscape, true);
356
+ const columns = this._engine?.extensions.columns;
357
+ const place = commit ? gesture.place : gesture.from;
358
+ if (gesture.still) {
359
+ if (commit) columns?.dragEnd();
360
+ else columns?.dragCancel();
361
+ this._clearVariables(press.cell, gesture.shiftHolder);
362
+ return;
363
+ }
364
+ if (!commit) columns?.dragOver(gesture.from);
365
+ columns?.dragDrop();
366
+ this._land(press.cell, gesture.shiftHolder, landingOffset(gesture, place), commit);
367
+ }
368
+ /**
369
+ * Заголовок — на место: кадром позже, когда `data-landing` уже в разметке
370
+ * и тема ведёт его переходом, — так же сдвиг отпущенной панели снимает
371
+ * `TSwipePlugin`. Конец — когда заголовок доиграл свои переходы.
372
+ */
373
+ _land(cell, shiftHolder, offset, commit) {
374
+ const landing = {
375
+ cell,
376
+ shiftHolder,
377
+ commit,
378
+ frame: null,
379
+ wait: null
380
+ };
381
+ this._landing = landing;
382
+ landing.frame = requestAnimationFrame(() => {
383
+ landing.frame = null;
384
+ if (isMeasurableElement(cell)) cell.style.setProperty(DRAG_VARIABLE, `${offset}px`);
385
+ landing.wait = afterTransitions(cell, () => {
386
+ if (this._landing === landing) this._landed();
387
+ });
388
+ });
389
+ }
390
+ /** Заголовок встал: колонка — на место, метки и переменные сняты. */
391
+ _landed() {
392
+ const landing = this._landing;
393
+ if (!landing) return;
394
+ this._landing = null;
395
+ const columns = this._engine?.extensions.columns;
396
+ if (landing.commit) columns?.dragEnd();
397
+ else columns?.dragCancel();
398
+ this._clearVariables(landing.cell, landing.shiftHolder);
399
+ }
400
+ /** Довести приземление сразу — без кадра и без ожидания переходов. */
401
+ _finishLanding() {
402
+ const landing = this._landing;
403
+ if (!landing) return;
404
+ if (landing.frame !== null) cancelAnimationFrame(landing.frame);
405
+ landing.wait?.();
406
+ this._landed();
407
+ }
408
+ /**
409
+ * Корень ушёл: жест и приземление — прочь без перестановки, ожидания и
410
+ * кадры сняты.
411
+ */
412
+ _abort() {
413
+ const press = this._press;
414
+ const landing = this._landing;
415
+ this._press = null;
416
+ this._landing = null;
417
+ if (landing) {
418
+ if (landing.frame !== null) cancelAnimationFrame(landing.frame);
419
+ landing.wait?.();
420
+ }
421
+ const cell = landing?.cell ?? (press?.gesture ? press.cell : null);
422
+ if (!cell) return;
423
+ this._root?.ownerDocument.removeEventListener("keydown", this._onEscape, true);
424
+ this._engine?.extensions.columns.dragCancel();
425
+ this._clearVariables(cell, landing?.shiftHolder ?? press?.gesture?.shiftHolder ?? null);
426
+ }
427
+ /** Снять сдвиги жеста: у взятого заголовка и ширину взятого — с узла, которому её записали. */
428
+ _clearVariables(cell, shiftHolder) {
429
+ if (isMeasurableElement(cell)) cell.style.removeProperty(DRAG_VARIABLE);
430
+ if (isMeasurableElement(shiftHolder)) shiftHolder.style.removeProperty(SHIFT_VARIABLE);
431
+ }
432
+ _onKeyDown = (event) => {
433
+ if (!event.ctrlKey || !event.shiftKey || event.altKey || event.metaKey) return;
434
+ if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
435
+ const root = this._root;
436
+ const step = root ? arrowStep(slideDirection(AXIS, root), event.key) : null;
437
+ if (!root || step === null) return;
438
+ const hit = this._hit(event.target);
439
+ this._finishLanding();
440
+ const columns = this._engine?.extensions.columns;
441
+ if (!columns || !hit || !hit.column.reorderable || hit.column.disabled) return;
442
+ event.preventDefault();
443
+ const from = this._shown.indexOf(hit.column);
444
+ if (columns.moveColumn(hit.column, from + step)) this._keepFocus(event.target);
445
+ };
446
+ /**
447
+ * Фокус — тому же узлу после перерисовки шапки: переставленный заголовок
448
+ * браузер переносит в документе, и узел под фокусом при этом его теряет.
449
+ */
450
+ _keepFocus(target) {
451
+ if (!isFocusableElement(target)) return;
452
+ this._cancelFrame();
453
+ this._frame = requestAnimationFrame(() => {
454
+ this._frame = null;
455
+ if (target.isConnected && target.ownerDocument.activeElement !== target) target.focus();
456
+ });
457
+ }
458
+ _cancelFrame() {
459
+ if (this._frame === null) return;
460
+ cancelAnimationFrame(this._frame);
461
+ this._frame = null;
462
+ }
463
+ };
464
+ //#endregion
465
+ export { TTableColumnReorderPlugin };
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './column-reorder.plugin';
@@ -0,0 +1,81 @@
1
+ import type { ITableColumn } from '@soxa-ui/core';
2
+ import type { TPluginEvents } from '../../../base';
3
+ import type { TSlideDirection } from '../../slide/types';
4
+ /**
5
+ * Своих событий у плагина нет: что колонку взяли, куда несут и куда она
6
+ * встала, сообщает расширение `columns` — наборами колонок и `column:move`.
7
+ * Второй путь к тем же фактам через события плагина разошёлся бы с первым.
8
+ */
9
+ export type TTableColumnReorderPluginEvents = TPluginEvents;
10
+ /** Нажатие на заголовок, которое может стать жестом перестановки. */
11
+ export type TTableColumnReorderPress = {
12
+ /** `pointerId` указателя: чужие указатели жест не двигают */
13
+ pointer: number;
14
+ /** Точка нажатия по строке — `clientX` */
15
+ origin: number;
16
+ /** Колонка, заголовок которой нажали */
17
+ column: ITableColumn;
18
+ /** Её заголовок — его плагин сдвигает за указателем */
19
+ cell: Element;
20
+ /**
21
+ * Жест: указатель ушёл дальше порога, и колонку взяли. До этого — `null`:
22
+ * нажатие остаётся нажатием кнопки сортировки
23
+ */
24
+ gesture: TTableColumnReorderGesture | null;
25
+ };
26
+ /**
27
+ * Взятая колонка: где стояли заголовки, когда её взяли, и куда её несут.
28
+ * Коробки и направление строки плагин читает у документа один раз, на старте
29
+ * жеста, до первой записи: дальше место считается по ним, без чтения стиля.
30
+ */
31
+ export type TTableColumnReorderGesture = {
32
+ /**
33
+ * Заголовки показанных колонок на старте жеста, по их порядку. По ним
34
+ * считаются место и приземление: тема сдвигает соседей, и их коробки
35
+ * посреди жеста — уже не места колонок
36
+ */
37
+ boxes: ReadonlyArray<TTableColumnReorderBox>;
38
+ /** Место взятой колонки среди показанных */
39
+ from: number;
40
+ /** Место, куда колонку несут сейчас; на своём месте — `from` */
41
+ place: number;
42
+ /**
43
+ * Куда растёт строка — вычисленное направление письма корня на старте
44
+ * жеста (`slideDirection`): `from-left` слева направо, `from-right` в RTL
45
+ */
46
+ direction: TSlideDirection;
47
+ /**
48
+ * Шапка стоит — таблица в `none`: ширины взятого нет нигде, и колонка
49
+ * встаёт на отпускании, без приземления
50
+ */
51
+ still: boolean;
52
+ /**
53
+ * Узел, которому записана ширина взятого (`--so-table-column-shift`), —
54
+ * там, где её читает тема: шапка в `head`, корень в `column`; в `none` —
55
+ * `null`. С него ширину и снимают
56
+ */
57
+ shiftHolder: Element | null;
58
+ };
59
+ /**
60
+ * Заголовок на старте жеста — по строке, относительно корня таблицы, px: так
61
+ * снимок переживает прокрутку посреди жеста.
62
+ */
63
+ export type TTableColumnReorderBox = {
64
+ /** Левый край */
65
+ left: number;
66
+ /** Ширина */
67
+ width: number;
68
+ };
69
+ /** Отпущенный заголовок: едет на место, пока не доиграл переход темы. */
70
+ export type TTableColumnReorderLanding = {
71
+ /** Заголовок взятой колонки */
72
+ cell: Element;
73
+ /** Узел с шириной взятого — `shiftHolder` жеста: снять её, когда колонка встала */
74
+ shiftHolder: Element | null;
75
+ /** Отпустили на месте — `dragEnd`; отмена — `dragCancel` */
76
+ commit: boolean;
77
+ /** Кадр, в котором заголовок получит место: к нему `data-landing` уже в разметке */
78
+ frame: number | null;
79
+ /** Отмена ожидания переходов заголовка — после кадра */
80
+ wait: (() => void) | null;
81
+ };
@@ -0,0 +1,96 @@
1
+ import type { ITableColumn } from '@soxa-ui/core';
2
+ import { TBasePlugin } from '../../../base';
3
+ import type { IPluginContext } from '../../../base';
4
+ import type { ITableColumnResizePluginOptions, TTableColumnResizePluginEvents } from './types';
5
+ /**
6
+ * TTableColumnResizePlugin — ручка ширины колонки: указатель, клавиши и жест
7
+ * скринридера.
8
+ *
9
+ * Операции над DOM — здесь, ширина — у колонки: плагин переводит указатель и
10
+ * клавиши в px и зовёт её команды (`grab`, `drag`, `release`, `shift`,
11
+ * `moveToEdge`). Какой станет ширина, в каких пределах и когда слать `commit`,
12
+ * решает колонка, и жест она ведёт от своего итога ширины: ширины колонок
13
+ * раскладывает ядро, и итог — та ширина, что видна. Сторону, куда колонка
14
+ * растёт, плагин берёт у вычисленного направления письма (`slideDirection`):
15
+ * ручка стоит у конца строки, и в RTL колонку расширяет движение влево.
16
+ *
17
+ * **Указатель** — на полосе ручки: нажатие с её захватом начинает жест,
18
+ * протяжка двигает край, отпускание или отнятый указатель жест заканчивают.
19
+ * Своих действий у нажатия нет (`preventDefault`): ни выделения текста, ни
20
+ * своего фокуса браузера. Слушает корень, а не полосу: полосу разметка рисует
21
+ * и убирает, а корень — заголовок — живёт всё монтирование, и захват
22
+ * указателя держится на нём.
23
+ *
24
+ * **Отложенный жест** (`resizePreview: 'deferred'` таблицы) ширину до
25
+ * отпускания не меняет: её будущую границу показывает призрак, которого
26
+ * рисует тема по `data-resize-ghost` заголовка. Плагин пишет заголовку его
27
+ * сдвиг от края колонки (`--so-table-column-ghost`, по оси окна, на каждый
28
+ * шаг, если сменился) и высоту (`--so-table-column-ghost-size`, один раз на
29
+ * нажатии: от верха заголовка до низа таблицы в окне браузера) и снимает их
30
+ * в конце жеста. Переменные — на заголовке, а не на корне: запись на корень
31
+ * пересчитала бы стиль каждой ячейки тела. Escape посреди жеста — отмена в
32
+ * обоих режимах (`cancel` колонки).
33
+ *
34
+ * **Клавиши и жест скринридера** — у поля ручки, как у поля ползунка
35
+ * (`TSlideKeyboardPlugin`): стрелки — шаг по стороне роста, Shift со стрелкой,
36
+ * PageUp и PageDown — крупный шаг, Home и End — края хода. Поле браузер сдвинул
37
+ * бы своим шагом, поэтому клавиши плагин берёт себе. Мобильный скринридер
38
+ * клавиш не шлёт: свайп двигает поле и сообщает событием `input`, а плагин
39
+ * переводит направление правки в шаг колонки и возвращает полю её ширину.
40
+ * Шаги — опции установки.
41
+ */
42
+ export declare class TTableColumnResizePlugin extends TBasePlugin<ITableColumn, TTableColumnResizePluginEvents> {
43
+ private _column;
44
+ private _root;
45
+ private _gesture;
46
+ private _step;
47
+ private _largeStep;
48
+ install(ctx: IPluginContext, options?: ITableColumnResizePluginOptions): void;
49
+ destroy(): void;
50
+ private _attach;
51
+ private _detach;
52
+ private readonly _onPointerDown;
53
+ private readonly _onPointerMove;
54
+ /**
55
+ * Призрак — на ширину, которую запишет отложенный жест: сдвиг от края
56
+ * колонки по оси окна. Ход колонка уже учла, поэтому за границы колонки
57
+ * призрак не уходит. Тот же сдвиг не пишется: переменная на заголовке
58
+ * пересчитывает его стиль. В живом жесте призрака нет.
59
+ */
60
+ private _moveGhost;
61
+ /**
62
+ * Высота призрака: от верха заголовка до низа таблицы, но не ниже окна
63
+ * браузера — таблица в тысячи строк дала бы линию в сотни тысяч px.
64
+ */
65
+ private _ghostSize;
66
+ /** Снять переменные призрака: жест закончен. */
67
+ private _clearGhost;
68
+ private readonly _onPointerUp;
69
+ /** Закончить жест: отпустили, браузер отнял указатель или корень ушёл. */
70
+ private _end;
71
+ /**
72
+ * Escape посреди жеста — отмена: ширина нажатия, без `commit`. Захват
73
+ * указателя плагин отпускает сам: протяжка дальше ширину не двигает.
74
+ */
75
+ private _cancel;
76
+ /**
77
+ * Фокус — полю ручки, как у ползунка: клавиши продолжают с той ширины, на
78
+ * которой отпустили указатель. Без прокрутки: страница не должна прыгать к
79
+ * ручке, которую пользователь и так держит.
80
+ *
81
+ * И без кольца (`focusVisible: false`). Фокус ставит скрипт, а видимость
82
+ * такого фокуса браузер берёт у прошлого: пришёл тот не от мыши — свежая
83
+ * страница, Tab, — и нажатие мышью зажгло бы линию ручки, которую держит
84
+ * только фокус с клавиатуры.
85
+ */
86
+ private _focus;
87
+ private readonly _onKeyDown;
88
+ /** Что клавиша делает с шириной; не наша клавиша — `null`, её обработает браузер. */
89
+ private _actionOf;
90
+ /**
91
+ * Правка поля не клавишей — жестом скринридера. Колонка делает шаг в ту же
92
+ * сторону, а поле показывает её ширину: и когда шаг сделан, и когда упёрся в
93
+ * край хода.
94
+ */
95
+ private readonly _onInput;
96
+ }