@aglyn/shared-ui-jsx 1.0.0-beta.143

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 (261) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +7 -0
  3. package/package.json +63 -0
  4. package/src/index.d.ts +48 -0
  5. package/src/index.js +179 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/components/aglyn-text.d.ts +86 -0
  8. package/src/lib/components/aglyn-text.js +44 -0
  9. package/src/lib/components/aglyn-text.js.map +1 -0
  10. package/src/lib/components/app-link.d.ts +74 -0
  11. package/src/lib/components/app-link.js +139 -0
  12. package/src/lib/components/app-link.js.map +1 -0
  13. package/src/lib/components/aspect-ratio.d.ts +59 -0
  14. package/src/lib/components/aspect-ratio.js +153 -0
  15. package/src/lib/components/aspect-ratio.js.map +1 -0
  16. package/src/lib/components/background-image.component.d.ts +30 -0
  17. package/src/lib/components/background-image.component.js +42 -0
  18. package/src/lib/components/background-image.component.js.map +1 -0
  19. package/src/lib/components/card-columns.d.ts +86 -0
  20. package/src/lib/components/card-columns.js +148 -0
  21. package/src/lib/components/card-columns.js.map +1 -0
  22. package/src/lib/components/card-display.d.ts +36 -0
  23. package/src/lib/components/card-display.js +158 -0
  24. package/src/lib/components/card-display.js.map +1 -0
  25. package/src/lib/components/card-list-item.d.ts +35 -0
  26. package/src/lib/components/card-list-item.js +137 -0
  27. package/src/lib/components/card-list-item.js.map +1 -0
  28. package/src/lib/components/children-function-prop.d.ts +25 -0
  29. package/src/lib/components/children-function-prop.js +29 -0
  30. package/src/lib/components/children-function-prop.js.map +1 -0
  31. package/src/lib/components/confirmation-provider.component.d.ts +19 -0
  32. package/src/lib/components/confirmation-provider.component.js +83 -0
  33. package/src/lib/components/confirmation-provider.component.js.map +1 -0
  34. package/src/lib/components/container.d.ts +25 -0
  35. package/src/lib/components/container.js +62 -0
  36. package/src/lib/components/container.js.map +1 -0
  37. package/src/lib/components/data-table.component.d.ts +54 -0
  38. package/src/lib/components/data-table.component.js +211 -0
  39. package/src/lib/components/data-table.component.js.map +1 -0
  40. package/src/lib/components/dialog-confirm.d.ts +36 -0
  41. package/src/lib/components/dialog-confirm.js +74 -0
  42. package/src/lib/components/dialog-confirm.js.map +1 -0
  43. package/src/lib/components/ellipsis-pulse.component.d.ts +22 -0
  44. package/src/lib/components/ellipsis-pulse.component.js +51 -0
  45. package/src/lib/components/ellipsis-pulse.component.js.map +1 -0
  46. package/src/lib/components/emotion-cache-provider.d.ts +31 -0
  47. package/src/lib/components/emotion-cache-provider.js +40 -0
  48. package/src/lib/components/emotion-cache-provider.js.map +1 -0
  49. package/src/lib/components/empty-state.component.d.ts +63 -0
  50. package/src/lib/components/empty-state.component.js +214 -0
  51. package/src/lib/components/empty-state.component.js.map +1 -0
  52. package/src/lib/components/error-boundary.component.d.ts +28 -0
  53. package/src/lib/components/error-boundary.component.js +86 -0
  54. package/src/lib/components/error-boundary.component.js.map +1 -0
  55. package/src/lib/components/grid-buttons.d.ts +26 -0
  56. package/src/lib/components/grid-buttons.js +45 -0
  57. package/src/lib/components/grid-buttons.js.map +1 -0
  58. package/src/lib/components/grid-items.d.ts +103 -0
  59. package/src/lib/components/grid-items.js +336 -0
  60. package/src/lib/components/grid-items.js.map +1 -0
  61. package/src/lib/components/grid-list.d.ts +37 -0
  62. package/src/lib/components/grid-list.js +156 -0
  63. package/src/lib/components/grid-list.js.map +1 -0
  64. package/src/lib/components/help-tip.component.d.ts +30 -0
  65. package/src/lib/components/help-tip.component.js +139 -0
  66. package/src/lib/components/help-tip.component.js.map +1 -0
  67. package/src/lib/components/link-navigation-reporter.d.ts +24 -0
  68. package/src/lib/components/link-navigation-reporter.js +64 -0
  69. package/src/lib/components/link-navigation-reporter.js.map +1 -0
  70. package/src/lib/components/list-pagination.component.d.ts +57 -0
  71. package/src/lib/components/list-pagination.component.js +90 -0
  72. package/src/lib/components/list-pagination.component.js.map +1 -0
  73. package/src/lib/components/list-table.component.d.ts +155 -0
  74. package/src/lib/components/list-table.component.js +369 -0
  75. package/src/lib/components/list-table.component.js.map +1 -0
  76. package/src/lib/components/loading-layout-app.component.d.ts +35 -0
  77. package/src/lib/components/loading-layout-app.component.js +42 -0
  78. package/src/lib/components/loading-layout-app.component.js.map +1 -0
  79. package/src/lib/components/loading-modal-overlay.d.ts +30 -0
  80. package/src/lib/components/loading-modal-overlay.js +156 -0
  81. package/src/lib/components/loading-modal-overlay.js.map +1 -0
  82. package/src/lib/components/loading-modal.d.ts +19 -0
  83. package/src/lib/components/loading-modal.js +113 -0
  84. package/src/lib/components/loading-modal.js.map +1 -0
  85. package/src/lib/components/loading-text.component.d.ts +21 -0
  86. package/src/lib/components/loading-text.component.js +40 -0
  87. package/src/lib/components/loading-text.component.js.map +1 -0
  88. package/src/lib/components/mdi-icon/index.d.ts +2 -0
  89. package/src/lib/components/mdi-icon/index.js +4 -0
  90. package/src/lib/components/mdi-icon/index.js.map +1 -0
  91. package/src/lib/components/mdi-icon/md-icon-stack.d.ts +31 -0
  92. package/src/lib/components/mdi-icon/md-icon-stack.js +101 -0
  93. package/src/lib/components/mdi-icon/md-icon-stack.js.map +1 -0
  94. package/src/lib/components/mdi-icon/md-icon.d.ts +32 -0
  95. package/src/lib/components/mdi-icon/md-icon.js +147 -0
  96. package/src/lib/components/mdi-icon/md-icon.js.map +1 -0
  97. package/src/lib/components/mdi-icon/mdi-icon-from-id.d.ts +23 -0
  98. package/src/lib/components/mdi-icon/mdi-icon-from-id.js +35 -0
  99. package/src/lib/components/mdi-icon/mdi-icon-from-id.js.map +1 -0
  100. package/src/lib/components/mdi-icon/mdi-icon.d.ts +24 -0
  101. package/src/lib/components/mdi-icon/mdi-icon.js +46 -0
  102. package/src/lib/components/mdi-icon/mdi-icon.js.map +1 -0
  103. package/src/lib/components/measured-figures.component.d.ts +64 -0
  104. package/src/lib/components/measured-figures.component.js +161 -0
  105. package/src/lib/components/measured-figures.component.js.map +1 -0
  106. package/src/lib/components/menu.d.ts +45 -0
  107. package/src/lib/components/menu.js +229 -0
  108. package/src/lib/components/menu.js.map +1 -0
  109. package/src/lib/components/mui-shadow-dom.d.ts +38 -0
  110. package/src/lib/components/mui-shadow-dom.js +161 -0
  111. package/src/lib/components/mui-shadow-dom.js.map +1 -0
  112. package/src/lib/components/navigation-drawer.component.d.ts +31 -0
  113. package/src/lib/components/navigation-drawer.component.js +76 -0
  114. package/src/lib/components/navigation-drawer.component.js.map +1 -0
  115. package/src/lib/components/navigation-intent.d.ts +18 -0
  116. package/src/lib/components/navigation-intent.js +56 -0
  117. package/src/lib/components/navigation-intent.js.map +1 -0
  118. package/src/lib/components/navigation-view/index.d.ts +18 -0
  119. package/src/lib/components/navigation-view/index.js +19 -0
  120. package/src/lib/components/navigation-view/index.js.map +1 -0
  121. package/src/lib/components/navigation-view/navigation-view.d.ts +35 -0
  122. package/src/lib/components/navigation-view/navigation-view.js +175 -0
  123. package/src/lib/components/navigation-view/navigation-view.js.map +1 -0
  124. package/src/lib/components/next-link.d.ts +27 -0
  125. package/src/lib/components/next-link.js +88 -0
  126. package/src/lib/components/next-link.js.map +1 -0
  127. package/src/lib/components/popper-styled.component.d.ts +25 -0
  128. package/src/lib/components/popper-styled.component.js +129 -0
  129. package/src/lib/components/popper-styled.component.js.map +1 -0
  130. package/src/lib/components/quota-readout.component.d.ts +69 -0
  131. package/src/lib/components/quota-readout.component.js +52 -0
  132. package/src/lib/components/quota-readout.component.js.map +1 -0
  133. package/src/lib/components/resizeable-stack.d.ts +4 -0
  134. package/src/lib/components/resizeable-stack.js +23 -0
  135. package/src/lib/components/resizeable-stack.js.map +1 -0
  136. package/src/lib/components/row-actions-menu.component.d.ts +53 -0
  137. package/src/lib/components/row-actions-menu.component.js +132 -0
  138. package/src/lib/components/row-actions-menu.component.js.map +1 -0
  139. package/src/lib/components/ruler-guides.component.d.ts +35 -0
  140. package/src/lib/components/ruler-guides.component.js +166 -0
  141. package/src/lib/components/ruler-guides.component.js.map +1 -0
  142. package/src/lib/components/sandbox-frame.d.ts +42 -0
  143. package/src/lib/components/sandbox-frame.js +122 -0
  144. package/src/lib/components/sandbox-frame.js.map +1 -0
  145. package/src/lib/components/scroll-reaction.d.ts +59 -0
  146. package/src/lib/components/scroll-reaction.js +43 -0
  147. package/src/lib/components/scroll-reaction.js.map +1 -0
  148. package/src/lib/components/scroll-table.component.d.ts +124 -0
  149. package/src/lib/components/scroll-table.component.js +103 -0
  150. package/src/lib/components/scroll-table.component.js.map +1 -0
  151. package/src/lib/components/shadow-dom/index.d.ts +18 -0
  152. package/src/lib/components/shadow-dom/index.js +19 -0
  153. package/src/lib/components/shadow-dom/index.js.map +1 -0
  154. package/src/lib/components/shadow-dom/shadow-dom.d.ts +42 -0
  155. package/src/lib/components/shadow-dom/shadow-dom.js +123 -0
  156. package/src/lib/components/shadow-dom/shadow-dom.js.map +1 -0
  157. package/src/lib/components/splash-screen.d.ts +33 -0
  158. package/src/lib/components/splash-screen.js +105 -0
  159. package/src/lib/components/splash-screen.js.map +1 -0
  160. package/src/lib/components/sr-only.d.ts +20 -0
  161. package/src/lib/components/sr-only.js +25 -0
  162. package/src/lib/components/sr-only.js.map +1 -0
  163. package/src/lib/components/status-screen-plain.component.d.ts +27 -0
  164. package/src/lib/components/status-screen-plain.component.js +178 -0
  165. package/src/lib/components/status-screen-plain.component.js.map +1 -0
  166. package/src/lib/components/usage-meter.component.d.ts +30 -0
  167. package/src/lib/components/usage-meter.component.js +92 -0
  168. package/src/lib/components/usage-meter.component.js.map +1 -0
  169. package/src/lib/components/variable-text-field.component.d.ts +50 -0
  170. package/src/lib/components/variable-text-field.component.js +188 -0
  171. package/src/lib/components/variable-text-field.component.js.map +1 -0
  172. package/src/lib/components/zoomable-panning-component/index.d.ts +1 -0
  173. package/src/lib/components/zoomable-panning-component/index.js +3 -0
  174. package/src/lib/components/zoomable-panning-component/index.js.map +1 -0
  175. package/src/lib/components/zoomable-panning-component/util.d.ts +58 -0
  176. package/src/lib/components/zoomable-panning-component/util.js +114 -0
  177. package/src/lib/components/zoomable-panning-component/util.js.map +1 -0
  178. package/src/lib/components/zoomable-panning-component/zoomable-panning-component.d.ts +132 -0
  179. package/src/lib/components/zoomable-panning-component/zoomable-panning-component.js +728 -0
  180. package/src/lib/components/zoomable-panning-component/zoomable-panning-component.js.map +1 -0
  181. package/src/lib/const/aglyn-besigner-logo-full.d.ts +39 -0
  182. package/src/lib/const/aglyn-besigner-logo-full.js +146 -0
  183. package/src/lib/const/aglyn-besigner-logo-full.js.map +1 -0
  184. package/src/lib/const/aglyn-console-logo-full.d.ts +34 -0
  185. package/src/lib/const/aglyn-console-logo-full.js +142 -0
  186. package/src/lib/const/aglyn-console-logo-full.js.map +1 -0
  187. package/src/lib/const/aglyn-logo-class-keys.d.ts +30 -0
  188. package/src/lib/const/aglyn-logo-class-keys.js +32 -0
  189. package/src/lib/const/aglyn-logo-class-keys.js.map +1 -0
  190. package/src/lib/const/aglyn-logo-full.d.ts +29 -0
  191. package/src/lib/const/aglyn-logo-full.js +111 -0
  192. package/src/lib/const/aglyn-logo-full.js.map +1 -0
  193. package/src/lib/const/list-filter.d.ts +260 -0
  194. package/src/lib/const/list-filter.js +409 -0
  195. package/src/lib/const/list-filter.js.map +1 -0
  196. package/src/lib/const/prebuilt-components.d.ts +17 -0
  197. package/src/lib/const/prebuilt-components.js +22 -0
  198. package/src/lib/const/prebuilt-components.js.map +1 -0
  199. package/src/lib/const/svg-icons.d.ts +75 -0
  200. package/src/lib/const/svg-icons.js +313 -0
  201. package/src/lib/const/svg-icons.js.map +1 -0
  202. package/src/lib/const/table-pagination.d.ts +106 -0
  203. package/src/lib/const/table-pagination.js +106 -0
  204. package/src/lib/const/table-pagination.js.map +1 -0
  205. package/src/lib/contexts/confirmation.context.d.ts +996 -0
  206. package/src/lib/contexts/confirmation.context.js +49 -0
  207. package/src/lib/contexts/confirmation.context.js.map +1 -0
  208. package/src/lib/contexts/loading.context.d.ts +93 -0
  209. package/src/lib/contexts/loading.context.js +126 -0
  210. package/src/lib/contexts/loading.context.js.map +1 -0
  211. package/src/lib/hocs/create-hoc-with-context-consumer.d.ts +36 -0
  212. package/src/lib/hocs/create-hoc-with-context-consumer.js +44 -0
  213. package/src/lib/hocs/create-hoc-with-context-consumer.js.map +1 -0
  214. package/src/lib/hocs/with-hoc.d.ts +32 -0
  215. package/src/lib/hocs/with-hoc.js +37 -0
  216. package/src/lib/hocs/with-hoc.js.map +1 -0
  217. package/src/lib/hooks/mdi-icon/use-mdi-icon.d.ts +20 -0
  218. package/src/lib/hooks/mdi-icon/use-mdi-icon.js +48 -0
  219. package/src/lib/hooks/mdi-icon/use-mdi-icon.js.map +1 -0
  220. package/src/lib/hooks/mdi-icon/use-mdi-icons-fuzzy.d.ts +26 -0
  221. package/src/lib/hooks/mdi-icon/use-mdi-icons-fuzzy.js +73 -0
  222. package/src/lib/hooks/mdi-icon/use-mdi-icons-fuzzy.js.map +1 -0
  223. package/src/lib/hooks/mdi-icon/use-mdi-icons.d.ts +19 -0
  224. package/src/lib/hooks/mdi-icon/use-mdi-icons.js +49 -0
  225. package/src/lib/hooks/mdi-icon/use-mdi-icons.js.map +1 -0
  226. package/src/lib/hooks/router-events.d.ts +56 -0
  227. package/src/lib/hooks/router-events.js +88 -0
  228. package/src/lib/hooks/router-events.js.map +1 -0
  229. package/src/lib/hooks/use-async-effect.d.ts +24 -0
  230. package/src/lib/hooks/use-async-effect.js +44 -0
  231. package/src/lib/hooks/use-async-effect.js.map +1 -0
  232. package/src/lib/hooks/use-callback-param-ref.d.ts +19 -0
  233. package/src/lib/hooks/use-callback-param-ref.js +29 -0
  234. package/src/lib/hooks/use-callback-param-ref.js.map +1 -0
  235. package/src/lib/hooks/use-id.d.ts +21 -0
  236. package/src/lib/hooks/use-id.js +28 -0
  237. package/src/lib/hooks/use-id.js.map +1 -0
  238. package/src/lib/hooks/use-isomorphic-layout-effect.d.ts +19 -0
  239. package/src/lib/hooks/use-isomorphic-layout-effect.js +20 -0
  240. package/src/lib/hooks/use-isomorphic-layout-effect.js.map +1 -0
  241. package/src/lib/hooks/use-merge-refs.d.ts +38 -0
  242. package/src/lib/hooks/use-merge-refs.js +52 -0
  243. package/src/lib/hooks/use-merge-refs.js.map +1 -0
  244. package/src/lib/hooks/use-subscribable.d.ts +29 -0
  245. package/src/lib/hooks/use-subscribable.js +50 -0
  246. package/src/lib/hooks/use-subscribable.js.map +1 -0
  247. package/src/lib/types.d.ts +18 -0
  248. package/src/lib/types.js +18 -0
  249. package/src/lib/types.js.map +1 -0
  250. package/src/lib/utils/make-link-elements.d.ts +24 -0
  251. package/src/lib/utils/make-link-elements.js +32 -0
  252. package/src/lib/utils/make-link-elements.js.map +1 -0
  253. package/src/lib/utils/make-meta-elements.d.ts +24 -0
  254. package/src/lib/utils/make-meta-elements.js +32 -0
  255. package/src/lib/utils/make-meta-elements.js.map +1 -0
  256. package/src/lib/utils/scroll-overflow.d.ts +120 -0
  257. package/src/lib/utils/scroll-overflow.js +115 -0
  258. package/src/lib/utils/scroll-overflow.js.map +1 -0
  259. package/src/lib/utils/vendor.d.ts +17 -0
  260. package/src/lib/utils/vendor.js +18 -0
  261. package/src/lib/utils/vendor.js.map +1 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ import { _isFnT } from "@aglyn/shared-util-tools";
17
+ import isEqual from "lodash-es/isEqual.js";
18
+ import { useCallback, useEffect, useState } from "react";
19
+ export function useSubscribable($subscribable, initialValue, mapValue, dependencies = []) {
20
+ const [value, update] = useState(()=>initialValue);
21
+ const _dependencies = [
22
+ ...dependencies || []
23
+ ];
24
+ const mapUpdate = useCallback((newValue, prevValue)=>{
25
+ if (_isFnT(mapValue)) return mapValue(newValue, prevValue);
26
+ return newValue;
27
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28
+ }, _dependencies);
29
+ useEffect(()=>{
30
+ function handleChange(newValue) {
31
+ update((prevValue)=>{
32
+ const value = mapUpdate(newValue, prevValue);
33
+ if (isEqual(prevValue, value)) return prevValue;
34
+ return value;
35
+ });
36
+ }
37
+ const subscriber = $subscribable == null ? void 0 : $subscribable.subscribe(handleChange);
38
+ return ()=>{
39
+ var _subscriber_unsubscribe;
40
+ return subscriber == null ? void 0 : (_subscriber_unsubscribe = subscriber.unsubscribe) == null ? void 0 : _subscriber_unsubscribe.call(subscriber);
41
+ };
42
+ }, [
43
+ $subscribable,
44
+ mapUpdate
45
+ ]);
46
+ return value;
47
+ }
48
+ export default useSubscribable;
49
+
50
+ //# sourceMappingURL=use-subscribable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/shared/ui/jsx/src/lib/hooks/use-subscribable.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2022 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _isFnT } from '@aglyn/shared-util-tools'\nimport isEqual from 'lodash-es/isEqual.js'\nimport { type DependencyList, useCallback, useEffect, useState } from 'react'\nimport type {\n Observable as RxJsObservable,\n Unsubscribable as RxJsUnsubscribable,\n} from 'rxjs'\n\nexport type SubscribableLike<T> = RxJsObservable<T> | Observable<T>\nexport type MapObservable<V, R> = (newValue: V, prevValue: R) => R\n\nexport interface Observable<T> {\n subscribe: (listener: (value: T) => void) => {\n unsubscribe: () => void\n }\n pipe?(...args: any[]): any\n}\n\nexport function useSubscribable<T>(\n $subscribable: SubscribableLike<T>,\n): T | undefined\nexport function useSubscribable<\n T,\n U = any,\n M extends MapObservable<U, U | T | undefined> = MapObservable<\n U,\n U | T | undefined\n >,\n>(\n $subscribable: SubscribableLike<U>,\n initialValue: U | T,\n mapValue?: M,\n dependencies?: DependencyList,\n): U | T\nexport function useSubscribable<\n T,\n U = any,\n M extends MapObservable<U, U | T | undefined> = MapObservable<\n U,\n U | T | undefined\n >,\n>(\n $subscribable: SubscribableLike<U>,\n initialValue?: U | T,\n mapValue?: M,\n dependencies: DependencyList = [],\n): U | T | undefined {\n const [value, update] = useState<T | U | undefined>(() => initialValue)\n const _dependencies = [...(dependencies || [])]\n\n const mapUpdate = useCallback((newValue: U, prevValue: T | U | undefined) => {\n if (_isFnT(mapValue)) return mapValue(newValue, prevValue as T) as T\n return newValue as U\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, _dependencies)\n\n useEffect(() => {\n function handleChange(newValue: U) {\n update((prevValue) => {\n const value = mapUpdate(newValue, prevValue)\n if (isEqual(prevValue, value)) return prevValue\n return value\n })\n }\n\n const subscriber: RxJsUnsubscribable =\n $subscribable?.subscribe(handleChange)\n return () => subscriber?.unsubscribe?.()\n }, [$subscribable, mapUpdate])\n\n return value\n}\n\nexport default useSubscribable\n"],"names":["_isFnT","isEqual","useCallback","useEffect","useState","useSubscribable","$subscribable","initialValue","mapValue","dependencies","value","update","_dependencies","mapUpdate","newValue","prevValue","handleChange","subscriber","subscribe","unsubscribe"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,MAAM,QAAQ,2BAA0B;AACjD,OAAOC,aAAa,uBAAsB;AAC1C,SAA8BC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAgC7E,OAAO,SAASC,gBAQdC,aAAkC,EAClCC,YAAoB,EACpBC,QAAY,EACZC,eAA+B,EAAE;IAEjC,MAAM,CAACC,OAAOC,OAAO,GAAGP,SAA4B,IAAMG;IAC1D,MAAMK,gBAAgB;WAAKH,gBAAgB,EAAE;KAAE;IAE/C,MAAMI,YAAYX,YAAY,CAACY,UAAaC;QAC1C,IAAIf,OAAOQ,WAAW,OAAOA,SAASM,UAAUC;QAChD,OAAOD;IACP,uDAAuD;IACzD,GAAGF;IAEHT,UAAU;QACR,SAASa,aAAaF,QAAW;YAC/BH,OAAO,CAACI;gBACN,MAAML,QAAQG,UAAUC,UAAUC;gBAClC,IAAId,QAAQc,WAAWL,QAAQ,OAAOK;gBACtC,OAAOL;YACT;QACF;QAEA,MAAMO,aACJX,iCAAAA,cAAeY,SAAS,CAACF;QAC3B,OAAO;gBAAMC;mBAAAA,+BAAAA,0BAAAA,WAAYE,WAAW,qBAAvBF,6BAAAA;;IACf,GAAG;QAACX;QAAeO;KAAU;IAE7B,OAAOH;AACT;AAEA,eAAeL,gBAAe"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2021 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ export type ApplyFilterFn = (query: string) => void;
18
+ export type ClearFilterFn = () => void;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2021 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ export { };
17
+
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/shared/ui/jsx/src/lib/types.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2021 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nexport type ApplyFilterFn = (query: string) => void\nexport type ClearFilterFn = () => void\n"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAID,WAAsC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ export type LinkElementProps = JSX.IntrinsicElements['link'];
18
+ export type MakeLinkElementsConfig = Array<[
19
+ rel?: LinkElementProps['rel'],
20
+ href?: LinkElementProps['href'],
21
+ other?: Partial<LinkElementProps>
22
+ ]>;
23
+ export declare function makeLinkElements(items: MakeLinkElementsConfig): JSX.Element[];
24
+ export default makeLinkElements;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ // export type LinkElementProps = LinkHTMLAttributes<HTMLLinkElement>
17
+ import { _ as _extends } from "@swc/helpers/_/_extends";
18
+ import { jsx as _jsx } from "react/jsx-runtime";
19
+ export function makeLinkElements(items) {
20
+ return items.map((item, key)=>{
21
+ var _ref, _rest_key;
22
+ const [rel, href, other] = item;
23
+ const _extends1 = _extends({}, other), {} = _extends1, rest = _extends({}, _extends1);
24
+ return /*#__PURE__*/ _jsx("link", _extends({
25
+ rel: rel,
26
+ href: href
27
+ }, rest), (_ref = (_rest_key = rest.key) != null ? _rest_key : rest.id) != null ? _ref : key);
28
+ });
29
+ }
30
+ export default makeLinkElements;
31
+
32
+ //# sourceMappingURL=make-link-elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/shared/ui/jsx/src/lib/utils/make-link-elements.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2022 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// export type LinkElementProps = LinkHTMLAttributes<HTMLLinkElement>\nexport type LinkElementProps = JSX.IntrinsicElements['link']\nexport type MakeLinkElementsConfig = Array<[\n rel?: LinkElementProps['rel'],\n href?: LinkElementProps['href'],\n other?: Partial<LinkElementProps>\n]>\n\nexport function makeLinkElements(items: MakeLinkElementsConfig): JSX.Element[] {\n return items.map((item, key) => {\n const [rel, href, other] = item\n const {...rest} = {...other}\n return (\n <link\n key={rest.key ?? rest.id ?? key}\n rel={rel}\n href={href}\n {...rest}\n />\n )\n })\n}\nexport default makeLinkElements\n"],"names":["makeLinkElements","items","map","item","key","rest","rel","href","other","link","id"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,qEAAqE;;;AAQrE,OAAO,SAASA,iBAAiBC,KAA6B;IAC5D,OAAOA,MAAMC,GAAG,CAAC,CAACC,MAAMC;YAKbC,MAAAA;QAJT,MAAM,CAACC,KAAKC,MAAMC,MAAM,GAAGL;QAC3B,MAAkB,YAAA,aAAIK,QAAhB,EAAS,GAAG,WAARH,oBAAQ;QAClB,qBACE,KAACI;YAECH,KAAKA;YACLC,MAAMA;WACFF,QAHCA,QAAAA,YAAAA,KAAKD,GAAG,YAARC,YAAYA,KAAKK,EAAE,YAAnBL,OAAuBD;IAMlC;AACF;AACA,eAAeJ,iBAAgB"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ export type MetaElemElementProps = JSX.IntrinsicElements['meta'];
18
+ export type MakeMetaElementsConfig = Array<[
19
+ name?: MetaElemElementProps['name'],
20
+ content?: MetaElemElementProps['content'],
21
+ other?: Partial<MetaElemElementProps>
22
+ ]>;
23
+ export declare function makeMetaElements(items: MakeMetaElementsConfig): JSX.Element[];
24
+ export default makeMetaElements;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ // export type MetaElemElementProps = MetaHTMLAttributes<HTMLMetaElement>
17
+ import { _ as _extends } from "@swc/helpers/_/_extends";
18
+ import { jsx as _jsx } from "react/jsx-runtime";
19
+ export function makeMetaElements(items) {
20
+ return items.map((item, key)=>{
21
+ var _ref, _rest_key;
22
+ const [name, content, other] = item;
23
+ const _extends1 = _extends({}, other), {} = _extends1, rest = _extends({}, _extends1);
24
+ return /*#__PURE__*/ _jsx("meta", _extends({
25
+ name: name,
26
+ content: content
27
+ }, rest), (_ref = (_rest_key = rest.key) != null ? _rest_key : rest.id) != null ? _ref : key);
28
+ });
29
+ }
30
+ export default makeMetaElements;
31
+
32
+ //# sourceMappingURL=make-meta-elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/shared/ui/jsx/src/lib/utils/make-meta-elements.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2022 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// export type MetaElemElementProps = MetaHTMLAttributes<HTMLMetaElement>\nexport type MetaElemElementProps = JSX.IntrinsicElements['meta']\nexport type MakeMetaElementsConfig = Array<[\n name?: MetaElemElementProps['name'],\n content?: MetaElemElementProps['content'],\n other?: Partial<MetaElemElementProps>\n]>\n\nexport function makeMetaElements(items: MakeMetaElementsConfig): JSX.Element[] {\n return items.map((item, key) => {\n const [name, content, other] = item\n const {...rest} = {...other}\n return (\n <meta\n key={rest.key ?? rest.id ?? key}\n name={name}\n content={content}\n {...rest}\n />\n )\n })\n}\nexport default makeMetaElements\n"],"names":["makeMetaElements","items","map","item","key","rest","name","content","other","meta","id"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,yEAAyE;;;AAQzE,OAAO,SAASA,iBAAiBC,KAA6B;IAC5D,OAAOA,MAAMC,GAAG,CAAC,CAACC,MAAMC;YAKbC,MAAAA;QAJT,MAAM,CAACC,MAAMC,SAASC,MAAM,GAAGL;QAC/B,MAAkB,YAAA,aAAIK,QAAhB,EAAS,GAAG,WAARH,oBAAQ;QAClB,qBACE,KAACI;YAECH,MAAMA;YACNC,SAASA;WACLF,QAHCA,QAAAA,YAAAA,KAAKD,GAAG,YAARC,YAAYA,KAAKK,EAAE,YAAnBL,OAAuBD;IAMlC;AACF;AACA,eAAeJ,iBAAgB"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * The house treatment for a box that scrolls its own content (AGL-1162,
19
+ * AGL-2568, AGL-3045).
20
+ *
21
+ * It lives in one module rather than in the components that need it because
22
+ * they had already drifted: the Markdown table and the Table element are the
23
+ * same block drawn by different code, one carried a fade the other did not,
24
+ * and neither could actually scroll. A shared shape is what keeps the answer
25
+ * to "how wide may this get" from being decided twice.
26
+ *
27
+ * It lives in THIS library rather than in `plugins-mui` because the console's
28
+ * tables need the same answer (AGL-3045): `ScrollTable` draws every table the
29
+ * console and its plugins render outside the shared grid, and a plugin may
30
+ * not import another plugin. Pure style data — no component, no side effect —
31
+ * so importing it by subpath costs a published page nothing it did not
32
+ * already pay for.
33
+ */
34
+ /** The axis a box scrolls on, named as the `scroll()` timeline names it. */
35
+ export type ScrollOverflowAxis = 'block' | 'inline';
36
+ /**
37
+ * The fade's animation binding, for the rules of the scrolling box itself.
38
+ *
39
+ * It rides a scroll-driven animation on purpose: a `scroll()` timeline on a
40
+ * box with nothing to scroll is INACTIVE, so its animation applies no styles
41
+ * at all. That is the only way to say "fade only when overflowing" in CSS
42
+ * with no measuring and no JavaScript, and it degrades to plain
43
+ * unfaded-but-scrollable in a browser that lacks it.
44
+ */
45
+ export declare const scrollOverflowFadeTimeline: (axis: ScrollOverflowAxis) => {
46
+ '@supports (animation-timeline: scroll())': {
47
+ animation: string;
48
+ animationTimeline: string;
49
+ };
50
+ };
51
+ /**
52
+ * The keyframes {@link scrollOverflowFadeTimeline} names.
53
+ *
54
+ * Held at the fade until the box is all but scrolled out, then dropped, so
55
+ * the last row or column is never the one the affordance obscures. `none`
56
+ * does not interpolate with a gradient, so that last step is a clean switch.
57
+ */
58
+ export declare const scrollOverflowFadeKeyframes: (axis: ScrollOverflowAxis) => {
59
+ [x: string]: {
60
+ '0%, 92%': {
61
+ maskImage: string;
62
+ };
63
+ '100%': {
64
+ maskImage: string;
65
+ };
66
+ };
67
+ };
68
+ /**
69
+ * The widest a table is allowed to grow before it starts wrapping again.
70
+ *
71
+ * 560 rather than the natural width of the content: measured on
72
+ * `/alternatives/alternativeswebflow` at 375px, letting the table take its
73
+ * full `max-content` width came to 1010px — every cell on one line, but two
74
+ * thirds of the table off-screen and the row label lost as soon as the reader
75
+ * moves. Capped at 560 the same table is 658px tall instead of 1022 and its
76
+ * worst cell is 3 lines instead of 6, for 217px of sideways travel. Under the
77
+ * `sm` breakpoint on purpose, so the cap itself can never introduce a
78
+ * scrollbar on a tablet or a desktop.
79
+ */
80
+ export declare const TABLE_SCROLL_MAX_WIDTH = 560;
81
+ /**
82
+ * The sizing that lets a wide table overflow its wrapper — and leaves a
83
+ * narrow one exactly as it was.
84
+ *
85
+ * `width: 100%` was the bug: a table that can never exceed its wrapper never
86
+ * triggers the wrapper's `overflow-x`, so the browser compresses columns to
87
+ * min-content instead of scrolling. `max-content` asks for the width the
88
+ * content actually wants; `min-width: 100%` still fills the wrapper when the
89
+ * content wants less, which is why a short "Yes / No" grid keeps its present
90
+ * layout and gains no scrollbar. `min-width` beats `max-width` in the CSS
91
+ * used-width rules, so the cap applies only while the wrapper is narrower
92
+ * than it — a desktop table fills its container as before.
93
+ */
94
+ export declare const scrollableTableSx: {
95
+ readonly width: "max-content";
96
+ readonly minWidth: "100%";
97
+ readonly maxWidth: 560;
98
+ };
99
+ /** The scroll box around such a table: it scrolls, and it says that it does. */
100
+ export declare const scrollableTableWrapperSx: {
101
+ '@supports (animation-timeline: scroll())': {
102
+ animation: string;
103
+ animationTimeline: string;
104
+ };
105
+ overflowX: string;
106
+ };
107
+ /**
108
+ * What makes the scroll box reachable by keyboard and findable by a screen
109
+ * reader (WCAG 2.1.1).
110
+ *
111
+ * A scrollable region with no focusable descendant cannot be scrolled by
112
+ * keyboard at all — the arrow keys move the page behind it — so the box takes
113
+ * a tab stop of its own. `region` plus a name is what turns that tab stop
114
+ * into something announced rather than a silent landing spot.
115
+ */
116
+ export declare const scrollRegionProps: (label: string) => {
117
+ tabIndex: number;
118
+ role: string;
119
+ 'aria-label': string;
120
+ };
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ /**
17
+ * The house treatment for a box that scrolls its own content (AGL-1162,
18
+ * AGL-2568, AGL-3045).
19
+ *
20
+ * It lives in one module rather than in the components that need it because
21
+ * they had already drifted: the Markdown table and the Table element are the
22
+ * same block drawn by different code, one carried a fade the other did not,
23
+ * and neither could actually scroll. A shared shape is what keeps the answer
24
+ * to "how wide may this get" from being decided twice.
25
+ *
26
+ * It lives in THIS library rather than in `plugins-mui` because the console's
27
+ * tables need the same answer (AGL-3045): `ScrollTable` draws every table the
28
+ * console and its plugins render outside the shared grid, and a plugin may
29
+ * not import another plugin. Pure style data — no component, no side effect —
30
+ * so importing it by subpath costs a published page nothing it did not
31
+ * already pay for.
32
+ */ /** The axis a box scrolls on, named as the `scroll()` timeline names it. */ import { _ as _extends } from "@swc/helpers/_/_extends";
33
+ /** How much of the trailing edge the fade covers. */ const FADE_EXTENT = '28px';
34
+ const FADE_DIRECTION = {
35
+ block: 'to bottom',
36
+ inline: 'to right'
37
+ };
38
+ const fadeName = (axis)=>`aglyn-overflow-fade-${axis}`;
39
+ /**
40
+ * The fade's animation binding, for the rules of the scrolling box itself.
41
+ *
42
+ * It rides a scroll-driven animation on purpose: a `scroll()` timeline on a
43
+ * box with nothing to scroll is INACTIVE, so its animation applies no styles
44
+ * at all. That is the only way to say "fade only when overflowing" in CSS
45
+ * with no measuring and no JavaScript, and it degrades to plain
46
+ * unfaded-but-scrollable in a browser that lacks it.
47
+ */ export const scrollOverflowFadeTimeline = (axis)=>({
48
+ '@supports (animation-timeline: scroll())': {
49
+ animation: `${fadeName(axis)} linear`,
50
+ animationTimeline: `scroll(self ${axis})`
51
+ }
52
+ });
53
+ /**
54
+ * The keyframes {@link scrollOverflowFadeTimeline} names.
55
+ *
56
+ * Held at the fade until the box is all but scrolled out, then dropped, so
57
+ * the last row or column is never the one the affordance obscures. `none`
58
+ * does not interpolate with a gradient, so that last step is a clean switch.
59
+ */ export const scrollOverflowFadeKeyframes = (axis)=>({
60
+ [`@keyframes ${fadeName(axis)}`]: {
61
+ '0%, 92%': {
62
+ maskImage: `linear-gradient(${FADE_DIRECTION[axis]}, #000 calc(100% - ${FADE_EXTENT}), transparent)`
63
+ },
64
+ '100%': {
65
+ maskImage: 'none'
66
+ }
67
+ }
68
+ });
69
+ /**
70
+ * The widest a table is allowed to grow before it starts wrapping again.
71
+ *
72
+ * 560 rather than the natural width of the content: measured on
73
+ * `/alternatives/alternativeswebflow` at 375px, letting the table take its
74
+ * full `max-content` width came to 1010px — every cell on one line, but two
75
+ * thirds of the table off-screen and the row label lost as soon as the reader
76
+ * moves. Capped at 560 the same table is 658px tall instead of 1022 and its
77
+ * worst cell is 3 lines instead of 6, for 217px of sideways travel. Under the
78
+ * `sm` breakpoint on purpose, so the cap itself can never introduce a
79
+ * scrollbar on a tablet or a desktop.
80
+ */ export const TABLE_SCROLL_MAX_WIDTH = 560;
81
+ /**
82
+ * The sizing that lets a wide table overflow its wrapper — and leaves a
83
+ * narrow one exactly as it was.
84
+ *
85
+ * `width: 100%` was the bug: a table that can never exceed its wrapper never
86
+ * triggers the wrapper's `overflow-x`, so the browser compresses columns to
87
+ * min-content instead of scrolling. `max-content` asks for the width the
88
+ * content actually wants; `min-width: 100%` still fills the wrapper when the
89
+ * content wants less, which is why a short "Yes / No" grid keeps its present
90
+ * layout and gains no scrollbar. `min-width` beats `max-width` in the CSS
91
+ * used-width rules, so the cap applies only while the wrapper is narrower
92
+ * than it — a desktop table fills its container as before.
93
+ */ export const scrollableTableSx = {
94
+ width: 'max-content',
95
+ minWidth: '100%',
96
+ maxWidth: TABLE_SCROLL_MAX_WIDTH
97
+ };
98
+ /** The scroll box around such a table: it scrolls, and it says that it does. */ export const scrollableTableWrapperSx = _extends({
99
+ overflowX: 'auto'
100
+ }, scrollOverflowFadeTimeline('inline'), scrollOverflowFadeKeyframes('inline'));
101
+ /**
102
+ * What makes the scroll box reachable by keyboard and findable by a screen
103
+ * reader (WCAG 2.1.1).
104
+ *
105
+ * A scrollable region with no focusable descendant cannot be scrolled by
106
+ * keyboard at all — the arrow keys move the page behind it — so the box takes
107
+ * a tab stop of its own. `region` plus a name is what turns that tab stop
108
+ * into something announced rather than a silent landing spot.
109
+ */ export const scrollRegionProps = (label)=>({
110
+ tabIndex: 0,
111
+ role: 'region',
112
+ 'aria-label': label
113
+ });
114
+
115
+ //# sourceMappingURL=scroll-overflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/shared/ui/jsx/src/lib/utils/scroll-overflow.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The house treatment for a box that scrolls its own content (AGL-1162,\n * AGL-2568, AGL-3045).\n *\n * It lives in one module rather than in the components that need it because\n * they had already drifted: the Markdown table and the Table element are the\n * same block drawn by different code, one carried a fade the other did not,\n * and neither could actually scroll. A shared shape is what keeps the answer\n * to \"how wide may this get\" from being decided twice.\n *\n * It lives in THIS library rather than in `plugins-mui` because the console's\n * tables need the same answer (AGL-3045): `ScrollTable` draws every table the\n * console and its plugins render outside the shared grid, and a plugin may\n * not import another plugin. Pure style data — no component, no side effect —\n * so importing it by subpath costs a published page nothing it did not\n * already pay for.\n */\n\n/** The axis a box scrolls on, named as the `scroll()` timeline names it. */\nexport type ScrollOverflowAxis = 'block' | 'inline'\n\n/** How much of the trailing edge the fade covers. */\nconst FADE_EXTENT = '28px'\n\nconst FADE_DIRECTION: Record<ScrollOverflowAxis, string> = {\n block: 'to bottom',\n inline: 'to right',\n}\n\nconst fadeName = (axis: ScrollOverflowAxis) => `aglyn-overflow-fade-${axis}`\n\n/**\n * The fade's animation binding, for the rules of the scrolling box itself.\n *\n * It rides a scroll-driven animation on purpose: a `scroll()` timeline on a\n * box with nothing to scroll is INACTIVE, so its animation applies no styles\n * at all. That is the only way to say \"fade only when overflowing\" in CSS\n * with no measuring and no JavaScript, and it degrades to plain\n * unfaded-but-scrollable in a browser that lacks it.\n */\nexport const scrollOverflowFadeTimeline = (axis: ScrollOverflowAxis) => ({\n '@supports (animation-timeline: scroll())': {\n animation: `${fadeName(axis)} linear`,\n animationTimeline: `scroll(self ${axis})`,\n },\n})\n\n/**\n * The keyframes {@link scrollOverflowFadeTimeline} names.\n *\n * Held at the fade until the box is all but scrolled out, then dropped, so\n * the last row or column is never the one the affordance obscures. `none`\n * does not interpolate with a gradient, so that last step is a clean switch.\n */\nexport const scrollOverflowFadeKeyframes = (axis: ScrollOverflowAxis) => ({\n [`@keyframes ${fadeName(axis)}`]: {\n '0%, 92%': {\n maskImage: `linear-gradient(${FADE_DIRECTION[axis]}, #000 calc(100% - ${FADE_EXTENT}), transparent)`,\n },\n '100%': { maskImage: 'none' },\n },\n})\n\n/**\n * The widest a table is allowed to grow before it starts wrapping again.\n *\n * 560 rather than the natural width of the content: measured on\n * `/alternatives/alternativeswebflow` at 375px, letting the table take its\n * full `max-content` width came to 1010px — every cell on one line, but two\n * thirds of the table off-screen and the row label lost as soon as the reader\n * moves. Capped at 560 the same table is 658px tall instead of 1022 and its\n * worst cell is 3 lines instead of 6, for 217px of sideways travel. Under the\n * `sm` breakpoint on purpose, so the cap itself can never introduce a\n * scrollbar on a tablet or a desktop.\n */\nexport const TABLE_SCROLL_MAX_WIDTH = 560\n\n/**\n * The sizing that lets a wide table overflow its wrapper — and leaves a\n * narrow one exactly as it was.\n *\n * `width: 100%` was the bug: a table that can never exceed its wrapper never\n * triggers the wrapper's `overflow-x`, so the browser compresses columns to\n * min-content instead of scrolling. `max-content` asks for the width the\n * content actually wants; `min-width: 100%` still fills the wrapper when the\n * content wants less, which is why a short \"Yes / No\" grid keeps its present\n * layout and gains no scrollbar. `min-width` beats `max-width` in the CSS\n * used-width rules, so the cap applies only while the wrapper is narrower\n * than it — a desktop table fills its container as before.\n */\nexport const scrollableTableSx = {\n width: 'max-content',\n minWidth: '100%',\n maxWidth: TABLE_SCROLL_MAX_WIDTH,\n} as const\n\n/** The scroll box around such a table: it scrolls, and it says that it does. */\nexport const scrollableTableWrapperSx = {\n overflowX: 'auto',\n ...scrollOverflowFadeTimeline('inline'),\n ...scrollOverflowFadeKeyframes('inline'),\n}\n\n/**\n * What makes the scroll box reachable by keyboard and findable by a screen\n * reader (WCAG 2.1.1).\n *\n * A scrollable region with no focusable descendant cannot be scrolled by\n * keyboard at all — the arrow keys move the page behind it — so the box takes\n * a tab stop of its own. `region` plus a name is what turns that tab stop\n * into something announced rather than a silent landing spot.\n */\nexport const scrollRegionProps = (label: string) => ({\n tabIndex: 0,\n role: 'region',\n 'aria-label': label,\n})\n"],"names":["FADE_EXTENT","FADE_DIRECTION","block","inline","fadeName","axis","scrollOverflowFadeTimeline","animation","animationTimeline","scrollOverflowFadeKeyframes","maskImage","TABLE_SCROLL_MAX_WIDTH","scrollableTableSx","width","minWidth","maxWidth","scrollableTableWrapperSx","overflowX","scrollRegionProps","label","tabIndex","role"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;CAgBC,GAED,0EAA0E;AAG1E,mDAAmD,GACnD,MAAMA,cAAc;AAEpB,MAAMC,iBAAqD;IACzDC,OAAO;IACPC,QAAQ;AACV;AAEA,MAAMC,WAAW,CAACC,OAA6B,CAAC,oBAAoB,EAAEA,MAAM;AAE5E;;;;;;;;CAQC,GACD,OAAO,MAAMC,6BAA6B,CAACD,OAA8B,CAAA;QACvE,4CAA4C;YAC1CE,WAAW,GAAGH,SAASC,MAAM,OAAO,CAAC;YACrCG,mBAAmB,CAAC,YAAY,EAAEH,KAAK,CAAC,CAAC;QAC3C;IACF,CAAA,EAAE;AAEF;;;;;;CAMC,GACD,OAAO,MAAMI,8BAA8B,CAACJ,OAA8B,CAAA;QACxE,CAAC,CAAC,WAAW,EAAED,SAASC,OAAO,CAAC,EAAE;YAChC,WAAW;gBACTK,WAAW,CAAC,gBAAgB,EAAET,cAAc,CAACI,KAAK,CAAC,mBAAmB,EAAEL,YAAY,eAAe,CAAC;YACtG;YACA,QAAQ;gBAAEU,WAAW;YAAO;QAC9B;IACF,CAAA,EAAE;AAEF;;;;;;;;;;;CAWC,GACD,OAAO,MAAMC,yBAAyB,IAAG;AAEzC;;;;;;;;;;;;CAYC,GACD,OAAO,MAAMC,oBAAoB;IAC/BC,OAAO;IACPC,UAAU;IACVC,UAAUJ;AACZ,EAAU;AAEV,8EAA8E,GAC9E,OAAO,MAAMK,2BAA2B;IACtCC,WAAW;GACRX,2BAA2B,WAC3BG,4BAA4B,WAChC;AAED;;;;;;;;CAQC,GACD,OAAO,MAAMS,oBAAoB,CAACC,QAAmB,CAAA;QACnDC,UAAU;QACVC,MAAM;QACN,cAAcF;IAChB,CAAA,EAAE"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ export { isContextConsumer, isContextProvider, isElement as isReactElement, isForwardRef, isFragment, isLazy, isMemo, isPortal, isProfiler, isStrictMode, isSuspense, isValidElementType, } from 'react-is';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ export { isContextConsumer, isContextProvider, isElement as isReactElement, isForwardRef, isFragment, isLazy, isMemo, isPortal, isProfiler, isStrictMode, isSuspense, isValidElementType } from "react-is";
17
+
18
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/shared/ui/jsx/src/lib/utils/vendor.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2022 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport {\n isContextConsumer,\n isContextProvider,\n isElement as isReactElement,\n isForwardRef,\n isFragment,\n isLazy,\n isMemo,\n isPortal,\n isProfiler,\n isStrictMode,\n isSuspense,\n isValidElementType,\n} from 'react-is'\n"],"names":["isContextConsumer","isContextProvider","isElement","isReactElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SACEA,iBAAiB,EACjBC,iBAAiB,EACjBC,aAAaC,cAAc,EAC3BC,YAAY,EACZC,UAAU,EACVC,MAAM,EACNC,MAAM,EACNC,QAAQ,EACRC,UAAU,EACVC,YAAY,EACZC,UAAU,EACVC,kBAAkB,QACb,WAAU"}