@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,69 @@
1
+ import { TBasePlugin } from "../../../base/base.class.js";
2
+ import { TCollectionBundlesPlugin } from "../../collection/bundles.plugin.js";
3
+ import { TCollectionElements } from "../../collection/collection-elements.plugin.js";
4
+ import { afterTransitions } from "../../../utils/afterTransitions.js";
5
+ //#region src/custom/toasts/removal/removal.plugin.ts
6
+ /**
7
+ * TToastsRemovalPlugin — закрытый тост уходит из коллекции, когда догас.
8
+ *
9
+ * Закрытый тост из разметки не прячется: тема ведёт его переходом по
10
+ * `data-open="false"` — он гаснет, уезжает к стороне жеста, а место его
11
+ * схлопывается, — и коллекция держит его, пока переходы его узла не
12
+ * доиграли (`afterTransitions`), а потом удаляет (`plain.remove`). Сними его
13
+ * сразу — узел ушёл бы из документа посреди исчезания. Чисел темы плагин не
14
+ * знает: сколько ждать, решает переход; без движения и без переходов (jsdom)
15
+ * — тем же кадром.
16
+ *
17
+ * Узла у тоста нет — он не нарисован (вытеснен за предел видимых, региона нет
18
+ * или его ещё не отрисовали) — гаснуть нечему, и тост удаляется сразу.
19
+ *
20
+ * Закрытые до привязки движка — тосты, закрытые, пока компонента не было, —
21
+ * удаляются при привязке: их узлов в этом монтировании нет. Набор уничтожают,
22
+ * пока тост гаснет, — ожидание снимается, а тост удаляется сразу: он закрыт, а
23
+ * движок снаружи переживает компонент.
24
+ */
25
+ var TToastsRemovalPlugin = class extends TBasePlugin {
26
+ _engine = null;
27
+ _elements = null;
28
+ /** Тосты, которые гаснут: отмена ожидания — по тосту. */
29
+ _fading = /* @__PURE__ */ new Map();
30
+ install(ctx) {
31
+ super.install(ctx);
32
+ this._elements = ctx.get(TCollectionElements) ?? null;
33
+ ctx.get(TCollectionBundlesPlugin)?.events.on("engine:bound", (engine) => this._bindEngine(engine));
34
+ }
35
+ destroy() {
36
+ const fading = [...this._fading];
37
+ this._fading.clear();
38
+ for (const [toast, cancel] of fading) {
39
+ cancel();
40
+ this._remove(toast);
41
+ }
42
+ this._engine = null;
43
+ this._elements = null;
44
+ super.destroy();
45
+ }
46
+ _bindEngine(engine) {
47
+ this._engine = engine;
48
+ this._listenTo(engine.extensions.toasts.events, "item:close", (toast) => this._fade(toast));
49
+ for (const toast of engine.extensions.batch.items) if (!toast.open) this._remove(toast);
50
+ }
51
+ /** Закрытый тост: дождаться, пока его узел догаснет, и удалить. */
52
+ _fade(toast) {
53
+ const node = this._elements?.getElementByItem(toast);
54
+ if (!node) {
55
+ this._remove(toast);
56
+ return;
57
+ }
58
+ this._fading.get(toast)?.();
59
+ this._fading.set(toast, afterTransitions(node, () => {
60
+ this._fading.delete(toast);
61
+ this._remove(toast);
62
+ }));
63
+ }
64
+ _remove(toast) {
65
+ this._engine?.extensions.plain.remove(toast);
66
+ }
67
+ };
68
+ //#endregion
69
+ export { TToastsRemovalPlugin };
@@ -0,0 +1,6 @@
1
+ import type { TPluginEvents } from '../../../base';
2
+ /**
3
+ * Своих событий у плагина нет: удаление видно через коллекцию —
4
+ * `item:removed`.
5
+ */
6
+ export type TToastsRemovalPluginEvents = TPluginEvents;
@@ -0,0 +1,2 @@
1
+ export { TToastsTimerPlugin } from './timer.plugin';
2
+ export type { TToastCountdown, TToastsTimerPluginEvents } from './types';
@@ -0,0 +1,71 @@
1
+ import type { IToasts } from '@soxa-ui/core';
2
+ import { TBasePlugin } from '../../../base';
3
+ import type { IPluginContext } from '../../../base';
4
+ import type { TToastsTimerPluginEvents } from './types';
5
+ /**
6
+ * TToastsTimerPlugin — отсчёт тостов: время вышло — тост закрывается.
7
+ *
8
+ * **Кого считает** — показанные открытые тосты (`batch.shown`) с длительностью
9
+ * (`durationOf` расширения `toasts`): своя у тоста, иначе владельца. `0` —
10
+ * тост держится, пока его не закроют, и отсчёта у него нет; так и у тоста,
11
+ * который ждёт (`loading`), — это итог расширения, а не правило плагина.
12
+ * Вытесненный за предел видимых тост ждёт места с оставшимся временем: время
13
+ * идёт только у того, кого видно. Смена длительности (`item:duration`) — и
14
+ * снятое ожидание тоже — начинает отсчёт заново.
15
+ *
16
+ * **Пауза — для всех разом**, пока указатель или фокус в регионе и пока
17
+ * вкладка скрыта: читающий тост не должен исчезнуть у него из-под указателя, а
18
+ * уведомление, пришедшее в скрытую вкладку, — истечь, пока его никто не видел.
19
+ * Уход указателя снимает паузу с задержкой (`RESUME_DELAY`).
20
+ *
21
+ * Таймеры и слушатели — только пока есть узел региона: на сервере и до первой
22
+ * отрисовки считать некому и показывать нечего. Узел ушёл — отсчёт стоит,
23
+ * оставшееся время сохраняется.
24
+ *
25
+ * Время вышло — `close()` тоста: тот же путь, что крестик и Escape, а убирает
26
+ * закрытый тост из коллекции плагин удаления, когда тот догаснет.
27
+ */
28
+ export declare class TToastsTimerPlugin extends TBasePlugin<IToasts, TToastsTimerPluginEvents> {
29
+ private _engine;
30
+ /** Узел региона; `null` — считать некому. */
31
+ private _region;
32
+ private _document;
33
+ private readonly _countdowns;
34
+ /** Указатель над тостами. */
35
+ private _hovered;
36
+ /** Фокус в регионе. */
37
+ private _focused;
38
+ /** Вкладка скрыта. */
39
+ private _hidden;
40
+ /** Отложенное снятие паузы после ухода указателя. */
41
+ private _resumeTimer;
42
+ private readonly _sync;
43
+ install(ctx: IPluginContext): void;
44
+ destroy(): void;
45
+ private _bindEngine;
46
+ private _attach;
47
+ private _detach;
48
+ /** Отсчёт стоит: указатель или фокус в регионе, вкладка скрыта. */
49
+ private get _paused();
50
+ /**
51
+ * Отсчёт идёт у показанных открытых тостов с длительностью, пока есть узел
52
+ * региона и нет паузы. Остальные стоят: тост ушёл из коллекции, закрыт или
53
+ * больше не закрывается сам — его отсчёт забыт; вытесненный за предел
54
+ * ждёт места с оставшимся временем.
55
+ */
56
+ private _resync;
57
+ /** Длительность тоста сменилась — отсчёт заново, с новой длительности. */
58
+ private _restart;
59
+ /** Отсчёт тоста больше не нужен: тост закрыт или его длительность сменилась. */
60
+ private _drop;
61
+ private _run;
62
+ /** Остановить отсчёт и запомнить, сколько осталось. */
63
+ private _stop;
64
+ private readonly _onPointerEnter;
65
+ private readonly _onPointerLeave;
66
+ private readonly _onFocusIn;
67
+ /** Фокус ушёл — пауза снимается, только если он ушёл из региона. */
68
+ private readonly _onFocusOut;
69
+ private readonly _onVisibilityChange;
70
+ private _cancelResume;
71
+ }
@@ -0,0 +1,213 @@
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
+ //#region src/custom/toasts/timer/timer.plugin.ts
5
+ /**
6
+ * Сколько ждать, прежде чем снять паузу, когда указатель ушёл из региона, мс.
7
+ *
8
+ * Указатель берут только тосты: регион нажатий мимо них не ловит. Закрытый
9
+ * тост указатель отпускает сразу, и уход с него — не уход пользователя:
10
+ * сосед за ним через миг встанет на его место под тот же указатель. Без
11
+ * задержки отсчёт остальных тостов дёргался бы на каждое закрытие под
12
+ * указателем. Время — с запасом на смыкание соседей в теме.
13
+ */
14
+ var RESUME_DELAY = 400;
15
+ /**
16
+ * TToastsTimerPlugin — отсчёт тостов: время вышло — тост закрывается.
17
+ *
18
+ * **Кого считает** — показанные открытые тосты (`batch.shown`) с длительностью
19
+ * (`durationOf` расширения `toasts`): своя у тоста, иначе владельца. `0` —
20
+ * тост держится, пока его не закроют, и отсчёта у него нет; так и у тоста,
21
+ * который ждёт (`loading`), — это итог расширения, а не правило плагина.
22
+ * Вытесненный за предел видимых тост ждёт места с оставшимся временем: время
23
+ * идёт только у того, кого видно. Смена длительности (`item:duration`) — и
24
+ * снятое ожидание тоже — начинает отсчёт заново.
25
+ *
26
+ * **Пауза — для всех разом**, пока указатель или фокус в регионе и пока
27
+ * вкладка скрыта: читающий тост не должен исчезнуть у него из-под указателя, а
28
+ * уведомление, пришедшее в скрытую вкладку, — истечь, пока его никто не видел.
29
+ * Уход указателя снимает паузу с задержкой (`RESUME_DELAY`).
30
+ *
31
+ * Таймеры и слушатели — только пока есть узел региона: на сервере и до первой
32
+ * отрисовки считать некому и показывать нечего. Узел ушёл — отсчёт стоит,
33
+ * оставшееся время сохраняется.
34
+ *
35
+ * Время вышло — `close()` тоста: тот же путь, что крестик и Escape, а убирает
36
+ * закрытый тост из коллекции плагин удаления, когда тот догаснет.
37
+ */
38
+ var TToastsTimerPlugin = class extends TBasePlugin {
39
+ _engine = null;
40
+ /** Узел региона; `null` — считать некому. */
41
+ _region = null;
42
+ _document = null;
43
+ _countdowns = /* @__PURE__ */ new Map();
44
+ /** Указатель над тостами. */
45
+ _hovered = false;
46
+ /** Фокус в регионе. */
47
+ _focused = false;
48
+ /** Вкладка скрыта. */
49
+ _hidden = false;
50
+ /** Отложенное снятие паузы после ухода указателя. */
51
+ _resumeTimer = null;
52
+ _sync = () => this._resync();
53
+ install(ctx) {
54
+ super.install(ctx);
55
+ const element = ctx.get(TElementPlugin);
56
+ element?.events.on("ready", (node) => this._attach(node));
57
+ element?.events.on("removed", () => this._detach());
58
+ ctx.get(TCollectionBundlesPlugin)?.events.on("engine:bound", (engine) => this._bindEngine(engine));
59
+ }
60
+ destroy() {
61
+ this._detach();
62
+ for (const countdown of this._countdowns.values()) this._stop(countdown);
63
+ this._countdowns.clear();
64
+ this._engine = null;
65
+ super.destroy();
66
+ }
67
+ _bindEngine(engine) {
68
+ this._engine = engine;
69
+ this._listenTo(engine.extensions.batch.events, "change:shown", this._sync);
70
+ this._listenTo(engine.extensions.toasts.events, "item:close", (toast) => this._drop(toast));
71
+ this._listenTo(engine.extensions.toasts.events, "item:duration", (toast) => this._restart(toast));
72
+ this._resync();
73
+ }
74
+ _attach(node) {
75
+ this._detach();
76
+ const region = node;
77
+ const document = node.ownerDocument;
78
+ region.addEventListener("pointerenter", this._onPointerEnter);
79
+ region.addEventListener("pointerleave", this._onPointerLeave);
80
+ region.addEventListener("focusin", this._onFocusIn);
81
+ region.addEventListener("focusout", this._onFocusOut);
82
+ document.addEventListener("visibilitychange", this._onVisibilityChange);
83
+ this._region = region;
84
+ this._document = document;
85
+ this._hidden = document.hidden;
86
+ this._focused = document.activeElement !== null && node.contains(document.activeElement);
87
+ this._resync();
88
+ }
89
+ _detach() {
90
+ const region = this._region;
91
+ this._cancelResume();
92
+ if (region) {
93
+ region.removeEventListener("pointerenter", this._onPointerEnter);
94
+ region.removeEventListener("pointerleave", this._onPointerLeave);
95
+ region.removeEventListener("focusin", this._onFocusIn);
96
+ region.removeEventListener("focusout", this._onFocusOut);
97
+ }
98
+ this._document?.removeEventListener("visibilitychange", this._onVisibilityChange);
99
+ this._region = null;
100
+ this._document = null;
101
+ this._hovered = false;
102
+ this._focused = false;
103
+ this._hidden = false;
104
+ this._resync();
105
+ }
106
+ /** Отсчёт стоит: указатель или фокус в регионе, вкладка скрыта. */
107
+ get _paused() {
108
+ return this._hovered || this._focused || this._hidden;
109
+ }
110
+ /**
111
+ * Отсчёт идёт у показанных открытых тостов с длительностью, пока есть узел
112
+ * региона и нет паузы. Остальные стоят: тост ушёл из коллекции, закрыт или
113
+ * больше не закрывается сам — его отсчёт забыт; вытесненный за предел
114
+ * ждёт места с оставшимся временем.
115
+ */
116
+ _resync() {
117
+ const engine = this._engine;
118
+ const counting = /* @__PURE__ */ new Set();
119
+ if (engine && this._region) {
120
+ const running = !this._paused;
121
+ for (const toast of engine.extensions.batch.shown) {
122
+ if (!toast.open) continue;
123
+ const duration = engine.extensions.toasts.durationOf(toast);
124
+ if (duration <= 0) continue;
125
+ counting.add(toast);
126
+ let countdown = this._countdowns.get(toast);
127
+ if (!countdown) {
128
+ countdown = {
129
+ remaining: duration,
130
+ started: null,
131
+ timer: null
132
+ };
133
+ this._countdowns.set(toast, countdown);
134
+ }
135
+ if (running) this._run(toast, countdown);
136
+ else this._stop(countdown);
137
+ }
138
+ }
139
+ for (const [toast, countdown] of this._countdowns) {
140
+ if (counting.has(toast)) continue;
141
+ this._stop(countdown);
142
+ if (!(toast.open && engine !== null && engine.extensions.batch.items.includes(toast) && engine.extensions.toasts.durationOf(toast) > 0)) this._countdowns.delete(toast);
143
+ }
144
+ }
145
+ /** Длительность тоста сменилась — отсчёт заново, с новой длительности. */
146
+ _restart(toast) {
147
+ this._drop(toast);
148
+ this._resync();
149
+ }
150
+ /** Отсчёт тоста больше не нужен: тост закрыт или его длительность сменилась. */
151
+ _drop(toast) {
152
+ const countdown = this._countdowns.get(toast);
153
+ if (!countdown) return;
154
+ this._stop(countdown);
155
+ this._countdowns.delete(toast);
156
+ }
157
+ _run(toast, countdown) {
158
+ if (countdown.timer !== null) return;
159
+ countdown.started = Date.now();
160
+ countdown.timer = setTimeout(() => {
161
+ countdown.timer = null;
162
+ this._countdowns.delete(toast);
163
+ toast.close();
164
+ }, countdown.remaining);
165
+ }
166
+ /** Остановить отсчёт и запомнить, сколько осталось. */
167
+ _stop(countdown) {
168
+ if (countdown.timer === null) return;
169
+ clearTimeout(countdown.timer);
170
+ countdown.remaining = Math.max(0, countdown.remaining - (Date.now() - (countdown.started ?? 0)));
171
+ countdown.started = null;
172
+ countdown.timer = null;
173
+ }
174
+ _onPointerEnter = () => {
175
+ this._cancelResume();
176
+ if (this._hovered) return;
177
+ this._hovered = true;
178
+ this._resync();
179
+ };
180
+ _onPointerLeave = () => {
181
+ this._cancelResume();
182
+ this._resumeTimer = setTimeout(() => {
183
+ this._resumeTimer = null;
184
+ this._hovered = false;
185
+ this._resync();
186
+ }, RESUME_DELAY);
187
+ };
188
+ _onFocusIn = () => {
189
+ if (this._focused) return;
190
+ this._focused = true;
191
+ this._resync();
192
+ };
193
+ /** Фокус ушёл — пауза снимается, только если он ушёл из региона. */
194
+ _onFocusOut = (event) => {
195
+ const next = event.relatedTarget;
196
+ if (next instanceof Node && this._region !== null && this._region.contains(next) || !this._focused) return;
197
+ this._focused = false;
198
+ this._resync();
199
+ };
200
+ _onVisibilityChange = () => {
201
+ const hidden = this._document?.hidden ?? false;
202
+ if (hidden === this._hidden) return;
203
+ this._hidden = hidden;
204
+ this._resync();
205
+ };
206
+ _cancelResume() {
207
+ if (this._resumeTimer === null) return;
208
+ clearTimeout(this._resumeTimer);
209
+ this._resumeTimer = null;
210
+ }
211
+ };
212
+ //#endregion
213
+ export { TToastsTimerPlugin };
@@ -0,0 +1,15 @@
1
+ import type { TPluginEvents } from '../../../base';
2
+ /**
3
+ * Своих событий у плагина нет: истёкшее время видно через тост — он
4
+ * закрывается (`change:open`), а коллекция сообщает об этом `item:close`.
5
+ */
6
+ export type TToastsTimerPluginEvents = TPluginEvents;
7
+ /** Отсчёт одного тоста. */
8
+ export type TToastCountdown = {
9
+ /** Сколько тосту осталось, мс */
10
+ remaining: number;
11
+ /** Когда отсчёт пошёл (`Date.now()`); `null` — стоит */
12
+ started: number | null;
13
+ /** Таймер истечения; `null` — отсчёт стоит */
14
+ timer: ReturnType<typeof setTimeout> | null;
15
+ };
@@ -0,0 +1,22 @@
1
+ import { TBasePlugin } from '../../../base';
2
+ import type { IPluginContext } from '../../../base';
3
+ /**
4
+ * TTooltipIdsPlugin — связка «триггер ↔ панель» подсказки в документе.
5
+ *
6
+ * `id` панели — в `aria` подсказки, который разметка раскладывает на панель,
7
+ * а ссылка триггера на него — в `triggerAria`: `aria-describedby`, в режиме
8
+ * `label` — `aria-labelledby`. Ссылка одна, не обе: подсказка-имя,
9
+ * повторённая описанием, прозвучала бы дважды. Сменился режим (`change:type`)
10
+ * — прежняя ссылка снимается, новая ставится.
11
+ *
12
+ * `id` — от монтирования (`createId`), а не от экземпляра: он нужен только
13
+ * документу, и на сервере и в браузере обязан совпасть. Пишется при
14
+ * установке, синхронно: панель не размонтируется, и описание или имя есть уже
15
+ * в первой (и серверной) отрисовке.
16
+ */
17
+ export declare class TTooltipIdsPlugin extends TBasePlugin {
18
+ private _panelId;
19
+ install(ctx: IPluginContext): void;
20
+ /** Ссылка триггера по режиму: ровно одна из двух. */
21
+ private _link;
22
+ }
@@ -0,0 +1,42 @@
1
+ import { TBasePlugin } from "../../../base/base.class.js";
2
+ //#region src/custom/tooltip/ids/ids.plugin.ts
3
+ /**
4
+ * Атрибут, которым триггер ссылается на панель, — по режиму. Словарь по
5
+ * union, а не условие: режим без своей ссылки не скомпилируется.
6
+ */
7
+ var TRIGGER_RELATION = {
8
+ description: "aria-describedby",
9
+ label: "aria-labelledby"
10
+ };
11
+ /**
12
+ * TTooltipIdsPlugin — связка «триггер ↔ панель» подсказки в документе.
13
+ *
14
+ * `id` панели — в `aria` подсказки, который разметка раскладывает на панель,
15
+ * а ссылка триггера на него — в `triggerAria`: `aria-describedby`, в режиме
16
+ * `label` — `aria-labelledby`. Ссылка одна, не обе: подсказка-имя,
17
+ * повторённая описанием, прозвучала бы дважды. Сменился режим (`change:type`)
18
+ * — прежняя ссылка снимается, новая ставится.
19
+ *
20
+ * `id` — от монтирования (`createId`), а не от экземпляра: он нужен только
21
+ * документу, и на сервере и в браузере обязан совпасть. Пишется при
22
+ * установке, синхронно: панель не размонтируется, и описание или имя есть уже
23
+ * в первой (и серверной) отрисовке.
24
+ */
25
+ var TTooltipIdsPlugin = class extends TBasePlugin {
26
+ _panelId = "";
27
+ install(ctx) {
28
+ super.install(ctx);
29
+ const tooltip = ctx.getInstance();
30
+ if (!tooltip) return;
31
+ this._panelId = ctx.createId("panel");
32
+ tooltip.aria.add("id", this._panelId);
33
+ this._link(tooltip, tooltip.type);
34
+ this._listenTo(tooltip.events, "change:type", ({ newValue: type }) => this._link(tooltip, type));
35
+ }
36
+ /** Ссылка триггера по режиму: ровно одна из двух. */
37
+ _link(tooltip, type) {
38
+ for (const [mode, relation] of Object.entries(TRIGGER_RELATION)) tooltip.triggerAria.add(relation, mode === type ? this._panelId : null);
39
+ }
40
+ };
41
+ //#endregion
42
+ export { TTooltipIdsPlugin };
@@ -0,0 +1 @@
1
+ export * from './ids.plugin';
@@ -0,0 +1,2 @@
1
+ export * from './trigger';
2
+ export * from './ids';
@@ -0,0 +1,42 @@
1
+ import type { ITooltipEntry } from './types';
2
+ /**
3
+ * Подсказки документа: какая открыта и можно ли показать следующую без
4
+ * задержки.
5
+ *
6
+ * Подсказка на экране одна. Открывшаяся сразу закрывает прежнюю: у соседних
7
+ * кнопок две плашки встали бы рядом или друг на друга, и какая к чему
8
+ * относится, было бы не понять. Прежнюю при этом может ещё держать фокус с
9
+ * клавиатуры — показывает всё равно новая: её вызвал последний жест.
10
+ *
11
+ * Задержка показа нужна, чтобы подсказки не вспыхивали у всего, над чем
12
+ * курсор просто прошёл. Но пользователь, который уже читает подсказки —
13
+ * ведёт курсор вдоль ряда кнопок, — ждать её у каждой соседней не должен.
14
+ * Поэтому, пока другая подсказка открыта или закрылась меньше
15
+ * `TOOLTIP_SKIP_DELAY_MS` назад, следующая показывается сразу.
16
+ *
17
+ * Оба факта — о документе, а не о подсказке: флагом на плагине их не
18
+ * выразить, соседка о нём не знает. Поэтому состояние одно на документ, как
19
+ * замок прокрутки (`overlay/scroll-lock/lock.ts`), и документ берётся у
20
+ * корня, а не из `globalThis`: подсказка живёт и в `iframe`.
21
+ *
22
+ * Окно — константа, а не проп: оно про то, как человек ведёт курсор по
23
+ * странице, а не про одну подсказку, и у двух соседок с разными окнами
24
+ * правило стало бы несимметричным.
25
+ */
26
+ /** Сколько после закрытия подсказки следующая показывается без задержки, мс. */
27
+ export declare const TOOLTIP_SKIP_DELAY_MS = 300;
28
+ /**
29
+ * Подсказка открылась: прежняя закрывается, окно без задержки больше не
30
+ * нужно — пока эта открыта, соседка и так покажется сразу.
31
+ *
32
+ * Прежняя закрывается после того, как открытой записана новая: закрываясь,
33
+ * она сообщит об этом (`tooltipClosed`), и запись новой не должна пропасть.
34
+ */
35
+ export declare function tooltipOpened(doc: Document, entry: ITooltipEntry): void;
36
+ /**
37
+ * Подсказка закрылась: окно без задержки открывается для следующей. Закрытие
38
+ * подсказки, которую уже сменила другая, ничего не меняет.
39
+ */
40
+ export declare function tooltipClosed(doc: Document, entry: ITooltipEntry): void;
41
+ /** Показывать ли без задержки: другая подсказка открыта или закрылась только что. */
42
+ export declare function tooltipSkipsDelay(doc: Document): boolean;
@@ -0,0 +1,50 @@
1
+ var STATES = /* @__PURE__ */ new WeakMap();
2
+ function stateOf(doc) {
3
+ const known = STATES.get(doc);
4
+ if (known) return known;
5
+ const state = {
6
+ open: null,
7
+ warm: null
8
+ };
9
+ STATES.set(doc, state);
10
+ return state;
11
+ }
12
+ /**
13
+ * Подсказка открылась: прежняя закрывается, окно без задержки больше не
14
+ * нужно — пока эта открыта, соседка и так покажется сразу.
15
+ *
16
+ * Прежняя закрывается после того, как открытой записана новая: закрываясь,
17
+ * она сообщит об этом (`tooltipClosed`), и запись новой не должна пропасть.
18
+ */
19
+ function tooltipOpened(doc, entry) {
20
+ const state = stateOf(doc);
21
+ const previous = state.open;
22
+ state.open = entry;
23
+ stopWarm(state);
24
+ if (previous && previous !== entry) previous.close();
25
+ }
26
+ /**
27
+ * Подсказка закрылась: окно без задержки открывается для следующей. Закрытие
28
+ * подсказки, которую уже сменила другая, ничего не меняет.
29
+ */
30
+ function tooltipClosed(doc, entry) {
31
+ const state = STATES.get(doc);
32
+ if (!state || state.open !== entry) return;
33
+ state.open = null;
34
+ stopWarm(state);
35
+ state.warm = setTimeout(() => {
36
+ state.warm = null;
37
+ }, 300);
38
+ }
39
+ /** Показывать ли без задержки: другая подсказка открыта или закрылась только что. */
40
+ function tooltipSkipsDelay(doc) {
41
+ const state = STATES.get(doc);
42
+ return !!state && (state.open !== null || state.warm !== null);
43
+ }
44
+ function stopWarm(state) {
45
+ if (state.warm === null) return;
46
+ clearTimeout(state.warm);
47
+ state.warm = null;
48
+ }
49
+ //#endregion
50
+ export { tooltipClosed, tooltipOpened, tooltipSkipsDelay };
@@ -0,0 +1,2 @@
1
+ export { TTooltipTriggerPlugin } from './trigger.plugin';
2
+ export type { TTooltipTriggerPluginEvents } from './types';