@sprawlify/primitives 0.0.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 (378) hide show
  1. package/dist/anatomy.cjs +3 -0
  2. package/dist/anatomy.d.cts +2 -0
  3. package/dist/anatomy.d.mts +2 -0
  4. package/dist/anatomy.mjs +3 -0
  5. package/dist/aria-hidden-DqYx0f_y.mjs +177 -0
  6. package/dist/aria-hidden-DtLU6hSU.cjs +182 -0
  7. package/dist/aria-hidden.cjs +4 -0
  8. package/dist/aria-hidden.d.cts +16 -0
  9. package/dist/aria-hidden.d.mts +16 -0
  10. package/dist/aria-hidden.mjs +4 -0
  11. package/dist/auto-resize-D3qHtFy1.mjs +114 -0
  12. package/dist/auto-resize-xzlPFDyD.cjs +125 -0
  13. package/dist/auto-resize.cjs +5 -0
  14. package/dist/auto-resize.d.cts +17 -0
  15. package/dist/auto-resize.d.mts +17 -0
  16. package/dist/auto-resize.mjs +4 -0
  17. package/dist/chunk-CbDLau6x.cjs +34 -0
  18. package/dist/collection-8XqaNHs_.mjs +1279 -0
  19. package/dist/collection-DIoIDISa.cjs +1326 -0
  20. package/dist/collection.cjs +11 -0
  21. package/dist/collection.d.cts +5 -0
  22. package/dist/collection.d.mts +5 -0
  23. package/dist/collection.mjs +4 -0
  24. package/dist/color-BkAP1Tkd.d.mts +60 -0
  25. package/dist/color-VKewNv2e.d.cts +60 -0
  26. package/dist/color-utils-Cc5GVXZh.mjs +657 -0
  27. package/dist/color-utils-LER_6Zwu.cjs +680 -0
  28. package/dist/color-utils.cjs +7 -0
  29. package/dist/color-utils.d.cts +19 -0
  30. package/dist/color-utils.d.mts +19 -0
  31. package/dist/color-utils.mjs +4 -0
  32. package/dist/core-30pJjyC2.d.mts +49 -0
  33. package/dist/core-CQFbMdTl.cjs +176 -0
  34. package/dist/core-CefBjbst.d.cts +49 -0
  35. package/dist/core-DCFNMTZF.mjs +129 -0
  36. package/dist/core.cjs +12 -0
  37. package/dist/core.d.cts +3 -0
  38. package/dist/core.d.mts +3 -0
  39. package/dist/core.mjs +5 -0
  40. package/dist/create-anatomy-B3XYc-qG.d.mts +70 -0
  41. package/dist/create-anatomy-BGQ8pv8J.d.cts +70 -0
  42. package/dist/create-anatomy-BbDZbHpC.mjs +39 -0
  43. package/dist/create-anatomy-CDsIFUXg.cjs +45 -0
  44. package/dist/create-props-BnF_vl-E.mjs +5 -0
  45. package/dist/create-props-YKy7JIKj.cjs +11 -0
  46. package/dist/data-url-C3ITPVRX.d.cts +10 -0
  47. package/dist/data-url-DLwZ9M77.d.mts +10 -0
  48. package/dist/date-utils-D2xPHa_I.cjs +738 -0
  49. package/dist/date-utils-wEa1hhpc.mjs +474 -0
  50. package/dist/date-utils.cjs +46 -0
  51. package/dist/date-utils.d.cts +101 -0
  52. package/dist/date-utils.d.mts +2 -0
  53. package/dist/date-utils.mjs +3 -0
  54. package/dist/defineProperty-BoUOT9Ie.cjs +49 -0
  55. package/dist/defineProperty-DrXfyjd4.mjs +43 -0
  56. package/dist/dismissable-CTfKZ4OG.cjs +282 -0
  57. package/dist/dismissable-DDrx0xnH.mjs +271 -0
  58. package/dist/dismissable-layer-C7pZU2wi.d.cts +39 -0
  59. package/dist/dismissable-layer-t_b0fk-p.d.mts +39 -0
  60. package/dist/dismissable.cjs +7 -0
  61. package/dist/dismissable.d.cts +3 -0
  62. package/dist/dismissable.d.mts +3 -0
  63. package/dist/dismissable.mjs +6 -0
  64. package/dist/dom-query-CWZdWUGp.cjs +2141 -0
  65. package/dist/dom-query-DFCRhyj1.mjs +1374 -0
  66. package/dist/dom-query.cjs +130 -0
  67. package/dist/dom-query.d.cts +307 -0
  68. package/dist/dom-query.d.mts +307 -0
  69. package/dist/dom-query.mjs +3 -0
  70. package/dist/file-utils.cjs +220 -0
  71. package/dist/file-utils.d.cts +51 -0
  72. package/dist/file-utils.d.mts +51 -0
  73. package/dist/file-utils.mjs +210 -0
  74. package/dist/focus-trap-D-bypQEJ.mjs +485 -0
  75. package/dist/focus-trap-D4i52S9A.cjs +496 -0
  76. package/dist/focus-trap.cjs +5 -0
  77. package/dist/focus-trap.d.cts +88 -0
  78. package/dist/focus-trap.d.mts +88 -0
  79. package/dist/focus-trap.mjs +4 -0
  80. package/dist/focus-visible-DYTWdWpa.cjs +210 -0
  81. package/dist/focus-visible-irppYatv.mjs +175 -0
  82. package/dist/focus-visible.cjs +9 -0
  83. package/dist/focus-visible.d.cts +31 -0
  84. package/dist/focus-visible.d.mts +31 -0
  85. package/dist/focus-visible.mjs +4 -0
  86. package/dist/functions-BOkTDEFM.d.cts +15 -0
  87. package/dist/functions-IZtWcC8Q.d.mts +15 -0
  88. package/dist/highlight-word.cjs +100 -0
  89. package/dist/highlight-word.d.cts +24 -0
  90. package/dist/highlight-word.d.mts +24 -0
  91. package/dist/highlight-word.mjs +99 -0
  92. package/dist/hotkeys.cjs +758 -0
  93. package/dist/hotkeys.d.cts +130 -0
  94. package/dist/hotkeys.d.mts +130 -0
  95. package/dist/hotkeys.mjs +754 -0
  96. package/dist/i18n-utils.cjs +450 -0
  97. package/dist/i18n-utils.d.cts +61 -0
  98. package/dist/i18n-utils.d.mts +61 -0
  99. package/dist/i18n-utils.mjs +440 -0
  100. package/dist/index-BkzYij2j.d.mts +25 -0
  101. package/dist/index-Bqw3r34-.d.cts +1383 -0
  102. package/dist/index-C0MKXQmE.d.mts +1383 -0
  103. package/dist/index-C9-feK5c.d.cts +25 -0
  104. package/dist/index-CD5FN7kY.d.mts +114 -0
  105. package/dist/index-CJji6wHl.d.cts +15 -0
  106. package/dist/index-CNi5FkPe.d.mts +15 -0
  107. package/dist/index-D96rs8B0.d.mts +115 -0
  108. package/dist/index.cjs +0 -0
  109. package/dist/index.d.cts +1 -0
  110. package/dist/index.d.mts +1 -0
  111. package/dist/index.mjs +1 -0
  112. package/dist/interact-outside-BplxR9cR.mjs +200 -0
  113. package/dist/interact-outside-C8-oFBpB.cjs +205 -0
  114. package/dist/interact-outside.cjs +5 -0
  115. package/dist/interact-outside.d.cts +2 -0
  116. package/dist/interact-outside.d.mts +2 -0
  117. package/dist/interact-outside.mjs +5 -0
  118. package/dist/json-tree-utils.cjs +1512 -0
  119. package/dist/json-tree-utils.d.cts +117 -0
  120. package/dist/json-tree-utils.d.mts +117 -0
  121. package/dist/json-tree-utils.mjs +1463 -0
  122. package/dist/list-collection-BIMJGQjn.d.cts +61 -0
  123. package/dist/list-collection-Db3eixRU.d.mts +61 -0
  124. package/dist/live-region-CcZPGo89.cjs +52 -0
  125. package/dist/live-region-CnPh21WH.mjs +46 -0
  126. package/dist/live-region.cjs +3 -0
  127. package/dist/live-region.d.cts +2 -0
  128. package/dist/live-region.d.mts +2 -0
  129. package/dist/live-region.mjs +3 -0
  130. package/dist/machines/accordion/index.cjs +328 -0
  131. package/dist/machines/accordion/index.d.cts +83 -0
  132. package/dist/machines/accordion/index.d.mts +83 -0
  133. package/dist/machines/accordion/index.mjs +322 -0
  134. package/dist/machines/async-list/index.cjs +311 -0
  135. package/dist/machines/async-list/index.d.cts +89 -0
  136. package/dist/machines/async-list/index.d.mts +89 -0
  137. package/dist/machines/async-list/index.mjs +310 -0
  138. package/dist/machines/avatar/index.cjs +169 -0
  139. package/dist/machines/avatar/index.d.cts +63 -0
  140. package/dist/machines/avatar/index.d.mts +63 -0
  141. package/dist/machines/avatar/index.mjs +165 -0
  142. package/dist/machines/bottom-sheet/index.cjs +676 -0
  143. package/dist/machines/bottom-sheet/index.d.cts +239 -0
  144. package/dist/machines/bottom-sheet/index.d.mts +239 -0
  145. package/dist/machines/bottom-sheet/index.mjs +672 -0
  146. package/dist/machines/carousel/index.cjs +859 -0
  147. package/dist/machines/carousel/index.d.cts +146 -0
  148. package/dist/machines/carousel/index.d.mts +146 -0
  149. package/dist/machines/carousel/index.mjs +851 -0
  150. package/dist/machines/checkbox/index.cjs +316 -0
  151. package/dist/machines/checkbox/index.d.cts +81 -0
  152. package/dist/machines/checkbox/index.d.mts +81 -0
  153. package/dist/machines/checkbox/index.mjs +312 -0
  154. package/dist/machines/clipboard/index.cjs +225 -0
  155. package/dist/machines/clipboard/index.d.cts +68 -0
  156. package/dist/machines/clipboard/index.d.mts +68 -0
  157. package/dist/machines/clipboard/index.mjs +219 -0
  158. package/dist/machines/collapsible/index.cjs +362 -0
  159. package/dist/machines/collapsible/index.d.cts +82 -0
  160. package/dist/machines/collapsible/index.d.mts +82 -0
  161. package/dist/machines/collapsible/index.mjs +358 -0
  162. package/dist/machines/color-picker/index.cjs +1529 -0
  163. package/dist/machines/color-picker/index.d.cts +205 -0
  164. package/dist/machines/color-picker/index.d.mts +205 -0
  165. package/dist/machines/color-picker/index.mjs +1514 -0
  166. package/dist/machines/combobox/index.cjs +1593 -0
  167. package/dist/machines/combobox/index.d.cts +214 -0
  168. package/dist/machines/combobox/index.d.mts +214 -0
  169. package/dist/machines/combobox/index.mjs +1582 -0
  170. package/dist/machines/date-picker/index.cjs +2177 -0
  171. package/dist/machines/date-picker/index.d.cts +350 -0
  172. package/dist/machines/date-picker/index.d.mts +350 -0
  173. package/dist/machines/date-picker/index.mjs +2161 -0
  174. package/dist/machines/dialog/index.cjs +325 -0
  175. package/dist/machines/dialog/index.d.cts +80 -0
  176. package/dist/machines/dialog/index.d.mts +80 -0
  177. package/dist/machines/dialog/index.mjs +321 -0
  178. package/dist/machines/editable/index.cjs +551 -0
  179. package/dist/machines/editable/index.d.cts +114 -0
  180. package/dist/machines/editable/index.d.mts +114 -0
  181. package/dist/machines/editable/index.mjs +547 -0
  182. package/dist/machines/floating-panel/index.cjs +995 -0
  183. package/dist/machines/floating-panel/index.d.cts +147 -0
  184. package/dist/machines/floating-panel/index.d.mts +147 -0
  185. package/dist/machines/floating-panel/index.mjs +988 -0
  186. package/dist/machines/hover-card/index.cjs +383 -0
  187. package/dist/machines/hover-card/index.d.cts +69 -0
  188. package/dist/machines/hover-card/index.d.mts +69 -0
  189. package/dist/machines/hover-card/index.mjs +379 -0
  190. package/dist/machines/image-cropper/index.cjs +1995 -0
  191. package/dist/machines/image-cropper/index.d.cts +182 -0
  192. package/dist/machines/image-cropper/index.d.mts +182 -0
  193. package/dist/machines/image-cropper/index.mjs +1990 -0
  194. package/dist/machines/listbox/index.cjs +794 -0
  195. package/dist/machines/listbox/index.d.cts +168 -0
  196. package/dist/machines/listbox/index.d.mts +168 -0
  197. package/dist/machines/listbox/index.mjs +782 -0
  198. package/dist/machines/marquee/index.cjs +395 -0
  199. package/dist/machines/marquee/index.d.cts +102 -0
  200. package/dist/machines/marquee/index.d.mts +102 -0
  201. package/dist/machines/marquee/index.mjs +391 -0
  202. package/dist/machines/menu/index.cjs +1298 -0
  203. package/dist/machines/menu/index.d.cts +175 -0
  204. package/dist/machines/menu/index.d.mts +175 -0
  205. package/dist/machines/menu/index.mjs +1286 -0
  206. package/dist/machines/navigation-menu/index.cjs +861 -0
  207. package/dist/machines/navigation-menu/index.d.cts +127 -0
  208. package/dist/machines/navigation-menu/index.d.mts +127 -0
  209. package/dist/machines/navigation-menu/index.mjs +857 -0
  210. package/dist/machines/number-input/index.cjs +996 -0
  211. package/dist/machines/number-input/index.d.cts +134 -0
  212. package/dist/machines/number-input/index.d.mts +134 -0
  213. package/dist/machines/number-input/index.mjs +991 -0
  214. package/dist/machines/pagination/index.cjs +419 -0
  215. package/dist/machines/pagination/index.d.cts +139 -0
  216. package/dist/machines/pagination/index.d.mts +139 -0
  217. package/dist/machines/pagination/index.mjs +411 -0
  218. package/dist/machines/password-input/index.cjs +228 -0
  219. package/dist/machines/password-input/index.d.cts +71 -0
  220. package/dist/machines/password-input/index.d.mts +71 -0
  221. package/dist/machines/password-input/index.mjs +224 -0
  222. package/dist/machines/pin-input/index.cjs +523 -0
  223. package/dist/machines/pin-input/index.d.cts +105 -0
  224. package/dist/machines/pin-input/index.d.mts +105 -0
  225. package/dist/machines/pin-input/index.mjs +519 -0
  226. package/dist/machines/popover/index.cjs +430 -0
  227. package/dist/machines/popover/index.d.cts +88 -0
  228. package/dist/machines/popover/index.d.mts +88 -0
  229. package/dist/machines/popover/index.mjs +426 -0
  230. package/dist/machines/presence/index.cjs +192 -0
  231. package/dist/machines/presence/index.d.cts +44 -0
  232. package/dist/machines/presence/index.d.mts +44 -0
  233. package/dist/machines/presence/index.mjs +190 -0
  234. package/dist/machines/progress/index.cjs +288 -0
  235. package/dist/machines/progress/index.d.cts +96 -0
  236. package/dist/machines/progress/index.d.mts +96 -0
  237. package/dist/machines/progress/index.mjs +284 -0
  238. package/dist/machines/qr-code/index.cjs +172 -0
  239. package/dist/machines/qr-code/index.d.cts +70 -0
  240. package/dist/machines/qr-code/index.d.mts +70 -0
  241. package/dist/machines/qr-code/index.mjs +167 -0
  242. package/dist/machines/radio-group/index.cjs +436 -0
  243. package/dist/machines/radio-group/index.d.cts +106 -0
  244. package/dist/machines/radio-group/index.d.mts +106 -0
  245. package/dist/machines/radio-group/index.mjs +430 -0
  246. package/dist/machines/rating-group/index.cjs +405 -0
  247. package/dist/machines/rating-group/index.d.cts +101 -0
  248. package/dist/machines/rating-group/index.d.mts +101 -0
  249. package/dist/machines/rating-group/index.mjs +399 -0
  250. package/dist/machines/scroll-area/index.cjs +857 -0
  251. package/dist/machines/scroll-area/index.d.cts +159 -0
  252. package/dist/machines/scroll-area/index.d.mts +159 -0
  253. package/dist/machines/scroll-area/index.mjs +853 -0
  254. package/dist/machines/select/index.cjs +1165 -0
  255. package/dist/machines/select/index.d.cts +183 -0
  256. package/dist/machines/select/index.d.mts +183 -0
  257. package/dist/machines/select/index.mjs +1154 -0
  258. package/dist/machines/signature-pad/index.cjs +334 -0
  259. package/dist/machines/signature-pad/index.d.cts +108 -0
  260. package/dist/machines/signature-pad/index.d.mts +108 -0
  261. package/dist/machines/signature-pad/index.mjs +328 -0
  262. package/dist/machines/slider/index.cjs +957 -0
  263. package/dist/machines/slider/index.d.cts +149 -0
  264. package/dist/machines/slider/index.d.mts +149 -0
  265. package/dist/machines/slider/index.mjs +949 -0
  266. package/dist/machines/splitter/index.cjs +1112 -0
  267. package/dist/machines/splitter/index.d.cts +155 -0
  268. package/dist/machines/splitter/index.d.mts +155 -0
  269. package/dist/machines/splitter/index.mjs +1103 -0
  270. package/dist/machines/steps/index.cjs +289 -0
  271. package/dist/machines/steps/index.d.cts +97 -0
  272. package/dist/machines/steps/index.d.mts +97 -0
  273. package/dist/machines/steps/index.mjs +285 -0
  274. package/dist/machines/switch/index.cjs +305 -0
  275. package/dist/machines/switch/index.d.cts +80 -0
  276. package/dist/machines/switch/index.d.mts +80 -0
  277. package/dist/machines/switch/index.mjs +301 -0
  278. package/dist/machines/tabs/index.cjs +508 -0
  279. package/dist/machines/tabs/index.d.cts +111 -0
  280. package/dist/machines/tabs/index.d.mts +111 -0
  281. package/dist/machines/tabs/index.mjs +500 -0
  282. package/dist/machines/tags-input/index.cjs +1127 -0
  283. package/dist/machines/tags-input/index.d.cts +179 -0
  284. package/dist/machines/tags-input/index.d.mts +179 -0
  285. package/dist/machines/tags-input/index.mjs +1121 -0
  286. package/dist/machines/timer/index.cjs +329 -0
  287. package/dist/machines/timer/index.d.cts +98 -0
  288. package/dist/machines/timer/index.d.mts +98 -0
  289. package/dist/machines/timer/index.mjs +324 -0
  290. package/dist/machines/toast/index.cjs +1155 -0
  291. package/dist/machines/toast/index.d.cts +195 -0
  292. package/dist/machines/toast/index.d.mts +195 -0
  293. package/dist/machines/toast/index.mjs +1151 -0
  294. package/dist/machines/toggle/index.cjs +103 -0
  295. package/dist/machines/toggle/index.d.cts +46 -0
  296. package/dist/machines/toggle/index.d.mts +46 -0
  297. package/dist/machines/toggle/index.mjs +99 -0
  298. package/dist/machines/toggle-group/index.cjs +328 -0
  299. package/dist/machines/toggle-group/index.d.cts +81 -0
  300. package/dist/machines/toggle-group/index.d.mts +81 -0
  301. package/dist/machines/toggle-group/index.mjs +322 -0
  302. package/dist/machines/tooltip/index.cjs +516 -0
  303. package/dist/machines/tooltip/index.d.cts +71 -0
  304. package/dist/machines/tooltip/index.d.mts +71 -0
  305. package/dist/machines/tooltip/index.mjs +512 -0
  306. package/dist/machines/tour/index.cjs +1108 -0
  307. package/dist/machines/tour/index.d.cts +206 -0
  308. package/dist/machines/tour/index.d.mts +206 -0
  309. package/dist/machines/tour/index.mjs +1101 -0
  310. package/dist/machines/tree-view/index.cjs +1271 -0
  311. package/dist/machines/tree-view/index.d.cts +215 -0
  312. package/dist/machines/tree-view/index.d.mts +215 -0
  313. package/dist/machines/tree-view/index.mjs +1263 -0
  314. package/dist/node-BctU8GXk.d.mts +24 -0
  315. package/dist/node-CSsuPZVZ.d.cts +24 -0
  316. package/dist/popper-BPJeAtcA.mjs +349 -0
  317. package/dist/popper-D0FAW_p7.cjs +373 -0
  318. package/dist/popper.cjs +8 -0
  319. package/dist/popper.d.cts +74 -0
  320. package/dist/popper.d.mts +2 -0
  321. package/dist/popper.mjs +5 -0
  322. package/dist/raf-BnlYUlDi.d.mts +15 -0
  323. package/dist/raf-Cd2FGy0z.d.cts +15 -0
  324. package/dist/rect-utils-0ellN0a_.mjs +854 -0
  325. package/dist/rect-utils-DKLRhP8G.cjs +1147 -0
  326. package/dist/rect-utils.cjs +51 -0
  327. package/dist/rect-utils.d.cts +198 -0
  328. package/dist/rect-utils.d.mts +198 -0
  329. package/dist/rect-utils.mjs +3 -0
  330. package/dist/remove-scroll-Lrfv79X_.mjs +58 -0
  331. package/dist/remove-scroll-Uvzg1L9r.cjs +63 -0
  332. package/dist/remove-scroll.cjs +0 -0
  333. package/dist/remove-scroll.d.cts +1 -0
  334. package/dist/remove-scroll.d.mts +1 -0
  335. package/dist/remove-scroll.mjs +1 -0
  336. package/dist/scroll-snap-CrTmQRzA.mjs +152 -0
  337. package/dist/scroll-snap-zyiZLv7W.cjs +175 -0
  338. package/dist/scroll-snap.cjs +7 -0
  339. package/dist/scroll-snap.d.cts +14 -0
  340. package/dist/scroll-snap.d.mts +14 -0
  341. package/dist/scroll-snap.mjs +4 -0
  342. package/dist/selection-BIhSzkF7.d.mts +50 -0
  343. package/dist/selection-CS1GBp8e.d.cts +50 -0
  344. package/dist/store-BZcXv49B.cjs +305 -0
  345. package/dist/store-DEojWy9H.mjs +263 -0
  346. package/dist/store.cjs +9 -0
  347. package/dist/store.d.cts +26 -0
  348. package/dist/store.d.mts +26 -0
  349. package/dist/store.mjs +3 -0
  350. package/dist/stringify-state.cjs +49 -0
  351. package/dist/stringify-state.d.cts +8 -0
  352. package/dist/stringify-state.d.mts +8 -0
  353. package/dist/stringify-state.mjs +46 -0
  354. package/dist/tree-collection-BwU5WhGQ.d.mts +78 -0
  355. package/dist/tree-collection-DP_eznnI.d.cts +78 -0
  356. package/dist/typeahead-BdNwVP09.d.cts +45 -0
  357. package/dist/typeahead-XN6lZ7G9.d.mts +45 -0
  358. package/dist/types-BivBkYg9.d.cts +57 -0
  359. package/dist/types-Bl_6JtPQ.d.mts +57 -0
  360. package/dist/types-CPUMVt7c.d.mts +54 -0
  361. package/dist/types-CT_W6HWr.d.cts +54 -0
  362. package/dist/types-DDTcG99l.d.mts +201 -0
  363. package/dist/types-DejIu60O.d.cts +201 -0
  364. package/dist/types-DiIdKZ3K.d.cts +45 -0
  365. package/dist/types-GxLIgJib.d.cts +17 -0
  366. package/dist/types.cjs +15 -0
  367. package/dist/types.d.cts +2 -0
  368. package/dist/types.d.mts +2 -0
  369. package/dist/types.mjs +14 -0
  370. package/dist/utils-BZyrxWWR.mjs +525 -0
  371. package/dist/utils-_6frwjgJ.cjs +1040 -0
  372. package/dist/utils.cjs +88 -0
  373. package/dist/utils.d.cts +144 -0
  374. package/dist/utils.d.mts +144 -0
  375. package/dist/utils.mjs +3 -0
  376. package/dist/wait-for-CMjPsqWk.d.cts +10 -0
  377. package/dist/wait-for-D2nkdD4z.d.mts +10 -0
  378. package/package.json +399 -0
@@ -0,0 +1,210 @@
1
+ const require_dom_query = require('./dom-query-CWZdWUGp.cjs');
2
+
3
+ //#region src/shared/focus-visible/index.ts
4
+ function isValidKey(e) {
5
+ return !(e.metaKey || !require_dom_query.isMac() && e.altKey || e.ctrlKey || e.key === "Control" || e.key === "Shift" || e.key === "Meta");
6
+ }
7
+ const nonTextInputTypes = new Set([
8
+ "checkbox",
9
+ "radio",
10
+ "range",
11
+ "color",
12
+ "file",
13
+ "image",
14
+ "button",
15
+ "submit",
16
+ "reset"
17
+ ]);
18
+ function isKeyboardFocusEvent(isTextInput, modality, e) {
19
+ const target = e ? require_dom_query.getEventTarget(e) : null;
20
+ const win = require_dom_query.getWindow(target);
21
+ isTextInput = isTextInput || target instanceof win.HTMLInputElement && !nonTextInputTypes.has(target?.type) || target instanceof win.HTMLTextAreaElement || target instanceof win.HTMLElement && target.isContentEditable;
22
+ return !(isTextInput && modality === "keyboard" && e instanceof win.KeyboardEvent && !Reflect.has(FOCUS_VISIBLE_INPUT_KEYS, e.key));
23
+ }
24
+ let currentModality = null;
25
+ let changeHandlers = /* @__PURE__ */ new Set();
26
+ let listenerMap = /* @__PURE__ */ new Map();
27
+ let hasEventBeforeFocus = false;
28
+ let hasBlurredWindowRecently = false;
29
+ const FOCUS_VISIBLE_INPUT_KEYS = {
30
+ Tab: true,
31
+ Escape: true
32
+ };
33
+ function triggerChangeHandlers(modality, e) {
34
+ for (let handler of changeHandlers) handler(modality, e);
35
+ }
36
+ function handleKeyboardEvent(e) {
37
+ hasEventBeforeFocus = true;
38
+ if (isValidKey(e)) {
39
+ currentModality = "keyboard";
40
+ triggerChangeHandlers("keyboard", e);
41
+ }
42
+ }
43
+ function handlePointerEvent(e) {
44
+ currentModality = "pointer";
45
+ if (e.type === "mousedown" || e.type === "pointerdown") {
46
+ hasEventBeforeFocus = true;
47
+ triggerChangeHandlers("pointer", e);
48
+ }
49
+ }
50
+ function handleClickEvent(e) {
51
+ if (require_dom_query.isVirtualClick(e)) {
52
+ hasEventBeforeFocus = true;
53
+ currentModality = "virtual";
54
+ }
55
+ }
56
+ function handleFocusEvent(e) {
57
+ const target = require_dom_query.getEventTarget(e);
58
+ if (target === require_dom_query.getWindow(target) || target === require_dom_query.getDocument(target)) return;
59
+ if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {
60
+ currentModality = "virtual";
61
+ triggerChangeHandlers("virtual", e);
62
+ }
63
+ hasEventBeforeFocus = false;
64
+ hasBlurredWindowRecently = false;
65
+ }
66
+ function handleWindowBlur() {
67
+ hasEventBeforeFocus = false;
68
+ hasBlurredWindowRecently = true;
69
+ }
70
+ function setupGlobalFocusEvents(root) {
71
+ if (typeof window === "undefined" || listenerMap.get(require_dom_query.getWindow(root))) return;
72
+ const win = require_dom_query.getWindow(root);
73
+ const doc = require_dom_query.getDocument(root);
74
+ let focus = win.HTMLElement.prototype.focus;
75
+ function patchedFocus() {
76
+ currentModality = "virtual";
77
+ triggerChangeHandlers("virtual", null);
78
+ hasEventBeforeFocus = true;
79
+ focus.apply(this, arguments);
80
+ }
81
+ try {
82
+ Object.defineProperty(win.HTMLElement.prototype, "focus", {
83
+ configurable: true,
84
+ value: patchedFocus
85
+ });
86
+ } catch {}
87
+ doc.addEventListener("keydown", handleKeyboardEvent, true);
88
+ doc.addEventListener("keyup", handleKeyboardEvent, true);
89
+ doc.addEventListener("click", handleClickEvent, true);
90
+ win.addEventListener("focus", handleFocusEvent, true);
91
+ win.addEventListener("blur", handleWindowBlur, false);
92
+ if (typeof win.PointerEvent !== "undefined") {
93
+ doc.addEventListener("pointerdown", handlePointerEvent, true);
94
+ doc.addEventListener("pointermove", handlePointerEvent, true);
95
+ doc.addEventListener("pointerup", handlePointerEvent, true);
96
+ } else {
97
+ doc.addEventListener("mousedown", handlePointerEvent, true);
98
+ doc.addEventListener("mousemove", handlePointerEvent, true);
99
+ doc.addEventListener("mouseup", handlePointerEvent, true);
100
+ }
101
+ win.addEventListener("beforeunload", () => {
102
+ tearDownWindowFocusTracking(root);
103
+ }, { once: true });
104
+ listenerMap.set(win, { focus });
105
+ }
106
+ const tearDownWindowFocusTracking = (root, loadListener) => {
107
+ const win = require_dom_query.getWindow(root);
108
+ const doc = require_dom_query.getDocument(root);
109
+ if (loadListener) doc.removeEventListener("DOMContentLoaded", loadListener);
110
+ const listenerData = listenerMap.get(win);
111
+ if (!listenerData) return;
112
+ try {
113
+ Object.defineProperty(win.HTMLElement.prototype, "focus", {
114
+ configurable: true,
115
+ value: listenerData.focus
116
+ });
117
+ } catch {}
118
+ doc.removeEventListener("keydown", handleKeyboardEvent, true);
119
+ doc.removeEventListener("keyup", handleKeyboardEvent, true);
120
+ doc.removeEventListener("click", handleClickEvent, true);
121
+ win.removeEventListener("focus", handleFocusEvent, true);
122
+ win.removeEventListener("blur", handleWindowBlur, false);
123
+ if (typeof win.PointerEvent !== "undefined") {
124
+ doc.removeEventListener("pointerdown", handlePointerEvent, true);
125
+ doc.removeEventListener("pointermove", handlePointerEvent, true);
126
+ doc.removeEventListener("pointerup", handlePointerEvent, true);
127
+ } else {
128
+ doc.removeEventListener("mousedown", handlePointerEvent, true);
129
+ doc.removeEventListener("mousemove", handlePointerEvent, true);
130
+ doc.removeEventListener("mouseup", handlePointerEvent, true);
131
+ }
132
+ listenerMap.delete(win);
133
+ };
134
+ function getInteractionModality() {
135
+ return currentModality;
136
+ }
137
+ function setInteractionModality(modality) {
138
+ currentModality = modality;
139
+ triggerChangeHandlers(modality, null);
140
+ }
141
+ function trackInteractionModality(props) {
142
+ const { onChange, root } = props;
143
+ setupGlobalFocusEvents(root);
144
+ onChange({ modality: currentModality });
145
+ const handler = () => onChange({ modality: currentModality });
146
+ changeHandlers.add(handler);
147
+ return () => {
148
+ changeHandlers.delete(handler);
149
+ };
150
+ }
151
+ function isFocusVisible() {
152
+ return currentModality === "keyboard";
153
+ }
154
+ function trackFocusVisible(props = {}) {
155
+ const { isTextInput, autoFocus, onChange, root } = props;
156
+ setupGlobalFocusEvents(root);
157
+ onChange?.({
158
+ isFocusVisible: autoFocus || isFocusVisible(),
159
+ modality: currentModality
160
+ });
161
+ const handler = (modality, e) => {
162
+ if (!isKeyboardFocusEvent(!!isTextInput, modality, e)) return;
163
+ onChange?.({
164
+ isFocusVisible: isFocusVisible(),
165
+ modality
166
+ });
167
+ };
168
+ changeHandlers.add(handler);
169
+ return () => {
170
+ changeHandlers.delete(handler);
171
+ };
172
+ }
173
+
174
+ //#endregion
175
+ Object.defineProperty(exports, 'getInteractionModality', {
176
+ enumerable: true,
177
+ get: function () {
178
+ return getInteractionModality;
179
+ }
180
+ });
181
+ Object.defineProperty(exports, 'isFocusVisible', {
182
+ enumerable: true,
183
+ get: function () {
184
+ return isFocusVisible;
185
+ }
186
+ });
187
+ Object.defineProperty(exports, 'listenerMap', {
188
+ enumerable: true,
189
+ get: function () {
190
+ return listenerMap;
191
+ }
192
+ });
193
+ Object.defineProperty(exports, 'setInteractionModality', {
194
+ enumerable: true,
195
+ get: function () {
196
+ return setInteractionModality;
197
+ }
198
+ });
199
+ Object.defineProperty(exports, 'trackFocusVisible', {
200
+ enumerable: true,
201
+ get: function () {
202
+ return trackFocusVisible;
203
+ }
204
+ });
205
+ Object.defineProperty(exports, 'trackInteractionModality', {
206
+ enumerable: true,
207
+ get: function () {
208
+ return trackInteractionModality;
209
+ }
210
+ });
@@ -0,0 +1,175 @@
1
+ import { Lt as isMac, Qt as getDocument, Tt as isVirtualClick, ft as getEventTarget, rn as getWindow } from "./dom-query-DFCRhyj1.mjs";
2
+
3
+ //#region src/shared/focus-visible/index.ts
4
+ function isValidKey(e) {
5
+ return !(e.metaKey || !isMac() && e.altKey || e.ctrlKey || e.key === "Control" || e.key === "Shift" || e.key === "Meta");
6
+ }
7
+ const nonTextInputTypes = new Set([
8
+ "checkbox",
9
+ "radio",
10
+ "range",
11
+ "color",
12
+ "file",
13
+ "image",
14
+ "button",
15
+ "submit",
16
+ "reset"
17
+ ]);
18
+ function isKeyboardFocusEvent(isTextInput, modality, e) {
19
+ const target = e ? getEventTarget(e) : null;
20
+ const win = getWindow(target);
21
+ isTextInput = isTextInput || target instanceof win.HTMLInputElement && !nonTextInputTypes.has(target?.type) || target instanceof win.HTMLTextAreaElement || target instanceof win.HTMLElement && target.isContentEditable;
22
+ return !(isTextInput && modality === "keyboard" && e instanceof win.KeyboardEvent && !Reflect.has(FOCUS_VISIBLE_INPUT_KEYS, e.key));
23
+ }
24
+ let currentModality = null;
25
+ let changeHandlers = /* @__PURE__ */ new Set();
26
+ let listenerMap = /* @__PURE__ */ new Map();
27
+ let hasEventBeforeFocus = false;
28
+ let hasBlurredWindowRecently = false;
29
+ const FOCUS_VISIBLE_INPUT_KEYS = {
30
+ Tab: true,
31
+ Escape: true
32
+ };
33
+ function triggerChangeHandlers(modality, e) {
34
+ for (let handler of changeHandlers) handler(modality, e);
35
+ }
36
+ function handleKeyboardEvent(e) {
37
+ hasEventBeforeFocus = true;
38
+ if (isValidKey(e)) {
39
+ currentModality = "keyboard";
40
+ triggerChangeHandlers("keyboard", e);
41
+ }
42
+ }
43
+ function handlePointerEvent(e) {
44
+ currentModality = "pointer";
45
+ if (e.type === "mousedown" || e.type === "pointerdown") {
46
+ hasEventBeforeFocus = true;
47
+ triggerChangeHandlers("pointer", e);
48
+ }
49
+ }
50
+ function handleClickEvent(e) {
51
+ if (isVirtualClick(e)) {
52
+ hasEventBeforeFocus = true;
53
+ currentModality = "virtual";
54
+ }
55
+ }
56
+ function handleFocusEvent(e) {
57
+ const target = getEventTarget(e);
58
+ if (target === getWindow(target) || target === getDocument(target)) return;
59
+ if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {
60
+ currentModality = "virtual";
61
+ triggerChangeHandlers("virtual", e);
62
+ }
63
+ hasEventBeforeFocus = false;
64
+ hasBlurredWindowRecently = false;
65
+ }
66
+ function handleWindowBlur() {
67
+ hasEventBeforeFocus = false;
68
+ hasBlurredWindowRecently = true;
69
+ }
70
+ function setupGlobalFocusEvents(root) {
71
+ if (typeof window === "undefined" || listenerMap.get(getWindow(root))) return;
72
+ const win = getWindow(root);
73
+ const doc = getDocument(root);
74
+ let focus = win.HTMLElement.prototype.focus;
75
+ function patchedFocus() {
76
+ currentModality = "virtual";
77
+ triggerChangeHandlers("virtual", null);
78
+ hasEventBeforeFocus = true;
79
+ focus.apply(this, arguments);
80
+ }
81
+ try {
82
+ Object.defineProperty(win.HTMLElement.prototype, "focus", {
83
+ configurable: true,
84
+ value: patchedFocus
85
+ });
86
+ } catch {}
87
+ doc.addEventListener("keydown", handleKeyboardEvent, true);
88
+ doc.addEventListener("keyup", handleKeyboardEvent, true);
89
+ doc.addEventListener("click", handleClickEvent, true);
90
+ win.addEventListener("focus", handleFocusEvent, true);
91
+ win.addEventListener("blur", handleWindowBlur, false);
92
+ if (typeof win.PointerEvent !== "undefined") {
93
+ doc.addEventListener("pointerdown", handlePointerEvent, true);
94
+ doc.addEventListener("pointermove", handlePointerEvent, true);
95
+ doc.addEventListener("pointerup", handlePointerEvent, true);
96
+ } else {
97
+ doc.addEventListener("mousedown", handlePointerEvent, true);
98
+ doc.addEventListener("mousemove", handlePointerEvent, true);
99
+ doc.addEventListener("mouseup", handlePointerEvent, true);
100
+ }
101
+ win.addEventListener("beforeunload", () => {
102
+ tearDownWindowFocusTracking(root);
103
+ }, { once: true });
104
+ listenerMap.set(win, { focus });
105
+ }
106
+ const tearDownWindowFocusTracking = (root, loadListener) => {
107
+ const win = getWindow(root);
108
+ const doc = getDocument(root);
109
+ if (loadListener) doc.removeEventListener("DOMContentLoaded", loadListener);
110
+ const listenerData = listenerMap.get(win);
111
+ if (!listenerData) return;
112
+ try {
113
+ Object.defineProperty(win.HTMLElement.prototype, "focus", {
114
+ configurable: true,
115
+ value: listenerData.focus
116
+ });
117
+ } catch {}
118
+ doc.removeEventListener("keydown", handleKeyboardEvent, true);
119
+ doc.removeEventListener("keyup", handleKeyboardEvent, true);
120
+ doc.removeEventListener("click", handleClickEvent, true);
121
+ win.removeEventListener("focus", handleFocusEvent, true);
122
+ win.removeEventListener("blur", handleWindowBlur, false);
123
+ if (typeof win.PointerEvent !== "undefined") {
124
+ doc.removeEventListener("pointerdown", handlePointerEvent, true);
125
+ doc.removeEventListener("pointermove", handlePointerEvent, true);
126
+ doc.removeEventListener("pointerup", handlePointerEvent, true);
127
+ } else {
128
+ doc.removeEventListener("mousedown", handlePointerEvent, true);
129
+ doc.removeEventListener("mousemove", handlePointerEvent, true);
130
+ doc.removeEventListener("mouseup", handlePointerEvent, true);
131
+ }
132
+ listenerMap.delete(win);
133
+ };
134
+ function getInteractionModality() {
135
+ return currentModality;
136
+ }
137
+ function setInteractionModality(modality) {
138
+ currentModality = modality;
139
+ triggerChangeHandlers(modality, null);
140
+ }
141
+ function trackInteractionModality(props) {
142
+ const { onChange, root } = props;
143
+ setupGlobalFocusEvents(root);
144
+ onChange({ modality: currentModality });
145
+ const handler = () => onChange({ modality: currentModality });
146
+ changeHandlers.add(handler);
147
+ return () => {
148
+ changeHandlers.delete(handler);
149
+ };
150
+ }
151
+ function isFocusVisible() {
152
+ return currentModality === "keyboard";
153
+ }
154
+ function trackFocusVisible(props = {}) {
155
+ const { isTextInput, autoFocus, onChange, root } = props;
156
+ setupGlobalFocusEvents(root);
157
+ onChange?.({
158
+ isFocusVisible: autoFocus || isFocusVisible(),
159
+ modality: currentModality
160
+ });
161
+ const handler = (modality, e) => {
162
+ if (!isKeyboardFocusEvent(!!isTextInput, modality, e)) return;
163
+ onChange?.({
164
+ isFocusVisible: isFocusVisible(),
165
+ modality
166
+ });
167
+ };
168
+ changeHandlers.add(handler);
169
+ return () => {
170
+ changeHandlers.delete(handler);
171
+ };
172
+ }
173
+
174
+ //#endregion
175
+ export { trackFocusVisible as a, setInteractionModality as i, isFocusVisible as n, trackInteractionModality as o, listenerMap as r, getInteractionModality as t };
@@ -0,0 +1,9 @@
1
+ require('./dom-query-CWZdWUGp.cjs');
2
+ const require_focus_visible = require('./focus-visible-DYTWdWpa.cjs');
3
+
4
+ exports.getInteractionModality = require_focus_visible.getInteractionModality;
5
+ exports.isFocusVisible = require_focus_visible.isFocusVisible;
6
+ exports.listenerMap = require_focus_visible.listenerMap;
7
+ exports.setInteractionModality = require_focus_visible.setInteractionModality;
8
+ exports.trackFocusVisible = require_focus_visible.trackFocusVisible;
9
+ exports.trackInteractionModality = require_focus_visible.trackInteractionModality;
@@ -0,0 +1,31 @@
1
+ //#region src/shared/focus-visible/index.d.ts
2
+ type Modality = "keyboard" | "pointer" | "virtual";
3
+ type RootNode = Document | ShadowRoot | Node;
4
+ interface GlobalListenerData {
5
+ focus: VoidFunction;
6
+ }
7
+ declare let listenerMap: Map<Window, GlobalListenerData>;
8
+ declare function getInteractionModality(): Modality | null;
9
+ declare function setInteractionModality(modality: Modality): void;
10
+ interface InteractionModalityChangeDetails {
11
+ modality: Modality | null;
12
+ }
13
+ interface InteractionModalityProps {
14
+ root?: RootNode | undefined;
15
+ onChange: (details: InteractionModalityChangeDetails) => void;
16
+ }
17
+ declare function trackInteractionModality(props: InteractionModalityProps): VoidFunction;
18
+ declare function isFocusVisible(): boolean;
19
+ interface FocusVisibleChangeDetails {
20
+ isFocusVisible: boolean;
21
+ modality: Modality | null;
22
+ }
23
+ interface FocusVisibleProps {
24
+ root?: RootNode | undefined;
25
+ isTextInput?: boolean | undefined;
26
+ autoFocus?: boolean | undefined;
27
+ onChange?: ((details: FocusVisibleChangeDetails) => void) | undefined;
28
+ }
29
+ declare function trackFocusVisible(props?: FocusVisibleProps): VoidFunction;
30
+ //#endregion
31
+ export { FocusVisibleChangeDetails, FocusVisibleProps, InteractionModalityChangeDetails, InteractionModalityProps, Modality, getInteractionModality, isFocusVisible, listenerMap, setInteractionModality, trackFocusVisible, trackInteractionModality };
@@ -0,0 +1,31 @@
1
+ //#region src/shared/focus-visible/index.d.ts
2
+ type Modality = "keyboard" | "pointer" | "virtual";
3
+ type RootNode = Document | ShadowRoot | Node;
4
+ interface GlobalListenerData {
5
+ focus: VoidFunction;
6
+ }
7
+ declare let listenerMap: Map<Window, GlobalListenerData>;
8
+ declare function getInteractionModality(): Modality | null;
9
+ declare function setInteractionModality(modality: Modality): void;
10
+ interface InteractionModalityChangeDetails {
11
+ modality: Modality | null;
12
+ }
13
+ interface InteractionModalityProps {
14
+ root?: RootNode | undefined;
15
+ onChange: (details: InteractionModalityChangeDetails) => void;
16
+ }
17
+ declare function trackInteractionModality(props: InteractionModalityProps): VoidFunction;
18
+ declare function isFocusVisible(): boolean;
19
+ interface FocusVisibleChangeDetails {
20
+ isFocusVisible: boolean;
21
+ modality: Modality | null;
22
+ }
23
+ interface FocusVisibleProps {
24
+ root?: RootNode | undefined;
25
+ isTextInput?: boolean | undefined;
26
+ autoFocus?: boolean | undefined;
27
+ onChange?: ((details: FocusVisibleChangeDetails) => void) | undefined;
28
+ }
29
+ declare function trackFocusVisible(props?: FocusVisibleProps): VoidFunction;
30
+ //#endregion
31
+ export { FocusVisibleChangeDetails, FocusVisibleProps, InteractionModalityChangeDetails, InteractionModalityProps, Modality, getInteractionModality, isFocusVisible, listenerMap, setInteractionModality, trackFocusVisible, trackInteractionModality };
@@ -0,0 +1,4 @@
1
+ import "./dom-query-DFCRhyj1.mjs";
2
+ import { a as trackFocusVisible, i as setInteractionModality, n as isFocusVisible, o as trackInteractionModality, r as listenerMap, t as getInteractionModality } from "./focus-visible-irppYatv.mjs";
3
+
4
+ export { getInteractionModality, isFocusVisible, listenerMap, setInteractionModality, trackFocusVisible, trackInteractionModality };
@@ -0,0 +1,15 @@
1
+ //#region src/shared/utils/functions.d.ts
2
+ type MaybeFunction<T> = T | (() => T);
3
+ type Nullable<T> = T | null | undefined;
4
+ declare const runIfFn: <T>(v: T | undefined, ...a: T extends ((...a: any[]) => void) ? Parameters<T> : never) => T extends ((...a: any[]) => void) ? NonNullable<ReturnType<T>> : NonNullable<T>;
5
+ declare const cast: <T>(v: unknown) => T;
6
+ declare const identity: (v: VoidFunction) => void;
7
+ declare const noop: () => void;
8
+ declare const callAll: <T extends (...a: any[]) => void>(...fns: (T | null | undefined)[]) => (...a: Parameters<T>) => void;
9
+ declare const uuid: () => string;
10
+ declare function match<V extends string | number = string, R = unknown>(key: V, record: Record<V, R | ((...args: any[]) => R)>, ...args: any[]): R;
11
+ declare const tryCatch: <R>(fn: () => R, fallback: () => R) => R;
12
+ declare function throttle<T extends (...args: any[]) => void>(fn: T, wait?: number): T;
13
+ declare function debounce<T extends (...args: any[]) => void>(fn: T, wait?: number): T;
14
+ //#endregion
15
+ export { debounce as a, noop as c, tryCatch as d, uuid as f, cast as i, runIfFn as l, Nullable as n, identity as o, callAll as r, match as s, MaybeFunction as t, throttle as u };
@@ -0,0 +1,15 @@
1
+ //#region src/shared/utils/functions.d.ts
2
+ type MaybeFunction<T> = T | (() => T);
3
+ type Nullable<T> = T | null | undefined;
4
+ declare const runIfFn: <T>(v: T | undefined, ...a: T extends ((...a: any[]) => void) ? Parameters<T> : never) => T extends ((...a: any[]) => void) ? NonNullable<ReturnType<T>> : NonNullable<T>;
5
+ declare const cast: <T>(v: unknown) => T;
6
+ declare const identity: (v: VoidFunction) => void;
7
+ declare const noop: () => void;
8
+ declare const callAll: <T extends (...a: any[]) => void>(...fns: (T | null | undefined)[]) => (...a: Parameters<T>) => void;
9
+ declare const uuid: () => string;
10
+ declare function match<V extends string | number = string, R = unknown>(key: V, record: Record<V, R | ((...args: any[]) => R)>, ...args: any[]): R;
11
+ declare const tryCatch: <R>(fn: () => R, fallback: () => R) => R;
12
+ declare function throttle<T extends (...args: any[]) => void>(fn: T, wait?: number): T;
13
+ declare function debounce<T extends (...args: any[]) => void>(fn: T, wait?: number): T;
14
+ //#endregion
15
+ export { debounce as a, noop as c, tryCatch as d, uuid as f, cast as i, runIfFn as l, Nullable as n, identity as o, callAll as r, match as s, MaybeFunction as t, throttle as u };
@@ -0,0 +1,100 @@
1
+
2
+ //#region src/shared/highlight-word/normalize-span.ts
3
+ const normalizeSpan = (spans, len) => {
4
+ const result = [];
5
+ const append = (start, end, match) => {
6
+ if (end - start > 0) result.push({
7
+ start,
8
+ end,
9
+ match
10
+ });
11
+ };
12
+ if (spans.length === 0) append(0, len, false);
13
+ else {
14
+ let lastIndex = 0;
15
+ for (const chunk of spans) {
16
+ append(lastIndex, chunk.start, false);
17
+ append(chunk.start, chunk.end, true);
18
+ lastIndex = chunk.end;
19
+ }
20
+ append(lastIndex, len, false);
21
+ }
22
+ return result;
23
+ };
24
+
25
+ //#endregion
26
+ //#region src/shared/highlight-word/escape-regex.ts
27
+ const escapeRegex = (term) => term.replace(/[|\\{}()[\]^$+*?.-]/g, (char) => `\\${char}`);
28
+
29
+ //#endregion
30
+ //#region src/shared/highlight-word/highlight-first.ts
31
+ function highlightFirst(props) {
32
+ const { text, query, ignoreCase, exactMatch } = props;
33
+ if (exactMatch) {
34
+ const escapedQuery = escapeRegex(query);
35
+ const regex = new RegExp(`\\b(${escapedQuery})\\b`, ignoreCase ? "i" : "");
36
+ const match = text.match(regex);
37
+ if (!match || match.index === void 0) return [{
38
+ text,
39
+ match: false
40
+ }];
41
+ const start$1 = match.index;
42
+ return normalizeSpan([{
43
+ start: start$1,
44
+ end: start$1 + match[0].length
45
+ }], text.length).map((chunk) => ({
46
+ text: text.slice(chunk.start, chunk.end),
47
+ match: !!chunk.match
48
+ }));
49
+ }
50
+ const searchText = ignoreCase ? text.toLowerCase() : text;
51
+ const searchQuery = ignoreCase ? typeof query === "string" ? query.toLowerCase() : query : query;
52
+ const start = typeof searchText === "string" ? searchText.indexOf(searchQuery) : -1;
53
+ if (start === -1) return [{
54
+ text,
55
+ match: false
56
+ }];
57
+ return normalizeSpan([{
58
+ start,
59
+ end: start + searchQuery.length
60
+ }], text.length).map((chunk) => ({
61
+ text: text.slice(chunk.start, chunk.end),
62
+ match: !!chunk.match
63
+ }));
64
+ }
65
+
66
+ //#endregion
67
+ //#region src/shared/highlight-word/highlight-multiple.ts
68
+ const buildRegex = (queryProp, flags, exactMatch) => {
69
+ const query = queryProp.filter(Boolean).map((text) => escapeRegex(text));
70
+ const pattern = exactMatch ? `\\b(${query.join("|")})\\b` : `(${query.join("|")})`;
71
+ return new RegExp(pattern, flags);
72
+ };
73
+ const getRegexFlags = (ignoreCase, matchAll = true) => `${ignoreCase ? "i" : ""}${matchAll ? "g" : ""}`;
74
+ function highlightMultiple(props) {
75
+ const { text, query, ignoreCase, matchAll, exactMatch } = props;
76
+ if (query.length === 0) return [{
77
+ text,
78
+ match: false
79
+ }];
80
+ const flags = getRegexFlags(ignoreCase, matchAll);
81
+ const regex = buildRegex(Array.isArray(query) ? query : [query], flags, exactMatch);
82
+ return normalizeSpan([...text.matchAll(regex)].map((match) => ({
83
+ start: match.index || 0,
84
+ end: (match.index || 0) + match[0].length
85
+ })), props.text.length).map((chunk) => ({
86
+ text: props.text.slice(chunk.start, chunk.end),
87
+ match: !!chunk.match
88
+ }));
89
+ }
90
+
91
+ //#endregion
92
+ //#region src/shared/highlight-word/highlight.ts
93
+ const highlightWord = (props) => {
94
+ if (props.matchAll == null) props.matchAll = Array.isArray(props.query);
95
+ if (!props.matchAll && Array.isArray(props.query)) throw new Error("matchAll must be true when using multiple queries");
96
+ return props.matchAll ? highlightMultiple(props) : highlightFirst(props);
97
+ };
98
+
99
+ //#endregion
100
+ exports.highlightWord = highlightWord;
@@ -0,0 +1,24 @@
1
+ //#region src/shared/highlight-word/types.d.ts
2
+ interface HighlightRegexOptions {
3
+ ignoreCase?: boolean | undefined;
4
+ matchAll?: boolean | undefined;
5
+ exactMatch?: boolean | undefined;
6
+ }
7
+ interface HighlightWordProps extends HighlightRegexOptions {
8
+ text: string;
9
+ query: string | string[];
10
+ }
11
+ interface HighlightChunk {
12
+ text: string;
13
+ match: boolean;
14
+ }
15
+ interface HighlightSpan {
16
+ start: number;
17
+ end: number;
18
+ match?: boolean | undefined;
19
+ }
20
+ //#endregion
21
+ //#region src/shared/highlight-word/highlight.d.ts
22
+ declare const highlightWord: (props: HighlightWordProps) => HighlightChunk[];
23
+ //#endregion
24
+ export { HighlightChunk, HighlightSpan, HighlightWordProps, highlightWord };
@@ -0,0 +1,24 @@
1
+ //#region src/shared/highlight-word/types.d.ts
2
+ interface HighlightRegexOptions {
3
+ ignoreCase?: boolean | undefined;
4
+ matchAll?: boolean | undefined;
5
+ exactMatch?: boolean | undefined;
6
+ }
7
+ interface HighlightWordProps extends HighlightRegexOptions {
8
+ text: string;
9
+ query: string | string[];
10
+ }
11
+ interface HighlightChunk {
12
+ text: string;
13
+ match: boolean;
14
+ }
15
+ interface HighlightSpan {
16
+ start: number;
17
+ end: number;
18
+ match?: boolean | undefined;
19
+ }
20
+ //#endregion
21
+ //#region src/shared/highlight-word/highlight.d.ts
22
+ declare const highlightWord: (props: HighlightWordProps) => HighlightChunk[];
23
+ //#endregion
24
+ export { HighlightChunk, HighlightSpan, HighlightWordProps, highlightWord };