@hortonstudio/main 1.2.12 → 1.2.13

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 (490) hide show
  1. package/index.js +8 -8
  2. package/package.json +17 -6
  3. package/.claude/settings.local.json +0 -21
  4. package/animations/hero.js +0 -599
  5. package/animations/text.js +0 -369
  6. package/animations/transition.js +0 -57
  7. package/attributes-master/.changeset/README.md +0 -8
  8. package/attributes-master/.changeset/config.json +0 -11
  9. package/attributes-master/.gitattributes +0 -2
  10. package/attributes-master/.github/ISSUE_TEMPLATE/bug_report.md +0 -42
  11. package/attributes-master/.github/ISSUE_TEMPLATE/feature_request.md +0 -22
  12. package/attributes-master/.github/workflows/ci.yml +0 -66
  13. package/attributes-master/.github/workflows/release.yml +0 -40
  14. package/attributes-master/.prettierignore +0 -3
  15. package/attributes-master/.prettierrc +0 -8
  16. package/attributes-master/.vscode/extensions.json +0 -3
  17. package/attributes-master/.vscode/settings.json +0 -7
  18. package/attributes-master/CONTRIBUTING.md +0 -72
  19. package/attributes-master/LICENSE.md +0 -201
  20. package/attributes-master/README.md +0 -31
  21. package/attributes-master/eslint.config.js +0 -3
  22. package/attributes-master/package.json +0 -34
  23. package/attributes-master/packages/accordion/CHANGELOG.md +0 -89
  24. package/attributes-master/packages/accordion/README.md +0 -31
  25. package/attributes-master/packages/accordion/package.json +0 -25
  26. package/attributes-master/packages/accordion/src/actions/a11y.ts +0 -39
  27. package/attributes-master/packages/accordion/src/actions/classes.ts +0 -27
  28. package/attributes-master/packages/accordion/src/actions/content.ts +0 -42
  29. package/attributes-master/packages/accordion/src/actions/list.ts +0 -36
  30. package/attributes-master/packages/accordion/src/actions/query.ts +0 -27
  31. package/attributes-master/packages/accordion/src/actions/settings.ts +0 -61
  32. package/attributes-master/packages/accordion/src/factory.ts +0 -145
  33. package/attributes-master/packages/accordion/src/index.ts +0 -3
  34. package/attributes-master/packages/accordion/src/init.ts +0 -37
  35. package/attributes-master/packages/accordion/src/utils/constants.ts +0 -62
  36. package/attributes-master/packages/accordion/src/utils/helpers.ts +0 -5
  37. package/attributes-master/packages/accordion/src/utils/selectors.ts +0 -12
  38. package/attributes-master/packages/accordion/src/utils/types.ts +0 -23
  39. package/attributes-master/packages/accordion/tsconfig.json +0 -3
  40. package/attributes-master/packages/attributes/CHANGELOG.md +0 -564
  41. package/attributes-master/packages/attributes/README.md +0 -66
  42. package/attributes-master/packages/attributes/bin/build.ts +0 -107
  43. package/attributes-master/packages/attributes/bin/live-reload.js +0 -1
  44. package/attributes-master/packages/attributes/package.json +0 -77
  45. package/attributes-master/packages/attributes/playwright.config.ts +0 -89
  46. package/attributes-master/packages/attributes/src/attributes.ts +0 -153
  47. package/attributes-master/packages/attributes/src/load.ts +0 -125
  48. package/attributes-master/packages/attributes/tests/accordion.spec.ts +0 -137
  49. package/attributes-master/packages/attributes/tests/codehighlight.spec.ts +0 -23
  50. package/attributes-master/packages/attributes/tests/combobox.spec.ts +0 -321
  51. package/attributes-master/packages/attributes/tests/copyclip.spec.ts +0 -19
  52. package/attributes-master/packages/attributes/tests/displayvalues.spec.ts +0 -48
  53. package/attributes-master/packages/attributes/tests/favcustom.spec.ts +0 -23
  54. package/attributes-master/packages/attributes/tests/inject.spec.ts +0 -40
  55. package/attributes-master/packages/attributes/tests/inputactive.spec.ts +0 -77
  56. package/attributes-master/packages/attributes/tests/inputcounter.spec.ts +0 -83
  57. package/attributes-master/packages/attributes/tests/list.spec.ts +0 -800
  58. package/attributes-master/packages/attributes/tests/mirrorclick.spec.ts +0 -22
  59. package/attributes-master/packages/attributes/tests/mirrorinput.spec.ts +0 -37
  60. package/attributes-master/packages/attributes/tests/modal.spec.ts +0 -34
  61. package/attributes-master/packages/attributes/tests/numbercount.spec.ts +0 -40
  62. package/attributes-master/packages/attributes/tests/readtime.spec.ts +0 -19
  63. package/attributes-master/packages/attributes/tests/selectcustom.spec.ts +0 -51
  64. package/attributes-master/packages/attributes/tests/socialshare.spec.ts +0 -54
  65. package/attributes-master/packages/attributes/tests/starrating.spec.ts +0 -79
  66. package/attributes-master/packages/attributes/tests/toc.spec.ts +0 -38
  67. package/attributes-master/packages/attributes/tests/utils/index.ts +0 -16
  68. package/attributes-master/packages/attributes/tsconfig.json +0 -6
  69. package/attributes-master/packages/autovideo/CHANGELOG.md +0 -182
  70. package/attributes-master/packages/autovideo/README.md +0 -31
  71. package/attributes-master/packages/autovideo/package.json +0 -22
  72. package/attributes-master/packages/autovideo/src/index.ts +0 -3
  73. package/attributes-master/packages/autovideo/src/init.ts +0 -52
  74. package/attributes-master/packages/autovideo/src/types.ts +0 -5
  75. package/attributes-master/packages/autovideo/src/utils/constants.ts +0 -4
  76. package/attributes-master/packages/autovideo/tsconfig.json +0 -3
  77. package/attributes-master/packages/codehighlight/CHANGELOG.md +0 -185
  78. package/attributes-master/packages/codehighlight/README.md +0 -27
  79. package/attributes-master/packages/codehighlight/package.json +0 -23
  80. package/attributes-master/packages/codehighlight/src/actions/import.ts +0 -50
  81. package/attributes-master/packages/codehighlight/src/index.ts +0 -3
  82. package/attributes-master/packages/codehighlight/src/init.ts +0 -53
  83. package/attributes-master/packages/codehighlight/src/utils/constants.ts +0 -24
  84. package/attributes-master/packages/codehighlight/src/utils/selectors.ts +0 -5
  85. package/attributes-master/packages/codehighlight/src/utils/themes.ts +0 -202
  86. package/attributes-master/packages/codehighlight/tsconfig.json +0 -3
  87. package/attributes-master/packages/combobox/CHANGELOG.md +0 -99
  88. package/attributes-master/packages/combobox/README.md +0 -27
  89. package/attributes-master/packages/combobox/package.json +0 -23
  90. package/attributes-master/packages/combobox/src/actions/a11y.ts +0 -29
  91. package/attributes-master/packages/combobox/src/actions/body/index.ts +0 -12
  92. package/attributes-master/packages/combobox/src/actions/clearDropdown/index.ts +0 -37
  93. package/attributes-master/packages/combobox/src/actions/dropdownList/index.ts +0 -220
  94. package/attributes-master/packages/combobox/src/actions/dropdownToggle/index.ts +0 -34
  95. package/attributes-master/packages/combobox/src/actions/events.ts +0 -75
  96. package/attributes-master/packages/combobox/src/actions/input/index.ts +0 -235
  97. package/attributes-master/packages/combobox/src/actions/observe.ts +0 -158
  98. package/attributes-master/packages/combobox/src/actions/populate.ts +0 -97
  99. package/attributes-master/packages/combobox/src/actions/selectElement/index.ts +0 -23
  100. package/attributes-master/packages/combobox/src/actions/settings.ts +0 -134
  101. package/attributes-master/packages/combobox/src/actions/state.ts +0 -34
  102. package/attributes-master/packages/combobox/src/index.ts +0 -3
  103. package/attributes-master/packages/combobox/src/init.ts +0 -52
  104. package/attributes-master/packages/combobox/src/utils/constants.ts +0 -48
  105. package/attributes-master/packages/combobox/src/utils/dropdowns.ts +0 -120
  106. package/attributes-master/packages/combobox/src/utils/index.ts +0 -1
  107. package/attributes-master/packages/combobox/src/utils/selectors.ts +0 -9
  108. package/attributes-master/packages/combobox/src/utils/types.ts +0 -14
  109. package/attributes-master/packages/combobox/tsconfig.json +0 -3
  110. package/attributes-master/packages/copyclip/CHANGELOG.md +0 -213
  111. package/attributes-master/packages/copyclip/README.md +0 -27
  112. package/attributes-master/packages/copyclip/package.json +0 -23
  113. package/attributes-master/packages/copyclip/src/factory.ts +0 -67
  114. package/attributes-master/packages/copyclip/src/index.ts +0 -3
  115. package/attributes-master/packages/copyclip/src/init.ts +0 -68
  116. package/attributes-master/packages/copyclip/src/utils/constants.ts +0 -40
  117. package/attributes-master/packages/copyclip/src/utils/selectors.ts +0 -9
  118. package/attributes-master/packages/copyclip/tsconfig.json +0 -3
  119. package/attributes-master/packages/displayvalues/CHANGELOG.md +0 -164
  120. package/attributes-master/packages/displayvalues/README.md +0 -27
  121. package/attributes-master/packages/displayvalues/package.json +0 -22
  122. package/attributes-master/packages/displayvalues/src/actions/collect.ts +0 -17
  123. package/attributes-master/packages/displayvalues/src/actions/events.ts +0 -22
  124. package/attributes-master/packages/displayvalues/src/actions/sync.ts +0 -23
  125. package/attributes-master/packages/displayvalues/src/index.ts +0 -3
  126. package/attributes-master/packages/displayvalues/src/init.ts +0 -31
  127. package/attributes-master/packages/displayvalues/src/utils/constants.ts +0 -20
  128. package/attributes-master/packages/displayvalues/src/utils/selectors.ts +0 -9
  129. package/attributes-master/packages/displayvalues/src/utils/stores.ts +0 -3
  130. package/attributes-master/packages/displayvalues/tsconfig.json +0 -3
  131. package/attributes-master/packages/docs/CHANGELOG.md +0 -108
  132. package/attributes-master/packages/docs/README.md +0 -3
  133. package/attributes-master/packages/docs/bin/build.js +0 -92
  134. package/attributes-master/packages/docs/bin/live-reload.js +0 -1
  135. package/attributes-master/packages/docs/package.json +0 -40
  136. package/attributes-master/packages/docs/src/copy.ts +0 -260
  137. package/attributes-master/packages/docs/src/x-ray.ts +0 -377
  138. package/attributes-master/packages/docs/tsconfig.json +0 -3
  139. package/attributes-master/packages/favcustom/CHANGELOG.md +0 -194
  140. package/attributes-master/packages/favcustom/README.md +0 -27
  141. package/attributes-master/packages/favcustom/package.json +0 -22
  142. package/attributes-master/packages/favcustom/src/index.ts +0 -3
  143. package/attributes-master/packages/favcustom/src/init.ts +0 -30
  144. package/attributes-master/packages/favcustom/src/utils/constants.ts +0 -10
  145. package/attributes-master/packages/favcustom/src/utils/selectors.ts +0 -5
  146. package/attributes-master/packages/favcustom/tsconfig.json +0 -3
  147. package/attributes-master/packages/formsubmit/CHANGELOG.md +0 -161
  148. package/attributes-master/packages/formsubmit/README.md +0 -51
  149. package/attributes-master/packages/formsubmit/package.json +0 -22
  150. package/attributes-master/packages/formsubmit/src/actions/redirect.ts +0 -9
  151. package/attributes-master/packages/formsubmit/src/actions/reset.ts +0 -49
  152. package/attributes-master/packages/formsubmit/src/actions/submit.ts +0 -34
  153. package/attributes-master/packages/formsubmit/src/components/Form.ts +0 -231
  154. package/attributes-master/packages/formsubmit/src/factory.ts +0 -62
  155. package/attributes-master/packages/formsubmit/src/index.ts +0 -3
  156. package/attributes-master/packages/formsubmit/src/init.ts +0 -24
  157. package/attributes-master/packages/formsubmit/src/utils/attributes.ts +0 -19
  158. package/attributes-master/packages/formsubmit/src/utils/constants.ts +0 -89
  159. package/attributes-master/packages/formsubmit/src/utils/dom.ts +0 -76
  160. package/attributes-master/packages/formsubmit/src/utils/selectors.ts +0 -9
  161. package/attributes-master/packages/formsubmit/src/utils/types.ts +0 -7
  162. package/attributes-master/packages/formsubmit/tsconfig.json +0 -3
  163. package/attributes-master/packages/inject/CHANGELOG.md +0 -117
  164. package/attributes-master/packages/inject/README.md +0 -60
  165. package/attributes-master/packages/inject/package.json +0 -22
  166. package/attributes-master/packages/inject/src/actions/collect.ts +0 -125
  167. package/attributes-master/packages/inject/src/actions/css.ts +0 -27
  168. package/attributes-master/packages/inject/src/actions/prefetch.ts +0 -44
  169. package/attributes-master/packages/inject/src/factory.ts +0 -123
  170. package/attributes-master/packages/inject/src/index.ts +0 -3
  171. package/attributes-master/packages/inject/src/init.ts +0 -22
  172. package/attributes-master/packages/inject/src/utils/constants.ts +0 -89
  173. package/attributes-master/packages/inject/src/utils/helpers.ts +0 -36
  174. package/attributes-master/packages/inject/src/utils/selectors.ts +0 -9
  175. package/attributes-master/packages/inject/src/utils/types.ts +0 -16
  176. package/attributes-master/packages/inject/tsconfig.json +0 -3
  177. package/attributes-master/packages/inputactive/CHANGELOG.md +0 -58
  178. package/attributes-master/packages/inputactive/README.md +0 -25
  179. package/attributes-master/packages/inputactive/package.json +0 -22
  180. package/attributes-master/packages/inputactive/src/actions/classes.ts +0 -43
  181. package/attributes-master/packages/inputactive/src/factory.ts +0 -24
  182. package/attributes-master/packages/inputactive/src/index.ts +0 -3
  183. package/attributes-master/packages/inputactive/src/init.ts +0 -18
  184. package/attributes-master/packages/inputactive/src/utils/constants.ts +0 -13
  185. package/attributes-master/packages/inputactive/src/utils/selectors.ts +0 -5
  186. package/attributes-master/packages/inputactive/tsconfig.json +0 -3
  187. package/attributes-master/packages/inputcounter/CHANGELOG.md +0 -110
  188. package/attributes-master/packages/inputcounter/README.md +0 -25
  189. package/attributes-master/packages/inputcounter/package.json +0 -22
  190. package/attributes-master/packages/inputcounter/src/actions/a11y.ts +0 -23
  191. package/attributes-master/packages/inputcounter/src/actions/buttons.ts +0 -61
  192. package/attributes-master/packages/inputcounter/src/actions/input.ts +0 -31
  193. package/attributes-master/packages/inputcounter/src/actions/style.ts +0 -12
  194. package/attributes-master/packages/inputcounter/src/factory.ts +0 -51
  195. package/attributes-master/packages/inputcounter/src/index.ts +0 -3
  196. package/attributes-master/packages/inputcounter/src/init.ts +0 -22
  197. package/attributes-master/packages/inputcounter/src/utils/constants.ts +0 -59
  198. package/attributes-master/packages/inputcounter/src/utils/selectors.ts +0 -9
  199. package/attributes-master/packages/inputcounter/tsconfig.json +0 -3
  200. package/attributes-master/packages/list/CHANGELOG.md +0 -185
  201. package/attributes-master/packages/list/README.md +0 -331
  202. package/attributes-master/packages/list/package.json +0 -37
  203. package/attributes-master/packages/list/src/combine/index.ts +0 -38
  204. package/attributes-master/packages/list/src/components/List.ts +0 -861
  205. package/attributes-master/packages/list/src/components/ListItem.ts +0 -229
  206. package/attributes-master/packages/list/src/components/index.ts +0 -2
  207. package/attributes-master/packages/list/src/factory.ts +0 -130
  208. package/attributes-master/packages/list/src/filter/dynamic/conditions.ts +0 -639
  209. package/attributes-master/packages/list/src/filter/dynamic/groups.ts +0 -221
  210. package/attributes-master/packages/list/src/filter/dynamic/index.ts +0 -119
  211. package/attributes-master/packages/list/src/filter/dynamic/utils.ts +0 -44
  212. package/attributes-master/packages/list/src/filter/elements.ts +0 -93
  213. package/attributes-master/packages/list/src/filter/filter.ts +0 -118
  214. package/attributes-master/packages/list/src/filter/filter.worker.ts +0 -152
  215. package/attributes-master/packages/list/src/filter/index.ts +0 -94
  216. package/attributes-master/packages/list/src/filter/standard/conditions.ts +0 -123
  217. package/attributes-master/packages/list/src/filter/standard/facets.ts +0 -253
  218. package/attributes-master/packages/list/src/filter/standard/index.ts +0 -176
  219. package/attributes-master/packages/list/src/filter/standard/query.ts +0 -111
  220. package/attributes-master/packages/list/src/filter/tags.ts +0 -314
  221. package/attributes-master/packages/list/src/filter/types.ts +0 -62
  222. package/attributes-master/packages/list/src/filter/utils.ts +0 -126
  223. package/attributes-master/packages/list/src/index.ts +0 -4
  224. package/attributes-master/packages/list/src/init.ts +0 -38
  225. package/attributes-master/packages/list/src/load/all.ts +0 -27
  226. package/attributes-master/packages/list/src/load/elements.ts +0 -39
  227. package/attributes-master/packages/list/src/load/index.ts +0 -63
  228. package/attributes-master/packages/list/src/load/infinite.ts +0 -79
  229. package/attributes-master/packages/list/src/load/load.ts +0 -191
  230. package/attributes-master/packages/list/src/load/more.ts +0 -97
  231. package/attributes-master/packages/list/src/load/pagination.ts +0 -402
  232. package/attributes-master/packages/list/src/nest/index.ts +0 -198
  233. package/attributes-master/packages/list/src/prevnext/index.ts +0 -98
  234. package/attributes-master/packages/list/src/select/index.ts +0 -56
  235. package/attributes-master/packages/list/src/slider/index.ts +0 -62
  236. package/attributes-master/packages/list/src/sort/buttons.ts +0 -96
  237. package/attributes-master/packages/list/src/sort/dropdown.ts +0 -179
  238. package/attributes-master/packages/list/src/sort/index.ts +0 -81
  239. package/attributes-master/packages/list/src/sort/query.ts +0 -63
  240. package/attributes-master/packages/list/src/sort/select.ts +0 -67
  241. package/attributes-master/packages/list/src/sort/sort.ts +0 -79
  242. package/attributes-master/packages/list/src/sort/types.ts +0 -28
  243. package/attributes-master/packages/list/src/static/index.ts +0 -73
  244. package/attributes-master/packages/list/src/tabs/index.ts +0 -97
  245. package/attributes-master/packages/list/src/utils/constants.ts +0 -728
  246. package/attributes-master/packages/list/src/utils/dom.ts +0 -108
  247. package/attributes-master/packages/list/src/utils/pagination.ts +0 -14
  248. package/attributes-master/packages/list/src/utils/selectors.ts +0 -18
  249. package/attributes-master/packages/list/src/utils/store.ts +0 -5
  250. package/attributes-master/packages/list/tsconfig.json +0 -3
  251. package/attributes-master/packages/mirrorclick/CHANGELOG.md +0 -171
  252. package/attributes-master/packages/mirrorclick/README.md +0 -25
  253. package/attributes-master/packages/mirrorclick/package.json +0 -22
  254. package/attributes-master/packages/mirrorclick/src/index.ts +0 -3
  255. package/attributes-master/packages/mirrorclick/src/init.ts +0 -35
  256. package/attributes-master/packages/mirrorclick/src/utils/constants.ts +0 -20
  257. package/attributes-master/packages/mirrorclick/src/utils/selectors.ts +0 -9
  258. package/attributes-master/packages/mirrorclick/tsconfig.json +0 -3
  259. package/attributes-master/packages/mirrorinput/CHANGELOG.md +0 -172
  260. package/attributes-master/packages/mirrorinput/README.md +0 -25
  261. package/attributes-master/packages/mirrorinput/package.json +0 -22
  262. package/attributes-master/packages/mirrorinput/src/index.ts +0 -3
  263. package/attributes-master/packages/mirrorinput/src/init.ts +0 -48
  264. package/attributes-master/packages/mirrorinput/src/utils/constants.ts +0 -15
  265. package/attributes-master/packages/mirrorinput/src/utils/selectors.ts +0 -9
  266. package/attributes-master/packages/mirrorinput/tsconfig.json +0 -3
  267. package/attributes-master/packages/modal/CHANGELOG.md +0 -94
  268. package/attributes-master/packages/modal/README.md +0 -29
  269. package/attributes-master/packages/modal/package.json +0 -23
  270. package/attributes-master/packages/modal/src/actions/a11y.ts +0 -46
  271. package/attributes-master/packages/modal/src/actions/modal.ts +0 -164
  272. package/attributes-master/packages/modal/src/actions/settings.ts +0 -21
  273. package/attributes-master/packages/modal/src/factory.ts +0 -26
  274. package/attributes-master/packages/modal/src/index.ts +0 -3
  275. package/attributes-master/packages/modal/src/init.ts +0 -22
  276. package/attributes-master/packages/modal/src/utils/constants.ts +0 -54
  277. package/attributes-master/packages/modal/src/utils/selectors.ts +0 -9
  278. package/attributes-master/packages/modal/src/utils/types.ts +0 -12
  279. package/attributes-master/packages/modal/tsconfig.json +0 -3
  280. package/attributes-master/packages/numbercount/CHANGELOG.md +0 -90
  281. package/attributes-master/packages/numbercount/README.md +0 -27
  282. package/attributes-master/packages/numbercount/package.json +0 -23
  283. package/attributes-master/packages/numbercount/src/actions/a11y.ts +0 -26
  284. package/attributes-master/packages/numbercount/src/actions/animate.ts +0 -43
  285. package/attributes-master/packages/numbercount/src/actions/observe.ts +0 -44
  286. package/attributes-master/packages/numbercount/src/factory.ts +0 -31
  287. package/attributes-master/packages/numbercount/src/index.ts +0 -3
  288. package/attributes-master/packages/numbercount/src/init.ts +0 -22
  289. package/attributes-master/packages/numbercount/src/utils/constants.ts +0 -40
  290. package/attributes-master/packages/numbercount/src/utils/helpers.ts +0 -31
  291. package/attributes-master/packages/numbercount/src/utils/selectors.ts +0 -9
  292. package/attributes-master/packages/numbercount/tsconfig.json +0 -3
  293. package/attributes-master/packages/queryparam/CHANGELOG.md +0 -118
  294. package/attributes-master/packages/queryparam/README.md +0 -25
  295. package/attributes-master/packages/queryparam/package.json +0 -22
  296. package/attributes-master/packages/queryparam/src/factory.ts +0 -51
  297. package/attributes-master/packages/queryparam/src/index.ts +0 -3
  298. package/attributes-master/packages/queryparam/src/init.ts +0 -40
  299. package/attributes-master/packages/queryparam/src/utils/constants.ts +0 -18
  300. package/attributes-master/packages/queryparam/src/utils/selectors.ts +0 -5
  301. package/attributes-master/packages/queryparam/tsconfig.json +0 -3
  302. package/attributes-master/packages/rangeslider/CHANGELOG.md +0 -236
  303. package/attributes-master/packages/rangeslider/README.md +0 -95
  304. package/attributes-master/packages/rangeslider/package.json +0 -23
  305. package/attributes-master/packages/rangeslider/src/actions/a11y.ts +0 -21
  306. package/attributes-master/packages/rangeslider/src/actions/events.ts +0 -9
  307. package/attributes-master/packages/rangeslider/src/actions/settings.ts +0 -97
  308. package/attributes-master/packages/rangeslider/src/actions/styles.ts +0 -10
  309. package/attributes-master/packages/rangeslider/src/actions/values.ts +0 -47
  310. package/attributes-master/packages/rangeslider/src/components/Fill.ts +0 -70
  311. package/attributes-master/packages/rangeslider/src/components/Handle.ts +0 -281
  312. package/attributes-master/packages/rangeslider/src/factory.ts +0 -100
  313. package/attributes-master/packages/rangeslider/src/index.ts +0 -3
  314. package/attributes-master/packages/rangeslider/src/init.ts +0 -194
  315. package/attributes-master/packages/rangeslider/src/utils/constants.ts +0 -87
  316. package/attributes-master/packages/rangeslider/src/utils/selectors.ts +0 -9
  317. package/attributes-master/packages/rangeslider/src/utils/types.ts +0 -6
  318. package/attributes-master/packages/rangeslider/tsconfig.json +0 -3
  319. package/attributes-master/packages/readtime/CHANGELOG.md +0 -108
  320. package/attributes-master/packages/readtime/README.md +0 -25
  321. package/attributes-master/packages/readtime/package.json +0 -22
  322. package/attributes-master/packages/readtime/src/factory.ts +0 -21
  323. package/attributes-master/packages/readtime/src/index.ts +0 -3
  324. package/attributes-master/packages/readtime/src/init.ts +0 -19
  325. package/attributes-master/packages/readtime/src/utils/constants.ts +0 -33
  326. package/attributes-master/packages/readtime/src/utils/selectors.ts +0 -9
  327. package/attributes-master/packages/readtime/tsconfig.json +0 -3
  328. package/attributes-master/packages/removequery/CHANGELOG.md +0 -8
  329. package/attributes-master/packages/removequery/README.md +0 -25
  330. package/attributes-master/packages/removequery/package.json +0 -22
  331. package/attributes-master/packages/removequery/src/index.ts +0 -3
  332. package/attributes-master/packages/removequery/src/init.ts +0 -18
  333. package/attributes-master/packages/removequery/src/utils/constants.ts +0 -5
  334. package/attributes-master/packages/removequery/tsconfig.json +0 -3
  335. package/attributes-master/packages/scrolldisable/CHANGELOG.md +0 -164
  336. package/attributes-master/packages/scrolldisable/README.md +0 -29
  337. package/attributes-master/packages/scrolldisable/package.json +0 -27
  338. package/attributes-master/packages/scrolldisable/src/click.ts +0 -40
  339. package/attributes-master/packages/scrolldisable/src/display.ts +0 -117
  340. package/attributes-master/packages/scrolldisable/src/index.ts +0 -3
  341. package/attributes-master/packages/scrolldisable/src/init.ts +0 -36
  342. package/attributes-master/packages/scrolldisable/src/scroll.ts +0 -63
  343. package/attributes-master/packages/scrolldisable/src/utils/constants.ts +0 -56
  344. package/attributes-master/packages/scrolldisable/src/utils/selectors.ts +0 -6
  345. package/attributes-master/packages/scrolldisable/tsconfig.json +0 -3
  346. package/attributes-master/packages/selectcustom/CHANGELOG.md +0 -242
  347. package/attributes-master/packages/selectcustom/README.md +0 -25
  348. package/attributes-master/packages/selectcustom/package.json +0 -23
  349. package/attributes-master/packages/selectcustom/src/actions/a11y.ts +0 -29
  350. package/attributes-master/packages/selectcustom/src/actions/events.ts +0 -159
  351. package/attributes-master/packages/selectcustom/src/actions/observe.ts +0 -83
  352. package/attributes-master/packages/selectcustom/src/actions/populate.ts +0 -67
  353. package/attributes-master/packages/selectcustom/src/actions/settings.ts +0 -68
  354. package/attributes-master/packages/selectcustom/src/actions/state.ts +0 -41
  355. package/attributes-master/packages/selectcustom/src/index.ts +0 -3
  356. package/attributes-master/packages/selectcustom/src/init.ts +0 -51
  357. package/attributes-master/packages/selectcustom/src/utils/constants.ts +0 -34
  358. package/attributes-master/packages/selectcustom/src/utils/selectors.ts +0 -9
  359. package/attributes-master/packages/selectcustom/src/utils/types.ts +0 -14
  360. package/attributes-master/packages/selectcustom/tsconfig.json +0 -3
  361. package/attributes-master/packages/sliderdots/CHANGELOG.md +0 -220
  362. package/attributes-master/packages/sliderdots/README.md +0 -27
  363. package/attributes-master/packages/sliderdots/package.json +0 -22
  364. package/attributes-master/packages/sliderdots/src/actions/events.ts +0 -26
  365. package/attributes-master/packages/sliderdots/src/actions/observe.ts +0 -40
  366. package/attributes-master/packages/sliderdots/src/actions/populate.ts +0 -46
  367. package/attributes-master/packages/sliderdots/src/actions/sync.ts +0 -28
  368. package/attributes-master/packages/sliderdots/src/actions/wait.ts +0 -28
  369. package/attributes-master/packages/sliderdots/src/factory.ts +0 -57
  370. package/attributes-master/packages/sliderdots/src/index.ts +0 -3
  371. package/attributes-master/packages/sliderdots/src/init.ts +0 -30
  372. package/attributes-master/packages/sliderdots/src/utils/constants.ts +0 -33
  373. package/attributes-master/packages/sliderdots/src/utils/selectors.ts +0 -9
  374. package/attributes-master/packages/sliderdots/src/utils/types.ts +0 -7
  375. package/attributes-master/packages/sliderdots/tsconfig.json +0 -3
  376. package/attributes-master/packages/smartlightbox/CHANGELOG.md +0 -203
  377. package/attributes-master/packages/smartlightbox/README.md +0 -25
  378. package/attributes-master/packages/smartlightbox/package.json +0 -22
  379. package/attributes-master/packages/smartlightbox/src/actions/collect.ts +0 -15
  380. package/attributes-master/packages/smartlightbox/src/actions/move.ts +0 -25
  381. package/attributes-master/packages/smartlightbox/src/index.ts +0 -3
  382. package/attributes-master/packages/smartlightbox/src/init.ts +0 -61
  383. package/attributes-master/packages/smartlightbox/src/utils/constants.ts +0 -31
  384. package/attributes-master/packages/smartlightbox/src/utils/selectors.ts +0 -9
  385. package/attributes-master/packages/smartlightbox/tsconfig.json +0 -3
  386. package/attributes-master/packages/socialshare/CHANGELOG.md +0 -170
  387. package/attributes-master/packages/socialshare/README.md +0 -25
  388. package/attributes-master/packages/socialshare/package.json +0 -25
  389. package/attributes-master/packages/socialshare/src/actions/collect.ts +0 -93
  390. package/attributes-master/packages/socialshare/src/actions/share.ts +0 -91
  391. package/attributes-master/packages/socialshare/src/actions/trigger.ts +0 -46
  392. package/attributes-master/packages/socialshare/src/factory.ts +0 -149
  393. package/attributes-master/packages/socialshare/src/index.ts +0 -3
  394. package/attributes-master/packages/socialshare/src/init.ts +0 -35
  395. package/attributes-master/packages/socialshare/src/utils/constants.ts +0 -94
  396. package/attributes-master/packages/socialshare/src/utils/dom.ts +0 -8
  397. package/attributes-master/packages/socialshare/src/utils/selectors.ts +0 -6
  398. package/attributes-master/packages/socialshare/src/utils/stores.ts +0 -10
  399. package/attributes-master/packages/socialshare/src/utils/types.ts +0 -34
  400. package/attributes-master/packages/socialshare/tsconfig.json +0 -3
  401. package/attributes-master/packages/starrating/CHANGELOG.md +0 -70
  402. package/attributes-master/packages/starrating/README.md +0 -25
  403. package/attributes-master/packages/starrating/package.json +0 -22
  404. package/attributes-master/packages/starrating/src/actions/classes.ts +0 -41
  405. package/attributes-master/packages/starrating/src/actions/events.ts +0 -80
  406. package/attributes-master/packages/starrating/src/factory.ts +0 -24
  407. package/attributes-master/packages/starrating/src/index.ts +0 -3
  408. package/attributes-master/packages/starrating/src/init.ts +0 -24
  409. package/attributes-master/packages/starrating/src/utils/constants.ts +0 -20
  410. package/attributes-master/packages/starrating/src/utils/helpers.ts +0 -63
  411. package/attributes-master/packages/starrating/src/utils/selectors.ts +0 -9
  412. package/attributes-master/packages/starrating/tsconfig.json +0 -3
  413. package/attributes-master/packages/template/README.md +0 -25
  414. package/attributes-master/packages/template/package.json +0 -22
  415. package/attributes-master/packages/template/src/actions/console.ts +0 -4
  416. package/attributes-master/packages/template/src/index.ts +0 -3
  417. package/attributes-master/packages/template/src/init.ts +0 -14
  418. package/attributes-master/packages/template/src/utils/constants.ts +0 -18
  419. package/attributes-master/packages/template/src/utils/selectors.ts +0 -5
  420. package/attributes-master/packages/template/tsconfig.json +0 -3
  421. package/attributes-master/packages/toc/CHANGELOG.md +0 -192
  422. package/attributes-master/packages/toc/README.md +0 -25
  423. package/attributes-master/packages/toc/package.json +0 -23
  424. package/attributes-master/packages/toc/src/actions/collect.ts +0 -136
  425. package/attributes-master/packages/toc/src/actions/create.ts +0 -44
  426. package/attributes-master/packages/toc/src/actions/events.ts +0 -29
  427. package/attributes-master/packages/toc/src/actions/observe.ts +0 -31
  428. package/attributes-master/packages/toc/src/actions/populate.ts +0 -68
  429. package/attributes-master/packages/toc/src/actions/prepare.ts +0 -25
  430. package/attributes-master/packages/toc/src/actions/scroll.ts +0 -33
  431. package/attributes-master/packages/toc/src/components/TOCItem.ts +0 -88
  432. package/attributes-master/packages/toc/src/factory.ts +0 -47
  433. package/attributes-master/packages/toc/src/index.ts +0 -3
  434. package/attributes-master/packages/toc/src/init.ts +0 -37
  435. package/attributes-master/packages/toc/src/utils/constants.ts +0 -55
  436. package/attributes-master/packages/toc/src/utils/helpers.ts +0 -23
  437. package/attributes-master/packages/toc/src/utils/selectors.ts +0 -6
  438. package/attributes-master/packages/toc/src/utils/types.ts +0 -21
  439. package/attributes-master/packages/toc/tsconfig.json +0 -3
  440. package/attributes-master/packages/utils/CHANGELOG.md +0 -43
  441. package/attributes-master/packages/utils/package.json +0 -27
  442. package/attributes-master/packages/utils/src/animations/factory.ts +0 -100
  443. package/attributes-master/packages/utils/src/animations/index.ts +0 -73
  444. package/attributes-master/packages/utils/src/animations/types.ts +0 -37
  445. package/attributes-master/packages/utils/src/components/Interaction.ts +0 -79
  446. package/attributes-master/packages/utils/src/components/Renderer.ts +0 -59
  447. package/attributes-master/packages/utils/src/components/index.ts +0 -2
  448. package/attributes-master/packages/utils/src/constants/a11y.ts +0 -50
  449. package/attributes-master/packages/utils/src/constants/attributes.ts +0 -57
  450. package/attributes-master/packages/utils/src/constants/index.ts +0 -5
  451. package/attributes-master/packages/utils/src/constants/keyboard.ts +0 -10
  452. package/attributes-master/packages/utils/src/constants/webflow.ts +0 -74
  453. package/attributes-master/packages/utils/src/helpers/dates.ts +0 -17
  454. package/attributes-master/packages/utils/src/helpers/dom.ts +0 -82
  455. package/attributes-master/packages/utils/src/helpers/events.ts +0 -59
  456. package/attributes-master/packages/utils/src/helpers/fetch.ts +0 -217
  457. package/attributes-master/packages/utils/src/helpers/forms.ts +0 -238
  458. package/attributes-master/packages/utils/src/helpers/guards.ts +0 -138
  459. package/attributes-master/packages/utils/src/helpers/index.ts +0 -11
  460. package/attributes-master/packages/utils/src/helpers/numbers.ts +0 -86
  461. package/attributes-master/packages/utils/src/helpers/selectors.ts +0 -249
  462. package/attributes-master/packages/utils/src/helpers/strings.ts +0 -19
  463. package/attributes-master/packages/utils/src/helpers/wait.ts +0 -36
  464. package/attributes-master/packages/utils/src/helpers/webflow.ts +0 -117
  465. package/attributes-master/packages/utils/src/index.ts +0 -5
  466. package/attributes-master/packages/utils/src/types/core.ts +0 -100
  467. package/attributes-master/packages/utils/src/types/dom.ts +0 -31
  468. package/attributes-master/packages/utils/src/types/index.ts +0 -4
  469. package/attributes-master/packages/utils/src/types/utils.ts +0 -20
  470. package/attributes-master/packages/utils/src/types/webflow.ts +0 -147
  471. package/attributes-master/packages/utils/tsconfig.json +0 -3
  472. package/attributes-master/packages/videohls/CHANGELOG.md +0 -76
  473. package/attributes-master/packages/videohls/README.md +0 -27
  474. package/attributes-master/packages/videohls/package.json +0 -26
  475. package/attributes-master/packages/videohls/src/actions/list.ts +0 -23
  476. package/attributes-master/packages/videohls/src/actions/video.ts +0 -44
  477. package/attributes-master/packages/videohls/src/index.ts +0 -3
  478. package/attributes-master/packages/videohls/src/init.ts +0 -28
  479. package/attributes-master/packages/videohls/src/utils/constants.ts +0 -12
  480. package/attributes-master/packages/videohls/src/utils/selectors.ts +0 -5
  481. package/attributes-master/packages/videohls/src/utils/stores.ts +0 -3
  482. package/attributes-master/packages/videohls/tsconfig.json +0 -3
  483. package/attributes-master/pnpm-lock.yaml +0 -3317
  484. package/attributes-master/pnpm-workspace.yaml +0 -3
  485. package/attributes-master/tsconfig.json +0 -6
  486. package/autoInit/smooth-scroll.js +0 -89
  487. package/debug-version.html +0 -37
  488. package/utils/navbar.js +0 -214
  489. package/utils/scroll-progress.js +0 -29
  490. package/utils/toc.js +0 -77
@@ -1,152 +0,0 @@
1
- import { extractCommaSeparatedValues } from '@finsweet/attributes-utils';
2
-
3
- import type { FieldValue, FiltersCondition, FiltersGroup, FilterTaskData } from './types';
4
- import { areEqual, numericCompare, parseFilterValue } from './utils';
5
-
6
- type ValidFiltersGroup = FiltersGroup & {
7
- validConditions: FiltersCondition[];
8
- };
9
-
10
- self.onmessage = (e: MessageEvent<FilterTaskData>) => {
11
- const { filters, items } = e.data;
12
-
13
- // Filter out invalid conditions (e.g. empty values) and groups (e.g. no valid conditions)
14
- const validGroups = filters.groups.reduce<ValidFiltersGroup[]>((validGroups, group) => {
15
- const validConditions = group.conditions.reduce<FiltersCondition[]>((validConditions, condition) => {
16
- const { op, value, fieldKey } = condition;
17
- if (!fieldKey) return validConditions;
18
- if (!op) return validConditions;
19
-
20
- if (op !== 'empty' && op !== 'not-empty') {
21
- const valueIsEmpty = value === '' || (Array.isArray(value) && !value.length);
22
- if (valueIsEmpty) return validConditions;
23
- }
24
-
25
- validConditions.push(condition);
26
-
27
- return validConditions;
28
- }, []);
29
-
30
- if (validConditions.length) {
31
- validGroups.push({ ...group, validConditions });
32
- }
33
-
34
- return validGroups;
35
- }, []);
36
-
37
- // Filter the items based on the valid groups and conditions
38
- const filteredItems = items.filter((item) => {
39
- const groupsPredicate = (groupData: ValidFiltersGroup) => {
40
- const conditionsPredicate = (condition: FiltersCondition) => {
41
- const fieldsPredicate = (fieldKey: string) => {
42
- const { op, filterMatch, fieldMatch } = condition;
43
-
44
- const fieldData = item.fields[fieldKey];
45
- if (!fieldData) return false;
46
-
47
- const fieldValue = fieldData.value;
48
- const filterValue = condition.value;
49
-
50
- if (op === 'empty') {
51
- return Array.isArray(fieldValue) ? !fieldValue.length : !fieldValue;
52
- }
53
-
54
- if (op === 'not-empty') {
55
- return Array.isArray(fieldValue) ? !!fieldValue.length : !!fieldValue;
56
- }
57
-
58
- const isNegative = op?.startsWith('not-');
59
-
60
- const compare = (fieldValue: FieldValue, filterValue: string, parsedFilterValue: FieldValue) => {
61
- let match = false;
62
-
63
- if (op === 'equal' || op === 'not-equal') {
64
- match = areEqual(fieldValue, parsedFilterValue, condition.fuzzyThreshold);
65
- } else if (op === 'start' || op === 'not-start') {
66
- match = fieldValue.toString().toLowerCase().startsWith(filterValue.toLowerCase());
67
- } else if (op === 'end' || op === 'not-end') {
68
- match = fieldValue.toString().toLowerCase().endsWith(filterValue.toLowerCase());
69
- } else if (op === 'contain' || op === 'not-contain') {
70
- match = fieldValue.toString().toLowerCase().includes(filterValue.toLowerCase());
71
- } else if (op === 'greater' || op === 'greater-equal' || op === 'less' || op === 'less-equal') {
72
- match = numericCompare(fieldValue, parsedFilterValue, op);
73
- }
74
-
75
- if (match && (op === 'equal' || op === 'contain')) {
76
- item.matchedFields[fieldKey] ||= [];
77
- item.matchedFields[fieldKey].push({ fieldValue, filterValue });
78
- }
79
-
80
- return isNegative ? !match : match;
81
- };
82
-
83
- const filterValueIsArray = Array.isArray(filterValue);
84
- const fieldValueIsArray = Array.isArray(fieldValue);
85
-
86
- const emptyFieldValue = fieldValue === '' || (fieldValueIsArray && !fieldValue.length);
87
- if (emptyFieldValue) return isNegative;
88
-
89
- // Both are arrays
90
- if (filterValueIsArray && fieldValueIsArray) {
91
- const predicate = (filterValue: string) => {
92
- const parsedFilterValue = parseFilterValue(filterValue, condition.type, fieldData.type);
93
- if (parsedFilterValue === null) return false;
94
-
95
- return fieldMatch === 'and'
96
- ? fieldValue.every((fieldValue) => compare(fieldValue, filterValue, parsedFilterValue))
97
- : fieldValue.some((fieldValue) => compare(fieldValue, filterValue, parsedFilterValue));
98
- };
99
-
100
- return filterMatch === 'and' ? filterValue.every(predicate) : filterValue.some(predicate);
101
- }
102
-
103
- // Filter is array, field is single
104
- if (filterValueIsArray && !fieldValueIsArray) {
105
- const predicate = (filterValue: string) => {
106
- const parsedFilterValue = parseFilterValue(filterValue, condition.type, fieldData.type);
107
- if (parsedFilterValue === null) return false;
108
-
109
- return compare(fieldValue, filterValue, parsedFilterValue);
110
- };
111
-
112
- return filterMatch === 'and' ? filterValue.every(predicate) : filterValue.some(predicate);
113
- }
114
-
115
- // Filter is single, field is array
116
- if (!filterValueIsArray && fieldValueIsArray) {
117
- const parsedFilterValue = parseFilterValue(filterValue, condition.type, fieldData.type);
118
- if (parsedFilterValue === null) return false;
119
-
120
- return fieldMatch === 'and'
121
- ? fieldValue.every((fieldValue) => compare(fieldValue, filterValue, parsedFilterValue))
122
- : fieldValue.some((fieldValue) => compare(fieldValue, filterValue, parsedFilterValue));
123
- }
124
-
125
- // Filter is single, field is single
126
- if (!filterValueIsArray && !fieldValueIsArray) {
127
- const parsedFilterValue = parseFilterValue(filterValue, condition.type, fieldData.type);
128
- if (parsedFilterValue === null) return false;
129
-
130
- return compare(fieldValue, filterValue, parsedFilterValue);
131
- }
132
-
133
- // If we reach this point, the filter value is not valid
134
- return false;
135
- };
136
-
137
- const fieldKeys =
138
- condition.fieldKey === '*' ? Object.keys(item.fields) : extractCommaSeparatedValues(condition.fieldKey);
139
-
140
- return condition.fieldMatch === 'and' ? fieldKeys.every(fieldsPredicate) : fieldKeys.some(fieldsPredicate);
141
- };
142
-
143
- return groupData.conditionsMatch === 'or'
144
- ? groupData.validConditions.some(conditionsPredicate)
145
- : groupData.validConditions.every(conditionsPredicate);
146
- };
147
-
148
- return filters.groupsMatch === 'or' ? validGroups.some(groupsPredicate) : validGroups.every(groupsPredicate);
149
- });
150
-
151
- self.postMessage(filteredItems);
152
- };
@@ -1,94 +0,0 @@
1
- import { watch } from '@vue/reactivity';
2
- import debounce from 'just-debounce';
3
-
4
- import type { List } from '../components/List';
5
- import { getAttribute, queryElement } from '../utils/selectors';
6
- import { initDynamicFilters } from './dynamic';
7
- import { handleFilterElements } from './elements';
8
- import { filterItems } from './filter';
9
- import { initStandardFilters } from './standard';
10
- import { getListFiltersQuery, setListFiltersQuery } from './standard/query';
11
- import { initTags } from './tags';
12
-
13
- /**
14
- * Inits loading functionality for the list.
15
- * @param list
16
- * @param forms
17
- */
18
- export const initListFiltering = (list: List, forms: HTMLFormElement[]) => {
19
- const filteringClass = getAttribute(list.listElement, 'filteringclass');
20
-
21
- // Init hooks
22
- const filterHookCleanup = list.addHook('filter', async (items) => {
23
- const filteredItems = await filterItems(list.filters.value, items, list.highlight);
24
- return filteredItems;
25
- });
26
-
27
- const beforeRenderHookCleanup = list.addHook('beforeRender', async (items) => {
28
- if (list.triggeredHook === 'filter') {
29
- list.wrapperElement.classList.add(filteringClass);
30
-
31
- const animations = list.wrapperElement.getAnimations({ subtree: true });
32
-
33
- await Promise.all(animations.map((a) => a.finished));
34
- }
35
-
36
- return items;
37
- });
38
-
39
- const afterRenderHookCleanup = list.addHook('afterRender', (items) => {
40
- list.wrapperElement.classList.remove(filteringClass);
41
-
42
- const hasItems = !!items.length;
43
-
44
- if (list.listElement) {
45
- list.listElement.style.display = hasItems ? '' : 'none';
46
- }
47
-
48
- if (list.emptyElement.value) {
49
- list.emptyElement.value.style.display = hasItems ? 'none' : '';
50
- }
51
-
52
- return items;
53
- });
54
-
55
- // Handle elements
56
- const elementsCleanup = handleFilterElements(list);
57
-
58
- // Init filters
59
- const isDynamic = !!queryElement('condition-group', { scope: forms[0] });
60
- const filteringCleanup = isDynamic ? initDynamicFilters(list, forms[0]) : initStandardFilters(list, forms);
61
-
62
- // Init Tags
63
- const tagsCleanup = initTags(list, isDynamic);
64
-
65
- // Trigger the hook when the filters change
66
- const filtersCleanup = watch(
67
- list.filters,
68
- debounce(() => {
69
- list.triggerHook('filter', {
70
- scrollToAnchor: list.hasInteracted.value,
71
- resetCurrentPage: list.hasInteracted.value,
72
- });
73
-
74
- // Handle query params
75
- if (list.showQuery) {
76
- setListFiltersQuery(list);
77
- }
78
- }, 0),
79
- { deep: true }
80
- );
81
-
82
- // Read query params
83
- getListFiltersQuery(list);
84
-
85
- return () => {
86
- filterHookCleanup();
87
- beforeRenderHookCleanup();
88
- afterRenderHookCleanup();
89
- elementsCleanup();
90
- tagsCleanup?.();
91
- filtersCleanup();
92
- filteringCleanup?.();
93
- };
94
- };
@@ -1,123 +0,0 @@
1
- import {
2
- type FormField,
3
- type FormFieldType,
4
- getFormFieldValue,
5
- isFormField,
6
- setFormFieldValue,
7
- } from '@finsweet/attributes-utils';
8
-
9
- import type { List } from '../../components/List';
10
- import { CUSTOM_VALUE_ATTRIBUTE, getAttribute, getSettingSelector, hasAttributeValue } from '../../utils/selectors';
11
- import type { FiltersCondition, FiltersGroup } from '../types';
12
-
13
- /**
14
- * @returns The value of a given form field.
15
- * @param formField A {@link FormField} element.
16
- * @param fieldKey The field name.
17
- * @param interacted Indicates if the form field has been interacted with.
18
- */
19
- export const getConditionData = (formField: FormField, fieldKey: string, interacted = false): FiltersCondition => {
20
- const type = formField.type as FormFieldType;
21
-
22
- const op = getConditionOperator(formField);
23
- const id = `${fieldKey}_${op}`;
24
-
25
- const customTagField = getAttribute(formField, 'tagfield');
26
- const filterMatch = getAttribute(formField, 'filtermatch', { filterInvalid: true });
27
- const fieldMatch = getAttribute(formField, 'fieldmatch', { filterInvalid: true });
28
- const fuzzyThreshold = getAttribute(formField, 'fuzzy');
29
- const showTag = !hasAttributeValue(formField, 'showtag', 'false');
30
-
31
- const value = getFormFieldValue(formField, CUSTOM_VALUE_ATTRIBUTE);
32
-
33
- return {
34
- id,
35
- fieldKey,
36
- type,
37
- op,
38
- value,
39
- filterMatch,
40
- fieldMatch,
41
- fuzzyThreshold,
42
- interacted,
43
- customTagField,
44
- showTag,
45
- };
46
- };
47
-
48
- /**
49
- * Sets the form fields' values based on the provided conditions.
50
- * @param list
51
- * @param form
52
- * @param conditions
53
- */
54
- export const setConditionsData = (list: List, form: HTMLFormElement, conditions: FiltersCondition[]) => {
55
- list.settingFilters = true;
56
-
57
- for (const { fieldKey, value, op, type } of conditions) {
58
- const tagSelector = `:is(input[type="${type}"], select, textarea)`;
59
- const fieldSelector = getSettingSelector('field', fieldKey);
60
- const operatorSelector = `:is(${getSettingSelector('operator', op)}, :not(${getSettingSelector('operator')}))`;
61
- const selector = [tagSelector, fieldSelector, operatorSelector].join('');
62
-
63
- const formField = form.querySelector(selector);
64
- if (!isFormField(formField)) continue;
65
-
66
- setFormFieldValue(formField, value, CUSTOM_VALUE_ATTRIBUTE);
67
- }
68
-
69
- list.settingFilters = false;
70
- };
71
-
72
- /**
73
- * Retrieves the condition operator based on the form field type.
74
- *
75
- * @param formField The form field to retrieve the operator for.
76
- * @returns The condition operator as a string, with the proper fallback value.
77
- */
78
- export const getConditionOperator = (formField: FormField) => {
79
- const type = formField.type as FormFieldType;
80
-
81
- const stringInputTypes: FormFieldType[] = ['text', 'password', 'email', 'tel', 'url', 'search', 'color'];
82
- const opDefault = stringInputTypes.includes(type) ? 'contain' : 'equal';
83
-
84
- const op = getAttribute(formField, 'operator', { filterInvalid: true }) || opDefault;
85
- return op;
86
- };
87
-
88
- /**
89
- * @returns An object with the form fields as keys and their values as values.
90
- * @param list A {@link List} instance.
91
- * @param form A {@link HTMLFormElement} element.
92
- * @param groupIndex The index of the group.
93
- * @param interacted Indicates if the form has been interacted with.
94
- */
95
- export const getStandardFiltersGroup = (list: List, form: HTMLFormElement, groupIndex: number, interacted = false) => {
96
- list.readingFilters = true;
97
-
98
- const group: FiltersGroup = {
99
- id: groupIndex.toString(),
100
- conditions: [],
101
- conditionsMatch: getAttribute(form, 'conditionsmatch', { filterInvalid: true }),
102
- };
103
-
104
- for (const formField of form.elements) {
105
- if (!isFormField(formField)) continue;
106
-
107
- const { type } = formField;
108
- if (type === 'submit') continue;
109
-
110
- const fieldKey = getAttribute(formField, 'field')?.trim();
111
- if (!fieldKey) continue;
112
-
113
- const data = getConditionData(formField, fieldKey, interacted);
114
-
115
- if (!group.conditions.some((c) => c.fieldKey === fieldKey && c.op === data.op)) {
116
- group.conditions.push(data);
117
- }
118
- }
119
-
120
- list.readingFilters = false;
121
-
122
- return group;
123
- };
@@ -1,253 +0,0 @@
1
- import { isElement, isHTMLInputElement, isHTMLSelectElement } from '@finsweet/attributes-utils';
2
- import { toRaw, watch } from '@vue/reactivity';
3
- import debounce from 'just-debounce';
4
-
5
- import type { ListItem } from '../../components';
6
- import type { List } from '../../components/List';
7
- import { getAttribute, getElementSelector, getSettingSelector, queryElement } from '../../utils/selectors';
8
- import { filterItems } from '../filter';
9
- import type { FilterOperator, Filters } from '../types';
10
- import { getConditionOperator } from './conditions';
11
-
12
- /**
13
- * Initializes a specific filter's results count.
14
- * @param list
15
- * @param form
16
- * @param groupIndex
17
- */
18
- export const initFacets = (list: List, form: HTMLFormElement, groupIndex: number) => {
19
- const cleanups = new Map<Node, (() => void) | undefined>();
20
-
21
- const init = (element: Element) => {
22
- const isInput = isHTMLInputElement(element);
23
- const isSelect = isHTMLSelectElement(element);
24
- if (!isInput && !isSelect) return;
25
-
26
- const handler = isInput
27
- ? createInputFacetsHandler(list, element, groupIndex)
28
- : createSelectOptionsFacetsHandler(list, element, groupIndex);
29
-
30
- if (!handler) return;
31
-
32
- const itemsCleanup = watch(list.items, (items) => handler({ items }));
33
- const filtersCleanup = watch(list.filters, (filters) => handler({ filters }), { deep: true, immediate: true });
34
-
35
- return () => {
36
- itemsCleanup();
37
- filtersCleanup();
38
- };
39
- };
40
-
41
- // Init existing elements
42
- for (const node of [...form.elements]) {
43
- const cleanup = init(node);
44
- cleanups.set(node, cleanup);
45
- }
46
-
47
- // Observe new or removed elements
48
- const observer = new MutationObserver((mutations) => {
49
- for (const { addedNodes, removedNodes } of mutations) {
50
- for (const node of addedNodes) {
51
- if (!isElement(node)) continue;
52
-
53
- const elements = [node, ...node.querySelectorAll('input, select')];
54
-
55
- for (const element of elements) {
56
- if (cleanups.has(element)) continue;
57
-
58
- const cleanup = init(element);
59
- cleanups.set(element, cleanup);
60
- }
61
- }
62
-
63
- for (const node of removedNodes) {
64
- if (!isElement(node)) continue;
65
-
66
- const elements = [node, ...node.querySelectorAll('input, select')];
67
-
68
- for (const element of elements) {
69
- const cleanup = cleanups.get(element);
70
- cleanup?.();
71
- cleanups.delete(element);
72
- }
73
- }
74
- }
75
- });
76
-
77
- observer.observe(form, { childList: true, subtree: true });
78
-
79
- return () => {
80
- observer.disconnect();
81
-
82
- for (const [, cleanup] of cleanups) {
83
- cleanup?.();
84
- }
85
- };
86
- };
87
-
88
- /**
89
- * Creates a handler for input facets.
90
- * @param list
91
- * @param formField
92
- * @param groupIndex
93
- */
94
- const createInputFacetsHandler = (list: List, formField: HTMLInputElement, groupIndex: number) => {
95
- const fieldKey = getAttribute(formField, 'field')?.trim();
96
- if (!fieldKey) return;
97
-
98
- const facetCountElement = queryElement('facet-count', { scope: formField.parentElement });
99
- const hideOnEmptyETarget = formField.closest<HTMLElement>(getSettingSelector('emptyfacet', 'hide'));
100
- const addClassOnEmptyTarget = formField.closest<HTMLElement>(getSettingSelector('emptyfacet', 'add-class'));
101
-
102
- if (!facetCountElement && !hideOnEmptyETarget && !addClassOnEmptyTarget) return;
103
-
104
- const op = getConditionOperator(formField);
105
- const value = getAttribute(formField, 'value') || formField.value || '';
106
- const emptyClassName = getAttribute(addClassOnEmptyTarget, 'emptyfacetclass');
107
-
108
- let filterPromise: Promise<ListItem[]> | undefined;
109
-
110
- const handler = debounce(
111
- async ({ filters = list.filters.value, items = list.items.value }: { filters?: Filters; items?: ListItem[] }) => {
112
- await filterPromise;
113
-
114
- filterPromise = triggerFacetFilter({
115
- filters,
116
- items,
117
- fieldKey,
118
- op,
119
- groupIndex,
120
- value,
121
- });
122
-
123
- const filteredItems = await filterPromise;
124
- if (!filteredItems) return;
125
-
126
- const hasResults = filteredItems.length > 0;
127
-
128
- if (facetCountElement) {
129
- facetCountElement.textContent = `${filteredItems.length}`;
130
- }
131
-
132
- if (hideOnEmptyETarget) {
133
- hideOnEmptyETarget.style.display = hasResults ? '' : 'none';
134
- }
135
-
136
- if (addClassOnEmptyTarget) {
137
- addClassOnEmptyTarget.classList.toggle(emptyClassName, !hasResults);
138
- }
139
- },
140
- 0
141
- );
142
-
143
- return handler;
144
- };
145
-
146
- /**
147
- * Creates a handler for select options facets.
148
- * @param list
149
- * @param formField
150
- * @param groupIndex
151
- */
152
- const createSelectOptionsFacetsHandler = (list: List, formField: HTMLSelectElement, groupIndex: number) => {
153
- const fieldKey = getAttribute(formField, 'field')?.trim();
154
- if (!fieldKey) return;
155
-
156
- const op = getConditionOperator(formField);
157
- const displayFacetCounts = formField.matches(getElementSelector('facet-count'));
158
- const hideOnEmpty = getAttribute(formField, 'emptyfacet', { filterInvalid: true }) === 'hide';
159
-
160
- const options: HTMLOptionElement[] = [...formField.options];
161
- const optionLabels = options.reduce(
162
- (acc, option) => acc.set(option, option.value),
163
- new Map<HTMLOptionElement, string>()
164
- );
165
-
166
- if (!options.length) return;
167
-
168
- let filterPromise: Promise<void[]> | undefined;
169
-
170
- const handler = debounce(
171
- async ({ filters = list.filters.value, items = list.items.value }: { filters?: Filters; items?: ListItem[] }) => {
172
- await filterPromise;
173
-
174
- filterPromise = Promise.all(
175
- [...options].map(async (option) => {
176
- const { value } = option;
177
- if (!value) return;
178
-
179
- const filteredItems = await triggerFacetFilter({
180
- filters,
181
- items,
182
- fieldKey,
183
- op,
184
- groupIndex,
185
- value,
186
- });
187
-
188
- if (!filteredItems) return;
189
-
190
- const disabled = !filteredItems.length;
191
-
192
- if (displayFacetCounts) {
193
- const label = optionLabels.get(option) || '';
194
- option.label = `${label} (${filteredItems.length})`;
195
- }
196
-
197
- if (hideOnEmpty && !option.selected) {
198
- option.style.display = disabled ? 'none' : '';
199
- option.disabled = disabled;
200
- }
201
- })
202
- );
203
- },
204
- 0
205
- );
206
-
207
- return handler;
208
- };
209
-
210
- /**
211
- * Triggers a facet search.
212
- * @param params
213
- * @returns The promise of the filtered items.
214
- */
215
- const triggerFacetFilter = ({
216
- filters,
217
- items,
218
- fieldKey,
219
- op,
220
- groupIndex,
221
- value,
222
- }: {
223
- filters: Filters;
224
- items: ListItem[];
225
- fieldKey: string;
226
- op: FilterOperator;
227
- groupIndex: number;
228
- value: string;
229
- }) => {
230
- const filtersClone = structuredClone(toRaw(filters)) as Filters;
231
-
232
- const conditionsGroup = filtersClone.groups[groupIndex];
233
- if (!conditionsGroup) return;
234
-
235
- const { conditions = [] } = conditionsGroup;
236
- const conditionIndex = conditions.findIndex((c) => c.fieldKey === fieldKey && c.op === op);
237
-
238
- const condition = conditions[conditionIndex];
239
- if (!condition) return;
240
-
241
- // Inject the condition value
242
- if (Array.isArray(condition.value)) {
243
- if (condition.filterMatch === 'and') {
244
- condition.value.push(value);
245
- } else {
246
- condition.value = [value];
247
- }
248
- } else {
249
- condition.value = value;
250
- }
251
-
252
- return filterItems(filtersClone, items);
253
- };