@k-int/stripes-kint-components 5.30.0 → 5.31.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 (278) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/es/index.js +8 -0
  3. package/es/lib/ButtonTypedown/ButtonTypedown.js +59 -0
  4. package/es/lib/ButtonTypedown/index.js +13 -0
  5. package/es/lib/Typedown/Typedown.js +89 -46
  6. package/es/lib/hooks/typedownHooks/useTypedown.js +148 -85
  7. package/package.json +1 -1
  8. package/src/artifacts/coverage-jest/ActionList/ActionList.js.html +1 -1
  9. package/src/artifacts/coverage-jest/ActionList/ActionListFieldArray.js.html +1 -1
  10. package/src/artifacts/coverage-jest/ActionList/index.html +1 -1
  11. package/src/artifacts/coverage-jest/ActionList/index.js.html +1 -1
  12. package/src/artifacts/coverage-jest/ButtonTypedown/ButtonTypedown.js.html +244 -0
  13. package/src/artifacts/coverage-jest/ButtonTypedown/index.html +131 -0
  14. package/src/artifacts/coverage-jest/ButtonTypedown/index.js.html +88 -0
  15. package/src/artifacts/coverage-jest/ComboButton/ComboButton.js.html +1 -1
  16. package/src/artifacts/coverage-jest/ComboButton/index.html +1 -1
  17. package/src/artifacts/coverage-jest/ComboButton/index.js.html +1 -1
  18. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertiesLookup.js.html +1 -1
  19. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertiesSettings.js.html +1 -1
  20. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertyForm.js.html +1 -1
  21. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertyView.js.html +1 -1
  22. package/src/artifacts/coverage-jest/CustomProperties/Config/index.html +1 -1
  23. package/src/artifacts/coverage-jest/CustomProperties/Config/index.js.html +1 -1
  24. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesEdit.js.html +1 -1
  25. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesEditCtx.js.html +1 -1
  26. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesListField.js.html +1 -1
  27. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertyField.js.html +1 -1
  28. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertyFormCard.js.html +1 -1
  29. package/src/artifacts/coverage-jest/CustomProperties/Edit/index.html +1 -1
  30. package/src/artifacts/coverage-jest/CustomProperties/Edit/index.js.html +1 -1
  31. package/src/artifacts/coverage-jest/CustomProperties/Edit/testResources.js.html +1 -1
  32. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilter.js.html +1 -1
  33. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterField.js.html +1 -1
  34. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterFieldArray.js.html +1 -1
  35. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterForm.js.html +1 -1
  36. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesRule.js.html +1 -1
  37. package/src/artifacts/coverage-jest/CustomProperties/Filter/index.html +1 -1
  38. package/src/artifacts/coverage-jest/CustomProperties/Filter/index.js.html +1 -1
  39. package/src/artifacts/coverage-jest/CustomProperties/Filter/testResources.js.html +1 -1
  40. package/src/artifacts/coverage-jest/CustomProperties/Filter/useOperators.js.html +1 -1
  41. package/src/artifacts/coverage-jest/CustomProperties/Filter/useParseActiveFilterStrings.js.html +1 -1
  42. package/src/artifacts/coverage-jest/CustomProperties/Filter/useValueProps.js.html +1 -1
  43. package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertiesView.js.html +1 -1
  44. package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertiesViewCtx.js.html +1 -1
  45. package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertyCard.js.html +1 -1
  46. package/src/artifacts/coverage-jest/CustomProperties/View/index.html +1 -1
  47. package/src/artifacts/coverage-jest/CustomProperties/View/index.js.html +1 -1
  48. package/src/artifacts/coverage-jest/CustomProperties/View/testResources.js.html +1 -1
  49. package/src/artifacts/coverage-jest/CustomProperties/index.html +1 -1
  50. package/src/artifacts/coverage-jest/CustomProperties/index.js.html +1 -1
  51. package/src/artifacts/coverage-jest/CycleButton/CycleButton.js.html +1 -1
  52. package/src/artifacts/coverage-jest/CycleButton/index.html +1 -1
  53. package/src/artifacts/coverage-jest/CycleButton/index.js.html +1 -1
  54. package/src/artifacts/coverage-jest/FieldLabel/FieldLabel.js.html +1 -1
  55. package/src/artifacts/coverage-jest/FieldLabel/index.html +1 -1
  56. package/src/artifacts/coverage-jest/FieldLabel/index.js.html +1 -1
  57. package/src/artifacts/coverage-jest/FormModal/FormModal.js.html +1 -1
  58. package/src/artifacts/coverage-jest/FormModal/index.html +1 -1
  59. package/src/artifacts/coverage-jest/FormModal/index.js.html +1 -1
  60. package/src/artifacts/coverage-jest/FormattedKintMessage/FormattedKintMessage.js.html +1 -1
  61. package/src/artifacts/coverage-jest/FormattedKintMessage/index.html +1 -1
  62. package/src/artifacts/coverage-jest/FormattedKintMessage/index.js.html +1 -1
  63. package/src/artifacts/coverage-jest/IconSelect/IconSelect.js.html +1 -1
  64. package/src/artifacts/coverage-jest/IconSelect/index.html +1 -1
  65. package/src/artifacts/coverage-jest/IconSelect/index.js.html +1 -1
  66. package/src/artifacts/coverage-jest/NoResultsMessage/NoResultsMessage.js.html +1 -1
  67. package/src/artifacts/coverage-jest/NoResultsMessage/index.html +1 -1
  68. package/src/artifacts/coverage-jest/NoResultsMessage/index.js.html +1 -1
  69. package/src/artifacts/coverage-jest/NumberField/NumberField.js.html +1 -1
  70. package/src/artifacts/coverage-jest/NumberField/index.html +1 -1
  71. package/src/artifacts/coverage-jest/NumberField/index.js.html +1 -1
  72. package/src/artifacts/coverage-jest/QueryTypedown/QueryTypedown.js.html +1 -1
  73. package/src/artifacts/coverage-jest/QueryTypedown/index.html +1 -1
  74. package/src/artifacts/coverage-jest/QueryTypedown/index.js.html +1 -1
  75. package/src/artifacts/coverage-jest/RefdataButtons/RefdataButtons.js.html +1 -1
  76. package/src/artifacts/coverage-jest/RefdataButtons/index.html +1 -1
  77. package/src/artifacts/coverage-jest/RefdataButtons/index.js.html +1 -1
  78. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/ResponsiveButtonGroup.js.html +1 -1
  79. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/index.html +1 -1
  80. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/index.js.html +1 -1
  81. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/useResponsiveButtonGroupSizing.js.html +1 -1
  82. package/src/artifacts/coverage-jest/RichSelect/RichSelect.js.html +1 -1
  83. package/src/artifacts/coverage-jest/RichSelect/index.html +1 -1
  84. package/src/artifacts/coverage-jest/RichSelect/index.js.html +1 -1
  85. package/src/artifacts/coverage-jest/RichSelect/useSelectedOption.js.html +1 -1
  86. package/src/artifacts/coverage-jest/SASQLookupComponent/SASQLookupComponent.js.html +1 -1
  87. package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/TableBody.js.html +1 -1
  88. package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/index.html +1 -1
  89. package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/index.js.html +1 -1
  90. package/src/artifacts/coverage-jest/SASQLookupComponent/index.html +1 -1
  91. package/src/artifacts/coverage-jest/SASQLookupComponent/index.js.html +1 -1
  92. package/src/artifacts/coverage-jest/SASQRoute/SASQRoute.js.html +1 -1
  93. package/src/artifacts/coverage-jest/SASQRoute/index.html +1 -1
  94. package/src/artifacts/coverage-jest/SASQRoute/index.js.html +1 -1
  95. package/src/artifacts/coverage-jest/SASQViewComponent/SASQViewComponent.js.html +1 -1
  96. package/src/artifacts/coverage-jest/SASQViewComponent/index.html +1 -1
  97. package/src/artifacts/coverage-jest/SASQViewComponent/index.js.html +1 -1
  98. package/src/artifacts/coverage-jest/SearchField/SearchField.js.html +1 -1
  99. package/src/artifacts/coverage-jest/SearchField/index.html +1 -1
  100. package/src/artifacts/coverage-jest/SearchField/index.js.html +1 -1
  101. package/src/artifacts/coverage-jest/SearchKeyControl/SearchKeyControl.js.html +1 -1
  102. package/src/artifacts/coverage-jest/SearchKeyControl/index.html +1 -1
  103. package/src/artifacts/coverage-jest/SearchKeyControl/index.js.html +1 -1
  104. package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/EditableRefdataCategoryList.js.html +1 -1
  105. package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/index.html +1 -1
  106. package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/index.js.html +1 -1
  107. package/src/artifacts/coverage-jest/Settings/EditableRefdataList/EditableRefdataList.js.html +1 -1
  108. package/src/artifacts/coverage-jest/Settings/EditableRefdataList/index.html +1 -1
  109. package/src/artifacts/coverage-jest/Settings/EditableRefdataList/index.js.html +1 -1
  110. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsList.js.html +1 -1
  111. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/EditableSettingsListFieldArray.js.html +1 -1
  112. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/index.html +1 -1
  113. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/index.js.html +1 -1
  114. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/EditSettingValue.js.html +1 -1
  115. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/index.html +1 -1
  116. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/index.js.html +1 -1
  117. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/RenderSettingValue.js.html +1 -1
  118. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/index.html +1 -1
  119. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/index.js.html +1 -1
  120. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/SettingField.js.html +1 -1
  121. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/index.html +1 -1
  122. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/index.js.html +1 -1
  123. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/index.html +1 -1
  124. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/index.js.html +1 -1
  125. package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/RefdataCategoriesSettings.js.html +1 -1
  126. package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/index.html +1 -1
  127. package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/index.js.html +1 -1
  128. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPage.js.html +1 -1
  129. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/SettingPagePane.js.html +1 -1
  130. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/index.html +1 -1
  131. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/index.js.html +1 -1
  132. package/src/artifacts/coverage-jest/Settings/SettingPage/index.html +1 -1
  133. package/src/artifacts/coverage-jest/Settings/SettingPage/index.js.html +1 -1
  134. package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/SettingsFormContainer.js.html +1 -1
  135. package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/index.html +1 -1
  136. package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/index.js.html +1 -1
  137. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsField.js.html +1 -1
  138. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/StaticSettingsFieldComponent.js.html +1 -1
  139. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/index.html +1 -1
  140. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/index.js.html +1 -1
  141. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/index.html +1 -1
  142. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/index.js.html +1 -1
  143. package/src/artifacts/coverage-jest/Settings/constants/index.html +1 -1
  144. package/src/artifacts/coverage-jest/Settings/constants/index.js.html +1 -1
  145. package/src/artifacts/coverage-jest/Settings/constants/queryKeys.js.html +1 -1
  146. package/src/artifacts/coverage-jest/Settings/contexts/SettingsContext.js.html +1 -1
  147. package/src/artifacts/coverage-jest/Settings/contexts/index.html +1 -1
  148. package/src/artifacts/coverage-jest/Settings/contexts/index.js.html +1 -1
  149. package/src/artifacts/coverage-jest/Settings/hooks/index.html +1 -1
  150. package/src/artifacts/coverage-jest/Settings/hooks/index.js.html +1 -1
  151. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/index.html +1 -1
  152. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/index.js.html +1 -1
  153. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/index.html +1 -1
  154. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/index.js.html +1 -1
  155. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/useSettingCallout.js.html +1 -1
  156. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/index.html +1 -1
  157. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/index.js.html +1 -1
  158. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/useSettingsSectionInitalValues.js.html +1 -1
  159. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useStaticSettingsSection.js.html +1 -1
  160. package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/index.html +1 -1
  161. package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/index.js.html +1 -1
  162. package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/useAppSettings.js.html +1 -1
  163. package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/index.html +1 -1
  164. package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/index.js.html +1 -1
  165. package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/useSettingSection.js.html +1 -1
  166. package/src/artifacts/coverage-jest/Settings/hooks/useSettings/index.html +1 -1
  167. package/src/artifacts/coverage-jest/Settings/hooks/useSettings/index.js.html +1 -1
  168. package/src/artifacts/coverage-jest/Settings/hooks/useSettings/useSettings.js.html +1 -1
  169. package/src/artifacts/coverage-jest/Settings/index.html +1 -1
  170. package/src/artifacts/coverage-jest/Settings/index.js.html +1 -1
  171. package/src/artifacts/coverage-jest/Tags/Tags.js.html +1 -1
  172. package/src/artifacts/coverage-jest/Tags/hooks/index.html +1 -1
  173. package/src/artifacts/coverage-jest/Tags/hooks/index.js.html +1 -1
  174. package/src/artifacts/coverage-jest/Tags/hooks/useTags.js.html +1 -1
  175. package/src/artifacts/coverage-jest/Tags/hooks/useTagsEnabled.js.html +1 -1
  176. package/src/artifacts/coverage-jest/Tags/index.html +1 -1
  177. package/src/artifacts/coverage-jest/Tags/index.js.html +1 -1
  178. package/src/artifacts/coverage-jest/Tags/tagsConfig.js.html +1 -1
  179. package/src/artifacts/coverage-jest/Typedown/Typedown.js.html +230 -62
  180. package/src/artifacts/coverage-jest/Typedown/index.html +15 -15
  181. package/src/artifacts/coverage-jest/Typedown/index.js.html +1 -1
  182. package/src/artifacts/coverage-jest/cobertura-coverage.xml +252 -103
  183. package/src/artifacts/coverage-jest/constants/comparators.js.html +1 -1
  184. package/src/artifacts/coverage-jest/constants/customProperties.js.html +1 -1
  185. package/src/artifacts/coverage-jest/constants/endpoints.js.html +1 -1
  186. package/src/artifacts/coverage-jest/constants/eventCodes.js.html +1 -1
  187. package/src/artifacts/coverage-jest/constants/index.html +1 -1
  188. package/src/artifacts/coverage-jest/constants/pagination.js.html +1 -1
  189. package/src/artifacts/coverage-jest/hooks/index.html +1 -1
  190. package/src/artifacts/coverage-jest/hooks/index.js.html +1 -1
  191. package/src/artifacts/coverage-jest/hooks/intlHooks/index.html +1 -1
  192. package/src/artifacts/coverage-jest/hooks/intlHooks/index.js.html +1 -1
  193. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/index.html +1 -1
  194. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/index.js.html +1 -1
  195. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/useIntlKey.js.html +1 -1
  196. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/index.html +1 -1
  197. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/index.js.html +1 -1
  198. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/useIntlKeyStore.js.html +1 -1
  199. package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/index.html +1 -1
  200. package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/index.js.html +1 -1
  201. package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/useKintIntl.js.html +1 -1
  202. package/src/artifacts/coverage-jest/hooks/typedownHooks/index.html +14 -14
  203. package/src/artifacts/coverage-jest/hooks/typedownHooks/index.js.html +1 -1
  204. package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedown.js.html +318 -105
  205. package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedownData.js.html +1 -1
  206. package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedownToggle.js.html +1 -1
  207. package/src/artifacts/coverage-jest/hooks/useActionListRef.js.html +1 -1
  208. package/src/artifacts/coverage-jest/hooks/useActiveElement.js.html +1 -1
  209. package/src/artifacts/coverage-jest/hooks/useCustomProperties.js.html +1 -1
  210. package/src/artifacts/coverage-jest/hooks/useHelperApp.js.html +1 -1
  211. package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/index.html +1 -1
  212. package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/index.js.html +1 -1
  213. package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/useInvalidateRefdata.js.html +1 -1
  214. package/src/artifacts/coverage-jest/hooks/useKiwtFieldArray.js.html +1 -1
  215. package/src/artifacts/coverage-jest/hooks/useKiwtSASQuery.js.html +1 -1
  216. package/src/artifacts/coverage-jest/hooks/useLocalPageStore.js.html +1 -1
  217. package/src/artifacts/coverage-jest/hooks/useLocalStorageState.js.html +1 -1
  218. package/src/artifacts/coverage-jest/hooks/useModConfigEntries.js.html +1 -1
  219. package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/index.html +1 -1
  220. package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/index.js.html +1 -1
  221. package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/useMutateCustomProperties.js.html +1 -1
  222. package/src/artifacts/coverage-jest/hooks/useMutateGeneric/index.html +1 -1
  223. package/src/artifacts/coverage-jest/hooks/useMutateGeneric/index.js.html +1 -1
  224. package/src/artifacts/coverage-jest/hooks/useMutateGeneric/useMutateGeneric.js.html +1 -1
  225. package/src/artifacts/coverage-jest/hooks/useMutateModConfigEntry.js.html +1 -1
  226. package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/index.html +1 -1
  227. package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/index.js.html +1 -1
  228. package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/useMutateRefdataCategory.js.html +1 -1
  229. package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/index.html +1 -1
  230. package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/index.js.html +1 -1
  231. package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/useMutateRefdataValue.js.html +1 -1
  232. package/src/artifacts/coverage-jest/hooks/usePrevNextPagination.js.html +1 -1
  233. package/src/artifacts/coverage-jest/hooks/useQIndex.js.html +1 -1
  234. package/src/artifacts/coverage-jest/hooks/useRefdata.js.html +1 -1
  235. package/src/artifacts/coverage-jest/hooks/useSASQQueryMeta.js.html +1 -1
  236. package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/index.html +1 -1
  237. package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/index.js.html +1 -1
  238. package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/useStandaloneSASQQueryParameter.js.html +1 -1
  239. package/src/artifacts/coverage-jest/hooks/useTemplates.js.html +1 -1
  240. package/src/artifacts/coverage-jest/index.html +40 -25
  241. package/src/artifacts/coverage-jest/utils/buildUrl.js.html +1 -1
  242. package/src/artifacts/coverage-jest/utils/filterParsers/deparseKiwtQueryFilters.js.html +1 -1
  243. package/src/artifacts/coverage-jest/utils/filterParsers/index.html +1 -1
  244. package/src/artifacts/coverage-jest/utils/filterParsers/index.js.html +1 -1
  245. package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryFilters.js.html +1 -1
  246. package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryGroups.js.html +1 -1
  247. package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryString.js.html +1 -1
  248. package/src/artifacts/coverage-jest/utils/generateKiwtQuery.js.html +1 -1
  249. package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/generateKiwtQueryParams.js.html +1 -1
  250. package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/index.html +1 -1
  251. package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/index.js.html +1 -1
  252. package/src/artifacts/coverage-jest/utils/groupCustomPropertiesByCtx.js.html +1 -1
  253. package/src/artifacts/coverage-jest/utils/highlightString.js.html +1 -1
  254. package/src/artifacts/coverage-jest/utils/index.html +1 -1
  255. package/src/artifacts/coverage-jest/utils/index.js.html +1 -1
  256. package/src/artifacts/coverage-jest/utils/matchString.js.html +1 -1
  257. package/src/artifacts/coverage-jest/utils/modConfigEntriesQueryKey.js.html +1 -1
  258. package/src/artifacts/coverage-jest/utils/parseErrorResponse.js.html +1 -1
  259. package/src/artifacts/coverage-jest/utils/parseModConfigEntry.js.html +1 -1
  260. package/src/artifacts/coverage-jest/utils/refdataOptions.js.html +1 -1
  261. package/src/artifacts/coverage-jest/utils/refdataQueryKey/index.html +1 -1
  262. package/src/artifacts/coverage-jest/utils/refdataQueryKey/index.js.html +1 -1
  263. package/src/artifacts/coverage-jest/utils/refdataQueryKey/refdataQueryKey.js.html +1 -1
  264. package/src/artifacts/coverage-jest/utils/selectorSafe.js.html +1 -1
  265. package/src/artifacts/coverage-jest/utils/sortByLabel.js.html +1 -1
  266. package/src/artifacts/coverage-jest/utils/toCamelCase.js.html +1 -1
  267. package/src/artifacts/coverage-jest/utils/typedownQueryKey.js.html +1 -1
  268. package/src/artifacts/coverage-jest/validators/index.html +1 -1
  269. package/src/artifacts/coverage-jest/validators/index.js.html +1 -1
  270. package/src/artifacts/coverage-jest/validators/validators.js.html +1 -1
  271. package/src/index.js +4 -0
  272. package/src/lib/ButtonTypedown/ButtonTypedown.js +53 -0
  273. package/src/lib/ButtonTypedown/README.md +53 -0
  274. package/src/lib/ButtonTypedown/index.js +1 -0
  275. package/src/lib/Typedown/README.md +24 -21
  276. package/src/lib/Typedown/Typedown.js +106 -50
  277. package/src/lib/hooks/typedownHooks/useTypedown.js +165 -94
  278. package/styles/TypeDown.css +4 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">1.63% </span>
26
+ <span class="strong">1.17% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>1/61</span>
28
+ <span class='fraction'>1/85</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/42</span>
35
+ <span class='fraction'>0/61</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/8</span>
42
+ <span class='fraction'>0/22</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">1.69% </span>
47
+ <span class="strong">1.29% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>1/59</span>
49
+ <span class='fraction'>1/77</span>
50
50
  </div>
51
51
 
52
52
 
@@ -222,7 +222,78 @@
222
222
  <a name='L157'></a><a href='#L157'>157</a>
223
223
  <a name='L158'></a><a href='#L158'>158</a>
224
224
  <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
226
297
  <span class="cline-any cline-neutral">&nbsp;</span>
227
298
  <span class="cline-any cline-neutral">&nbsp;</span>
228
299
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -240,13 +311,17 @@
240
311
  <span class="cline-any cline-neutral">&nbsp;</span>
241
312
  <span class="cline-any cline-neutral">&nbsp;</span>
242
313
  <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-yes">23x</span>
243
315
  <span class="cline-any cline-neutral">&nbsp;</span>
244
316
  <span class="cline-any cline-neutral">&nbsp;</span>
245
- <span class="cline-any cline-yes">23x</span>
246
317
  <span class="cline-any cline-neutral">&nbsp;</span>
247
318
  <span class="cline-any cline-neutral">&nbsp;</span>
248
319
  <span class="cline-any cline-neutral">&nbsp;</span>
249
320
  <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-neutral">&nbsp;</span>
322
+ <span class="cline-any cline-no">&nbsp;</span>
323
+ <span class="cline-any cline-no">&nbsp;</span>
324
+ <span class="cline-any cline-no">&nbsp;</span>
250
325
  <span class="cline-any cline-no">&nbsp;</span>
251
326
  <span class="cline-any cline-neutral">&nbsp;</span>
252
327
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -254,42 +329,94 @@
254
329
  <span class="cline-any cline-no">&nbsp;</span>
255
330
  <span class="cline-any cline-no">&nbsp;</span>
256
331
  <span class="cline-any cline-no">&nbsp;</span>
257
- <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-no">&nbsp;</span>
258
333
  <span class="cline-any cline-no">&nbsp;</span>
259
334
  <span class="cline-any cline-neutral">&nbsp;</span>
260
335
  <span class="cline-any cline-neutral">&nbsp;</span>
261
336
  <span class="cline-any cline-no">&nbsp;</span>
337
+ <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-no">&nbsp;</span>
262
339
  <span class="cline-any cline-no">&nbsp;</span>
340
+ <span class="cline-any cline-no">&nbsp;</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
263
343
  <span class="cline-any cline-neutral">&nbsp;</span>
264
344
  <span class="cline-any cline-no">&nbsp;</span>
265
345
  <span class="cline-any cline-neutral">&nbsp;</span>
266
346
  <span class="cline-any cline-no">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
267
349
  <span class="cline-any cline-no">&nbsp;</span>
268
350
  <span class="cline-any cline-no">&nbsp;</span>
269
351
  <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
354
  <span class="cline-any cline-no">&nbsp;</span>
271
355
  <span class="cline-any cline-neutral">&nbsp;</span>
272
356
  <span class="cline-any cline-no">&nbsp;</span>
273
357
  <span class="cline-any cline-no">&nbsp;</span>
274
358
  <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-no">&nbsp;</span>
276
359
  <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
361
+ <span class="cline-any cline-no">&nbsp;</span>
277
362
  <span class="cline-any cline-neutral">&nbsp;</span>
278
363
  <span class="cline-any cline-no">&nbsp;</span>
279
364
  <span class="cline-any cline-neutral">&nbsp;</span>
280
365
  <span class="cline-any cline-neutral">&nbsp;</span>
281
366
  <span class="cline-any cline-neutral">&nbsp;</span>
282
367
  <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-neutral">&nbsp;</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-neutral">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-neutral">&nbsp;</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-no">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
399
  <span class="cline-any cline-no">&nbsp;</span>
284
400
  <span class="cline-any cline-neutral">&nbsp;</span>
285
401
  <span class="cline-any cline-neutral">&nbsp;</span>
286
402
  <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-neutral">&nbsp;</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-no">&nbsp;</span>
287
409
  <span class="cline-any cline-no">&nbsp;</span>
288
410
  <span class="cline-any cline-no">&nbsp;</span>
289
411
  <span class="cline-any cline-no">&nbsp;</span>
290
412
  <span class="cline-any cline-no">&nbsp;</span>
291
413
  <span class="cline-any cline-no">&nbsp;</span>
292
414
  <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-no">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-neutral">&nbsp;</span>
418
+ <span class="cline-any cline-no">&nbsp;</span>
419
+ <span class="cline-any cline-no">&nbsp;</span>
293
420
  <span class="cline-any cline-neutral">&nbsp;</span>
294
421
  <span class="cline-any cline-neutral">&nbsp;</span>
295
422
  <span class="cline-any cline-no">&nbsp;</span>
@@ -298,9 +425,11 @@
298
425
  <span class="cline-any cline-no">&nbsp;</span>
299
426
  <span class="cline-any cline-neutral">&nbsp;</span>
300
427
  <span class="cline-any cline-neutral">&nbsp;</span>
428
+ <span class="cline-any cline-no">&nbsp;</span>
301
429
  <span class="cline-any cline-neutral">&nbsp;</span>
302
430
  <span class="cline-any cline-neutral">&nbsp;</span>
303
431
  <span class="cline-any cline-no">&nbsp;</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
304
433
  <span class="cline-any cline-no">&nbsp;</span>
305
434
  <span class="cline-any cline-neutral">&nbsp;</span>
306
435
  <span class="cline-any cline-no">&nbsp;</span>
@@ -310,6 +439,8 @@
310
439
  <span class="cline-any cline-no">&nbsp;</span>
311
440
  <span class="cline-any cline-neutral">&nbsp;</span>
312
441
  <span class="cline-any cline-neutral">&nbsp;</span>
442
+ <span class="cline-any cline-no">&nbsp;</span>
443
+ <span class="cline-any cline-no">&nbsp;</span>
313
444
  <span class="cline-any cline-neutral">&nbsp;</span>
314
445
  <span class="cline-any cline-neutral">&nbsp;</span>
315
446
  <span class="cline-any cline-no">&nbsp;</span>
@@ -319,20 +450,24 @@
319
450
  <span class="cline-any cline-neutral">&nbsp;</span>
320
451
  <span class="cline-any cline-neutral">&nbsp;</span>
321
452
  <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-no">&nbsp;</span>
322
456
  <span class="cline-any cline-no">&nbsp;</span>
323
457
  <span class="cline-any cline-no">&nbsp;</span>
324
458
  <span class="cline-any cline-neutral">&nbsp;</span>
325
459
  <span class="cline-any cline-neutral">&nbsp;</span>
326
460
  <span class="cline-any cline-no">&nbsp;</span>
327
461
  <span class="cline-any cline-no">&nbsp;</span>
328
- <span class="cline-any cline-neutral">&nbsp;</span>
329
462
  <span class="cline-any cline-no">&nbsp;</span>
330
463
  <span class="cline-any cline-no">&nbsp;</span>
331
464
  <span class="cline-any cline-no">&nbsp;</span>
332
465
  <span class="cline-any cline-no">&nbsp;</span>
333
466
  <span class="cline-any cline-neutral">&nbsp;</span>
334
- <span class="cline-any cline-no">&nbsp;</span>
335
467
  <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-no">&nbsp;</span>
336
471
  <span class="cline-any cline-no">&nbsp;</span>
337
472
  <span class="cline-any cline-neutral">&nbsp;</span>
338
473
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -340,23 +475,30 @@
340
475
  <span class="cline-any cline-no">&nbsp;</span>
341
476
  <span class="cline-any cline-neutral">&nbsp;</span>
342
477
  <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
479
  <span class="cline-any cline-no">&nbsp;</span>
344
480
  <span class="cline-any cline-no">&nbsp;</span>
345
481
  <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
485
  <span class="cline-any cline-no">&nbsp;</span>
347
486
  <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
488
  <span class="cline-any cline-no">&nbsp;</span>
349
489
  <span class="cline-any cline-no">&nbsp;</span>
350
490
  <span class="cline-any cline-neutral">&nbsp;</span>
351
- <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-no">&nbsp;</span>
352
492
  <span class="cline-any cline-neutral">&nbsp;</span>
353
493
  <span class="cline-any cline-no">&nbsp;</span>
494
+ <span class="cline-any cline-no">&nbsp;</span>
354
495
  <span class="cline-any cline-neutral">&nbsp;</span>
355
496
  <span class="cline-any cline-neutral">&nbsp;</span>
356
497
  <span class="cline-any cline-neutral">&nbsp;</span>
357
498
  <span class="cline-any cline-no">&nbsp;</span>
358
499
  <span class="cline-any cline-neutral">&nbsp;</span>
359
500
  <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
502
  <span class="cline-any cline-no">&nbsp;</span>
361
503
  <span class="cline-any cline-neutral">&nbsp;</span>
362
504
  <span class="cline-any cline-no">&nbsp;</span>
@@ -381,7 +523,7 @@
381
523
  <span class="cline-any cline-neutral">&nbsp;</span>
382
524
  <span class="cline-any cline-neutral">&nbsp;</span>
383
525
  <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { useEffect, useRef, useState } from 'react';
526
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { useCallback, useEffect, useRef, useState } from 'react';
385
527
  import { useResizeDetector } from 'react-resize-detector';
386
528
  &nbsp;
387
529
  import {
@@ -397,106 +539,180 @@ import {
397
539
  UP_ARROW
398
540
  } from '../../constants/eventCodes';
399
541
  &nbsp;
400
- import selectorSafe from '../../utils/selectorSafe';
401
- &nbsp;
402
542
  import useTypedownToggle from './useTypedownToggle';
403
543
  &nbsp;
404
544
  const useTypedown = <span class="fstat-no" title="function not covered" >(</span>
405
545
  name,
406
- { timeout = <span class="branch-0 cbranch-no" title="branch not covered" >800 </span>} = <span class="branch-0 cbranch-no" title="branch not covered" >{}</span>
546
+ {
547
+ dataOptions,
548
+ timeout = <span class="branch-0 cbranch-no" title="branch not covered" >800</span>
549
+ } = <span class="branch-0 cbranch-no" title="branch not covered" >{}</span>
407
550
  ) =&gt; {
408
- // SEARCHFIELD COMPONENT
409
- const searchFieldComponent = <span class="cstat-no" title="statement not covered" >document.getElementById(`typedown-searchField-${selectorSafe(name)}`);</span>
551
+ // SET UP STATE HOLDING DOM ELEMENTS
552
+ const [list, setList] = <span class="cstat-no" title="statement not covered" >useState();</span>
553
+ const [trigger, setTrigger] = <span class="cstat-no" title="statement not covered" >useState();</span>
554
+ const [footer, setFooter] = <span class="cstat-no" title="statement not covered" >useState();</span>
555
+ const [header, setHeader] = <span class="cstat-no" title="statement not covered" >useState();</span>
410
556
  &nbsp;
411
557
  // SET UP REFS
412
- const listRef = <span class="cstat-no" title="statement not covered" >useRef();</span>
413
558
  const triggerRef = <span class="cstat-no" title="statement not covered" >useRef();</span>
414
559
  const overlayRef = <span class="cstat-no" title="statement not covered" >useRef();</span>
415
- const footerRef = <span class="cstat-no" title="statement not covered" >useRef();</span>
416
- &nbsp;
417
- const footer = <span class="cstat-no" title="statement not covered" >document.getElementById(`typedown-footer-${selectorSafe(name)}`);</span>
418
- // Add an event listener to the footer, so that we can control tab behaviour between footer elements
419
- &nbsp;
420
- <span class="cstat-no" title="statement not covered" > if (footer &amp;&amp; footer.getAttribute('hasListener') !== 'true') {</span>
421
- <span class="cstat-no" title="statement not covered" > footer.addEventListener('keydown', <span class="fstat-no" title="function not covered" >e </span>=&gt; {</span>
422
- // We want special behaviour on tab
423
- <span class="cstat-no" title="statement not covered" > if (e.code === TAB) {</span>
424
- // Prevent the default behaviour
425
- <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
426
- const focusFunc = <span class="cstat-no" title="statement not covered" >e.shiftKey ? getPreviousFocusable : getNextFocusable;</span>
427
- const elem = <span class="cstat-no" title="statement not covered" >focusFunc(footerRef.current, true, true, false, true);</span>
428
- &nbsp;
429
- <span class="cstat-no" title="statement not covered" > if (elem) {</span>
430
- // Focus on next focusable element
431
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
432
- } else <span class="cstat-no" title="statement not covered" >if (e.shiftKey) {</span>
433
- // We are at the beginning of the list, refocus on search bar
434
- <span class="cstat-no" title="statement not covered" > searchFieldComponent.focus();</span>
435
- } else {
436
- // We are at the end of the list, move onto next focusable element in page
437
- <span class="cstat-no" title="statement not covered" > getNextFocusable(searchFieldComponent, false).focus();</span>
438
- }
439
- }
440
- });
441
- &nbsp;
442
- <span class="cstat-no" title="statement not covered" > footer.setAttribute('hasListener', 'true');</span>
443
- }
444
- &nbsp;
445
- // SET UP HANDLERS
446
- const searchFieldKeyDownHandler = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >e </span>=&gt; {</span>
447
- <span class="cstat-no" title="statement not covered" > if (e.code === UP_ARROW) {</span>
448
- const elem = <span class="cstat-no" title="statement not covered" >getLastFocusable(listRef.current, true, true);</span>
449
- <span class="cstat-no" title="statement not covered" > if (elem) {</span>
450
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
451
- }
452
- }
560
+ const listRef = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >no</span>de =&gt; <span class="cstat-no" title="statement not covered" >setList(node),</span> []);</span>
561
+ const triggerComponentRef = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >no</span>de =&gt; <span class="cstat-no" title="statement not covered" >setTrigger(node),</span> []);</span>
562
+ const footerRef = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >no</span>de =&gt; <span class="cstat-no" title="statement not covered" >setFooter(node),</span> []);</span>
563
+ const headerRef = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >no</span>de =&gt; <span class="cstat-no" title="statement not covered" >setHeader(node),</span> []);</span>
453
564
  &nbsp;
454
- <span class="cstat-no" title="statement not covered" > if (e.code === DOWN_ARROW) {</span>
455
- const elem = <span class="cstat-no" title="statement not covered" >getFirstFocusable(listRef.current, true, true);</span>
456
- <span class="cstat-no" title="statement not covered" > if (elem) {</span>
457
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
458
- }
459
- }
565
+ // OVERLAY PORTAL
566
+ const portal = <span class="cstat-no" title="statement not covered" >document.getElementById('OverlayContainer');</span>
460
567
  &nbsp;
461
- // Tab key (But not while shifting)
462
- <span class="cstat-no" title="statement not covered" > if (e.code === TAB &amp;&amp; !e.shiftKey) {</span>
463
- <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
464
- // If we have focusable elements in the footer, then focus on them, else unfocus searchbar
465
- const elem = <span class="cstat-no" title="statement not covered" >getNextFocusable(footerRef.current, true, true, true, true);</span>
466
- <span class="cstat-no" title="statement not covered" > if (elem) {</span>
467
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
468
- } else {
469
- <span class="cstat-no" title="statement not covered" > getNextFocusable(searchFieldComponent, false).focus();</span>
470
- }
568
+ const getPreviousToTrigger = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
569
+ const prevElem = <span class="cstat-no" title="statement not covered" >getPreviousFocusable(trigger, false, false, false);</span>
570
+ <span class="cstat-no" title="statement not covered" > if (prevElem.closest('[id^=OverlayContainer]') !== null) {</span>
571
+ // If we find ourselves inside the OverlayContainer when heading backwards from the trigger
572
+ // then we must be the first focusable element on the page.
573
+ // From here we need to skip over the overlay container and head backwards
574
+ <span class="cstat-no" title="statement not covered" > return getPreviousFocusable(portal, false, false, false);</span>
471
575
  }
472
- };
576
+ <span class="cstat-no" title="statement not covered" > return prevElem;</span>
577
+ }, [portal, trigger]);
473
578
  &nbsp;
474
- const listKeyDownHandler = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >e </span>=&gt; {</span>
475
- <span class="cstat-no" title="statement not covered" > if (e.code === DOWN_ARROW) {</span>
476
- const elem = <span class="cstat-no" title="statement not covered" >getNextFocusable(listRef.current, true, true);</span>
477
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
478
- }
579
+ <span class="cstat-no" title="statement not covered" > useEffect(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
580
+ const cleanups = <span class="cstat-no" title="statement not covered" >[];</span>
479
581
  &nbsp;
480
- <span class="cstat-no" title="statement not covered" > if (e.code === UP_ARROW) {</span>
481
- const elem = <span class="cstat-no" title="statement not covered" >getPreviousFocusable(listRef.current, true, true);</span>
482
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
483
- }
582
+ // There appears to be some BIZARRE off-by-one issue with selectors here, that can be fixed by introducing a 1ms delay...
583
+ // I hate it but it is effective
584
+ <span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
585
+ // Split these out to shut up the linter
586
+ const rawFirstItemInList = (<span class="cstat-no" title="statement not covered" >list ? getFirstFocusable(list) : null)</span>;
587
+ const rawLastItemInList = (<span class="cstat-no" title="statement not covered" >list ? getLastFocusable(list) : null)</span>;
484
588
  &nbsp;
485
- <span class="cstat-no" title="statement not covered" > if (e.code === TAB) {</span>
486
- <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
487
- let elem;
488
- <span class="cstat-no" title="statement not covered" > if (!e.shiftKey &amp;&amp; !footerRef.current) {</span>
489
- <span class="cstat-no" title="statement not covered" > elem = getNextFocusable(searchFieldComponent, false);</span>
490
- } else <span class="cstat-no" title="statement not covered" >if (!e.shiftKey) {</span>
491
- <span class="cstat-no" title="statement not covered" > elem = getNextFocusable(footerRef.current, true, true, true, true);</span>
492
- } else {
493
- <span class="cstat-no" title="statement not covered" > elem = searchFieldComponent;</span>
494
- }
495
- <span class="cstat-no" title="statement not covered" > elem.focus();</span>
496
- }
497
- };
589
+ // If there are no dataOptions, this can get a bit stuck, so deliberately set to null when no dataOptions are present
590
+ const firstItemInList = <span class="cstat-no" title="statement not covered" >dataOptions.length &gt; 0 ? rawFirstItemInList : null;</span>
591
+ const lastItemInList = <span class="cstat-no" title="statement not covered" >dataOptions.length &gt; 0 ? rawLastItemInList : null;</span>
592
+ &nbsp;
593
+ const configs = <span class="cstat-no" title="statement not covered" >[</span>
594
+ // --- HEADER CONFIG ---
595
+ {
596
+ element: header,
597
+ allowTabThroughContents: true,
598
+ previousElement: trigger,
599
+ nextElement: (footer ? getFirstFocusable(footer) : null) ?? getNextFocusable(trigger, false),
600
+ downElement: firstItemInList,
601
+ upElement: lastItemInList,
602
+ },
603
+ // --- FOOTER CONFIG ---
604
+ {
605
+ element: footer,
606
+ allowTabThroughContents: true,
607
+ previousElement: (header ? getLastFocusable(header) : null) ?? trigger,
608
+ nextElement: getNextFocusable(trigger, false),
609
+ downElement: firstItemInList,
610
+ upElement: lastItemInList,
611
+ },
612
+ // --- LIST/CONTAINER CONFIG ---
613
+ {
614
+ element: list,
615
+ allowUpDownThroughContents: true,
616
+ previousElement: (header ? getLastFocusable(header) : null) ?? trigger,
617
+ nextElement: (footer ? getFirstFocusable(footer) : null) ?? getNextFocusable(trigger, false)
618
+ },
619
+ // --- TRIGGER CONFIG ---
620
+ {
621
+ element: trigger,
622
+ nextElement: (header ? getFirstFocusable(header) : null) ?? (footer ? getFirstFocusable(footer) : null) ?? getNextFocusable(trigger, false),
623
+ previousElement: getPreviousToTrigger(),
624
+ downElement: firstItemInList,
625
+ upElement: lastItemInList,
626
+ }
627
+ ].filter(<span class="fstat-no" title="function not covered" >c </span>=&gt; <span class="cstat-no" title="statement not covered" >c.element)</span>; // Filter out configs where the element (e.g., header) is null
628
+ &nbsp;
629
+ const setupListener = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(c</span>onfig) =&gt; {</span>
630
+ const {
631
+ element,
632
+ allowTabThroughContents,
633
+ previousElement,
634
+ nextElement,
635
+ allowUpDownThroughContents,
636
+ downElement,
637
+ upElement,
638
+ } = <span class="cstat-no" title="statement not covered" >config;</span>
639
+ const handleTab = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >e </span>=&gt; {</span>
640
+ const IS_SHIFT = <span class="cstat-no" title="statement not covered" >e.shiftKey;</span>
641
+ const tabIgnoreContents = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
642
+ <span class="cstat-no" title="statement not covered" > if (IS_SHIFT) {</span>
643
+ <span class="cstat-no" title="statement not covered" > return previousElement?.focus();</span>
644
+ }
645
+ <span class="cstat-no" title="statement not covered" > return nextElement?.focus();</span>
646
+ };
647
+ &nbsp;
648
+ <span class="cstat-no" title="statement not covered" > if (!allowTabThroughContents) {</span>
649
+ <span class="cstat-no" title="statement not covered" > return tabIgnoreContents();</span>
650
+ }
651
+ &nbsp;
652
+ const focusFunc = <span class="cstat-no" title="statement not covered" >IS_SHIFT ? getPreviousFocusable : getNextFocusable;</span>
653
+ const elem = <span class="cstat-no" title="statement not covered" >focusFunc(element, true, true, false, true);</span>
654
+ <span class="cstat-no" title="statement not covered" > if (elem) {</span>
655
+ <span class="cstat-no" title="statement not covered" > return elem.focus();</span>
656
+ }
498
657
  &nbsp;
499
- const handleNextFocus = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >getNextFocusable(searchFieldComponent, false).focus();</span></span>
658
+ <span class="cstat-no" title="statement not covered" > return tabIgnoreContents();</span>
659
+ };
660
+ &nbsp;
661
+ const handleUpDown = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >e </span>=&gt; {</span>
662
+ // Prevent the default behaviour
663
+ const IS_UP = <span class="cstat-no" title="statement not covered" >e.code === UP_ARROW;</span>
664
+ &nbsp;
665
+ const upDownIgnoreContents = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
666
+ <span class="cstat-no" title="statement not covered" > if (IS_UP) {</span>
667
+ <span class="cstat-no" title="statement not covered" > return upElement?.focus();</span>
668
+ }
669
+ <span class="cstat-no" title="statement not covered" > return downElement?.focus();</span>
670
+ };
671
+ &nbsp;
672
+ <span class="cstat-no" title="statement not covered" > if (!allowUpDownThroughContents) {</span>
673
+ <span class="cstat-no" title="statement not covered" > return upDownIgnoreContents();</span>
674
+ }
675
+ &nbsp;
676
+ const focusFunc = <span class="cstat-no" title="statement not covered" >IS_UP ? getPreviousFocusable : getNextFocusable;</span>
677
+ const elem = <span class="cstat-no" title="statement not covered" >focusFunc(element, true, true, true, true);</span> // Allow looping through elements
678
+ <span class="cstat-no" title="statement not covered" > if (elem) {</span>
679
+ <span class="cstat-no" title="statement not covered" > return elem.focus();</span>
680
+ }
681
+ &nbsp;
682
+ <span class="cstat-no" title="statement not covered" > return upDownIgnoreContents();</span>
683
+ };
684
+ &nbsp;
685
+ const handler = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(e</span>) =&gt; {</span>
686
+ <span class="cstat-no" title="statement not covered" > if (!element.contains(document.activeElement)) {</span>
687
+ <span class="cstat-no" title="statement not covered" > return;</span>
688
+ }
689
+ &nbsp;
690
+ <span class="cstat-no" title="statement not covered" > if (e.code === TAB) {</span>
691
+ <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
692
+ <span class="cstat-no" title="statement not covered" > handleTab(e);</span>
693
+ } else <span class="cstat-no" title="statement not covered" >if (e.code === DOWN_ARROW || e.code === UP_ARROW) {</span>
694
+ <span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
695
+ <span class="cstat-no" title="statement not covered" > handleUpDown(e);</span>
696
+ }
697
+ };
698
+ &nbsp;
699
+ // Add event listener and add the removal of said event listener to the cleanup function
700
+ <span class="cstat-no" title="statement not covered" > element.addEventListener('keydown', handler);</span>
701
+ <span class="cstat-no" title="statement not covered" > cleanups.push(<span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >element.removeEventListener('keydown', handler))</span>;</span>
702
+ };
703
+ &nbsp;
704
+ // Set up the event listener for each config entry
705
+ <span class="cstat-no" title="statement not covered" > configs.forEach(setupListener);</span>
706
+ }, 0);
707
+ &nbsp;
708
+ // Cleanup any event listeners
709
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
710
+ <span class="cstat-no" title="statement not covered" > cleanups.forEach(<span class="fstat-no" title="function not covered" >cl</span>eanup =&gt; <span class="cstat-no" title="statement not covered" >cleanup())</span>;</span>
711
+ };
712
+ // Re-add the listener ANY time any of the elements changes (this is why we're using callback refs)
713
+ }, [dataOptions, header, trigger, footer, list, getPreviousToTrigger]);
714
+ &nbsp;
715
+ const handleNextFocus = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >getNextFocusable(trigger, false).focus();</span></span>
500
716
  &nbsp;
501
717
  // SET UP VARIABLES
502
718
  const { open } = <span class="cstat-no" title="statement not covered" >useTypedownToggle(name);</span>
@@ -514,21 +730,18 @@ const useTypedown = <span class="fstat-no" title="function not covered" >(</span
514
730
  &nbsp;
515
731
  // RESIZE STUFF
516
732
  const { width: searchWidth, ref: resizeRef } = <span class="cstat-no" title="statement not covered" >useResizeDetector();</span>
517
- &nbsp;
518
- // OVERLAY PORTAL
519
- const portal = <span class="cstat-no" title="statement not covered" >document.getElementById('OverlayContainer');</span>
520
733
  &nbsp;
521
734
  <span class="cstat-no" title="statement not covered" > return {</span>
522
735
  refs: {
523
736
  listRef,
524
737
  triggerRef,
738
+ triggerComponentRef,
525
739
  overlayRef,
526
- footerRef
740
+ footerRef,
741
+ headerRef
527
742
  },
528
743
  handlers: {
529
744
  handleNextFocus,
530
- listKeyDownHandler,
531
- searchFieldKeyDownHandler
532
745
  },
533
746
  variables: {
534
747
  open: useOpen ? open : false,
@@ -547,7 +760,7 @@ export default useTypedown;
547
760
  <div class='footer quiet pad2 space-top1 center small'>
548
761
  Code coverage generated by
549
762
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
550
- at 2025-12-10T12:12:10.913Z
763
+ at 2025-12-12T20:17:01.385Z
551
764
  </div>
552
765
  <script src="../../prettify.js"></script>
553
766
  <script>