@stenajs-webui/core 23.3.0 → 23.4.0

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.
package/dist/index.d.ts CHANGED
@@ -52,3 +52,5 @@ export * from "./utils/parsers/NumberParser";
52
52
  export { booleanOrNumberToNumber } from "./utils/BooleanOrNumberToNumber";
53
53
  export * from "./utils/Invariant";
54
54
  export * from "./utils/FragmentEmptyChecker";
55
+ export * from "./utils/translations/PluralForms";
56
+ export * from "./utils/translations/PluralFormatProvider";
package/dist/index.es.js CHANGED
@@ -4,7 +4,7 @@ import { jsx as c, Fragment as T, jsxs as U } from "react/jsx-runtime";
4
4
  import V, { forwardRef as f, useState as h, useCallback as m, useLayoutEffect as F, useRef as g, createContext as B, useEffect as p, useMemo as S, useContext as j, isValidElement as q, Fragment as W } from "react";
5
5
  import E from "@emotion/styled";
6
6
  import { system as X, background as G, border as Y, borderRight as K, borderLeft as Z, borderTop as J, borderBottom as Q, borderColor as ee, borderRadius as te, borderStyle as re, borderWidth as ne, boxShadow as ue, flexbox as oe, overflow as se, position as ie, layout as ae, zIndex as ce, left as le, right as de, top as pe, bottom as me } from "styled-system";
7
- import { memoize as he, pickBy as P, debounce as fe } from "lodash-es";
7
+ import { memoize as he, pickBy as M, debounce as fe } from "lodash-es";
8
8
  import O from "classnames";
9
9
  const ge = "_separatorLine_nzfcz_1", ye = {
10
10
  separatorLine: ge
@@ -90,7 +90,7 @@ const ge = "_separatorLine_nzfcz_1", ye = {
90
90
  ), x = (e) => e == null ? 0 : typeof e == "boolean" ? e ? 1 : 0 : e, be = (e) => {
91
91
  if (e !== 0)
92
92
  return `calc(${e} * var(--swui-metrics-space))`;
93
- }, I = (e) => be(x(e)), we = {
93
+ }, R = (e) => be(x(e)), we = {
94
94
  // react props
95
95
  // https://github.com/facebook/react/blob/5495a7f24aef85ba6937truetrue1ce962673ca9f5fde6/src/renderers/dom/shared/hooks/ReactDOMUnknownPropertyHook.js
96
96
  children: !0,
@@ -616,11 +616,11 @@ const ge = "_separatorLine_nzfcz_1", ye = {
616
616
  },
617
617
  columnGap: {
618
618
  property: "columnGap",
619
- transform: I
619
+ transform: R
620
620
  },
621
621
  rowGap: {
622
622
  property: "rowGap",
623
- transform: I
623
+ transform: R
624
624
  },
625
625
  shadow: {
626
626
  property: "boxShadow",
@@ -692,12 +692,12 @@ const ge = "_separatorLine_nzfcz_1", ye = {
692
692
  right: i,
693
693
  bottom: o
694
694
  };
695
- }, Ie = (e, t) => e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height && e.bottom === t.bottom && e.top === t.top && e.left === t.left && e.right === t.right, Re = (e, t) => {
695
+ }, Re = (e, t) => e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height && e.bottom === t.bottom && e.top === t.top && e.left === t.left && e.right === t.right, Ie = (e, t) => {
696
696
  const [r, n] = h(), u = m(() => {
697
697
  window.requestAnimationFrame(() => {
698
698
  if (e.current) {
699
699
  const o = Te(e.current);
700
- (!r || !Ie(r, o)) && t && t(o), n(o);
700
+ (!r || !Re(r, o)) && t && t(o), n(o);
701
701
  }
702
702
  });
703
703
  }, [e, r, n, t]);
@@ -709,7 +709,7 @@ const ge = "_separatorLine_nzfcz_1", ye = {
709
709
  }, mt = f(
710
710
  function({ onResize: t, ...r }, n) {
711
711
  const u = g(null);
712
- return Re(n ?? u, t), /* @__PURE__ */ c(b, { ...r, ref: n });
712
+ return Ie(n ?? u, t), /* @__PURE__ */ c(b, { ...r, ref: n });
713
713
  }
714
714
  ), ht = f(
715
715
  function(t, r) {
@@ -746,7 +746,7 @@ const ge = "_separatorLine_nzfcz_1", ye = {
746
746
  }, vt = ({ children: e, nest: t, render: r }) => t ? /* @__PURE__ */ c(T, { children: r(e) }) : /* @__PURE__ */ c(T, { children: e }), H = B({
747
747
  isFontLarge: !1,
748
748
  fontSizeRatio: 1
749
- }), R = 12, bt = ({ children: e }) => {
749
+ }), I = 12, bt = ({ children: e }) => {
750
750
  const t = g(null), [r, n] = h(!1), [u, o] = h(1);
751
751
  p(() => {
752
752
  if (!t.current)
@@ -754,7 +754,7 @@ const ge = "_separatorLine_nzfcz_1", ye = {
754
754
  const a = new ResizeObserver((i) => {
755
755
  for (const l of i) {
756
756
  const d = l.contentRect.height;
757
- n(d > R), o(d / R);
757
+ n(d > I), o(d / I);
758
758
  }
759
759
  });
760
760
  return a.observe(t.current), () => a.disconnect();
@@ -788,12 +788,12 @@ const ge = "_separatorLine_nzfcz_1", ye = {
788
788
  isFontLarge: !1,
789
789
  fontSizeRatio: 1
790
790
  };
791
- }, Le = "_visuallyHidden_1gevf_1", Me = {
791
+ }, Le = "_visuallyHidden_1gevf_1", Pe = {
792
792
  visuallyHidden: Le
793
- }, ze = (e) => P(e, Fe), xt = (e) => P(e, Pe), Fe = (e, t) => t.startsWith("data-") || t.startsWith("aria-"), Pe = (e, t) => t.startsWith("aria-"), kt = ({
793
+ }, ze = (e) => M(e, Fe), xt = (e) => M(e, Me), Fe = (e, t) => t.startsWith("data-") || t.startsWith("aria-"), Me = (e, t) => t.startsWith("aria-"), kt = ({
794
794
  children: e,
795
795
  ...t
796
- }) => /* @__PURE__ */ c("span", { className: Me.visuallyHidden, ...ze(t), children: e }), Oe = "_text_1iisw_1", He = "_standard_1iisw_24", De = "_bold_1iisw_27", Ne = "_caption_1iisw_31", Ue = "_overline_1iisw_39", Ve = "_large_1iisw_48", Be = "_medium_1iisw_53", je = "_small_1iisw_58", qe = "_smaller_1iisw_63", $ = {
796
+ }) => /* @__PURE__ */ c("span", { className: Pe.visuallyHidden, ...ze(t), children: e }), Oe = "_text_1iisw_1", He = "_standard_1iisw_24", De = "_bold_1iisw_27", Ne = "_caption_1iisw_31", Ue = "_overline_1iisw_39", Ve = "_large_1iisw_48", Be = "_medium_1iisw_53", je = "_small_1iisw_58", qe = "_smaller_1iisw_63", $ = {
797
797
  text: Oe,
798
798
  standard: He,
799
799
  bold: De,
@@ -866,7 +866,7 @@ const ge = "_separatorLine_nzfcz_1", ye = {
866
866
  children: s
867
867
  }
868
868
  )
869
- ), Tt = (e) => /* @__PURE__ */ c(Qe, { variant: "h2", ...e }), It = ({
869
+ ), Tt = (e) => /* @__PURE__ */ c(Qe, { variant: "h2", ...e }), Rt = ({
870
870
  blockedKeys: e,
871
871
  blockMouse: t = !1,
872
872
  ...r
@@ -892,7 +892,7 @@ const ge = "_separatorLine_nzfcz_1", ye = {
892
892
  onMouseUp: u
893
893
  }
894
894
  );
895
- }, et = (e, t) => e === t, Rt = (e, t, r = et) => {
895
+ }, et = (e, t) => e === t, It = (e, t, r = et) => {
896
896
  const n = m(
897
897
  (i) => {
898
898
  e.some((l) => r(l, i)) || t([...e, i]);
@@ -961,7 +961,7 @@ const ge = "_separatorLine_nzfcz_1", ye = {
961
961
  }, [e, t]), r;
962
962
  };
963
963
  let tt = 0;
964
- const L = (e) => `webui-${e ? e + "-" : ""}${++tt}`, Mt = (e) => {
964
+ const L = (e) => `webui-${e ? e + "-" : ""}${++tt}`, Pt = (e) => {
965
965
  const [t, r] = h(() => L(e));
966
966
  return p(() => r(L(e)), [e]), t;
967
967
  }, v = (e, t, r) => {
@@ -1000,7 +1000,7 @@ const L = (e) => `webui-${e ? e + "-" : ""}${++tt}`, Mt = (e) => {
1000
1000
  const { current: n } = t;
1001
1001
  return n(...r);
1002
1002
  }, []);
1003
- }, Pt = (e) => {
1003
+ }, Mt = (e) => {
1004
1004
  const t = V.useRef(e);
1005
1005
  return t.current = e, t;
1006
1006
  }, Ot = (e) => {
@@ -1035,15 +1035,15 @@ const L = (e) => `webui-${e ? e + "-" : ""}${++tt}`, Mt = (e) => {
1035
1035
  document.removeEventListener("mousedown", u, r), document.removeEventListener("touchstart", u, r);
1036
1036
  };
1037
1037
  }, [e, r]);
1038
- }, M = ["mousemove", "mousedown", "keydown", "touchstart", "scroll"], Ut = (e, t) => {
1038
+ }, P = ["mousemove", "mousedown", "keydown", "touchstart", "scroll"], Ut = (e, t) => {
1039
1039
  const r = g(() => {
1040
1040
  });
1041
1041
  p(() => {
1042
1042
  r.current = e;
1043
1043
  }, [e]), p(() => {
1044
1044
  const n = fe(r.current, t);
1045
- return M.forEach((u) => window.addEventListener(u, n)), () => {
1046
- M.forEach(
1045
+ return P.forEach((u) => window.addEventListener(u, n)), () => {
1046
+ P.forEach(
1047
1047
  (u) => window.removeEventListener(u, n)
1048
1048
  );
1049
1049
  };
@@ -1098,11 +1098,29 @@ const er = (e) => {
1098
1098
  if (!q(e) || e.type !== W) return !1;
1099
1099
  const r = e.props.children;
1100
1100
  return Array.isArray(r) ? r.every(z) : z(r);
1101
- }, z = (e) => e == null || e === !1;
1101
+ }, z = (e) => e == null || e === !1, tr = (e) => {
1102
+ try {
1103
+ const t = new Intl.PluralRules(e);
1104
+ return (r) => t.select(r);
1105
+ } catch {
1106
+ return (t) => {
1107
+ switch (t) {
1108
+ case 0:
1109
+ return "zero";
1110
+ case 1:
1111
+ return "one";
1112
+ case 2:
1113
+ return "two";
1114
+ default:
1115
+ return "other";
1116
+ }
1117
+ };
1118
+ }
1119
+ }, rr = (e) => (t, r) => r[e(t)] ?? r.other ?? "";
1102
1120
  export {
1103
1121
  H as AccessibleFontSizeContext,
1104
1122
  bt as AccessibleFontSizeProvider,
1105
- It as BlockKeyboardEvents,
1123
+ Rt as BlockKeyboardEvents,
1106
1124
  b as Box,
1107
1125
  dt as Clickable,
1108
1126
  pt as Column,
@@ -1134,19 +1152,21 @@ export {
1134
1152
  er as isEmptyFragment,
1135
1153
  Zt as parseFloatElseUndefined,
1136
1154
  Jt as parseIntElseUndefined,
1155
+ rr as pluralFormatter,
1156
+ tr as selectPluralRule,
1137
1157
  Kt as truthyKeysAsList,
1138
1158
  wt as useAccessibleFontSizeContext,
1139
- Rt as useArraySet,
1159
+ It as useArraySet,
1140
1160
  C as useBoolean,
1141
1161
  At as useDebounce,
1142
1162
  Lt as useDelayedFalse,
1143
- Mt as useDomId,
1144
- Re as useElementDimensions,
1163
+ Pt as useDomId,
1164
+ Ie as useElementDimensions,
1145
1165
  zt as useElementFocus,
1146
1166
  Ft as useEventCallback,
1147
1167
  v as useEventListener,
1148
1168
  Bt as useForwardedRef,
1149
- Pt as useLatest,
1169
+ Mt as useLatest,
1150
1170
  Ht as useMouseIsEntered,
1151
1171
  Ot as useMouseIsOver,
1152
1172
  Dt as useMultiOnClickOutside,
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/components/decorators/separatorline/SeparatorLine.tsx","../src/components/interaction/Clickable.tsx","../src/utils/BooleanOrNumberToNumber.ts","../src/components/util/IsPropValid.ts","../src/components/layout/box/Box.tsx","../src/components/layout/column/Column.tsx","../src/hooks/UseElementDimensions.ts","../src/components/layout/box/ResizeAwareBox.tsx","../src/components/layout/row/Row.tsx","../src/components/layout/indent/Indent.tsx","../src/components/layout/spacing/Spacing.tsx","../src/components/layout/space/Space.tsx","../src/components/util/Nest.tsx","../src/accessibility/accessible-font-size-detector/AccessibleFontSizeProvider.tsx","../src/accessibility/accessible-font-size-detector/UseAccessibleFontSizeContext.ts","../src/utils/PropsForwarder.ts","../src/accessibility/screen-reader-only-text/ScreenReaderOnlyText.tsx","../src/components/text/Text.tsx","../src/components/deprecated-text/SmallText.tsx","../src/components/deprecated-text/SmallerText.tsx","../src/components/deprecated-text/StandardText.tsx","../src/components/deprecated-text/LargeText.tsx","../src/components/heading/Heading.tsx","../src/components/deprecated-text/HeaderText.tsx","../src/components/events/BlockKeyboardEvents.tsx","../src/hooks/UseArraySet.ts","../src/hooks/UseBoolean.ts","../src/hooks/UseDebounce.ts","../src/hooks/UseDelayedFalse.ts","../src/hooks/UseDomId.ts","../src/hooks/UseEventListener.ts","../src/hooks/UseElementFocus.ts","../src/hooks/UseEventCallback.tsx","../src/hooks/UseLatest.ts","../src/hooks/UseMouseIsOver.ts","../src/hooks/UseMouseIsEntered.ts","../src/hooks/UseMultiOnClickOutside.ts","../src/hooks/UseOnClickOutside.ts","../src/hooks/UseOnNoMouseInput.ts","../src/hooks/UseOnScreen.ts","../src/hooks/UseForwardedRef.ts","../src/hooks/UseTimeoutState.ts","../src/hooks/UseToday.ts","../src/sorting/Comparators.ts","../src/utils/SwitchCaseExhauster.ts","../src/utils/TruthyKeysAsList.ts","../src/utils/parsers/NumberParser.ts","../src/utils/Invariant.ts","../src/utils/FragmentEmptyChecker.ts"],"sourcesContent":["import { Property } from \"csstype\";\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport styles from \"./SeparatorLine.module.css\";\n\nexport interface SeparatorLineProps {\n color?: Property.Color;\n vertical?: boolean;\n size?: string;\n width?: string;\n}\n\nexport const SeparatorLine = forwardRef<HTMLHRElement, SeparatorLineProps>(\n (\n {\n color = cssColor(\"--lhds-color-ui-300\"),\n size = \"100%\",\n width = \"1px\",\n vertical = false,\n },\n ref,\n ) => {\n return (\n <hr\n className={styles.separatorLine}\n aria-hidden={true}\n color={color}\n style={{\n backgroundColor: color,\n height: vertical ? size || \"100%\" : width || \"1px\",\n width: vertical ? width || \"1px\" : size || \"100%\",\n }}\n ref={ref}\n />\n );\n },\n);\n","import styled from \"@emotion/styled\";\nimport * as React from \"react\";\nimport { CSSProperties, forwardRef, MouseEventHandler } from \"react\";\nimport { ButtonElementProps } from \"../../types/ElementProps\";\n\nexport interface ClickableProps extends ButtonElementProps {\n /** Callback function called when clicking on click area. */\n onClick?: MouseEventHandler<HTMLButtonElement>;\n /** Callback function called when double clicking on click area. */\n onDblClick?: MouseEventHandler<HTMLButtonElement>;\n /** Adds a title to the click area. */\n tooltip?: string;\n /** If set, there is no opacity applies when clicking on the click area. */\n disableOpacityOnClick?: boolean;\n /** Mouse does not turn into pointer when hovering over click area. */\n disablePointer?: boolean;\n /** When set, click area receives opacity when mouse hovers over it. */\n opacityOnHover?: boolean;\n /** Custom style on div with click event. */\n style?: CSSProperties;\n /** Disables shadow when element is focused. */\n disableFocusHighlight?: boolean;\n /** Disables the HTML button element. */\n disabled?: boolean;\n /**\n * Sets the background of the box.\n */\n background?: string;\n /**\n * Sets the background of the box when the box is in focus.\n */\n focusBackground?: string;\n /**\n * Sets the background of the box when hovering with mouse.\n */\n hoverBackground?: string;\n /**\n * The width.\n */\n width?: string;\n /**\n * The height.\n */\n height?: string;\n /**\n * Border radius\n */\n borderRadius?: string;\n}\n\ninterface ClickableElementProps {\n disableOpacityOnClick?: boolean;\n opacityOnHover?: boolean;\n disableFocusHighlight?: boolean;\n pointer?: boolean;\n background?: string;\n focusBackground?: string;\n hoverBackground?: string;\n width?: string;\n height?: string;\n borderRadius?: string;\n}\n\nconst ClickableElement = styled.button<ClickableElementProps>`\n display: inline-block;\n user-select: none;\n border: 0;\n padding: 0;\n background: ${({ background }) => background};\n ${({ pointer }) => (pointer ? \"cursor: pointer;\" : \"\")}\n\n :hover {\n ${(props) => (props.opacityOnHover ? \"opacity: 0.7;\" : \"\")};\n ${({ hoverBackground }) => `background: ${hoverBackground};`}\n }\n :active {\n ${({ disableOpacityOnClick }) =>\n !disableOpacityOnClick ? \"opacity: 0.5;\" : \"\"}\n }\n :focus {\n outline: 0;\n ${({ disableFocusHighlight }) =>\n disableFocusHighlight\n ? \"\"\n : \"box-shadow: 0 0 3pt 2pt rgba(0, 0, 100, 0.3);\"}\n ${({ focusBackground }) => `background: ${focusBackground};`}\n }\n ${({ width }) => (width ? `width: ${width};` : \"\")}\n ${({ height }) => (height ? `height: ${height};` : \"\")}\n ${({ borderRadius }) =>\n borderRadius ? `border-radius: ${borderRadius};` : \"\"}\n`;\n\nexport const Clickable = forwardRef<HTMLButtonElement, ClickableProps>(\n (\n {\n disableFocusHighlight,\n onClick,\n onDblClick,\n tooltip,\n disableOpacityOnClick,\n disablePointer,\n opacityOnHover,\n disabled,\n children,\n background = \"transparent\",\n hoverBackground,\n focusBackground,\n type = \"button\",\n ...restProps\n },\n ref,\n ) => {\n const hasClickHandler = !!(onClick || onDblClick);\n\n return (\n <ClickableElement\n opacityOnHover={opacityOnHover}\n title={tooltip}\n disabled={disabled}\n disableOpacityOnClick={disableOpacityOnClick}\n onClick={onClick}\n onDoubleClick={onDblClick}\n disableFocusHighlight={disableFocusHighlight}\n pointer={hasClickHandler && !disablePointer}\n ref={ref}\n background={background}\n hoverBackground={hoverBackground}\n focusBackground={focusBackground}\n type={type}\n {...restProps}\n >\n {children}\n </ClickableElement>\n );\n },\n);\n","export const booleanOrNumberToNumber = (\n num: number | boolean | undefined,\n): number => {\n if (num == null) {\n return 0;\n }\n if (typeof num === \"boolean\") {\n return num ? 1 : 0;\n }\n return num;\n};\n\nexport const numberToMetricCalc = (num: number): string | undefined => {\n if (num === 0) {\n return undefined;\n }\n return `calc(${num} * var(--swui-metrics-space))`;\n};\n\nexport const booleanOrNumberToMetricCalc = (\n num: number | boolean | undefined,\n): string | undefined => numberToMetricCalc(booleanOrNumberToNumber(num));\n","import { memoize } from \"lodash-es\";\n\nconst validPropsRecord = {\n // react props\n // https://github.com/facebook/react/blob/5495a7f24aef85ba6937truetrue1ce962673ca9f5fde6/src/renderers/dom/shared/hooks/ReactDOMUnknownPropertyHook.js\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true,\n autoFocus: true,\n defaultValue: true,\n defaultChecked: true,\n innerHTML: true,\n suppressContentEditableWarning: true,\n suppressHydrationWarning: true,\n // deprecated react prop\n valueLink: true,\n\n // https://github.com/facebook/react/blob/d7157651f7b72d9888ctrue123e191f9b88cd8f41e9/src/renderers/dom/shared/HTMLDOMPropertyConfig.js\n /**\n * Standard Properties\n */\n\n abbr: true,\n accept: true,\n acceptCharset: true,\n accessKey: true,\n action: true,\n allow: true,\n allowUserMedia: true,\n allowPaymentRequest: true,\n allowFullScreen: true,\n allowTransparency: true,\n alt: true,\n // specifies target context for links with `preload` type\n // as: true,\n async: true,\n autoComplete: true,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: true,\n autoPlay: true,\n capture: true,\n cellPadding: true,\n cellSpacing: true,\n // keygen prop\n challenge: true,\n charSet: true,\n checked: true,\n cite: true,\n classID: true,\n className: true,\n cols: true,\n colSpan: true,\n content: true,\n contentEditable: true,\n contextMenu: true,\n controls: true,\n controlsList: true,\n coords: true,\n crossOrigin: true,\n data: true, // For `<object />` acts as `src`.\n dateTime: true,\n decoding: true,\n default: true,\n defer: true,\n dir: true,\n disabled: true,\n disablePictureInPicture: true,\n disableRemotePlayback: true,\n download: true,\n draggable: true,\n encType: true,\n enterKeyHint: true,\n form: true,\n formAction: true,\n formEncType: true,\n formMethod: true,\n formNoValidate: true,\n formTarget: true,\n frameBorder: true,\n headers: true,\n height: true,\n hidden: true,\n high: true,\n href: true,\n hrefLang: true,\n htmlFor: true,\n httpEquiv: true,\n id: true,\n inputMode: true,\n integrity: true,\n is: true,\n keyParams: true,\n keyType: true,\n kind: true,\n label: true,\n lang: true,\n list: true,\n loading: true,\n loop: true,\n low: true,\n // manifest: true,\n marginHeight: true,\n marginWidth: true,\n max: true,\n maxLength: true,\n media: true,\n mediaGroup: true,\n method: true,\n min: true,\n minLength: true,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: true,\n muted: true,\n name: true,\n nonce: true,\n noValidate: true,\n open: true,\n optimum: true,\n pattern: true,\n placeholder: true,\n playsInline: true,\n poster: true,\n preload: true,\n profile: true,\n radioGroup: true,\n readOnly: true,\n referrerPolicy: true,\n rel: true,\n required: true,\n reversed: true,\n role: true,\n rows: true,\n rowSpan: true,\n sandbox: true,\n scope: true,\n scoped: true,\n scrolling: true,\n seamless: true,\n selected: true,\n shape: true,\n size: true,\n sizes: true,\n // support for projecting regular DOM Elements via V1 named slots ( shadow dom )\n slot: true,\n span: true,\n spellCheck: true,\n src: true,\n srcDoc: true,\n srcLang: true,\n srcSet: true,\n start: true,\n step: true,\n style: true,\n summary: true,\n tabIndex: true,\n target: true,\n title: true,\n translate: true,\n // Setting .type throws on non-<input> tags\n type: true,\n useMap: true,\n value: true,\n width: true,\n wmode: true,\n wrap: true,\n\n /**\n * RDFa Properties\n */\n about: true,\n datatype: true,\n inlist: true,\n prefix: true,\n // property is also supported for OpenGraph in meta tags.\n property: true,\n resource: true,\n typeof: true,\n vocab: true,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: true,\n autoCorrect: true,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: true,\n // color is for Safari mask-icon link\n color: true,\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/search#incremental_This_API_has_not_been_standardized\n incremental: true,\n // used in amp html for indicating the fallback behavior\n // https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/placeholders/\n fallback: true,\n // https://html.spec.whatwg.org/multipage/interaction.html#inert\n inert: true,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: true,\n itemScope: true,\n itemType: true,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: true,\n itemRef: true,\n // used in amp html for eventing purposes\n // https://amp.dev/documentation/guides-and-tutorials/learn/common_attributes/\n on: true,\n // used in amp html for indicating that the option is selectable\n // https://amp.dev/documentation/components/amp-selector/\n option: true,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: true,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<1true\n security: true,\n // IE-only attribute that controls focus behavior\n unselectable: true,\n //\n // SVG properties: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n // The following \"onX\" events have been omitted:\n //\n // onabort\n // onactivate\n // onbegin\n // onclick\n // onend\n // onerror\n // onfocusin\n // onfocusout\n // onload\n // onmousedown\n // onmousemove\n // onmouseout\n // onmouseover\n // onmouseup\n // onrepeat\n // onresize\n // onscroll\n // onunload\n accentHeight: true,\n accumulate: true,\n additive: true,\n alignmentBaseline: true,\n allowReorder: true,\n alphabetic: true,\n amplitude: true,\n arabicForm: true,\n ascent: true,\n attributeName: true,\n attributeType: true,\n autoReverse: true,\n azimuth: true,\n baseFrequency: true,\n baselineShift: true,\n baseProfile: true,\n bbox: true,\n begin: true,\n bias: true,\n by: true,\n calcMode: true,\n capHeight: true,\n clip: true,\n clipPathUnits: true,\n clipPath: true,\n clipRule: true,\n colorInterpolation: true,\n colorInterpolationFilters: true,\n colorProfile: true,\n colorRendering: true,\n contentScriptType: true,\n contentStyleType: true,\n cursor: true,\n cx: true,\n cy: true,\n d: true,\n decelerate: true,\n descent: true,\n diffuseConstant: true,\n direction: true,\n display: true,\n divisor: true,\n dominantBaseline: true,\n dur: true,\n dx: true,\n dy: true,\n edgeMode: true,\n elevation: true,\n enableBackground: true,\n end: true,\n exponent: true,\n externalResourcesRequired: true,\n fill: true,\n fillOpacity: true,\n fillRule: true,\n filter: true,\n filterRes: true,\n filterUnits: true,\n floodColor: true,\n floodOpacity: true,\n focusable: true,\n fontFamily: true,\n fontSize: true,\n fontSizeAdjust: true,\n fontStretch: true,\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n format: true,\n from: true,\n fr: true, // valid SVG element but React will ask for removal\n fx: true,\n fy: true,\n g1: true,\n g2: true,\n glyphName: true,\n glyphOrientationHorizontal: true,\n glyphOrientationVertical: true,\n glyphRef: true,\n gradientTransform: true,\n gradientUnits: true,\n hanging: true,\n horizAdvX: true,\n horizOriginX: true,\n ideographic: true,\n imageRendering: true,\n in: true,\n in2: true,\n intercept: true,\n k: true,\n k1: true,\n k2: true,\n k3: true,\n k4: true,\n kernelMatrix: true,\n kernelUnitLength: true,\n kerning: true,\n keyPoints: true,\n keySplines: true,\n keyTimes: true,\n lengthAdjust: true,\n letterSpacing: true,\n lightingColor: true,\n limitingConeAngle: true,\n local: true,\n markerEnd: true,\n markerMid: true,\n markerStart: true,\n markerHeight: true,\n markerUnits: true,\n markerWidth: true,\n mask: true,\n maskContentUnits: true,\n maskUnits: true,\n mathematical: true,\n mode: true,\n numOctaves: true,\n offset: true,\n opacity: true,\n operator: true,\n order: true,\n orient: true,\n orientation: true,\n origin: true,\n overflow: true,\n overlinePosition: true,\n overlineThickness: true,\n panose1: true,\n paintOrder: true,\n pathLength: true,\n patternContentUnits: true,\n patternTransform: true,\n patternUnits: true,\n pointerEvents: true,\n points: true,\n pointsAtX: true,\n pointsAtY: true,\n pointsAtZ: true,\n preserveAlpha: true,\n preserveAspectRatio: true,\n primitiveUnits: true,\n r: true,\n radius: true,\n refX: true,\n refY: true,\n renderingIntent: true,\n repeatCount: true,\n repeatDur: true,\n requiredExtensions: true,\n requiredFeatures: true,\n restart: true,\n result: true,\n rotate: true,\n rx: true,\n ry: true,\n scale: true,\n seed: true,\n shapeRendering: true,\n slope: true,\n spacing: true,\n specularConstant: true,\n specularExponent: true,\n speed: true,\n spreadMethod: true,\n startOffset: true,\n stdDeviation: true,\n stemh: true,\n stemv: true,\n stitchTiles: true,\n stopColor: true,\n stopOpacity: true,\n strikethroughPosition: true,\n strikethroughThickness: true,\n string: true,\n stroke: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeLinecap: true,\n strokeLinejoin: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true,\n surfaceScale: true,\n systemLanguage: true,\n tableValues: true,\n targetX: true,\n targetY: true,\n textAnchor: true,\n textDecoration: true,\n textRendering: true,\n textLength: true,\n to: true,\n transform: true,\n u1: true,\n u2: true,\n underlinePosition: true,\n underlineThickness: true,\n unicode: true,\n unicodeBidi: true,\n unicodeRange: true,\n unitsPerEm: true,\n vAlphabetic: true,\n vHanging: true,\n vIdeographic: true,\n vMathematical: true,\n values: true,\n vectorEffect: true,\n version: true,\n vertAdvY: true,\n vertOriginX: true,\n vertOriginY: true,\n viewBox: true,\n viewTarget: true,\n visibility: true,\n widths: true,\n wordSpacing: true,\n writingMode: true,\n x: true,\n xHeight: true,\n x1: true,\n x2: true,\n xChannelSelector: true,\n xlinkActuate: true,\n xlinkArcrole: true,\n xlinkHref: true,\n xlinkRole: true,\n xlinkShow: true,\n xlinkTitle: true,\n xlinkType: true,\n xmlBase: true,\n xmlns: true,\n xmlnsXlink: true,\n xmlLang: true,\n xmlSpace: true,\n y: true,\n y1: true,\n y2: true,\n yChannelSelector: true,\n z: true,\n zoomAndPan: true,\n\n // For preact. We have this code here even though Emotion doesn't support\n // Preact, since @emotion/is-prop-valid is used by some libraries outside of\n // the context of Emotion.\n for: true,\n class: true,\n autofocus: true,\n};\n\nconst validProps = `^((${Object.keys(validPropsRecord).join(\n \"|\",\n)})|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$`;\n\nconst r = new RegExp(validProps);\n\nexport const isPropValid: (prop: string) => boolean = memoize(\n (prop: string) =>\n r.test(prop) ||\n (prop.charCodeAt(0) === 111 /* o */ &&\n prop.charCodeAt(1) === 110 /* n */ &&\n prop.charCodeAt(2) < 91) /* Z+1 */,\n);\n","import styled from \"@emotion/styled\";\nimport { Property } from \"csstype\";\n\nimport {\n background,\n BackgroundProps,\n border,\n borderBottom,\n BorderBottomProps,\n borderColor,\n borderLeft,\n BorderLeftProps,\n borderRadius,\n BorderRadiusProps,\n borderRight,\n BorderRightProps,\n borderStyle,\n BorderStyleProps,\n borderTop,\n BorderTopProps,\n borderWidth,\n BorderWidthProps,\n bottom,\n BottomProps,\n boxShadow,\n BoxShadowProps,\n flexbox,\n FlexboxProps,\n layout,\n LayoutProps,\n left,\n LeftProps,\n overflow,\n OverflowProps,\n position,\n PositionProps,\n ResponsiveValue,\n right,\n RightProps,\n system,\n TLengthStyledSystem,\n top,\n TopProps,\n zIndex,\n ZIndexProps,\n} from \"styled-system\";\nimport { DivProps } from \"../../../types/ElementProps\";\nimport {\n booleanOrNumberToMetricCalc,\n booleanOrNumberToNumber,\n} from \"../../../utils/BooleanOrNumberToNumber\";\nimport { isPropValid } from \"../../util/IsPropValid\";\n\ninterface StyledSystemProps\n extends BorderRadiusProps,\n BorderStyleProps,\n BorderWidthProps,\n BorderLeftProps,\n BorderRightProps,\n BorderTopProps,\n BorderBottomProps,\n FlexboxProps,\n LayoutProps,\n OverflowProps,\n PositionProps,\n ZIndexProps,\n LeftProps,\n RightProps,\n TopProps,\n BottomProps {}\n\nconst shadows = {\n box: \"var(--swui-shadow-box)\",\n popover: \"var(--swui-shadow-popover)\",\n modal: \"var(--swui-shadow-modal)\",\n bottom: \"var(--swui-shadow-bottom)\",\n};\n\ntype ShadowType = keyof typeof shadows;\n\nexport interface BoxProps extends StyledSystemProps, DivProps {\n /**\n * If true, children are placed in a row.\n */\n row?: ResponsiveValue<boolean>;\n\n /**\n * Adds spacing over and under content.\n */\n spacing?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds spacing left and right of content.\n */\n indent?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds spacing between children.\n */\n gap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds gap between columns.\n */\n columnGap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds gap between rows.\n */\n rowGap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds a shadow around the box.\n */\n shadow?: ResponsiveValue<Property.BoxShadow | ShadowType>;\n\n /**\n * Sets the background of the box.\n */\n background?: ResponsiveValue<Property.Background<TLengthStyledSystem>>;\n\n /**\n * Sets the border of the box.\n */\n border?: ResponsiveValue<Property.Border<TLengthStyledSystem>>;\n\n /**\n * Sets the border color of the box.\n */\n borderColor?: ResponsiveValue<Property.BorderColor>;\n\n /**\n * Sets the background of the box when hovering with mouse.\n */\n hoverBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when hovering with mouse.\n */\n hoverBorder?: Property.Border<TLengthStyledSystem>;\n\n /**\n * Sets the background of the box when the box is in focus.\n */\n focusBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when the box is in focus.\n */\n focusBorder?: Property.Border<TLengthStyledSystem>;\n\n /**\n * Sets the background of the box when focus is within the box.\n */\n focusWithinBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when focus is within the box.\n */\n focusWithinBorder?: Property.Border<TLengthStyledSystem>;\n}\n\nconst excludedProps = [\n \"spacing\",\n \"indent\",\n \"gap\",\n \"width\",\n \"height\",\n \"overflow\",\n \"display\",\n];\n\nconst isExcludedWebUiProp = (propName: string) =>\n excludedProps.includes(propName);\n\nconst box = system({\n row: {\n property: \"flexDirection\",\n transform: (row: boolean) => (row ? \"row\" : \"column\"),\n },\n indent: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-indent\",\n transform: booleanOrNumberToNumber,\n },\n spacing: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-spacing\",\n transform: booleanOrNumberToNumber,\n },\n gap: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-gap\",\n transform: booleanOrNumberToNumber,\n },\n columnGap: {\n property: \"columnGap\",\n transform: booleanOrNumberToMetricCalc,\n },\n rowGap: {\n property: \"rowGap\",\n transform: booleanOrNumberToMetricCalc,\n },\n shadow: {\n property: \"boxShadow\",\n transform: (value: ShadowType) => shadows[value] ?? value,\n },\n});\n\ntype InnerProps = BoxProps & BoxShadowProps & BackgroundProps;\n\nexport const Box = styled(\"div\", {\n shouldForwardProp: (propName) =>\n typeof propName === \"string\"\n ? isExcludedWebUiProp(propName)\n ? false\n : isPropValid(propName)\n : false,\n})<InnerProps>`\n --current-spacing: 0;\n --current-indent: 0;\n --current-gap: 0;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n ${box};\n ${background};\n ${border};\n ${borderRight};\n ${borderLeft};\n ${borderTop};\n ${borderBottom};\n ${borderColor};\n ${borderRadius};\n ${borderStyle};\n ${borderWidth};\n ${boxShadow};\n ${flexbox};\n ${overflow};\n ${position};\n ${layout};\n ${zIndex};\n ${left};\n ${right};\n ${top};\n ${bottom};\n\n gap: calc(var(--current-gap) * var(--swui-metrics-space));\n\n padding: calc(var(--current-spacing) * var(--swui-metrics-spacing))\n calc(var(--current-indent) * var(--swui-metrics-indent));\n\n :hover {\n ${({ hoverBackground }) =>\n hoverBackground ? `background: ${hoverBackground};` : \"\"}\n ${({ hoverBorder }) => (hoverBorder ? `border: ${hoverBorder};` : \"\")}\n }\n\n :focus {\n ${({ focusBackground }) =>\n focusBackground ? `background: ${focusBackground};` : \"\"}\n ${({ focusBorder }) => (focusBorder ? `border: ${focusBorder};` : \"\")}\n }\n\n :focus-within {\n ${({ focusWithinBackground }) =>\n focusWithinBackground ? `background: ${focusWithinBackground};` : \"\"}\n ${({ focusWithinBorder }) =>\n focusWithinBorder ? `border: ${focusWithinBorder};` : \"\"}\n }\n`;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\n\nexport const Column = forwardRef<HTMLDivElement, BoxProps>(\n function Column(props, ref) {\n return <Box ref={ref} {...props} />;\n },\n);\n","import { RefObject, useCallback, useLayoutEffect, useState } from \"react\";\n\nexport interface ElementDimensions {\n width: number;\n height: number;\n top: number;\n left: number;\n x: number;\n y: number;\n right: number;\n bottom: number;\n}\n\nexport const getDimensionObject = (node: HTMLElement): ElementDimensions => {\n const { x, y, width, height, bottom, top, left, right } =\n node.getBoundingClientRect();\n\n return {\n width,\n height,\n top,\n left,\n x,\n y,\n right,\n bottom,\n };\n};\n\nconst isEqualDimensions = (\n a: ElementDimensions,\n b: ElementDimensions,\n): boolean =>\n a.x === b.x &&\n a.y === b.y &&\n a.width === b.width &&\n a.height === b.height &&\n a.bottom === b.bottom &&\n a.top === b.top &&\n a.left === b.left &&\n a.right === b.right;\n\nexport const useElementDimensions = (\n ref: RefObject<HTMLElement | null>,\n onResizeElement?: (dimensions: ElementDimensions) => void,\n) => {\n const [dimensions, setDimensions] = useState<ElementDimensions | undefined>();\n\n const updateDimensions = useCallback(() => {\n window.requestAnimationFrame(() => {\n if (ref.current) {\n const newDimensions = getDimensionObject(ref.current);\n if (!dimensions || !isEqualDimensions(dimensions, newDimensions)) {\n if (onResizeElement) {\n onResizeElement(newDimensions);\n }\n }\n setDimensions(newDimensions);\n }\n });\n }, [ref, dimensions, setDimensions, onResizeElement]);\n\n useLayoutEffect(() => {\n updateDimensions();\n }, [updateDimensions]);\n\n return {\n dimensions,\n };\n};\n","import * as React from \"react\";\nimport { forwardRef, RefObject, useRef } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\nimport {\n ElementDimensions,\n useElementDimensions,\n} from \"../../../hooks/UseElementDimensions\";\n\nexport interface ResizeAwareBoxProps extends Omit<BoxProps, \"onResize\"> {\n onResize?: (dimensions: ElementDimensions) => void;\n}\n\nexport const ResizeAwareBox = forwardRef<HTMLDivElement, ResizeAwareBoxProps>(\n function ResizeAwareBox({ onResize, ...boxProps }, ref) {\n const localRef = useRef<HTMLDivElement>(null);\n const currentRef = (ref as RefObject<HTMLDivElement>) ?? localRef;\n useElementDimensions(currentRef, onResize);\n\n return <Box {...boxProps} ref={ref} />;\n },\n);\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\n\nexport const Row = forwardRef<HTMLDivElement, BoxProps>(\n function Row(props, ref) {\n return <Box row ref={ref} {...props} />;\n },\n);\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\nimport { ResponsiveValue, TLengthStyledSystem } from \"styled-system\";\n\nexport interface IndentProps extends BoxProps {\n num?: ResponsiveValue<boolean | TLengthStyledSystem>;\n}\n\nexport const Indent = forwardRef<HTMLDivElement, IndentProps>(function Indent(\n { num = 1, ...props },\n ref,\n) {\n return <Box indent={num} ref={ref} {...props} />;\n});\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\nimport { ResponsiveValue, TLengthStyledSystem } from \"styled-system\";\n\nexport interface SpacingProps extends BoxProps {\n num?: ResponsiveValue<boolean | TLengthStyledSystem>;\n}\n\nexport const Spacing = forwardRef<HTMLDivElement, SpacingProps>(\n function Spacing({ num = 1, ...props }, ref) {\n return <Box spacing={num} ref={ref} {...props} />;\n },\n);\n","import styled from \"@emotion/styled\";\nimport * as React from \"react\";\n\nexport interface SpaceProps {\n half?: boolean;\n horizontal?: boolean;\n num?: number;\n vertical?: boolean;\n}\n\nconst InnerSpace = styled.div`\n --current-size: 1;\n flex: none;\n width: calc(var(--current-size) * var(--swui-metrics-space));\n height: calc(var(--current-size) * var(--swui-metrics-space));\n`;\n\nexport const Space: React.FC<SpaceProps> = ({\n half = false,\n horizontal = false,\n num = 1,\n vertical = false,\n}) => {\n const size = num * (half ? 0.5 : 1);\n\n return (\n <InnerSpace\n style={{\n [\"--current-size\" as string]: size,\n height: horizontal ? 1 : undefined,\n width: vertical ? 1 : undefined,\n }}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\n\ninterface Props {\n nest?: boolean;\n render: (children: ReactNode) => ReactNode;\n children?: ReactNode;\n}\n\nexport const Nest: React.FC<Props> = ({ children, nest, render }) => {\n if (nest) {\n return <>{render(children)}</>;\n }\n return <>{children}</>;\n};\n","import React, {\n createContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport interface AccessibleFontSizeContextValue {\n isFontLarge: boolean;\n fontSizeRatio: number;\n}\n\nexport const AccessibleFontSizeContext =\n createContext<AccessibleFontSizeContextValue>({\n isFontLarge: false,\n fontSizeRatio: 1,\n });\n\nconst baseHeight = 12;\n\nexport const AccessibleFontSizeProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const ref = useRef<HTMLDivElement>(null);\n const [isFontLarge, setIsFontLarge] = useState(false);\n const [fontSizeRatio, setFontSizeRatio] = useState(1);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const height = entry.contentRect.height;\n setIsFontLarge(height > baseHeight);\n setFontSizeRatio(height / baseHeight);\n }\n });\n\n observer.observe(ref.current);\n\n return () => observer.disconnect();\n }, []);\n\n const value = useMemo(\n () => ({ isFontLarge, fontSizeRatio }),\n [fontSizeRatio, isFontLarge],\n );\n\n return (\n <AccessibleFontSizeContext.Provider value={value}>\n <div\n ref={ref}\n aria-hidden\n style={{\n fontSize: \"1rem\",\n position: \"absolute\",\n visibility: \"hidden\",\n height: \"auto\",\n width: \"auto\",\n whiteSpace: \"nowrap\",\n }}\n >\n M\n </div>\n {children}\n </AccessibleFontSizeContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport {\n AccessibleFontSizeContext,\n AccessibleFontSizeContextValue,\n} from \"./AccessibleFontSizeProvider\";\n\nexport const useAccessibleFontSizeContext =\n (): AccessibleFontSizeContextValue => {\n const context = useContext(AccessibleFontSizeContext);\n\n if (!context) {\n return {\n isFontLarge: false,\n fontSizeRatio: 1,\n };\n }\n\n return context;\n };\n","import { pickBy } from \"lodash-es\";\nimport React from \"react\";\n\nexport const getDataProps = (\n props: Record<string, unknown> | object,\n): Record<string, unknown> =>\n pickBy(props, isDataPropMapper) as Record<string, unknown>;\n\nexport const getAriaProps = (\n props: Record<string, unknown>,\n): React.AriaAttributes =>\n pickBy(props, isAriaPropMapper) as React.AriaAttributes;\n\nconst isDataPropMapper = (_: unknown, key: string): boolean =>\n key.startsWith(\"data-\") || key.startsWith(\"aria-\");\n\nconst isAriaPropMapper = (_: unknown, key: string): boolean =>\n key.startsWith(\"aria-\");\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./ScreenReaderOnlyText.module.css\";\nimport { getDataProps } from \"../../utils/PropsForwarder\";\n\nexport interface ScreenReaderOnlyTextProps {\n children?: ReactNode;\n}\n\nexport const ScreenReaderOnlyText: React.FC<ScreenReaderOnlyTextProps> = ({\n children,\n ...props\n}) => {\n return (\n <span className={styles.visuallyHidden} {...getDataProps(props)}>\n {children}\n </span>\n );\n};\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Text.module.css\";\nimport { SpanProps } from \"../../types/ElementProps\";\nimport { Property } from \"csstype\";\n\nexport interface TextProps extends SpanProps {\n variant?: TextVariant;\n size?: TextSize;\n userSelect?: Property.UserSelect;\n whiteSpace?: Property.WhiteSpace;\n wordBreak?: Property.WordBreak;\n textAlign?: Property.TextAlign;\n overflow?: Property.Overflow;\n textOverflow?: Property.TextOverflow;\n color?: string;\n}\n\nexport type TextVariant = \"standard\" | \"caption\" | \"overline\" | \"bold\";\nexport type TextSize = \"large\" | \"medium\" | \"small\" | \"smaller\";\n\nexport const Text = forwardRef<HTMLSpanElement, TextProps>(\n (\n {\n children,\n variant = \"standard\",\n size = \"medium\",\n className,\n color,\n userSelect,\n whiteSpace,\n wordBreak,\n textAlign = \"left\",\n overflow,\n textOverflow,\n style,\n ...spanProps\n },\n ref,\n ) => {\n return (\n <span\n className={cx(styles.text, styles[variant], styles[size], className)}\n ref={ref}\n style={{\n color,\n userSelect,\n whiteSpace,\n wordBreak,\n textAlign,\n overflow,\n textOverflow,\n ...style,\n }}\n {...spanProps}\n >\n {children}\n </span>\n );\n },\n);\n\nexport const Txt = Text;\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const SmallText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"small\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const SmallerText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"smaller\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const StandardText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"medium\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const LargeText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"large\"} {...props} />;\n};\n","import cx from \"classnames\";\nimport { Property } from \"csstype\";\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { H1Props } from \"../../types/ElementProps\";\nimport styles from \"./Heading.module.css\";\n\nexport interface HeadingProps extends H1Props {\n variant?: HeadingVariant;\n whiteSpace?: Property.WhiteSpace;\n wordBreak?: Property.WordBreak;\n as?: HeadingVariant | \"span\";\n}\n\nexport type HeadingVariant = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n (\n {\n variant = \"h3\",\n className,\n color,\n whiteSpace,\n wordBreak,\n style,\n children,\n as,\n ...hProps\n },\n ref,\n ) => {\n const Element = as ?? variant;\n return (\n <Element\n className={cx(styles.heading, styles[variant], className)}\n style={{ color, whiteSpace, wordBreak, ...style }}\n ref={ref}\n {...hProps}\n >\n {children}\n </Element>\n );\n },\n);\n","import * as React from \"react\";\nimport { Heading, HeadingProps } from \"../heading/Heading\";\n\n/**\n * @deprecated Please use `Heading` instead.\n */\nexport const HeaderText: React.FC<Omit<HeadingProps, \"variant\">> = (props) => {\n return <Heading variant={\"h2\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { KeyboardEventHandler, MouseEventHandler, useCallback } from \"react\";\nimport { Box, BoxProps } from \"../layout/box/Box\";\n\nexport interface BlockKeyboardEventsProps extends BoxProps {\n /**\n * Key or keys that will be blocked from bubbling to parents.\n * If not set, all keys are blocked from bubbling.\n */\n blockedKeys?: string | Array<string>;\n\n /**\n * Whether to also block mouse events from bubbling.\n * Default: false\n */\n blockMouse?: boolean;\n}\n\nexport const BlockKeyboardEvents: React.FC<BlockKeyboardEventsProps> = ({\n blockedKeys,\n blockMouse = false,\n ...props\n}) => {\n const keyboardEventHandler = useCallback<KeyboardEventHandler>(\n (ev) => {\n const blockAll = blockedKeys == null;\n const shouldBlock =\n blockAll ||\n (Array.isArray(blockedKeys)\n ? blockedKeys.includes(ev.key)\n : blockedKeys === ev.key);\n\n if (shouldBlock) {\n ev.stopPropagation();\n }\n },\n [blockedKeys],\n );\n\n const mouseEventHandler = useCallback<MouseEventHandler>(\n (ev) => {\n if (!blockMouse) {\n return;\n }\n ev.stopPropagation();\n },\n [blockMouse],\n );\n\n return (\n <Box\n {...props}\n onKeyDown={keyboardEventHandler}\n onKeyUp={keyboardEventHandler}\n onMouseDown={mouseEventHandler}\n onMouseUp={mouseEventHandler}\n />\n );\n};\n","import { useCallback } from \"react\";\n\ntype ArrayItemEqualsComparator<T> = (a: T, b: T) => boolean;\n\nconst defaultComparator = <T>(a: T, b: T) => a === b;\n\nexport const useArraySet = <T>(\n list: Array<T>,\n setList: (list: Array<T>) => void,\n comparator: ArrayItemEqualsComparator<T> = defaultComparator,\n) => {\n const add = useCallback(\n (item: T) => {\n if (!list.some((l) => comparator(l, item))) {\n setList([...list, item]);\n }\n },\n [list, setList, comparator],\n );\n\n const addMultiple = useCallback(\n (items: Array<T>) => {\n setList(\n items.reduce((list, item) => {\n if (!list.some((l) => comparator(l, item))) {\n return [...list, item];\n }\n return list;\n }, list),\n );\n },\n [list, setList, comparator],\n );\n\n const remove = useCallback(\n (item: T) => {\n const index = list.findIndex((l) => comparator(l, item));\n if (index >= 0) {\n setList(list.filter((_, i) => i !== index));\n }\n },\n [list, setList, comparator],\n );\n\n const removeMultiple = useCallback(\n (items: Array<T>) => {\n setList(list.filter((item) => !items.some((l) => comparator(l, item))));\n },\n [list, setList, comparator],\n );\n\n const toggle = useCallback(\n (item: T) => {\n const found = list.some((l) => comparator(l, item));\n if (found) {\n remove(item);\n } else {\n add(item);\n }\n },\n [list, add, remove, comparator],\n );\n\n return {\n add,\n addMultiple,\n remove,\n removeMultiple,\n toggle,\n };\n};\n","import { useCallback, useState } from \"react\";\n\ntype Value = boolean;\ntype SetTrue = () => void;\ntype SetFalse = () => void;\ntype ToggleValue = () => void;\ntype BooleanHook = [Value, SetTrue, SetFalse, ToggleValue];\n\nexport const useBoolean = (initialValue: Value): BooleanHook => {\n const [value, setValue] = useState(initialValue);\n\n const setTrue = useCallback(() => {\n setValue(true);\n }, [setValue]);\n\n const setFalse = useCallback(() => {\n setValue(false);\n }, [setValue]);\n\n const toggle = useCallback(() => {\n setValue((v) => !v);\n }, [setValue]);\n\n return [value, setTrue, setFalse, toggle];\n};\n","import { useEffect, useState } from \"react\";\n\nexport const useDebounce = <T>(value: T, delay: number): T => {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]); // Only re-call effect if value or delay changes\n\n return debouncedValue;\n};\n","import { useEffect, useState } from \"react\";\n\nexport const useDelayedFalse = (value: boolean, delay: number) => {\n const [debouncedValue, setDebouncedValue] = useState<boolean>(value);\n\n useEffect(() => {\n if (value) {\n setDebouncedValue(true);\n }\n\n const handler = setTimeout(() => {\n if (!value) {\n setDebouncedValue(value);\n }\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n","import { useEffect, useState } from \"react\";\n\nlet id = 0;\nconst genId = (componentName?: string) =>\n `webui-${componentName ? componentName + \"-\" : \"\"}${++id}`;\n\n/** @deprecated use useId-hook from React 18 */\nexport const useDomId = (componentName?: string): string => {\n const [id, setId] = useState<string | null>(() => genId(componentName));\n useEffect(() => setId(genId(componentName)), [componentName]);\n return id!;\n};\n","import { RefObject, useEffect, useRef } from \"react\";\n\ntype EventHandler<TEventName extends keyof HTMLElementEventMap> = (\n event: HTMLElementEventMap[TEventName],\n) => void;\n\nexport const useEventListener = <TEventName extends keyof HTMLElementEventMap>(\n ref: RefObject<HTMLElement | null>,\n eventName: TEventName,\n handler: EventHandler<TEventName>,\n) => {\n // Create a ref that stores handler\n const savedHandler = useRef<EventHandler<TEventName>>(null);\n\n // Update ref.current value if handler changes.\n // This allows our effect below to always get latest handler ...\n // ... without us needing to pass it in effect deps array ...\n // ... and potentially cause effect to re-run every render.\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n // Make sure element supports addEventListener\n const isSupported = ref.current && ref.current.addEventListener;\n if (!isSupported) return;\n\n // Create event listener that calls handler function stored in ref\n const eventListener: EventHandler<TEventName> = (event) => {\n if (savedHandler.current) {\n return savedHandler.current(event);\n }\n };\n\n // Add event listener\n if (!ref.current) {\n return;\n }\n\n const element = ref.current;\n element.addEventListener(eventName, eventListener);\n\n // Remove event listener on cleanup\n return () => {\n if (element) {\n element.removeEventListener(eventName, eventListener);\n }\n };\n }, [eventName, ref]); // Re-run if eventName or element changes\n};\n","import { RefObject, useCallback, useEffect } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useElementFocus = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [isInFocus, setIsInFocus, setIsNotInFocus] = useBoolean(false);\n\n useEffect(() => {\n if (document.activeElement === ref.current) {\n setIsInFocus();\n } else {\n setIsNotInFocus();\n }\n }, [ref, setIsNotInFocus, setIsInFocus]);\n\n useEventListener(ref, \"focus\", setIsInFocus);\n useEventListener(ref, \"blur\", setIsNotInFocus);\n\n const focus = useCallback(() => {\n if (ref.current) {\n ref.current.focus();\n }\n }, [ref]);\n\n const blur = useCallback(() => {\n if (ref.current) {\n ref.current.blur();\n }\n }, [ref]);\n\n return { isInFocus, focus, blur };\n};\n","import { useCallback, useLayoutEffect, useRef } from \"react\";\n\ntype Fn<ARGS extends unknown[], R> = (...args: ARGS) => R;\n\nexport const useEventCallback = <A extends unknown[], R>(\n fn: Fn<A, R>,\n): Fn<A, R> => {\n const ref = useRef<Fn<A, R>>(fn);\n useLayoutEffect(() => {\n ref.current = fn;\n });\n return useCallback((...args: A): R => {\n const { current } = ref;\n return current(...args);\n }, []);\n};\n","import React, { MutableRefObject } from \"react\";\n\nexport const useLatest = <T>(value: T): MutableRefObject<T> => {\n const ref = React.useRef(value);\n ref.current = value;\n return ref;\n};\n","import { RefObject } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useMouseIsOver = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [mouseIsOver, setMouseIsOver, setMouseIsNotOver] = useBoolean(false);\n\n useEventListener(ref, \"mouseover\", setMouseIsOver);\n useEventListener(ref, \"mouseout\", setMouseIsNotOver);\n\n return mouseIsOver;\n};\n","import { RefObject } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useMouseIsEntered = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [mouseIsEntered, setMouseIsEntered, setMouseIsNotEntered] =\n useBoolean(false);\n\n useEventListener(ref, \"mouseenter\", setMouseIsEntered);\n useEventListener(ref, \"mouseleave\", setMouseIsNotEntered);\n\n return mouseIsEntered;\n};\n","import * as React from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport const useMultiOnClickOutside = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refs: Array<React.RefObject<any>>,\n handler: (event: TouchEvent | MouseEvent) => void,\n) => {\n const eventHandler = useRef<(event: TouchEvent | MouseEvent) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const listener = (event: TouchEvent | MouseEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n\n const allNotContains = refs\n .filter((ref) => ref.current)\n .every((ref) => {\n return ref.current && !ref.current.contains(event.target);\n });\n\n if (!allNotContains) {\n return;\n }\n\n eventHandler.current(event);\n };\n\n document.addEventListener(\"mousedown\", listener);\n document.addEventListener(\"touchstart\", listener);\n\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n document.removeEventListener(\"touchstart\", listener);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...refs]);\n};\n","import * as React from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport const useOnClickOutside = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: React.RefObject<any>,\n handler: (event: TouchEvent | MouseEvent) => void,\n options?: AddEventListenerOptions,\n) => {\n const eventHandler = useRef<(event: TouchEvent | MouseEvent) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const listener = (event: TouchEvent | MouseEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n\n eventHandler.current(event);\n };\n\n document.addEventListener(\"mousedown\", listener, options);\n document.addEventListener(\"touchstart\", listener, options);\n\n return () => {\n document.removeEventListener(\"mousedown\", listener, options);\n document.removeEventListener(\"touchstart\", listener, options);\n };\n }, [ref, options]);\n};\n","import { debounce } from \"lodash-es\";\nimport { useEffect, useRef } from \"react\";\n\nconst events = [\"mousemove\", \"mousedown\", \"keydown\", \"touchstart\", \"scroll\"];\n\nexport const useOnNoMouseMovement = (callback: () => void, delay: number) => {\n const eventHandler = useRef<(event: Event) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const onIdleChange = debounce(eventHandler.current, delay);\n events.forEach((event) => window.addEventListener(event, onIdleChange));\n\n return () => {\n events.forEach((event) =>\n window.removeEventListener(event, onIdleChange),\n );\n };\n }, [delay]);\n};\n","import { RefObject, useEffect, useMemo, useState } from \"react\";\n\nexport const useOnScreen = (\n ref: RefObject<Element | null>,\n options?: IntersectionObserverInit,\n) => {\n const [isVisible, setIsVisible] = useState(false);\n\n const { rootMargin, root, threshold } = options || {};\n\n const observer = useMemo(() => {\n return new IntersectionObserver(\n ([entry]) => setIsVisible(entry.isIntersecting),\n {\n rootMargin,\n root,\n threshold,\n },\n );\n }, [setIsVisible, rootMargin, root, threshold]);\n\n useEffect(() => {\n if (ref.current) {\n observer.observe(ref.current);\n }\n return () => {\n observer.disconnect();\n };\n }, [observer, ref]);\n\n return isVisible;\n};\n","import {\n MutableRefObject,\n RefCallback,\n RefObject,\n useEffect,\n useRef,\n} from \"react\";\n\nexport const useForwardedRef = <T>(\n ref: RefCallback<T> | MutableRefObject<T> | null,\n): RefObject<NonNullable<T>> => {\n const innerRef = useRef<T>(null) as MutableRefObject<NonNullable<T>>;\n\n useEffect(() => {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(innerRef.current);\n } else {\n ref.current = innerRef.current;\n }\n });\n\n return innerRef;\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport const useTimeoutState = <S>(\n initialValue: S,\n defaultTimeout: number,\n clearTimeoutOnSetValue = true,\n): [S, (v: S) => void] => {\n const [value, setValue] = useState<S>(initialValue);\n const timeoutRef = useRef<NodeJS.Timeout>(null);\n\n const wrappedSetter = useCallback(\n (newValue: S, timeout = defaultTimeout) => {\n setValue(newValue);\n if (clearTimeoutOnSetValue) {\n clearTimeout(timeoutRef.current!);\n }\n timeoutRef.current = setTimeout(() => setValue(initialValue), timeout);\n },\n [defaultTimeout, clearTimeoutOnSetValue, initialValue],\n );\n\n useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current!);\n };\n }, []);\n\n return [value, wrappedSetter];\n};\n","import { useMemo } from \"react\";\n\nexport const useToday = () => {\n return useMemo(() => new Date(), []);\n};\n","export const byStringField =\n <T>(fieldResolver: (item: T) => string) =>\n (a: T, b: T): number =>\n fieldResolver(a).localeCompare(fieldResolver(b));\n\nexport const byNumberField =\n <T>(fieldResolver: (item: T) => number) =>\n (a: T, b: T): number =>\n fieldResolver(a) - fieldResolver(b);\n","export const exhaustSwitchCaseElseThrow = (arg: never) => {\n throw new Error(`Switch unhandled case: ${arg}`);\n};\n\nexport const exhaustSwitchCase = <T>(_arg: never, fallback: T) => {\n return fallback;\n};\n","export const truthyKeysAsList = (r: Record<string, boolean>): Array<string> =>\n Object.keys(r).filter((key) => r[key]);\n","export const parseFloatElseUndefined = (s: string): number | undefined => {\n try {\n const f = parseFloat(s);\n if (isNaN(f)) {\n return undefined;\n }\n if (f == null) {\n return undefined;\n }\n return f;\n } catch {\n /* empty */\n }\n return undefined;\n};\n\nexport const parseIntElseUndefined = (s: string): number | undefined => {\n try {\n const f = parseInt(s, 10);\n if (isNaN(f)) {\n return undefined;\n }\n if (f == null) {\n return undefined;\n }\n return f;\n } catch {\n /* empty */\n }\n return undefined;\n};\n","export function invariant<T>(\n val: T | null | undefined,\n message: string,\n): asserts val is T {\n if (val == null) {\n throw new Error(\"Invariant error: \" + message);\n }\n}\n","import { Fragment, isValidElement, ReactElement, ReactNode } from \"react\";\n\nexport const isEmptyFragment = (node: ReactNode): boolean => {\n if (!isValidElement(node)) return false;\n if (node.type !== Fragment) return false;\n\n // Now TypeScript knows `node` is a ReactElement with known props\n const element = node as ReactElement<{ children?: ReactNode }>;\n const children = element.props.children;\n\n if (Array.isArray(children)) {\n return children.every(isNullishChild);\n }\n\n return isNullishChild(children);\n};\n\nconst isNullishChild = (child: ReactNode): boolean =>\n child == null || child === false;\n"],"names":["SeparatorLine","forwardRef","color","cssColor","size","width","vertical","ref","jsx","styles","ClickableElement","styled","background","pointer","props","hoverBackground","disableOpacityOnClick","disableFocusHighlight","focusBackground","height","borderRadius","Clickable","onClick","onDblClick","tooltip","disablePointer","opacityOnHover","disabled","children","type","restProps","booleanOrNumberToNumber","num","numberToMetricCalc","booleanOrNumberToMetricCalc","validPropsRecord","validProps","r","isPropValid","memoize","prop","shadows","excludedProps","isExcludedWebUiProp","propName","box","system","row","value","Box","border","borderRight","borderLeft","borderTop","borderBottom","borderColor","borderStyle","borderWidth","boxShadow","flexbox","overflow","position","layout","zIndex","left","right","top","bottom","hoverBorder","focusBorder","focusWithinBackground","focusWithinBorder","Column","getDimensionObject","node","x","y","isEqualDimensions","a","b","useElementDimensions","onResizeElement","dimensions","setDimensions","useState","updateDimensions","useCallback","newDimensions","useLayoutEffect","ResizeAwareBox","onResize","boxProps","localRef","useRef","Row","Indent","Spacing","InnerSpace","Space","half","horizontal","Nest","nest","render","Fragment","AccessibleFontSizeContext","createContext","baseHeight","AccessibleFontSizeProvider","isFontLarge","setIsFontLarge","fontSizeRatio","setFontSizeRatio","useEffect","observer","entries","entry","useMemo","jsxs","useAccessibleFontSizeContext","context","useContext","getDataProps","pickBy","isDataPropMapper","getAriaProps","isAriaPropMapper","_","key","ScreenReaderOnlyText","Text","variant","className","userSelect","whiteSpace","wordBreak","textAlign","textOverflow","style","spanProps","cx","Txt","SmallText","SmallerText","StandardText","LargeText","Heading","as","hProps","HeaderText","BlockKeyboardEvents","blockedKeys","blockMouse","keyboardEventHandler","ev","mouseEventHandler","defaultComparator","useArraySet","list","setList","comparator","add","item","addMultiple","items","l","remove","index","i","removeMultiple","toggle","useBoolean","initialValue","setValue","setTrue","setFalse","v","useDebounce","delay","debouncedValue","setDebouncedValue","handler","useDelayedFalse","id","genId","componentName","useDomId","setId","useEventListener","eventName","savedHandler","eventListener","event","element","useElementFocus","isInFocus","setIsInFocus","setIsNotInFocus","focus","blur","useEventCallback","fn","args","current","useLatest","React","useMouseIsOver","mouseIsOver","setMouseIsOver","setMouseIsNotOver","useMouseIsEntered","mouseIsEntered","setMouseIsEntered","setMouseIsNotEntered","useMultiOnClickOutside","refs","eventHandler","listener","useOnClickOutside","options","events","useOnNoMouseMovement","callback","onIdleChange","debounce","useOnScreen","isVisible","setIsVisible","rootMargin","root","threshold","useForwardedRef","innerRef","useTimeoutState","defaultTimeout","clearTimeoutOnSetValue","timeoutRef","wrappedSetter","newValue","timeout","useToday","byStringField","fieldResolver","byNumberField","exhaustSwitchCaseElseThrow","arg","exhaustSwitchCase","_arg","fallback","truthyKeysAsList","parseFloatElseUndefined","s","f","parseIntElseUndefined","invariant","val","message","isEmptyFragment","isValidElement","isNullishChild","child"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/components/decorators/separatorline/SeparatorLine.tsx","../src/components/interaction/Clickable.tsx","../src/utils/BooleanOrNumberToNumber.ts","../src/components/util/IsPropValid.ts","../src/components/layout/box/Box.tsx","../src/components/layout/column/Column.tsx","../src/hooks/UseElementDimensions.ts","../src/components/layout/box/ResizeAwareBox.tsx","../src/components/layout/row/Row.tsx","../src/components/layout/indent/Indent.tsx","../src/components/layout/spacing/Spacing.tsx","../src/components/layout/space/Space.tsx","../src/components/util/Nest.tsx","../src/accessibility/accessible-font-size-detector/AccessibleFontSizeProvider.tsx","../src/accessibility/accessible-font-size-detector/UseAccessibleFontSizeContext.ts","../src/utils/PropsForwarder.ts","../src/accessibility/screen-reader-only-text/ScreenReaderOnlyText.tsx","../src/components/text/Text.tsx","../src/components/deprecated-text/SmallText.tsx","../src/components/deprecated-text/SmallerText.tsx","../src/components/deprecated-text/StandardText.tsx","../src/components/deprecated-text/LargeText.tsx","../src/components/heading/Heading.tsx","../src/components/deprecated-text/HeaderText.tsx","../src/components/events/BlockKeyboardEvents.tsx","../src/hooks/UseArraySet.ts","../src/hooks/UseBoolean.ts","../src/hooks/UseDebounce.ts","../src/hooks/UseDelayedFalse.ts","../src/hooks/UseDomId.ts","../src/hooks/UseEventListener.ts","../src/hooks/UseElementFocus.ts","../src/hooks/UseEventCallback.tsx","../src/hooks/UseLatest.ts","../src/hooks/UseMouseIsOver.ts","../src/hooks/UseMouseIsEntered.ts","../src/hooks/UseMultiOnClickOutside.ts","../src/hooks/UseOnClickOutside.ts","../src/hooks/UseOnNoMouseInput.ts","../src/hooks/UseOnScreen.ts","../src/hooks/UseForwardedRef.ts","../src/hooks/UseTimeoutState.ts","../src/hooks/UseToday.ts","../src/sorting/Comparators.ts","../src/utils/SwitchCaseExhauster.ts","../src/utils/TruthyKeysAsList.ts","../src/utils/parsers/NumberParser.ts","../src/utils/Invariant.ts","../src/utils/FragmentEmptyChecker.ts","../src/utils/translations/PluralFormatProvider.ts"],"sourcesContent":["import { Property } from \"csstype\";\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport styles from \"./SeparatorLine.module.css\";\n\nexport interface SeparatorLineProps {\n color?: Property.Color;\n vertical?: boolean;\n size?: string;\n width?: string;\n}\n\nexport const SeparatorLine = forwardRef<HTMLHRElement, SeparatorLineProps>(\n (\n {\n color = cssColor(\"--lhds-color-ui-300\"),\n size = \"100%\",\n width = \"1px\",\n vertical = false,\n },\n ref,\n ) => {\n return (\n <hr\n className={styles.separatorLine}\n aria-hidden={true}\n color={color}\n style={{\n backgroundColor: color,\n height: vertical ? size || \"100%\" : width || \"1px\",\n width: vertical ? width || \"1px\" : size || \"100%\",\n }}\n ref={ref}\n />\n );\n },\n);\n","import styled from \"@emotion/styled\";\nimport * as React from \"react\";\nimport { CSSProperties, forwardRef, MouseEventHandler } from \"react\";\nimport { ButtonElementProps } from \"../../types/ElementProps\";\n\nexport interface ClickableProps extends ButtonElementProps {\n /** Callback function called when clicking on click area. */\n onClick?: MouseEventHandler<HTMLButtonElement>;\n /** Callback function called when double clicking on click area. */\n onDblClick?: MouseEventHandler<HTMLButtonElement>;\n /** Adds a title to the click area. */\n tooltip?: string;\n /** If set, there is no opacity applies when clicking on the click area. */\n disableOpacityOnClick?: boolean;\n /** Mouse does not turn into pointer when hovering over click area. */\n disablePointer?: boolean;\n /** When set, click area receives opacity when mouse hovers over it. */\n opacityOnHover?: boolean;\n /** Custom style on div with click event. */\n style?: CSSProperties;\n /** Disables shadow when element is focused. */\n disableFocusHighlight?: boolean;\n /** Disables the HTML button element. */\n disabled?: boolean;\n /**\n * Sets the background of the box.\n */\n background?: string;\n /**\n * Sets the background of the box when the box is in focus.\n */\n focusBackground?: string;\n /**\n * Sets the background of the box when hovering with mouse.\n */\n hoverBackground?: string;\n /**\n * The width.\n */\n width?: string;\n /**\n * The height.\n */\n height?: string;\n /**\n * Border radius\n */\n borderRadius?: string;\n}\n\ninterface ClickableElementProps {\n disableOpacityOnClick?: boolean;\n opacityOnHover?: boolean;\n disableFocusHighlight?: boolean;\n pointer?: boolean;\n background?: string;\n focusBackground?: string;\n hoverBackground?: string;\n width?: string;\n height?: string;\n borderRadius?: string;\n}\n\nconst ClickableElement = styled.button<ClickableElementProps>`\n display: inline-block;\n user-select: none;\n border: 0;\n padding: 0;\n background: ${({ background }) => background};\n ${({ pointer }) => (pointer ? \"cursor: pointer;\" : \"\")}\n\n :hover {\n ${(props) => (props.opacityOnHover ? \"opacity: 0.7;\" : \"\")};\n ${({ hoverBackground }) => `background: ${hoverBackground};`}\n }\n :active {\n ${({ disableOpacityOnClick }) =>\n !disableOpacityOnClick ? \"opacity: 0.5;\" : \"\"}\n }\n :focus {\n outline: 0;\n ${({ disableFocusHighlight }) =>\n disableFocusHighlight\n ? \"\"\n : \"box-shadow: 0 0 3pt 2pt rgba(0, 0, 100, 0.3);\"}\n ${({ focusBackground }) => `background: ${focusBackground};`}\n }\n ${({ width }) => (width ? `width: ${width};` : \"\")}\n ${({ height }) => (height ? `height: ${height};` : \"\")}\n ${({ borderRadius }) =>\n borderRadius ? `border-radius: ${borderRadius};` : \"\"}\n`;\n\nexport const Clickable = forwardRef<HTMLButtonElement, ClickableProps>(\n (\n {\n disableFocusHighlight,\n onClick,\n onDblClick,\n tooltip,\n disableOpacityOnClick,\n disablePointer,\n opacityOnHover,\n disabled,\n children,\n background = \"transparent\",\n hoverBackground,\n focusBackground,\n type = \"button\",\n ...restProps\n },\n ref,\n ) => {\n const hasClickHandler = !!(onClick || onDblClick);\n\n return (\n <ClickableElement\n opacityOnHover={opacityOnHover}\n title={tooltip}\n disabled={disabled}\n disableOpacityOnClick={disableOpacityOnClick}\n onClick={onClick}\n onDoubleClick={onDblClick}\n disableFocusHighlight={disableFocusHighlight}\n pointer={hasClickHandler && !disablePointer}\n ref={ref}\n background={background}\n hoverBackground={hoverBackground}\n focusBackground={focusBackground}\n type={type}\n {...restProps}\n >\n {children}\n </ClickableElement>\n );\n },\n);\n","export const booleanOrNumberToNumber = (\n num: number | boolean | undefined,\n): number => {\n if (num == null) {\n return 0;\n }\n if (typeof num === \"boolean\") {\n return num ? 1 : 0;\n }\n return num;\n};\n\nexport const numberToMetricCalc = (num: number): string | undefined => {\n if (num === 0) {\n return undefined;\n }\n return `calc(${num} * var(--swui-metrics-space))`;\n};\n\nexport const booleanOrNumberToMetricCalc = (\n num: number | boolean | undefined,\n): string | undefined => numberToMetricCalc(booleanOrNumberToNumber(num));\n","import { memoize } from \"lodash-es\";\n\nconst validPropsRecord = {\n // react props\n // https://github.com/facebook/react/blob/5495a7f24aef85ba6937truetrue1ce962673ca9f5fde6/src/renderers/dom/shared/hooks/ReactDOMUnknownPropertyHook.js\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true,\n autoFocus: true,\n defaultValue: true,\n defaultChecked: true,\n innerHTML: true,\n suppressContentEditableWarning: true,\n suppressHydrationWarning: true,\n // deprecated react prop\n valueLink: true,\n\n // https://github.com/facebook/react/blob/d7157651f7b72d9888ctrue123e191f9b88cd8f41e9/src/renderers/dom/shared/HTMLDOMPropertyConfig.js\n /**\n * Standard Properties\n */\n\n abbr: true,\n accept: true,\n acceptCharset: true,\n accessKey: true,\n action: true,\n allow: true,\n allowUserMedia: true,\n allowPaymentRequest: true,\n allowFullScreen: true,\n allowTransparency: true,\n alt: true,\n // specifies target context for links with `preload` type\n // as: true,\n async: true,\n autoComplete: true,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: true,\n autoPlay: true,\n capture: true,\n cellPadding: true,\n cellSpacing: true,\n // keygen prop\n challenge: true,\n charSet: true,\n checked: true,\n cite: true,\n classID: true,\n className: true,\n cols: true,\n colSpan: true,\n content: true,\n contentEditable: true,\n contextMenu: true,\n controls: true,\n controlsList: true,\n coords: true,\n crossOrigin: true,\n data: true, // For `<object />` acts as `src`.\n dateTime: true,\n decoding: true,\n default: true,\n defer: true,\n dir: true,\n disabled: true,\n disablePictureInPicture: true,\n disableRemotePlayback: true,\n download: true,\n draggable: true,\n encType: true,\n enterKeyHint: true,\n form: true,\n formAction: true,\n formEncType: true,\n formMethod: true,\n formNoValidate: true,\n formTarget: true,\n frameBorder: true,\n headers: true,\n height: true,\n hidden: true,\n high: true,\n href: true,\n hrefLang: true,\n htmlFor: true,\n httpEquiv: true,\n id: true,\n inputMode: true,\n integrity: true,\n is: true,\n keyParams: true,\n keyType: true,\n kind: true,\n label: true,\n lang: true,\n list: true,\n loading: true,\n loop: true,\n low: true,\n // manifest: true,\n marginHeight: true,\n marginWidth: true,\n max: true,\n maxLength: true,\n media: true,\n mediaGroup: true,\n method: true,\n min: true,\n minLength: true,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: true,\n muted: true,\n name: true,\n nonce: true,\n noValidate: true,\n open: true,\n optimum: true,\n pattern: true,\n placeholder: true,\n playsInline: true,\n poster: true,\n preload: true,\n profile: true,\n radioGroup: true,\n readOnly: true,\n referrerPolicy: true,\n rel: true,\n required: true,\n reversed: true,\n role: true,\n rows: true,\n rowSpan: true,\n sandbox: true,\n scope: true,\n scoped: true,\n scrolling: true,\n seamless: true,\n selected: true,\n shape: true,\n size: true,\n sizes: true,\n // support for projecting regular DOM Elements via V1 named slots ( shadow dom )\n slot: true,\n span: true,\n spellCheck: true,\n src: true,\n srcDoc: true,\n srcLang: true,\n srcSet: true,\n start: true,\n step: true,\n style: true,\n summary: true,\n tabIndex: true,\n target: true,\n title: true,\n translate: true,\n // Setting .type throws on non-<input> tags\n type: true,\n useMap: true,\n value: true,\n width: true,\n wmode: true,\n wrap: true,\n\n /**\n * RDFa Properties\n */\n about: true,\n datatype: true,\n inlist: true,\n prefix: true,\n // property is also supported for OpenGraph in meta tags.\n property: true,\n resource: true,\n typeof: true,\n vocab: true,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: true,\n autoCorrect: true,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: true,\n // color is for Safari mask-icon link\n color: true,\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/search#incremental_This_API_has_not_been_standardized\n incremental: true,\n // used in amp html for indicating the fallback behavior\n // https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/placeholders/\n fallback: true,\n // https://html.spec.whatwg.org/multipage/interaction.html#inert\n inert: true,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: true,\n itemScope: true,\n itemType: true,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: true,\n itemRef: true,\n // used in amp html for eventing purposes\n // https://amp.dev/documentation/guides-and-tutorials/learn/common_attributes/\n on: true,\n // used in amp html for indicating that the option is selectable\n // https://amp.dev/documentation/components/amp-selector/\n option: true,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: true,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<1true\n security: true,\n // IE-only attribute that controls focus behavior\n unselectable: true,\n //\n // SVG properties: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n // The following \"onX\" events have been omitted:\n //\n // onabort\n // onactivate\n // onbegin\n // onclick\n // onend\n // onerror\n // onfocusin\n // onfocusout\n // onload\n // onmousedown\n // onmousemove\n // onmouseout\n // onmouseover\n // onmouseup\n // onrepeat\n // onresize\n // onscroll\n // onunload\n accentHeight: true,\n accumulate: true,\n additive: true,\n alignmentBaseline: true,\n allowReorder: true,\n alphabetic: true,\n amplitude: true,\n arabicForm: true,\n ascent: true,\n attributeName: true,\n attributeType: true,\n autoReverse: true,\n azimuth: true,\n baseFrequency: true,\n baselineShift: true,\n baseProfile: true,\n bbox: true,\n begin: true,\n bias: true,\n by: true,\n calcMode: true,\n capHeight: true,\n clip: true,\n clipPathUnits: true,\n clipPath: true,\n clipRule: true,\n colorInterpolation: true,\n colorInterpolationFilters: true,\n colorProfile: true,\n colorRendering: true,\n contentScriptType: true,\n contentStyleType: true,\n cursor: true,\n cx: true,\n cy: true,\n d: true,\n decelerate: true,\n descent: true,\n diffuseConstant: true,\n direction: true,\n display: true,\n divisor: true,\n dominantBaseline: true,\n dur: true,\n dx: true,\n dy: true,\n edgeMode: true,\n elevation: true,\n enableBackground: true,\n end: true,\n exponent: true,\n externalResourcesRequired: true,\n fill: true,\n fillOpacity: true,\n fillRule: true,\n filter: true,\n filterRes: true,\n filterUnits: true,\n floodColor: true,\n floodOpacity: true,\n focusable: true,\n fontFamily: true,\n fontSize: true,\n fontSizeAdjust: true,\n fontStretch: true,\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n format: true,\n from: true,\n fr: true, // valid SVG element but React will ask for removal\n fx: true,\n fy: true,\n g1: true,\n g2: true,\n glyphName: true,\n glyphOrientationHorizontal: true,\n glyphOrientationVertical: true,\n glyphRef: true,\n gradientTransform: true,\n gradientUnits: true,\n hanging: true,\n horizAdvX: true,\n horizOriginX: true,\n ideographic: true,\n imageRendering: true,\n in: true,\n in2: true,\n intercept: true,\n k: true,\n k1: true,\n k2: true,\n k3: true,\n k4: true,\n kernelMatrix: true,\n kernelUnitLength: true,\n kerning: true,\n keyPoints: true,\n keySplines: true,\n keyTimes: true,\n lengthAdjust: true,\n letterSpacing: true,\n lightingColor: true,\n limitingConeAngle: true,\n local: true,\n markerEnd: true,\n markerMid: true,\n markerStart: true,\n markerHeight: true,\n markerUnits: true,\n markerWidth: true,\n mask: true,\n maskContentUnits: true,\n maskUnits: true,\n mathematical: true,\n mode: true,\n numOctaves: true,\n offset: true,\n opacity: true,\n operator: true,\n order: true,\n orient: true,\n orientation: true,\n origin: true,\n overflow: true,\n overlinePosition: true,\n overlineThickness: true,\n panose1: true,\n paintOrder: true,\n pathLength: true,\n patternContentUnits: true,\n patternTransform: true,\n patternUnits: true,\n pointerEvents: true,\n points: true,\n pointsAtX: true,\n pointsAtY: true,\n pointsAtZ: true,\n preserveAlpha: true,\n preserveAspectRatio: true,\n primitiveUnits: true,\n r: true,\n radius: true,\n refX: true,\n refY: true,\n renderingIntent: true,\n repeatCount: true,\n repeatDur: true,\n requiredExtensions: true,\n requiredFeatures: true,\n restart: true,\n result: true,\n rotate: true,\n rx: true,\n ry: true,\n scale: true,\n seed: true,\n shapeRendering: true,\n slope: true,\n spacing: true,\n specularConstant: true,\n specularExponent: true,\n speed: true,\n spreadMethod: true,\n startOffset: true,\n stdDeviation: true,\n stemh: true,\n stemv: true,\n stitchTiles: true,\n stopColor: true,\n stopOpacity: true,\n strikethroughPosition: true,\n strikethroughThickness: true,\n string: true,\n stroke: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeLinecap: true,\n strokeLinejoin: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true,\n surfaceScale: true,\n systemLanguage: true,\n tableValues: true,\n targetX: true,\n targetY: true,\n textAnchor: true,\n textDecoration: true,\n textRendering: true,\n textLength: true,\n to: true,\n transform: true,\n u1: true,\n u2: true,\n underlinePosition: true,\n underlineThickness: true,\n unicode: true,\n unicodeBidi: true,\n unicodeRange: true,\n unitsPerEm: true,\n vAlphabetic: true,\n vHanging: true,\n vIdeographic: true,\n vMathematical: true,\n values: true,\n vectorEffect: true,\n version: true,\n vertAdvY: true,\n vertOriginX: true,\n vertOriginY: true,\n viewBox: true,\n viewTarget: true,\n visibility: true,\n widths: true,\n wordSpacing: true,\n writingMode: true,\n x: true,\n xHeight: true,\n x1: true,\n x2: true,\n xChannelSelector: true,\n xlinkActuate: true,\n xlinkArcrole: true,\n xlinkHref: true,\n xlinkRole: true,\n xlinkShow: true,\n xlinkTitle: true,\n xlinkType: true,\n xmlBase: true,\n xmlns: true,\n xmlnsXlink: true,\n xmlLang: true,\n xmlSpace: true,\n y: true,\n y1: true,\n y2: true,\n yChannelSelector: true,\n z: true,\n zoomAndPan: true,\n\n // For preact. We have this code here even though Emotion doesn't support\n // Preact, since @emotion/is-prop-valid is used by some libraries outside of\n // the context of Emotion.\n for: true,\n class: true,\n autofocus: true,\n};\n\nconst validProps = `^((${Object.keys(validPropsRecord).join(\n \"|\",\n)})|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$`;\n\nconst r = new RegExp(validProps);\n\nexport const isPropValid: (prop: string) => boolean = memoize(\n (prop: string) =>\n r.test(prop) ||\n (prop.charCodeAt(0) === 111 /* o */ &&\n prop.charCodeAt(1) === 110 /* n */ &&\n prop.charCodeAt(2) < 91) /* Z+1 */,\n);\n","import styled from \"@emotion/styled\";\nimport { Property } from \"csstype\";\n\nimport {\n background,\n BackgroundProps,\n border,\n borderBottom,\n BorderBottomProps,\n borderColor,\n borderLeft,\n BorderLeftProps,\n borderRadius,\n BorderRadiusProps,\n borderRight,\n BorderRightProps,\n borderStyle,\n BorderStyleProps,\n borderTop,\n BorderTopProps,\n borderWidth,\n BorderWidthProps,\n bottom,\n BottomProps,\n boxShadow,\n BoxShadowProps,\n flexbox,\n FlexboxProps,\n layout,\n LayoutProps,\n left,\n LeftProps,\n overflow,\n OverflowProps,\n position,\n PositionProps,\n ResponsiveValue,\n right,\n RightProps,\n system,\n TLengthStyledSystem,\n top,\n TopProps,\n zIndex,\n ZIndexProps,\n} from \"styled-system\";\nimport { DivProps } from \"../../../types/ElementProps\";\nimport {\n booleanOrNumberToMetricCalc,\n booleanOrNumberToNumber,\n} from \"../../../utils/BooleanOrNumberToNumber\";\nimport { isPropValid } from \"../../util/IsPropValid\";\n\ninterface StyledSystemProps\n extends BorderRadiusProps,\n BorderStyleProps,\n BorderWidthProps,\n BorderLeftProps,\n BorderRightProps,\n BorderTopProps,\n BorderBottomProps,\n FlexboxProps,\n LayoutProps,\n OverflowProps,\n PositionProps,\n ZIndexProps,\n LeftProps,\n RightProps,\n TopProps,\n BottomProps {}\n\nconst shadows = {\n box: \"var(--swui-shadow-box)\",\n popover: \"var(--swui-shadow-popover)\",\n modal: \"var(--swui-shadow-modal)\",\n bottom: \"var(--swui-shadow-bottom)\",\n};\n\ntype ShadowType = keyof typeof shadows;\n\nexport interface BoxProps extends StyledSystemProps, DivProps {\n /**\n * If true, children are placed in a row.\n */\n row?: ResponsiveValue<boolean>;\n\n /**\n * Adds spacing over and under content.\n */\n spacing?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds spacing left and right of content.\n */\n indent?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds spacing between children.\n */\n gap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds gap between columns.\n */\n columnGap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds gap between rows.\n */\n rowGap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds a shadow around the box.\n */\n shadow?: ResponsiveValue<Property.BoxShadow | ShadowType>;\n\n /**\n * Sets the background of the box.\n */\n background?: ResponsiveValue<Property.Background<TLengthStyledSystem>>;\n\n /**\n * Sets the border of the box.\n */\n border?: ResponsiveValue<Property.Border<TLengthStyledSystem>>;\n\n /**\n * Sets the border color of the box.\n */\n borderColor?: ResponsiveValue<Property.BorderColor>;\n\n /**\n * Sets the background of the box when hovering with mouse.\n */\n hoverBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when hovering with mouse.\n */\n hoverBorder?: Property.Border<TLengthStyledSystem>;\n\n /**\n * Sets the background of the box when the box is in focus.\n */\n focusBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when the box is in focus.\n */\n focusBorder?: Property.Border<TLengthStyledSystem>;\n\n /**\n * Sets the background of the box when focus is within the box.\n */\n focusWithinBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when focus is within the box.\n */\n focusWithinBorder?: Property.Border<TLengthStyledSystem>;\n}\n\nconst excludedProps = [\n \"spacing\",\n \"indent\",\n \"gap\",\n \"width\",\n \"height\",\n \"overflow\",\n \"display\",\n];\n\nconst isExcludedWebUiProp = (propName: string) =>\n excludedProps.includes(propName);\n\nconst box = system({\n row: {\n property: \"flexDirection\",\n transform: (row: boolean) => (row ? \"row\" : \"column\"),\n },\n indent: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-indent\",\n transform: booleanOrNumberToNumber,\n },\n spacing: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-spacing\",\n transform: booleanOrNumberToNumber,\n },\n gap: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-gap\",\n transform: booleanOrNumberToNumber,\n },\n columnGap: {\n property: \"columnGap\",\n transform: booleanOrNumberToMetricCalc,\n },\n rowGap: {\n property: \"rowGap\",\n transform: booleanOrNumberToMetricCalc,\n },\n shadow: {\n property: \"boxShadow\",\n transform: (value: ShadowType) => shadows[value] ?? value,\n },\n});\n\ntype InnerProps = BoxProps & BoxShadowProps & BackgroundProps;\n\nexport const Box = styled(\"div\", {\n shouldForwardProp: (propName) =>\n typeof propName === \"string\"\n ? isExcludedWebUiProp(propName)\n ? false\n : isPropValid(propName)\n : false,\n})<InnerProps>`\n --current-spacing: 0;\n --current-indent: 0;\n --current-gap: 0;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n ${box};\n ${background};\n ${border};\n ${borderRight};\n ${borderLeft};\n ${borderTop};\n ${borderBottom};\n ${borderColor};\n ${borderRadius};\n ${borderStyle};\n ${borderWidth};\n ${boxShadow};\n ${flexbox};\n ${overflow};\n ${position};\n ${layout};\n ${zIndex};\n ${left};\n ${right};\n ${top};\n ${bottom};\n\n gap: calc(var(--current-gap) * var(--swui-metrics-space));\n\n padding: calc(var(--current-spacing) * var(--swui-metrics-spacing))\n calc(var(--current-indent) * var(--swui-metrics-indent));\n\n :hover {\n ${({ hoverBackground }) =>\n hoverBackground ? `background: ${hoverBackground};` : \"\"}\n ${({ hoverBorder }) => (hoverBorder ? `border: ${hoverBorder};` : \"\")}\n }\n\n :focus {\n ${({ focusBackground }) =>\n focusBackground ? `background: ${focusBackground};` : \"\"}\n ${({ focusBorder }) => (focusBorder ? `border: ${focusBorder};` : \"\")}\n }\n\n :focus-within {\n ${({ focusWithinBackground }) =>\n focusWithinBackground ? `background: ${focusWithinBackground};` : \"\"}\n ${({ focusWithinBorder }) =>\n focusWithinBorder ? `border: ${focusWithinBorder};` : \"\"}\n }\n`;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\n\nexport const Column = forwardRef<HTMLDivElement, BoxProps>(\n function Column(props, ref) {\n return <Box ref={ref} {...props} />;\n },\n);\n","import { RefObject, useCallback, useLayoutEffect, useState } from \"react\";\n\nexport interface ElementDimensions {\n width: number;\n height: number;\n top: number;\n left: number;\n x: number;\n y: number;\n right: number;\n bottom: number;\n}\n\nexport const getDimensionObject = (node: HTMLElement): ElementDimensions => {\n const { x, y, width, height, bottom, top, left, right } =\n node.getBoundingClientRect();\n\n return {\n width,\n height,\n top,\n left,\n x,\n y,\n right,\n bottom,\n };\n};\n\nconst isEqualDimensions = (\n a: ElementDimensions,\n b: ElementDimensions,\n): boolean =>\n a.x === b.x &&\n a.y === b.y &&\n a.width === b.width &&\n a.height === b.height &&\n a.bottom === b.bottom &&\n a.top === b.top &&\n a.left === b.left &&\n a.right === b.right;\n\nexport const useElementDimensions = (\n ref: RefObject<HTMLElement | null>,\n onResizeElement?: (dimensions: ElementDimensions) => void,\n) => {\n const [dimensions, setDimensions] = useState<ElementDimensions | undefined>();\n\n const updateDimensions = useCallback(() => {\n window.requestAnimationFrame(() => {\n if (ref.current) {\n const newDimensions = getDimensionObject(ref.current);\n if (!dimensions || !isEqualDimensions(dimensions, newDimensions)) {\n if (onResizeElement) {\n onResizeElement(newDimensions);\n }\n }\n setDimensions(newDimensions);\n }\n });\n }, [ref, dimensions, setDimensions, onResizeElement]);\n\n useLayoutEffect(() => {\n updateDimensions();\n }, [updateDimensions]);\n\n return {\n dimensions,\n };\n};\n","import * as React from \"react\";\nimport { forwardRef, RefObject, useRef } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\nimport {\n ElementDimensions,\n useElementDimensions,\n} from \"../../../hooks/UseElementDimensions\";\n\nexport interface ResizeAwareBoxProps extends Omit<BoxProps, \"onResize\"> {\n onResize?: (dimensions: ElementDimensions) => void;\n}\n\nexport const ResizeAwareBox = forwardRef<HTMLDivElement, ResizeAwareBoxProps>(\n function ResizeAwareBox({ onResize, ...boxProps }, ref) {\n const localRef = useRef<HTMLDivElement>(null);\n const currentRef = (ref as RefObject<HTMLDivElement>) ?? localRef;\n useElementDimensions(currentRef, onResize);\n\n return <Box {...boxProps} ref={ref} />;\n },\n);\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\n\nexport const Row = forwardRef<HTMLDivElement, BoxProps>(\n function Row(props, ref) {\n return <Box row ref={ref} {...props} />;\n },\n);\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\nimport { ResponsiveValue, TLengthStyledSystem } from \"styled-system\";\n\nexport interface IndentProps extends BoxProps {\n num?: ResponsiveValue<boolean | TLengthStyledSystem>;\n}\n\nexport const Indent = forwardRef<HTMLDivElement, IndentProps>(function Indent(\n { num = 1, ...props },\n ref,\n) {\n return <Box indent={num} ref={ref} {...props} />;\n});\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\nimport { ResponsiveValue, TLengthStyledSystem } from \"styled-system\";\n\nexport interface SpacingProps extends BoxProps {\n num?: ResponsiveValue<boolean | TLengthStyledSystem>;\n}\n\nexport const Spacing = forwardRef<HTMLDivElement, SpacingProps>(\n function Spacing({ num = 1, ...props }, ref) {\n return <Box spacing={num} ref={ref} {...props} />;\n },\n);\n","import styled from \"@emotion/styled\";\nimport * as React from \"react\";\n\nexport interface SpaceProps {\n half?: boolean;\n horizontal?: boolean;\n num?: number;\n vertical?: boolean;\n}\n\nconst InnerSpace = styled.div`\n --current-size: 1;\n flex: none;\n width: calc(var(--current-size) * var(--swui-metrics-space));\n height: calc(var(--current-size) * var(--swui-metrics-space));\n`;\n\nexport const Space: React.FC<SpaceProps> = ({\n half = false,\n horizontal = false,\n num = 1,\n vertical = false,\n}) => {\n const size = num * (half ? 0.5 : 1);\n\n return (\n <InnerSpace\n style={{\n [\"--current-size\" as string]: size,\n height: horizontal ? 1 : undefined,\n width: vertical ? 1 : undefined,\n }}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\n\ninterface Props {\n nest?: boolean;\n render: (children: ReactNode) => ReactNode;\n children?: ReactNode;\n}\n\nexport const Nest: React.FC<Props> = ({ children, nest, render }) => {\n if (nest) {\n return <>{render(children)}</>;\n }\n return <>{children}</>;\n};\n","import React, {\n createContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport interface AccessibleFontSizeContextValue {\n isFontLarge: boolean;\n fontSizeRatio: number;\n}\n\nexport const AccessibleFontSizeContext =\n createContext<AccessibleFontSizeContextValue>({\n isFontLarge: false,\n fontSizeRatio: 1,\n });\n\nconst baseHeight = 12;\n\nexport const AccessibleFontSizeProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const ref = useRef<HTMLDivElement>(null);\n const [isFontLarge, setIsFontLarge] = useState(false);\n const [fontSizeRatio, setFontSizeRatio] = useState(1);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const height = entry.contentRect.height;\n setIsFontLarge(height > baseHeight);\n setFontSizeRatio(height / baseHeight);\n }\n });\n\n observer.observe(ref.current);\n\n return () => observer.disconnect();\n }, []);\n\n const value = useMemo(\n () => ({ isFontLarge, fontSizeRatio }),\n [fontSizeRatio, isFontLarge],\n );\n\n return (\n <AccessibleFontSizeContext.Provider value={value}>\n <div\n ref={ref}\n aria-hidden\n style={{\n fontSize: \"1rem\",\n position: \"absolute\",\n visibility: \"hidden\",\n height: \"auto\",\n width: \"auto\",\n whiteSpace: \"nowrap\",\n }}\n >\n M\n </div>\n {children}\n </AccessibleFontSizeContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport {\n AccessibleFontSizeContext,\n AccessibleFontSizeContextValue,\n} from \"./AccessibleFontSizeProvider\";\n\nexport const useAccessibleFontSizeContext =\n (): AccessibleFontSizeContextValue => {\n const context = useContext(AccessibleFontSizeContext);\n\n if (!context) {\n return {\n isFontLarge: false,\n fontSizeRatio: 1,\n };\n }\n\n return context;\n };\n","import { pickBy } from \"lodash-es\";\nimport React from \"react\";\n\nexport const getDataProps = (\n props: Record<string, unknown> | object,\n): Record<string, unknown> =>\n pickBy(props, isDataPropMapper) as Record<string, unknown>;\n\nexport const getAriaProps = (\n props: Record<string, unknown>,\n): React.AriaAttributes =>\n pickBy(props, isAriaPropMapper) as React.AriaAttributes;\n\nconst isDataPropMapper = (_: unknown, key: string): boolean =>\n key.startsWith(\"data-\") || key.startsWith(\"aria-\");\n\nconst isAriaPropMapper = (_: unknown, key: string): boolean =>\n key.startsWith(\"aria-\");\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./ScreenReaderOnlyText.module.css\";\nimport { getDataProps } from \"../../utils/PropsForwarder\";\n\nexport interface ScreenReaderOnlyTextProps {\n children?: ReactNode;\n}\n\nexport const ScreenReaderOnlyText: React.FC<ScreenReaderOnlyTextProps> = ({\n children,\n ...props\n}) => {\n return (\n <span className={styles.visuallyHidden} {...getDataProps(props)}>\n {children}\n </span>\n );\n};\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Text.module.css\";\nimport { SpanProps } from \"../../types/ElementProps\";\nimport { Property } from \"csstype\";\n\nexport interface TextProps extends SpanProps {\n variant?: TextVariant;\n size?: TextSize;\n userSelect?: Property.UserSelect;\n whiteSpace?: Property.WhiteSpace;\n wordBreak?: Property.WordBreak;\n textAlign?: Property.TextAlign;\n overflow?: Property.Overflow;\n textOverflow?: Property.TextOverflow;\n color?: string;\n}\n\nexport type TextVariant = \"standard\" | \"caption\" | \"overline\" | \"bold\";\nexport type TextSize = \"large\" | \"medium\" | \"small\" | \"smaller\";\n\nexport const Text = forwardRef<HTMLSpanElement, TextProps>(\n (\n {\n children,\n variant = \"standard\",\n size = \"medium\",\n className,\n color,\n userSelect,\n whiteSpace,\n wordBreak,\n textAlign = \"left\",\n overflow,\n textOverflow,\n style,\n ...spanProps\n },\n ref,\n ) => {\n return (\n <span\n className={cx(styles.text, styles[variant], styles[size], className)}\n ref={ref}\n style={{\n color,\n userSelect,\n whiteSpace,\n wordBreak,\n textAlign,\n overflow,\n textOverflow,\n ...style,\n }}\n {...spanProps}\n >\n {children}\n </span>\n );\n },\n);\n\nexport const Txt = Text;\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const SmallText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"small\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const SmallerText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"smaller\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const StandardText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"medium\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const LargeText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"large\"} {...props} />;\n};\n","import cx from \"classnames\";\nimport { Property } from \"csstype\";\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { H1Props } from \"../../types/ElementProps\";\nimport styles from \"./Heading.module.css\";\n\nexport interface HeadingProps extends H1Props {\n variant?: HeadingVariant;\n whiteSpace?: Property.WhiteSpace;\n wordBreak?: Property.WordBreak;\n as?: HeadingVariant | \"span\";\n}\n\nexport type HeadingVariant = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n (\n {\n variant = \"h3\",\n className,\n color,\n whiteSpace,\n wordBreak,\n style,\n children,\n as,\n ...hProps\n },\n ref,\n ) => {\n const Element = as ?? variant;\n return (\n <Element\n className={cx(styles.heading, styles[variant], className)}\n style={{ color, whiteSpace, wordBreak, ...style }}\n ref={ref}\n {...hProps}\n >\n {children}\n </Element>\n );\n },\n);\n","import * as React from \"react\";\nimport { Heading, HeadingProps } from \"../heading/Heading\";\n\n/**\n * @deprecated Please use `Heading` instead.\n */\nexport const HeaderText: React.FC<Omit<HeadingProps, \"variant\">> = (props) => {\n return <Heading variant={\"h2\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { KeyboardEventHandler, MouseEventHandler, useCallback } from \"react\";\nimport { Box, BoxProps } from \"../layout/box/Box\";\n\nexport interface BlockKeyboardEventsProps extends BoxProps {\n /**\n * Key or keys that will be blocked from bubbling to parents.\n * If not set, all keys are blocked from bubbling.\n */\n blockedKeys?: string | Array<string>;\n\n /**\n * Whether to also block mouse events from bubbling.\n * Default: false\n */\n blockMouse?: boolean;\n}\n\nexport const BlockKeyboardEvents: React.FC<BlockKeyboardEventsProps> = ({\n blockedKeys,\n blockMouse = false,\n ...props\n}) => {\n const keyboardEventHandler = useCallback<KeyboardEventHandler>(\n (ev) => {\n const blockAll = blockedKeys == null;\n const shouldBlock =\n blockAll ||\n (Array.isArray(blockedKeys)\n ? blockedKeys.includes(ev.key)\n : blockedKeys === ev.key);\n\n if (shouldBlock) {\n ev.stopPropagation();\n }\n },\n [blockedKeys],\n );\n\n const mouseEventHandler = useCallback<MouseEventHandler>(\n (ev) => {\n if (!blockMouse) {\n return;\n }\n ev.stopPropagation();\n },\n [blockMouse],\n );\n\n return (\n <Box\n {...props}\n onKeyDown={keyboardEventHandler}\n onKeyUp={keyboardEventHandler}\n onMouseDown={mouseEventHandler}\n onMouseUp={mouseEventHandler}\n />\n );\n};\n","import { useCallback } from \"react\";\n\ntype ArrayItemEqualsComparator<T> = (a: T, b: T) => boolean;\n\nconst defaultComparator = <T>(a: T, b: T) => a === b;\n\nexport const useArraySet = <T>(\n list: Array<T>,\n setList: (list: Array<T>) => void,\n comparator: ArrayItemEqualsComparator<T> = defaultComparator,\n) => {\n const add = useCallback(\n (item: T) => {\n if (!list.some((l) => comparator(l, item))) {\n setList([...list, item]);\n }\n },\n [list, setList, comparator],\n );\n\n const addMultiple = useCallback(\n (items: Array<T>) => {\n setList(\n items.reduce((list, item) => {\n if (!list.some((l) => comparator(l, item))) {\n return [...list, item];\n }\n return list;\n }, list),\n );\n },\n [list, setList, comparator],\n );\n\n const remove = useCallback(\n (item: T) => {\n const index = list.findIndex((l) => comparator(l, item));\n if (index >= 0) {\n setList(list.filter((_, i) => i !== index));\n }\n },\n [list, setList, comparator],\n );\n\n const removeMultiple = useCallback(\n (items: Array<T>) => {\n setList(list.filter((item) => !items.some((l) => comparator(l, item))));\n },\n [list, setList, comparator],\n );\n\n const toggle = useCallback(\n (item: T) => {\n const found = list.some((l) => comparator(l, item));\n if (found) {\n remove(item);\n } else {\n add(item);\n }\n },\n [list, add, remove, comparator],\n );\n\n return {\n add,\n addMultiple,\n remove,\n removeMultiple,\n toggle,\n };\n};\n","import { useCallback, useState } from \"react\";\n\ntype Value = boolean;\ntype SetTrue = () => void;\ntype SetFalse = () => void;\ntype ToggleValue = () => void;\ntype BooleanHook = [Value, SetTrue, SetFalse, ToggleValue];\n\nexport const useBoolean = (initialValue: Value): BooleanHook => {\n const [value, setValue] = useState(initialValue);\n\n const setTrue = useCallback(() => {\n setValue(true);\n }, [setValue]);\n\n const setFalse = useCallback(() => {\n setValue(false);\n }, [setValue]);\n\n const toggle = useCallback(() => {\n setValue((v) => !v);\n }, [setValue]);\n\n return [value, setTrue, setFalse, toggle];\n};\n","import { useEffect, useState } from \"react\";\n\nexport const useDebounce = <T>(value: T, delay: number): T => {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]); // Only re-call effect if value or delay changes\n\n return debouncedValue;\n};\n","import { useEffect, useState } from \"react\";\n\nexport const useDelayedFalse = (value: boolean, delay: number) => {\n const [debouncedValue, setDebouncedValue] = useState<boolean>(value);\n\n useEffect(() => {\n if (value) {\n setDebouncedValue(true);\n }\n\n const handler = setTimeout(() => {\n if (!value) {\n setDebouncedValue(value);\n }\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n","import { useEffect, useState } from \"react\";\n\nlet id = 0;\nconst genId = (componentName?: string) =>\n `webui-${componentName ? componentName + \"-\" : \"\"}${++id}`;\n\n/** @deprecated use useId-hook from React 18 */\nexport const useDomId = (componentName?: string): string => {\n const [id, setId] = useState<string | null>(() => genId(componentName));\n useEffect(() => setId(genId(componentName)), [componentName]);\n return id!;\n};\n","import { RefObject, useEffect, useRef } from \"react\";\n\ntype EventHandler<TEventName extends keyof HTMLElementEventMap> = (\n event: HTMLElementEventMap[TEventName],\n) => void;\n\nexport const useEventListener = <TEventName extends keyof HTMLElementEventMap>(\n ref: RefObject<HTMLElement | null>,\n eventName: TEventName,\n handler: EventHandler<TEventName>,\n) => {\n // Create a ref that stores handler\n const savedHandler = useRef<EventHandler<TEventName>>(null);\n\n // Update ref.current value if handler changes.\n // This allows our effect below to always get latest handler ...\n // ... without us needing to pass it in effect deps array ...\n // ... and potentially cause effect to re-run every render.\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n // Make sure element supports addEventListener\n const isSupported = ref.current && ref.current.addEventListener;\n if (!isSupported) return;\n\n // Create event listener that calls handler function stored in ref\n const eventListener: EventHandler<TEventName> = (event) => {\n if (savedHandler.current) {\n return savedHandler.current(event);\n }\n };\n\n // Add event listener\n if (!ref.current) {\n return;\n }\n\n const element = ref.current;\n element.addEventListener(eventName, eventListener);\n\n // Remove event listener on cleanup\n return () => {\n if (element) {\n element.removeEventListener(eventName, eventListener);\n }\n };\n }, [eventName, ref]); // Re-run if eventName or element changes\n};\n","import { RefObject, useCallback, useEffect } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useElementFocus = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [isInFocus, setIsInFocus, setIsNotInFocus] = useBoolean(false);\n\n useEffect(() => {\n if (document.activeElement === ref.current) {\n setIsInFocus();\n } else {\n setIsNotInFocus();\n }\n }, [ref, setIsNotInFocus, setIsInFocus]);\n\n useEventListener(ref, \"focus\", setIsInFocus);\n useEventListener(ref, \"blur\", setIsNotInFocus);\n\n const focus = useCallback(() => {\n if (ref.current) {\n ref.current.focus();\n }\n }, [ref]);\n\n const blur = useCallback(() => {\n if (ref.current) {\n ref.current.blur();\n }\n }, [ref]);\n\n return { isInFocus, focus, blur };\n};\n","import { useCallback, useLayoutEffect, useRef } from \"react\";\n\ntype Fn<ARGS extends unknown[], R> = (...args: ARGS) => R;\n\nexport const useEventCallback = <A extends unknown[], R>(\n fn: Fn<A, R>,\n): Fn<A, R> => {\n const ref = useRef<Fn<A, R>>(fn);\n useLayoutEffect(() => {\n ref.current = fn;\n });\n return useCallback((...args: A): R => {\n const { current } = ref;\n return current(...args);\n }, []);\n};\n","import React, { MutableRefObject } from \"react\";\n\nexport const useLatest = <T>(value: T): MutableRefObject<T> => {\n const ref = React.useRef(value);\n ref.current = value;\n return ref;\n};\n","import { RefObject } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useMouseIsOver = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [mouseIsOver, setMouseIsOver, setMouseIsNotOver] = useBoolean(false);\n\n useEventListener(ref, \"mouseover\", setMouseIsOver);\n useEventListener(ref, \"mouseout\", setMouseIsNotOver);\n\n return mouseIsOver;\n};\n","import { RefObject } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useMouseIsEntered = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [mouseIsEntered, setMouseIsEntered, setMouseIsNotEntered] =\n useBoolean(false);\n\n useEventListener(ref, \"mouseenter\", setMouseIsEntered);\n useEventListener(ref, \"mouseleave\", setMouseIsNotEntered);\n\n return mouseIsEntered;\n};\n","import * as React from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport const useMultiOnClickOutside = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refs: Array<React.RefObject<any>>,\n handler: (event: TouchEvent | MouseEvent) => void,\n) => {\n const eventHandler = useRef<(event: TouchEvent | MouseEvent) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const listener = (event: TouchEvent | MouseEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n\n const allNotContains = refs\n .filter((ref) => ref.current)\n .every((ref) => {\n return ref.current && !ref.current.contains(event.target);\n });\n\n if (!allNotContains) {\n return;\n }\n\n eventHandler.current(event);\n };\n\n document.addEventListener(\"mousedown\", listener);\n document.addEventListener(\"touchstart\", listener);\n\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n document.removeEventListener(\"touchstart\", listener);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...refs]);\n};\n","import * as React from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport const useOnClickOutside = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: React.RefObject<any>,\n handler: (event: TouchEvent | MouseEvent) => void,\n options?: AddEventListenerOptions,\n) => {\n const eventHandler = useRef<(event: TouchEvent | MouseEvent) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const listener = (event: TouchEvent | MouseEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n\n eventHandler.current(event);\n };\n\n document.addEventListener(\"mousedown\", listener, options);\n document.addEventListener(\"touchstart\", listener, options);\n\n return () => {\n document.removeEventListener(\"mousedown\", listener, options);\n document.removeEventListener(\"touchstart\", listener, options);\n };\n }, [ref, options]);\n};\n","import { debounce } from \"lodash-es\";\nimport { useEffect, useRef } from \"react\";\n\nconst events = [\"mousemove\", \"mousedown\", \"keydown\", \"touchstart\", \"scroll\"];\n\nexport const useOnNoMouseMovement = (callback: () => void, delay: number) => {\n const eventHandler = useRef<(event: Event) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const onIdleChange = debounce(eventHandler.current, delay);\n events.forEach((event) => window.addEventListener(event, onIdleChange));\n\n return () => {\n events.forEach((event) =>\n window.removeEventListener(event, onIdleChange),\n );\n };\n }, [delay]);\n};\n","import { RefObject, useEffect, useMemo, useState } from \"react\";\n\nexport const useOnScreen = (\n ref: RefObject<Element | null>,\n options?: IntersectionObserverInit,\n) => {\n const [isVisible, setIsVisible] = useState(false);\n\n const { rootMargin, root, threshold } = options || {};\n\n const observer = useMemo(() => {\n return new IntersectionObserver(\n ([entry]) => setIsVisible(entry.isIntersecting),\n {\n rootMargin,\n root,\n threshold,\n },\n );\n }, [setIsVisible, rootMargin, root, threshold]);\n\n useEffect(() => {\n if (ref.current) {\n observer.observe(ref.current);\n }\n return () => {\n observer.disconnect();\n };\n }, [observer, ref]);\n\n return isVisible;\n};\n","import {\n MutableRefObject,\n RefCallback,\n RefObject,\n useEffect,\n useRef,\n} from \"react\";\n\nexport const useForwardedRef = <T>(\n ref: RefCallback<T> | MutableRefObject<T> | null,\n): RefObject<NonNullable<T>> => {\n const innerRef = useRef<T>(null) as MutableRefObject<NonNullable<T>>;\n\n useEffect(() => {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(innerRef.current);\n } else {\n ref.current = innerRef.current;\n }\n });\n\n return innerRef;\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport const useTimeoutState = <S>(\n initialValue: S,\n defaultTimeout: number,\n clearTimeoutOnSetValue = true,\n): [S, (v: S) => void] => {\n const [value, setValue] = useState<S>(initialValue);\n const timeoutRef = useRef<NodeJS.Timeout>(null);\n\n const wrappedSetter = useCallback(\n (newValue: S, timeout = defaultTimeout) => {\n setValue(newValue);\n if (clearTimeoutOnSetValue) {\n clearTimeout(timeoutRef.current!);\n }\n timeoutRef.current = setTimeout(() => setValue(initialValue), timeout);\n },\n [defaultTimeout, clearTimeoutOnSetValue, initialValue],\n );\n\n useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current!);\n };\n }, []);\n\n return [value, wrappedSetter];\n};\n","import { useMemo } from \"react\";\n\nexport const useToday = () => {\n return useMemo(() => new Date(), []);\n};\n","export const byStringField =\n <T>(fieldResolver: (item: T) => string) =>\n (a: T, b: T): number =>\n fieldResolver(a).localeCompare(fieldResolver(b));\n\nexport const byNumberField =\n <T>(fieldResolver: (item: T) => number) =>\n (a: T, b: T): number =>\n fieldResolver(a) - fieldResolver(b);\n","export const exhaustSwitchCaseElseThrow = (arg: never) => {\n throw new Error(`Switch unhandled case: ${arg}`);\n};\n\nexport const exhaustSwitchCase = <T>(_arg: never, fallback: T) => {\n return fallback;\n};\n","export const truthyKeysAsList = (r: Record<string, boolean>): Array<string> =>\n Object.keys(r).filter((key) => r[key]);\n","export const parseFloatElseUndefined = (s: string): number | undefined => {\n try {\n const f = parseFloat(s);\n if (isNaN(f)) {\n return undefined;\n }\n if (f == null) {\n return undefined;\n }\n return f;\n } catch {\n /* empty */\n }\n return undefined;\n};\n\nexport const parseIntElseUndefined = (s: string): number | undefined => {\n try {\n const f = parseInt(s, 10);\n if (isNaN(f)) {\n return undefined;\n }\n if (f == null) {\n return undefined;\n }\n return f;\n } catch {\n /* empty */\n }\n return undefined;\n};\n","export function invariant<T>(\n val: T | null | undefined,\n message: string,\n): asserts val is T {\n if (val == null) {\n throw new Error(\"Invariant error: \" + message);\n }\n}\n","import { Fragment, isValidElement, ReactElement, ReactNode } from \"react\";\n\nexport const isEmptyFragment = (node: ReactNode): boolean => {\n if (!isValidElement(node)) return false;\n if (node.type !== Fragment) return false;\n\n // Now TypeScript knows `node` is a ReactElement with known props\n const element = node as ReactElement<{ children?: ReactNode }>;\n const children = element.props.children;\n\n if (Array.isArray(children)) {\n return children.every(isNullishChild);\n }\n\n return isNullishChild(children);\n};\n\nconst isNullishChild = (child: ReactNode): boolean =>\n child == null || child === false;\n","import { PluralForms } from \"./PluralForms\";\n\nexport type PluralRuleSelect = (n: number) => Intl.LDMLPluralRule;\n\nexport type FormatPlural = (\n n: number,\n p: PluralForms,\n) => string | null | undefined;\n\nexport const selectPluralRule = (localeCode: string): PluralRuleSelect => {\n try {\n const pluralRules = new Intl.PluralRules(localeCode);\n return (num: number) => pluralRules.select(num);\n } catch {\n return (num: number) => {\n switch (num) {\n case 0:\n return \"zero\";\n case 1:\n return \"one\";\n case 2:\n return \"two\";\n default:\n return \"other\";\n }\n };\n }\n};\n\nexport const pluralFormatter = (select: PluralRuleSelect): FormatPlural => {\n return (num: number, forms: PluralForms) =>\n forms[select(num)] ?? forms.other ?? \"\";\n};\n"],"names":["SeparatorLine","forwardRef","color","cssColor","size","width","vertical","ref","jsx","styles","ClickableElement","styled","background","pointer","props","hoverBackground","disableOpacityOnClick","disableFocusHighlight","focusBackground","height","borderRadius","Clickable","onClick","onDblClick","tooltip","disablePointer","opacityOnHover","disabled","children","type","restProps","booleanOrNumberToNumber","num","numberToMetricCalc","booleanOrNumberToMetricCalc","validPropsRecord","validProps","r","isPropValid","memoize","prop","shadows","excludedProps","isExcludedWebUiProp","propName","box","system","row","value","Box","border","borderRight","borderLeft","borderTop","borderBottom","borderColor","borderStyle","borderWidth","boxShadow","flexbox","overflow","position","layout","zIndex","left","right","top","bottom","hoverBorder","focusBorder","focusWithinBackground","focusWithinBorder","Column","getDimensionObject","node","x","y","isEqualDimensions","a","b","useElementDimensions","onResizeElement","dimensions","setDimensions","useState","updateDimensions","useCallback","newDimensions","useLayoutEffect","ResizeAwareBox","onResize","boxProps","localRef","useRef","Row","Indent","Spacing","InnerSpace","Space","half","horizontal","Nest","nest","render","Fragment","AccessibleFontSizeContext","createContext","baseHeight","AccessibleFontSizeProvider","isFontLarge","setIsFontLarge","fontSizeRatio","setFontSizeRatio","useEffect","observer","entries","entry","useMemo","jsxs","useAccessibleFontSizeContext","context","useContext","getDataProps","pickBy","isDataPropMapper","getAriaProps","isAriaPropMapper","_","key","ScreenReaderOnlyText","Text","variant","className","userSelect","whiteSpace","wordBreak","textAlign","textOverflow","style","spanProps","cx","Txt","SmallText","SmallerText","StandardText","LargeText","Heading","as","hProps","HeaderText","BlockKeyboardEvents","blockedKeys","blockMouse","keyboardEventHandler","ev","mouseEventHandler","defaultComparator","useArraySet","list","setList","comparator","add","item","addMultiple","items","l","remove","index","i","removeMultiple","toggle","useBoolean","initialValue","setValue","setTrue","setFalse","v","useDebounce","delay","debouncedValue","setDebouncedValue","handler","useDelayedFalse","id","genId","componentName","useDomId","setId","useEventListener","eventName","savedHandler","eventListener","event","element","useElementFocus","isInFocus","setIsInFocus","setIsNotInFocus","focus","blur","useEventCallback","fn","args","current","useLatest","React","useMouseIsOver","mouseIsOver","setMouseIsOver","setMouseIsNotOver","useMouseIsEntered","mouseIsEntered","setMouseIsEntered","setMouseIsNotEntered","useMultiOnClickOutside","refs","eventHandler","listener","useOnClickOutside","options","events","useOnNoMouseMovement","callback","onIdleChange","debounce","useOnScreen","isVisible","setIsVisible","rootMargin","root","threshold","useForwardedRef","innerRef","useTimeoutState","defaultTimeout","clearTimeoutOnSetValue","timeoutRef","wrappedSetter","newValue","timeout","useToday","byStringField","fieldResolver","byNumberField","exhaustSwitchCaseElseThrow","arg","exhaustSwitchCase","_arg","fallback","truthyKeysAsList","parseFloatElseUndefined","s","f","parseIntElseUndefined","invariant","val","message","isEmptyFragment","isValidElement","isNullishChild","child","selectPluralRule","localeCode","pluralRules","pluralFormatter","select","forms"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22,7 +22,7 @@
22
22
  ${({width:e})=>e?`width: ${e};`:""}
23
23
  ${({height:e})=>e?`height: ${e};`:""}
24
24
  ${({borderRadius:e})=>e?`border-radius: ${e};`:""}
25
- `,B=n.forwardRef(({disableFocusHighlight:e,onClick:t,onDblClick:r,tooltip:u,disableOpacityOnClick:s,disablePointer:o,opacityOnHover:i,disabled:l,children:a,background:f="transparent",hoverBackground:p,focusBackground:m,type:w="button",...k},P)=>{const D=!!(t||r);return c.jsx(q,{opacityOnHover:i,title:u,disabled:l,disableOpacityOnClick:s,onClick:t,onDoubleClick:r,disableFocusHighlight:e,pointer:D&&!o,ref:P,background:f,hoverBackground:p,focusBackground:m,type:w,...k,children:a})}),y=e=>e==null?0:typeof e=="boolean"?e?1:0:e,V=e=>{if(e!==0)return`calc(${e} * var(--swui-metrics-space))`},R=e=>V(y(e)),W={children:!0,dangerouslySetInnerHTML:!0,key:!0,ref:!0,autoFocus:!0,defaultValue:!0,defaultChecked:!0,innerHTML:!0,suppressContentEditableWarning:!0,suppressHydrationWarning:!0,valueLink:!0,abbr:!0,accept:!0,acceptCharset:!0,accessKey:!0,action:!0,allow:!0,allowUserMedia:!0,allowPaymentRequest:!0,allowFullScreen:!0,allowTransparency:!0,alt:!0,async:!0,autoComplete:!0,autoPlay:!0,capture:!0,cellPadding:!0,cellSpacing:!0,challenge:!0,charSet:!0,checked:!0,cite:!0,classID:!0,className:!0,cols:!0,colSpan:!0,content:!0,contentEditable:!0,contextMenu:!0,controls:!0,controlsList:!0,coords:!0,crossOrigin:!0,data:!0,dateTime:!0,decoding:!0,default:!0,defer:!0,dir:!0,disabled:!0,disablePictureInPicture:!0,disableRemotePlayback:!0,download:!0,draggable:!0,encType:!0,enterKeyHint:!0,form:!0,formAction:!0,formEncType:!0,formMethod:!0,formNoValidate:!0,formTarget:!0,frameBorder:!0,headers:!0,height:!0,hidden:!0,high:!0,href:!0,hrefLang:!0,htmlFor:!0,httpEquiv:!0,id:!0,inputMode:!0,integrity:!0,is:!0,keyParams:!0,keyType:!0,kind:!0,label:!0,lang:!0,list:!0,loading:!0,loop:!0,low:!0,marginHeight:!0,marginWidth:!0,max:!0,maxLength:!0,media:!0,mediaGroup:!0,method:!0,min:!0,minLength:!0,multiple:!0,muted:!0,name:!0,nonce:!0,noValidate:!0,open:!0,optimum:!0,pattern:!0,placeholder:!0,playsInline:!0,poster:!0,preload:!0,profile:!0,radioGroup:!0,readOnly:!0,referrerPolicy:!0,rel:!0,required:!0,reversed:!0,role:!0,rows:!0,rowSpan:!0,sandbox:!0,scope:!0,scoped:!0,scrolling:!0,seamless:!0,selected:!0,shape:!0,size:!0,sizes:!0,slot:!0,span:!0,spellCheck:!0,src:!0,srcDoc:!0,srcLang:!0,srcSet:!0,start:!0,step:!0,style:!0,summary:!0,tabIndex:!0,target:!0,title:!0,translate:!0,type:!0,useMap:!0,value:!0,width:!0,wmode:!0,wrap:!0,about:!0,datatype:!0,inlist:!0,prefix:!0,property:!0,resource:!0,typeof:!0,vocab:!0,autoCapitalize:!0,autoCorrect:!0,autoSave:!0,color:!0,incremental:!0,fallback:!0,inert:!0,itemProp:!0,itemScope:!0,itemType:!0,itemID:!0,itemRef:!0,on:!0,option:!0,results:!0,security:!0,unselectable:!0,accentHeight:!0,accumulate:!0,additive:!0,alignmentBaseline:!0,allowReorder:!0,alphabetic:!0,amplitude:!0,arabicForm:!0,ascent:!0,attributeName:!0,attributeType:!0,autoReverse:!0,azimuth:!0,baseFrequency:!0,baselineShift:!0,baseProfile:!0,bbox:!0,begin:!0,bias:!0,by:!0,calcMode:!0,capHeight:!0,clip:!0,clipPathUnits:!0,clipPath:!0,clipRule:!0,colorInterpolation:!0,colorInterpolationFilters:!0,colorProfile:!0,colorRendering:!0,contentScriptType:!0,contentStyleType:!0,cursor:!0,cx:!0,cy:!0,d:!0,decelerate:!0,descent:!0,diffuseConstant:!0,direction:!0,display:!0,divisor:!0,dominantBaseline:!0,dur:!0,dx:!0,dy:!0,edgeMode:!0,elevation:!0,enableBackground:!0,end:!0,exponent:!0,externalResourcesRequired:!0,fill:!0,fillOpacity:!0,fillRule:!0,filter:!0,filterRes:!0,filterUnits:!0,floodColor:!0,floodOpacity:!0,focusable:!0,fontFamily:!0,fontSize:!0,fontSizeAdjust:!0,fontStretch:!0,fontStyle:!0,fontVariant:!0,fontWeight:!0,format:!0,from:!0,fr:!0,fx:!0,fy:!0,g1:!0,g2:!0,glyphName:!0,glyphOrientationHorizontal:!0,glyphOrientationVertical:!0,glyphRef:!0,gradientTransform:!0,gradientUnits:!0,hanging:!0,horizAdvX:!0,horizOriginX:!0,ideographic:!0,imageRendering:!0,in:!0,in2:!0,intercept:!0,k:!0,k1:!0,k2:!0,k3:!0,k4:!0,kernelMatrix:!0,kernelUnitLength:!0,kerning:!0,keyPoints:!0,keySplines:!0,keyTimes:!0,lengthAdjust:!0,letterSpacing:!0,lightingColor:!0,limitingConeAngle:!0,local:!0,markerEnd:!0,markerMid:!0,markerStart:!0,markerHeight:!0,markerUnits:!0,markerWidth:!0,mask:!0,maskContentUnits:!0,maskUnits:!0,mathematical:!0,mode:!0,numOctaves:!0,offset:!0,opacity:!0,operator:!0,order:!0,orient:!0,orientation:!0,origin:!0,overflow:!0,overlinePosition:!0,overlineThickness:!0,panose1:!0,paintOrder:!0,pathLength:!0,patternContentUnits:!0,patternTransform:!0,patternUnits:!0,pointerEvents:!0,points:!0,pointsAtX:!0,pointsAtY:!0,pointsAtZ:!0,preserveAlpha:!0,preserveAspectRatio:!0,primitiveUnits:!0,r:!0,radius:!0,refX:!0,refY:!0,renderingIntent:!0,repeatCount:!0,repeatDur:!0,requiredExtensions:!0,requiredFeatures:!0,restart:!0,result:!0,rotate:!0,rx:!0,ry:!0,scale:!0,seed:!0,shapeRendering:!0,slope:!0,spacing:!0,specularConstant:!0,specularExponent:!0,speed:!0,spreadMethod:!0,startOffset:!0,stdDeviation:!0,stemh:!0,stemv:!0,stitchTiles:!0,stopColor:!0,stopOpacity:!0,strikethroughPosition:!0,strikethroughThickness:!0,string:!0,stroke:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeLinecap:!0,strokeLinejoin:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0,surfaceScale:!0,systemLanguage:!0,tableValues:!0,targetX:!0,targetY:!0,textAnchor:!0,textDecoration:!0,textRendering:!0,textLength:!0,to:!0,transform:!0,u1:!0,u2:!0,underlinePosition:!0,underlineThickness:!0,unicode:!0,unicodeBidi:!0,unicodeRange:!0,unitsPerEm:!0,vAlphabetic:!0,vHanging:!0,vIdeographic:!0,vMathematical:!0,values:!0,vectorEffect:!0,version:!0,vertAdvY:!0,vertOriginX:!0,vertOriginY:!0,viewBox:!0,viewTarget:!0,visibility:!0,widths:!0,wordSpacing:!0,writingMode:!0,x:!0,xHeight:!0,x1:!0,x2:!0,xChannelSelector:!0,xlinkActuate:!0,xlinkArcrole:!0,xlinkHref:!0,xlinkRole:!0,xlinkShow:!0,xlinkTitle:!0,xlinkType:!0,xmlBase:!0,xmlns:!0,xmlnsXlink:!0,xmlLang:!0,xmlSpace:!0,y:!0,y1:!0,y2:!0,yChannelSelector:!0,z:!0,zoomAndPan:!0,for:!0,class:!0,autofocus:!0},X=`^((${Object.keys(W).join("|")})|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$`,G=new RegExp(X),Y=v.memoize(e=>G.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91),K={box:"var(--swui-shadow-box)",popover:"var(--swui-shadow-popover)",modal:"var(--swui-shadow-modal)",bottom:"var(--swui-shadow-bottom)"},Z=["spacing","indent","gap","width","height","overflow","display"],J=e=>Z.includes(e),Q=d.system({row:{property:"flexDirection",transform:e=>e?"row":"column"},indent:{property:"--current-indent",transform:y},spacing:{property:"--current-spacing",transform:y},gap:{property:"--current-gap",transform:y},columnGap:{property:"columnGap",transform:R},rowGap:{property:"rowGap",transform:R},shadow:{property:"boxShadow",transform:e=>K[e]??e}}),g=E("div",{shouldForwardProp:e=>typeof e=="string"?J(e)?!1:Y(e):!1})`
25
+ `,B=n.forwardRef(({disableFocusHighlight:e,onClick:t,onDblClick:r,tooltip:u,disableOpacityOnClick:s,disablePointer:o,opacityOnHover:i,disabled:l,children:a,background:f="transparent",hoverBackground:p,focusBackground:m,type:w="button",...k},z)=>{const D=!!(t||r);return c.jsx(q,{opacityOnHover:i,title:u,disabled:l,disableOpacityOnClick:s,onClick:t,onDoubleClick:r,disableFocusHighlight:e,pointer:D&&!o,ref:z,background:f,hoverBackground:p,focusBackground:m,type:w,...k,children:a})}),y=e=>e==null?0:typeof e=="boolean"?e?1:0:e,V=e=>{if(e!==0)return`calc(${e} * var(--swui-metrics-space))`},R=e=>V(y(e)),W={children:!0,dangerouslySetInnerHTML:!0,key:!0,ref:!0,autoFocus:!0,defaultValue:!0,defaultChecked:!0,innerHTML:!0,suppressContentEditableWarning:!0,suppressHydrationWarning:!0,valueLink:!0,abbr:!0,accept:!0,acceptCharset:!0,accessKey:!0,action:!0,allow:!0,allowUserMedia:!0,allowPaymentRequest:!0,allowFullScreen:!0,allowTransparency:!0,alt:!0,async:!0,autoComplete:!0,autoPlay:!0,capture:!0,cellPadding:!0,cellSpacing:!0,challenge:!0,charSet:!0,checked:!0,cite:!0,classID:!0,className:!0,cols:!0,colSpan:!0,content:!0,contentEditable:!0,contextMenu:!0,controls:!0,controlsList:!0,coords:!0,crossOrigin:!0,data:!0,dateTime:!0,decoding:!0,default:!0,defer:!0,dir:!0,disabled:!0,disablePictureInPicture:!0,disableRemotePlayback:!0,download:!0,draggable:!0,encType:!0,enterKeyHint:!0,form:!0,formAction:!0,formEncType:!0,formMethod:!0,formNoValidate:!0,formTarget:!0,frameBorder:!0,headers:!0,height:!0,hidden:!0,high:!0,href:!0,hrefLang:!0,htmlFor:!0,httpEquiv:!0,id:!0,inputMode:!0,integrity:!0,is:!0,keyParams:!0,keyType:!0,kind:!0,label:!0,lang:!0,list:!0,loading:!0,loop:!0,low:!0,marginHeight:!0,marginWidth:!0,max:!0,maxLength:!0,media:!0,mediaGroup:!0,method:!0,min:!0,minLength:!0,multiple:!0,muted:!0,name:!0,nonce:!0,noValidate:!0,open:!0,optimum:!0,pattern:!0,placeholder:!0,playsInline:!0,poster:!0,preload:!0,profile:!0,radioGroup:!0,readOnly:!0,referrerPolicy:!0,rel:!0,required:!0,reversed:!0,role:!0,rows:!0,rowSpan:!0,sandbox:!0,scope:!0,scoped:!0,scrolling:!0,seamless:!0,selected:!0,shape:!0,size:!0,sizes:!0,slot:!0,span:!0,spellCheck:!0,src:!0,srcDoc:!0,srcLang:!0,srcSet:!0,start:!0,step:!0,style:!0,summary:!0,tabIndex:!0,target:!0,title:!0,translate:!0,type:!0,useMap:!0,value:!0,width:!0,wmode:!0,wrap:!0,about:!0,datatype:!0,inlist:!0,prefix:!0,property:!0,resource:!0,typeof:!0,vocab:!0,autoCapitalize:!0,autoCorrect:!0,autoSave:!0,color:!0,incremental:!0,fallback:!0,inert:!0,itemProp:!0,itemScope:!0,itemType:!0,itemID:!0,itemRef:!0,on:!0,option:!0,results:!0,security:!0,unselectable:!0,accentHeight:!0,accumulate:!0,additive:!0,alignmentBaseline:!0,allowReorder:!0,alphabetic:!0,amplitude:!0,arabicForm:!0,ascent:!0,attributeName:!0,attributeType:!0,autoReverse:!0,azimuth:!0,baseFrequency:!0,baselineShift:!0,baseProfile:!0,bbox:!0,begin:!0,bias:!0,by:!0,calcMode:!0,capHeight:!0,clip:!0,clipPathUnits:!0,clipPath:!0,clipRule:!0,colorInterpolation:!0,colorInterpolationFilters:!0,colorProfile:!0,colorRendering:!0,contentScriptType:!0,contentStyleType:!0,cursor:!0,cx:!0,cy:!0,d:!0,decelerate:!0,descent:!0,diffuseConstant:!0,direction:!0,display:!0,divisor:!0,dominantBaseline:!0,dur:!0,dx:!0,dy:!0,edgeMode:!0,elevation:!0,enableBackground:!0,end:!0,exponent:!0,externalResourcesRequired:!0,fill:!0,fillOpacity:!0,fillRule:!0,filter:!0,filterRes:!0,filterUnits:!0,floodColor:!0,floodOpacity:!0,focusable:!0,fontFamily:!0,fontSize:!0,fontSizeAdjust:!0,fontStretch:!0,fontStyle:!0,fontVariant:!0,fontWeight:!0,format:!0,from:!0,fr:!0,fx:!0,fy:!0,g1:!0,g2:!0,glyphName:!0,glyphOrientationHorizontal:!0,glyphOrientationVertical:!0,glyphRef:!0,gradientTransform:!0,gradientUnits:!0,hanging:!0,horizAdvX:!0,horizOriginX:!0,ideographic:!0,imageRendering:!0,in:!0,in2:!0,intercept:!0,k:!0,k1:!0,k2:!0,k3:!0,k4:!0,kernelMatrix:!0,kernelUnitLength:!0,kerning:!0,keyPoints:!0,keySplines:!0,keyTimes:!0,lengthAdjust:!0,letterSpacing:!0,lightingColor:!0,limitingConeAngle:!0,local:!0,markerEnd:!0,markerMid:!0,markerStart:!0,markerHeight:!0,markerUnits:!0,markerWidth:!0,mask:!0,maskContentUnits:!0,maskUnits:!0,mathematical:!0,mode:!0,numOctaves:!0,offset:!0,opacity:!0,operator:!0,order:!0,orient:!0,orientation:!0,origin:!0,overflow:!0,overlinePosition:!0,overlineThickness:!0,panose1:!0,paintOrder:!0,pathLength:!0,patternContentUnits:!0,patternTransform:!0,patternUnits:!0,pointerEvents:!0,points:!0,pointsAtX:!0,pointsAtY:!0,pointsAtZ:!0,preserveAlpha:!0,preserveAspectRatio:!0,primitiveUnits:!0,r:!0,radius:!0,refX:!0,refY:!0,renderingIntent:!0,repeatCount:!0,repeatDur:!0,requiredExtensions:!0,requiredFeatures:!0,restart:!0,result:!0,rotate:!0,rx:!0,ry:!0,scale:!0,seed:!0,shapeRendering:!0,slope:!0,spacing:!0,specularConstant:!0,specularExponent:!0,speed:!0,spreadMethod:!0,startOffset:!0,stdDeviation:!0,stemh:!0,stemv:!0,stitchTiles:!0,stopColor:!0,stopOpacity:!0,strikethroughPosition:!0,strikethroughThickness:!0,string:!0,stroke:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeLinecap:!0,strokeLinejoin:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0,surfaceScale:!0,systemLanguage:!0,tableValues:!0,targetX:!0,targetY:!0,textAnchor:!0,textDecoration:!0,textRendering:!0,textLength:!0,to:!0,transform:!0,u1:!0,u2:!0,underlinePosition:!0,underlineThickness:!0,unicode:!0,unicodeBidi:!0,unicodeRange:!0,unitsPerEm:!0,vAlphabetic:!0,vHanging:!0,vIdeographic:!0,vMathematical:!0,values:!0,vectorEffect:!0,version:!0,vertAdvY:!0,vertOriginX:!0,vertOriginY:!0,viewBox:!0,viewTarget:!0,visibility:!0,widths:!0,wordSpacing:!0,writingMode:!0,x:!0,xHeight:!0,x1:!0,x2:!0,xChannelSelector:!0,xlinkActuate:!0,xlinkArcrole:!0,xlinkHref:!0,xlinkRole:!0,xlinkShow:!0,xlinkTitle:!0,xlinkType:!0,xmlBase:!0,xmlns:!0,xmlnsXlink:!0,xmlLang:!0,xmlSpace:!0,y:!0,y1:!0,y2:!0,yChannelSelector:!0,z:!0,zoomAndPan:!0,for:!0,class:!0,autofocus:!0},X=`^((${Object.keys(W).join("|")})|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$`,G=new RegExp(X),Y=v.memoize(e=>G.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91),K={box:"var(--swui-shadow-box)",popover:"var(--swui-shadow-popover)",modal:"var(--swui-shadow-modal)",bottom:"var(--swui-shadow-bottom)"},Z=["spacing","indent","gap","width","height","overflow","display"],J=e=>Z.includes(e),Q=d.system({row:{property:"flexDirection",transform:e=>e?"row":"column"},indent:{property:"--current-indent",transform:y},spacing:{property:"--current-spacing",transform:y},gap:{property:"--current-gap",transform:y},columnGap:{property:"columnGap",transform:R},rowGap:{property:"rowGap",transform:R},shadow:{property:"boxShadow",transform:e=>K[e]??e}}),g=E("div",{shouldForwardProp:e=>typeof e=="string"?J(e)?!1:Y(e):!1})`
26
26
  --current-spacing: 0;
27
27
  --current-indent: 0;
28
28
  --current-gap: 0;
@@ -75,5 +75,5 @@
75
75
  flex: none;
76
76
  width: calc(var(--current-size) * var(--swui-metrics-space));
77
77
  height: calc(var(--current-size) * var(--swui-metrics-space));
78
- `,ie=({half:e=!1,horizontal:t=!1,num:r=1,vertical:u=!1})=>{const s=r*(e?.5:1);return c.jsx(oe,{style:{"--current-size":s,height:t?1:void 0,width:u?1:void 0}})},ae=({children:e,nest:t,render:r})=>t?c.jsx(c.Fragment,{children:r(e)}):c.jsx(c.Fragment,{children:e}),C=n.createContext({isFontLarge:!1,fontSizeRatio:1}),_=12,ce=({children:e})=>{const t=n.useRef(null),[r,u]=n.useState(!1),[s,o]=n.useState(1);n.useEffect(()=>{if(!t.current)return;const l=new ResizeObserver(a=>{for(const f of a){const p=f.contentRect.height;u(p>_),o(p/_)}});return l.observe(t.current),()=>l.disconnect()},[]);const i=n.useMemo(()=>({isFontLarge:r,fontSizeRatio:s}),[s,r]);return c.jsxs(C.Provider,{value:i,children:[c.jsx("div",{ref:t,"aria-hidden":!0,style:{fontSize:"1rem",position:"absolute",visibility:"hidden",height:"auto",width:"auto",whiteSpace:"nowrap"},children:"M"}),e]})},le=()=>{const e=n.useContext(C);return e||{isFontLarge:!1,fontSizeRatio:1}},de="_visuallyHidden_1gevf_1",fe={visuallyHidden:de},M=e=>v.pickBy(e,me),pe=e=>v.pickBy(e,he),me=(e,t)=>t.startsWith("data-")||t.startsWith("aria-"),he=(e,t)=>t.startsWith("aria-"),ge=({children:e,...t})=>c.jsx("span",{className:fe.visuallyHidden,...M(t),children:e}),be="_text_1iisw_1",ye="_standard_1iisw_24",ve="_bold_1iisw_27",xe="_caption_1iisw_31",we="_overline_1iisw_39",ke="_large_1iisw_48",Se="_medium_1iisw_53",Ee="_small_1iisw_58",Ce="_smaller_1iisw_63",S={text:be,standard:ye,bold:ve,caption:xe,overline:we,large:ke,medium:Se,small:Ee,smaller:Ce},b=n.forwardRef(({children:e,variant:t="standard",size:r="medium",className:u,color:s,userSelect:o,whiteSpace:i,wordBreak:l,textAlign:a="left",overflow:f,textOverflow:p,style:m,...w},k)=>c.jsx("span",{className:F(S.text,S[t],S[r],u),ref:k,style:{color:s,userSelect:o,whiteSpace:i,wordBreak:l,textAlign:a,overflow:f,textOverflow:p,...m},...w,children:e})),Re=b,_e=e=>c.jsx(b,{size:"small",...e}),Te=e=>c.jsx(b,{size:"smaller",...e}),$e=e=>c.jsx(b,{size:"medium",...e}),Ae=e=>c.jsx(b,{size:"large",...e}),Ie="_heading_1cnsg_1",Fe="_h1_1cnsg_10",Le="_h2_1cnsg_14",Oe="_h3_1cnsg_18",Me="_h4_1cnsg_22",ze="_h5_1cnsg_26",Pe="_h6_1cnsg_30",T={heading:Ie,h1:Fe,h2:Le,h3:Oe,h4:Me,h5:ze,h6:Pe},z=n.forwardRef(({variant:e="h3",className:t,color:r,whiteSpace:u,wordBreak:s,style:o,children:i,as:l,...a},f)=>{const p=l??e;return c.jsx(p,{className:F(T.heading,T[e],t),style:{color:r,whiteSpace:u,wordBreak:s,...o},ref:f,...a,children:i})}),De=e=>c.jsx(z,{variant:"h2",...e}),je=({blockedKeys:e,blockMouse:t=!1,...r})=>{const u=n.useCallback(o=>{(e==null||(Array.isArray(e)?e.includes(o.key):e===o.key))&&o.stopPropagation()},[e]),s=n.useCallback(o=>{t&&o.stopPropagation()},[t]);return c.jsx(g,{...r,onKeyDown:u,onKeyUp:u,onMouseDown:s,onMouseUp:s})},He=(e,t)=>e===t,Ne=(e,t,r=He)=>{const u=n.useCallback(a=>{e.some(f=>r(f,a))||t([...e,a])},[e,t,r]),s=n.useCallback(a=>{t(a.reduce((f,p)=>f.some(m=>r(m,p))?f:[...f,p],e))},[e,t,r]),o=n.useCallback(a=>{const f=e.findIndex(p=>r(p,a));f>=0&&t(e.filter((p,m)=>m!==f))},[e,t,r]),i=n.useCallback(a=>{t(e.filter(f=>!a.some(p=>r(p,f))))},[e,t,r]),l=n.useCallback(a=>{e.some(p=>r(p,a))?o(a):u(a)},[e,u,o,r]);return{add:u,addMultiple:s,remove:o,removeMultiple:i,toggle:l}},x=e=>{const[t,r]=n.useState(e),u=n.useCallback(()=>{r(!0)},[r]),s=n.useCallback(()=>{r(!1)},[r]),o=n.useCallback(()=>{r(i=>!i)},[r]);return[t,u,s,o]},Ue=(e,t)=>{const[r,u]=n.useState(e);return n.useEffect(()=>{const s=setTimeout(()=>{u(e)},t);return()=>{clearTimeout(s)}},[e,t]),r},qe=(e,t)=>{const[r,u]=n.useState(e);return n.useEffect(()=>{e&&u(!0);const s=setTimeout(()=>{e||u(e)},t);return()=>{clearTimeout(s)}},[e,t]),r};let Be=0;const $=e=>`webui-${e?e+"-":""}${++Be}`,Ve=e=>{const[t,r]=n.useState(()=>$(e));return n.useEffect(()=>r($(e)),[e]),t},h=(e,t,r)=>{const u=n.useRef(null);n.useEffect(()=>{u.current=r},[r]),n.useEffect(()=>{if(!(e.current&&e.current.addEventListener))return;const o=l=>{if(u.current)return u.current(l)};if(!e.current)return;const i=e.current;return i.addEventListener(t,o),()=>{i&&i.removeEventListener(t,o)}},[t,e])},We=e=>{const[t,r,u]=x(!1);n.useEffect(()=>{document.activeElement===e.current?r():u()},[e,u,r]),h(e,"focus",r),h(e,"blur",u);const s=n.useCallback(()=>{e.current&&e.current.focus()},[e]),o=n.useCallback(()=>{e.current&&e.current.blur()},[e]);return{isInFocus:t,focus:s,blur:o}},Xe=e=>{const t=n.useRef(e);return n.useLayoutEffect(()=>{t.current=e}),n.useCallback((...r)=>{const{current:u}=t;return u(...r)},[])},Ge=e=>{const t=n.useRef(e);return t.current=e,t},Ye=e=>{const[t,r,u]=x(!1);return h(e,"mouseover",r),h(e,"mouseout",u),t},Ke=e=>{const[t,r,u]=x(!1);return h(e,"mouseenter",r),h(e,"mouseleave",u),t},Ze=(e,t)=>{const r=n.useRef(()=>{});n.useEffect(()=>{r.current=t},[t]),n.useEffect(()=>{const u=s=>{e.filter(i=>i.current).every(i=>i.current&&!i.current.contains(s.target))&&r.current(s)};return document.addEventListener("mousedown",u),document.addEventListener("touchstart",u),()=>{document.removeEventListener("mousedown",u),document.removeEventListener("touchstart",u)}},[...e])},Je=(e,t,r)=>{const u=n.useRef(()=>{});n.useEffect(()=>{u.current=t},[t]),n.useEffect(()=>{const s=o=>{!e.current||e.current.contains(o.target)||u.current(o)};return document.addEventListener("mousedown",s,r),document.addEventListener("touchstart",s,r),()=>{document.removeEventListener("mousedown",s,r),document.removeEventListener("touchstart",s,r)}},[e,r])},A=["mousemove","mousedown","keydown","touchstart","scroll"],Qe=(e,t)=>{const r=n.useRef(()=>{});n.useEffect(()=>{r.current=e},[e]),n.useEffect(()=>{const u=v.debounce(r.current,t);return A.forEach(s=>window.addEventListener(s,u)),()=>{A.forEach(s=>window.removeEventListener(s,u))}},[t])},et=(e,t)=>{const[r,u]=n.useState(!1),{rootMargin:s,root:o,threshold:i}=t||{},l=n.useMemo(()=>new IntersectionObserver(([a])=>u(a.isIntersecting),{rootMargin:s,root:o,threshold:i}),[u,s,o,i]);return n.useEffect(()=>(e.current&&l.observe(e.current),()=>{l.disconnect()}),[l,e]),r},tt=e=>{const t=n.useRef(null);return n.useEffect(()=>{e&&(typeof e=="function"?e(t.current):e.current=t.current)}),t},rt=(e,t,r=!0)=>{const[u,s]=n.useState(e),o=n.useRef(null),i=n.useCallback((l,a=t)=>{s(l),r&&clearTimeout(o.current),o.current=setTimeout(()=>s(e),a)},[t,r,e]);return n.useEffect(()=>()=>{clearTimeout(o.current)},[]),[u,i]},ut=()=>n.useMemo(()=>new Date,[]),nt=e=>(t,r)=>e(t).localeCompare(e(r)),st=e=>(t,r)=>e(t)-e(r),ot=e=>{throw new Error(`Switch unhandled case: ${e}`)},it=(e,t)=>t,at=e=>Object.keys(e).filter(t=>e[t]),ct=e=>{try{const t=parseFloat(e);return isNaN(t)||t==null?void 0:t}catch{}},lt=e=>{try{const t=parseInt(e,10);return isNaN(t)||t==null?void 0:t}catch{}};function dt(e,t){if(e==null)throw new Error("Invariant error: "+t)}const ft=e=>{if(!n.isValidElement(e)||e.type!==n.Fragment)return!1;const r=e.props.children;return Array.isArray(r)?r.every(I):I(r)},I=e=>e==null||e===!1;exports.AccessibleFontSizeContext=C;exports.AccessibleFontSizeProvider=ce;exports.BlockKeyboardEvents=je;exports.Box=g;exports.Clickable=B;exports.Column=ee;exports.HeaderText=De;exports.Heading=z;exports.Indent=ne;exports.LargeText=Ae;exports.Nest=ae;exports.ResizeAwareBox=re;exports.Row=ue;exports.ScreenReaderOnlyText=ge;exports.SeparatorLine=U;exports.SmallText=_e;exports.SmallerText=Te;exports.Space=ie;exports.Spacing=se;exports.StandardText=$e;exports.Text=b;exports.Txt=Re;exports.booleanOrNumberToNumber=y;exports.byNumberField=st;exports.byStringField=nt;exports.exhaustSwitchCase=it;exports.exhaustSwitchCaseElseThrow=ot;exports.getAriaProps=pe;exports.getDataProps=M;exports.getDimensionObject=L;exports.invariant=dt;exports.isEmptyFragment=ft;exports.parseFloatElseUndefined=ct;exports.parseIntElseUndefined=lt;exports.truthyKeysAsList=at;exports.useAccessibleFontSizeContext=le;exports.useArraySet=Ne;exports.useBoolean=x;exports.useDebounce=Ue;exports.useDelayedFalse=qe;exports.useDomId=Ve;exports.useElementDimensions=O;exports.useElementFocus=We;exports.useEventCallback=Xe;exports.useEventListener=h;exports.useForwardedRef=tt;exports.useLatest=Ge;exports.useMouseIsEntered=Ke;exports.useMouseIsOver=Ye;exports.useMultiOnClickOutside=Ze;exports.useOnClickOutside=Je;exports.useOnNoMouseMovement=Qe;exports.useOnScreen=et;exports.useTimeoutState=rt;exports.useToday=ut;
78
+ `,ie=({half:e=!1,horizontal:t=!1,num:r=1,vertical:u=!1})=>{const s=r*(e?.5:1);return c.jsx(oe,{style:{"--current-size":s,height:t?1:void 0,width:u?1:void 0}})},ae=({children:e,nest:t,render:r})=>t?c.jsx(c.Fragment,{children:r(e)}):c.jsx(c.Fragment,{children:e}),C=n.createContext({isFontLarge:!1,fontSizeRatio:1}),_=12,ce=({children:e})=>{const t=n.useRef(null),[r,u]=n.useState(!1),[s,o]=n.useState(1);n.useEffect(()=>{if(!t.current)return;const l=new ResizeObserver(a=>{for(const f of a){const p=f.contentRect.height;u(p>_),o(p/_)}});return l.observe(t.current),()=>l.disconnect()},[]);const i=n.useMemo(()=>({isFontLarge:r,fontSizeRatio:s}),[s,r]);return c.jsxs(C.Provider,{value:i,children:[c.jsx("div",{ref:t,"aria-hidden":!0,style:{fontSize:"1rem",position:"absolute",visibility:"hidden",height:"auto",width:"auto",whiteSpace:"nowrap"},children:"M"}),e]})},le=()=>{const e=n.useContext(C);return e||{isFontLarge:!1,fontSizeRatio:1}},de="_visuallyHidden_1gevf_1",fe={visuallyHidden:de},M=e=>v.pickBy(e,me),pe=e=>v.pickBy(e,he),me=(e,t)=>t.startsWith("data-")||t.startsWith("aria-"),he=(e,t)=>t.startsWith("aria-"),ge=({children:e,...t})=>c.jsx("span",{className:fe.visuallyHidden,...M(t),children:e}),be="_text_1iisw_1",ye="_standard_1iisw_24",ve="_bold_1iisw_27",xe="_caption_1iisw_31",we="_overline_1iisw_39",ke="_large_1iisw_48",Se="_medium_1iisw_53",Ee="_small_1iisw_58",Ce="_smaller_1iisw_63",S={text:be,standard:ye,bold:ve,caption:xe,overline:we,large:ke,medium:Se,small:Ee,smaller:Ce},b=n.forwardRef(({children:e,variant:t="standard",size:r="medium",className:u,color:s,userSelect:o,whiteSpace:i,wordBreak:l,textAlign:a="left",overflow:f,textOverflow:p,style:m,...w},k)=>c.jsx("span",{className:F(S.text,S[t],S[r],u),ref:k,style:{color:s,userSelect:o,whiteSpace:i,wordBreak:l,textAlign:a,overflow:f,textOverflow:p,...m},...w,children:e})),Re=b,_e=e=>c.jsx(b,{size:"small",...e}),Te=e=>c.jsx(b,{size:"smaller",...e}),$e=e=>c.jsx(b,{size:"medium",...e}),Ae=e=>c.jsx(b,{size:"large",...e}),Ie="_heading_1cnsg_1",Fe="_h1_1cnsg_10",Le="_h2_1cnsg_14",Oe="_h3_1cnsg_18",Me="_h4_1cnsg_22",Pe="_h5_1cnsg_26",ze="_h6_1cnsg_30",T={heading:Ie,h1:Fe,h2:Le,h3:Oe,h4:Me,h5:Pe,h6:ze},P=n.forwardRef(({variant:e="h3",className:t,color:r,whiteSpace:u,wordBreak:s,style:o,children:i,as:l,...a},f)=>{const p=l??e;return c.jsx(p,{className:F(T.heading,T[e],t),style:{color:r,whiteSpace:u,wordBreak:s,...o},ref:f,...a,children:i})}),De=e=>c.jsx(P,{variant:"h2",...e}),je=({blockedKeys:e,blockMouse:t=!1,...r})=>{const u=n.useCallback(o=>{(e==null||(Array.isArray(e)?e.includes(o.key):e===o.key))&&o.stopPropagation()},[e]),s=n.useCallback(o=>{t&&o.stopPropagation()},[t]);return c.jsx(g,{...r,onKeyDown:u,onKeyUp:u,onMouseDown:s,onMouseUp:s})},He=(e,t)=>e===t,Ne=(e,t,r=He)=>{const u=n.useCallback(a=>{e.some(f=>r(f,a))||t([...e,a])},[e,t,r]),s=n.useCallback(a=>{t(a.reduce((f,p)=>f.some(m=>r(m,p))?f:[...f,p],e))},[e,t,r]),o=n.useCallback(a=>{const f=e.findIndex(p=>r(p,a));f>=0&&t(e.filter((p,m)=>m!==f))},[e,t,r]),i=n.useCallback(a=>{t(e.filter(f=>!a.some(p=>r(p,f))))},[e,t,r]),l=n.useCallback(a=>{e.some(p=>r(p,a))?o(a):u(a)},[e,u,o,r]);return{add:u,addMultiple:s,remove:o,removeMultiple:i,toggle:l}},x=e=>{const[t,r]=n.useState(e),u=n.useCallback(()=>{r(!0)},[r]),s=n.useCallback(()=>{r(!1)},[r]),o=n.useCallback(()=>{r(i=>!i)},[r]);return[t,u,s,o]},Ue=(e,t)=>{const[r,u]=n.useState(e);return n.useEffect(()=>{const s=setTimeout(()=>{u(e)},t);return()=>{clearTimeout(s)}},[e,t]),r},qe=(e,t)=>{const[r,u]=n.useState(e);return n.useEffect(()=>{e&&u(!0);const s=setTimeout(()=>{e||u(e)},t);return()=>{clearTimeout(s)}},[e,t]),r};let Be=0;const $=e=>`webui-${e?e+"-":""}${++Be}`,Ve=e=>{const[t,r]=n.useState(()=>$(e));return n.useEffect(()=>r($(e)),[e]),t},h=(e,t,r)=>{const u=n.useRef(null);n.useEffect(()=>{u.current=r},[r]),n.useEffect(()=>{if(!(e.current&&e.current.addEventListener))return;const o=l=>{if(u.current)return u.current(l)};if(!e.current)return;const i=e.current;return i.addEventListener(t,o),()=>{i&&i.removeEventListener(t,o)}},[t,e])},We=e=>{const[t,r,u]=x(!1);n.useEffect(()=>{document.activeElement===e.current?r():u()},[e,u,r]),h(e,"focus",r),h(e,"blur",u);const s=n.useCallback(()=>{e.current&&e.current.focus()},[e]),o=n.useCallback(()=>{e.current&&e.current.blur()},[e]);return{isInFocus:t,focus:s,blur:o}},Xe=e=>{const t=n.useRef(e);return n.useLayoutEffect(()=>{t.current=e}),n.useCallback((...r)=>{const{current:u}=t;return u(...r)},[])},Ge=e=>{const t=n.useRef(e);return t.current=e,t},Ye=e=>{const[t,r,u]=x(!1);return h(e,"mouseover",r),h(e,"mouseout",u),t},Ke=e=>{const[t,r,u]=x(!1);return h(e,"mouseenter",r),h(e,"mouseleave",u),t},Ze=(e,t)=>{const r=n.useRef(()=>{});n.useEffect(()=>{r.current=t},[t]),n.useEffect(()=>{const u=s=>{e.filter(i=>i.current).every(i=>i.current&&!i.current.contains(s.target))&&r.current(s)};return document.addEventListener("mousedown",u),document.addEventListener("touchstart",u),()=>{document.removeEventListener("mousedown",u),document.removeEventListener("touchstart",u)}},[...e])},Je=(e,t,r)=>{const u=n.useRef(()=>{});n.useEffect(()=>{u.current=t},[t]),n.useEffect(()=>{const s=o=>{!e.current||e.current.contains(o.target)||u.current(o)};return document.addEventListener("mousedown",s,r),document.addEventListener("touchstart",s,r),()=>{document.removeEventListener("mousedown",s,r),document.removeEventListener("touchstart",s,r)}},[e,r])},A=["mousemove","mousedown","keydown","touchstart","scroll"],Qe=(e,t)=>{const r=n.useRef(()=>{});n.useEffect(()=>{r.current=e},[e]),n.useEffect(()=>{const u=v.debounce(r.current,t);return A.forEach(s=>window.addEventListener(s,u)),()=>{A.forEach(s=>window.removeEventListener(s,u))}},[t])},et=(e,t)=>{const[r,u]=n.useState(!1),{rootMargin:s,root:o,threshold:i}=t||{},l=n.useMemo(()=>new IntersectionObserver(([a])=>u(a.isIntersecting),{rootMargin:s,root:o,threshold:i}),[u,s,o,i]);return n.useEffect(()=>(e.current&&l.observe(e.current),()=>{l.disconnect()}),[l,e]),r},tt=e=>{const t=n.useRef(null);return n.useEffect(()=>{e&&(typeof e=="function"?e(t.current):e.current=t.current)}),t},rt=(e,t,r=!0)=>{const[u,s]=n.useState(e),o=n.useRef(null),i=n.useCallback((l,a=t)=>{s(l),r&&clearTimeout(o.current),o.current=setTimeout(()=>s(e),a)},[t,r,e]);return n.useEffect(()=>()=>{clearTimeout(o.current)},[]),[u,i]},ut=()=>n.useMemo(()=>new Date,[]),nt=e=>(t,r)=>e(t).localeCompare(e(r)),st=e=>(t,r)=>e(t)-e(r),ot=e=>{throw new Error(`Switch unhandled case: ${e}`)},it=(e,t)=>t,at=e=>Object.keys(e).filter(t=>e[t]),ct=e=>{try{const t=parseFloat(e);return isNaN(t)||t==null?void 0:t}catch{}},lt=e=>{try{const t=parseInt(e,10);return isNaN(t)||t==null?void 0:t}catch{}};function dt(e,t){if(e==null)throw new Error("Invariant error: "+t)}const ft=e=>{if(!n.isValidElement(e)||e.type!==n.Fragment)return!1;const r=e.props.children;return Array.isArray(r)?r.every(I):I(r)},I=e=>e==null||e===!1,pt=e=>{try{const t=new Intl.PluralRules(e);return r=>t.select(r)}catch{return t=>{switch(t){case 0:return"zero";case 1:return"one";case 2:return"two";default:return"other"}}}},mt=e=>(t,r)=>r[e(t)]??r.other??"";exports.AccessibleFontSizeContext=C;exports.AccessibleFontSizeProvider=ce;exports.BlockKeyboardEvents=je;exports.Box=g;exports.Clickable=B;exports.Column=ee;exports.HeaderText=De;exports.Heading=P;exports.Indent=ne;exports.LargeText=Ae;exports.Nest=ae;exports.ResizeAwareBox=re;exports.Row=ue;exports.ScreenReaderOnlyText=ge;exports.SeparatorLine=U;exports.SmallText=_e;exports.SmallerText=Te;exports.Space=ie;exports.Spacing=se;exports.StandardText=$e;exports.Text=b;exports.Txt=Re;exports.booleanOrNumberToNumber=y;exports.byNumberField=st;exports.byStringField=nt;exports.exhaustSwitchCase=it;exports.exhaustSwitchCaseElseThrow=ot;exports.getAriaProps=pe;exports.getDataProps=M;exports.getDimensionObject=L;exports.invariant=dt;exports.isEmptyFragment=ft;exports.parseFloatElseUndefined=ct;exports.parseIntElseUndefined=lt;exports.pluralFormatter=mt;exports.selectPluralRule=pt;exports.truthyKeysAsList=at;exports.useAccessibleFontSizeContext=le;exports.useArraySet=Ne;exports.useBoolean=x;exports.useDebounce=Ue;exports.useDelayedFalse=qe;exports.useDomId=Ve;exports.useElementDimensions=O;exports.useElementFocus=We;exports.useEventCallback=Xe;exports.useEventListener=h;exports.useForwardedRef=tt;exports.useLatest=Ge;exports.useMouseIsEntered=Ke;exports.useMouseIsOver=Ye;exports.useMultiOnClickOutside=Ze;exports.useOnClickOutside=Je;exports.useOnNoMouseMovement=Qe;exports.useOnScreen=et;exports.useTimeoutState=rt;exports.useToday=ut;
79
79
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/decorators/separatorline/SeparatorLine.tsx","../src/components/interaction/Clickable.tsx","../src/utils/BooleanOrNumberToNumber.ts","../src/components/util/IsPropValid.ts","../src/components/layout/box/Box.tsx","../src/components/layout/column/Column.tsx","../src/hooks/UseElementDimensions.ts","../src/components/layout/box/ResizeAwareBox.tsx","../src/components/layout/row/Row.tsx","../src/components/layout/indent/Indent.tsx","../src/components/layout/spacing/Spacing.tsx","../src/components/layout/space/Space.tsx","../src/components/util/Nest.tsx","../src/accessibility/accessible-font-size-detector/AccessibleFontSizeProvider.tsx","../src/accessibility/accessible-font-size-detector/UseAccessibleFontSizeContext.ts","../src/utils/PropsForwarder.ts","../src/accessibility/screen-reader-only-text/ScreenReaderOnlyText.tsx","../src/components/text/Text.tsx","../src/components/deprecated-text/SmallText.tsx","../src/components/deprecated-text/SmallerText.tsx","../src/components/deprecated-text/StandardText.tsx","../src/components/deprecated-text/LargeText.tsx","../src/components/heading/Heading.tsx","../src/components/deprecated-text/HeaderText.tsx","../src/components/events/BlockKeyboardEvents.tsx","../src/hooks/UseArraySet.ts","../src/hooks/UseBoolean.ts","../src/hooks/UseDebounce.ts","../src/hooks/UseDelayedFalse.ts","../src/hooks/UseDomId.ts","../src/hooks/UseEventListener.ts","../src/hooks/UseElementFocus.ts","../src/hooks/UseEventCallback.tsx","../src/hooks/UseLatest.ts","../src/hooks/UseMouseIsOver.ts","../src/hooks/UseMouseIsEntered.ts","../src/hooks/UseMultiOnClickOutside.ts","../src/hooks/UseOnClickOutside.ts","../src/hooks/UseOnNoMouseInput.ts","../src/hooks/UseOnScreen.ts","../src/hooks/UseForwardedRef.ts","../src/hooks/UseTimeoutState.ts","../src/hooks/UseToday.ts","../src/sorting/Comparators.ts","../src/utils/SwitchCaseExhauster.ts","../src/utils/TruthyKeysAsList.ts","../src/utils/parsers/NumberParser.ts","../src/utils/Invariant.ts","../src/utils/FragmentEmptyChecker.ts"],"sourcesContent":["import { Property } from \"csstype\";\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport styles from \"./SeparatorLine.module.css\";\n\nexport interface SeparatorLineProps {\n color?: Property.Color;\n vertical?: boolean;\n size?: string;\n width?: string;\n}\n\nexport const SeparatorLine = forwardRef<HTMLHRElement, SeparatorLineProps>(\n (\n {\n color = cssColor(\"--lhds-color-ui-300\"),\n size = \"100%\",\n width = \"1px\",\n vertical = false,\n },\n ref,\n ) => {\n return (\n <hr\n className={styles.separatorLine}\n aria-hidden={true}\n color={color}\n style={{\n backgroundColor: color,\n height: vertical ? size || \"100%\" : width || \"1px\",\n width: vertical ? width || \"1px\" : size || \"100%\",\n }}\n ref={ref}\n />\n );\n },\n);\n","import styled from \"@emotion/styled\";\nimport * as React from \"react\";\nimport { CSSProperties, forwardRef, MouseEventHandler } from \"react\";\nimport { ButtonElementProps } from \"../../types/ElementProps\";\n\nexport interface ClickableProps extends ButtonElementProps {\n /** Callback function called when clicking on click area. */\n onClick?: MouseEventHandler<HTMLButtonElement>;\n /** Callback function called when double clicking on click area. */\n onDblClick?: MouseEventHandler<HTMLButtonElement>;\n /** Adds a title to the click area. */\n tooltip?: string;\n /** If set, there is no opacity applies when clicking on the click area. */\n disableOpacityOnClick?: boolean;\n /** Mouse does not turn into pointer when hovering over click area. */\n disablePointer?: boolean;\n /** When set, click area receives opacity when mouse hovers over it. */\n opacityOnHover?: boolean;\n /** Custom style on div with click event. */\n style?: CSSProperties;\n /** Disables shadow when element is focused. */\n disableFocusHighlight?: boolean;\n /** Disables the HTML button element. */\n disabled?: boolean;\n /**\n * Sets the background of the box.\n */\n background?: string;\n /**\n * Sets the background of the box when the box is in focus.\n */\n focusBackground?: string;\n /**\n * Sets the background of the box when hovering with mouse.\n */\n hoverBackground?: string;\n /**\n * The width.\n */\n width?: string;\n /**\n * The height.\n */\n height?: string;\n /**\n * Border radius\n */\n borderRadius?: string;\n}\n\ninterface ClickableElementProps {\n disableOpacityOnClick?: boolean;\n opacityOnHover?: boolean;\n disableFocusHighlight?: boolean;\n pointer?: boolean;\n background?: string;\n focusBackground?: string;\n hoverBackground?: string;\n width?: string;\n height?: string;\n borderRadius?: string;\n}\n\nconst ClickableElement = styled.button<ClickableElementProps>`\n display: inline-block;\n user-select: none;\n border: 0;\n padding: 0;\n background: ${({ background }) => background};\n ${({ pointer }) => (pointer ? \"cursor: pointer;\" : \"\")}\n\n :hover {\n ${(props) => (props.opacityOnHover ? \"opacity: 0.7;\" : \"\")};\n ${({ hoverBackground }) => `background: ${hoverBackground};`}\n }\n :active {\n ${({ disableOpacityOnClick }) =>\n !disableOpacityOnClick ? \"opacity: 0.5;\" : \"\"}\n }\n :focus {\n outline: 0;\n ${({ disableFocusHighlight }) =>\n disableFocusHighlight\n ? \"\"\n : \"box-shadow: 0 0 3pt 2pt rgba(0, 0, 100, 0.3);\"}\n ${({ focusBackground }) => `background: ${focusBackground};`}\n }\n ${({ width }) => (width ? `width: ${width};` : \"\")}\n ${({ height }) => (height ? `height: ${height};` : \"\")}\n ${({ borderRadius }) =>\n borderRadius ? `border-radius: ${borderRadius};` : \"\"}\n`;\n\nexport const Clickable = forwardRef<HTMLButtonElement, ClickableProps>(\n (\n {\n disableFocusHighlight,\n onClick,\n onDblClick,\n tooltip,\n disableOpacityOnClick,\n disablePointer,\n opacityOnHover,\n disabled,\n children,\n background = \"transparent\",\n hoverBackground,\n focusBackground,\n type = \"button\",\n ...restProps\n },\n ref,\n ) => {\n const hasClickHandler = !!(onClick || onDblClick);\n\n return (\n <ClickableElement\n opacityOnHover={opacityOnHover}\n title={tooltip}\n disabled={disabled}\n disableOpacityOnClick={disableOpacityOnClick}\n onClick={onClick}\n onDoubleClick={onDblClick}\n disableFocusHighlight={disableFocusHighlight}\n pointer={hasClickHandler && !disablePointer}\n ref={ref}\n background={background}\n hoverBackground={hoverBackground}\n focusBackground={focusBackground}\n type={type}\n {...restProps}\n >\n {children}\n </ClickableElement>\n );\n },\n);\n","export const booleanOrNumberToNumber = (\n num: number | boolean | undefined,\n): number => {\n if (num == null) {\n return 0;\n }\n if (typeof num === \"boolean\") {\n return num ? 1 : 0;\n }\n return num;\n};\n\nexport const numberToMetricCalc = (num: number): string | undefined => {\n if (num === 0) {\n return undefined;\n }\n return `calc(${num} * var(--swui-metrics-space))`;\n};\n\nexport const booleanOrNumberToMetricCalc = (\n num: number | boolean | undefined,\n): string | undefined => numberToMetricCalc(booleanOrNumberToNumber(num));\n","import { memoize } from \"lodash-es\";\n\nconst validPropsRecord = {\n // react props\n // https://github.com/facebook/react/blob/5495a7f24aef85ba6937truetrue1ce962673ca9f5fde6/src/renderers/dom/shared/hooks/ReactDOMUnknownPropertyHook.js\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true,\n autoFocus: true,\n defaultValue: true,\n defaultChecked: true,\n innerHTML: true,\n suppressContentEditableWarning: true,\n suppressHydrationWarning: true,\n // deprecated react prop\n valueLink: true,\n\n // https://github.com/facebook/react/blob/d7157651f7b72d9888ctrue123e191f9b88cd8f41e9/src/renderers/dom/shared/HTMLDOMPropertyConfig.js\n /**\n * Standard Properties\n */\n\n abbr: true,\n accept: true,\n acceptCharset: true,\n accessKey: true,\n action: true,\n allow: true,\n allowUserMedia: true,\n allowPaymentRequest: true,\n allowFullScreen: true,\n allowTransparency: true,\n alt: true,\n // specifies target context for links with `preload` type\n // as: true,\n async: true,\n autoComplete: true,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: true,\n autoPlay: true,\n capture: true,\n cellPadding: true,\n cellSpacing: true,\n // keygen prop\n challenge: true,\n charSet: true,\n checked: true,\n cite: true,\n classID: true,\n className: true,\n cols: true,\n colSpan: true,\n content: true,\n contentEditable: true,\n contextMenu: true,\n controls: true,\n controlsList: true,\n coords: true,\n crossOrigin: true,\n data: true, // For `<object />` acts as `src`.\n dateTime: true,\n decoding: true,\n default: true,\n defer: true,\n dir: true,\n disabled: true,\n disablePictureInPicture: true,\n disableRemotePlayback: true,\n download: true,\n draggable: true,\n encType: true,\n enterKeyHint: true,\n form: true,\n formAction: true,\n formEncType: true,\n formMethod: true,\n formNoValidate: true,\n formTarget: true,\n frameBorder: true,\n headers: true,\n height: true,\n hidden: true,\n high: true,\n href: true,\n hrefLang: true,\n htmlFor: true,\n httpEquiv: true,\n id: true,\n inputMode: true,\n integrity: true,\n is: true,\n keyParams: true,\n keyType: true,\n kind: true,\n label: true,\n lang: true,\n list: true,\n loading: true,\n loop: true,\n low: true,\n // manifest: true,\n marginHeight: true,\n marginWidth: true,\n max: true,\n maxLength: true,\n media: true,\n mediaGroup: true,\n method: true,\n min: true,\n minLength: true,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: true,\n muted: true,\n name: true,\n nonce: true,\n noValidate: true,\n open: true,\n optimum: true,\n pattern: true,\n placeholder: true,\n playsInline: true,\n poster: true,\n preload: true,\n profile: true,\n radioGroup: true,\n readOnly: true,\n referrerPolicy: true,\n rel: true,\n required: true,\n reversed: true,\n role: true,\n rows: true,\n rowSpan: true,\n sandbox: true,\n scope: true,\n scoped: true,\n scrolling: true,\n seamless: true,\n selected: true,\n shape: true,\n size: true,\n sizes: true,\n // support for projecting regular DOM Elements via V1 named slots ( shadow dom )\n slot: true,\n span: true,\n spellCheck: true,\n src: true,\n srcDoc: true,\n srcLang: true,\n srcSet: true,\n start: true,\n step: true,\n style: true,\n summary: true,\n tabIndex: true,\n target: true,\n title: true,\n translate: true,\n // Setting .type throws on non-<input> tags\n type: true,\n useMap: true,\n value: true,\n width: true,\n wmode: true,\n wrap: true,\n\n /**\n * RDFa Properties\n */\n about: true,\n datatype: true,\n inlist: true,\n prefix: true,\n // property is also supported for OpenGraph in meta tags.\n property: true,\n resource: true,\n typeof: true,\n vocab: true,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: true,\n autoCorrect: true,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: true,\n // color is for Safari mask-icon link\n color: true,\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/search#incremental_This_API_has_not_been_standardized\n incremental: true,\n // used in amp html for indicating the fallback behavior\n // https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/placeholders/\n fallback: true,\n // https://html.spec.whatwg.org/multipage/interaction.html#inert\n inert: true,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: true,\n itemScope: true,\n itemType: true,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: true,\n itemRef: true,\n // used in amp html for eventing purposes\n // https://amp.dev/documentation/guides-and-tutorials/learn/common_attributes/\n on: true,\n // used in amp html for indicating that the option is selectable\n // https://amp.dev/documentation/components/amp-selector/\n option: true,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: true,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<1true\n security: true,\n // IE-only attribute that controls focus behavior\n unselectable: true,\n //\n // SVG properties: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n // The following \"onX\" events have been omitted:\n //\n // onabort\n // onactivate\n // onbegin\n // onclick\n // onend\n // onerror\n // onfocusin\n // onfocusout\n // onload\n // onmousedown\n // onmousemove\n // onmouseout\n // onmouseover\n // onmouseup\n // onrepeat\n // onresize\n // onscroll\n // onunload\n accentHeight: true,\n accumulate: true,\n additive: true,\n alignmentBaseline: true,\n allowReorder: true,\n alphabetic: true,\n amplitude: true,\n arabicForm: true,\n ascent: true,\n attributeName: true,\n attributeType: true,\n autoReverse: true,\n azimuth: true,\n baseFrequency: true,\n baselineShift: true,\n baseProfile: true,\n bbox: true,\n begin: true,\n bias: true,\n by: true,\n calcMode: true,\n capHeight: true,\n clip: true,\n clipPathUnits: true,\n clipPath: true,\n clipRule: true,\n colorInterpolation: true,\n colorInterpolationFilters: true,\n colorProfile: true,\n colorRendering: true,\n contentScriptType: true,\n contentStyleType: true,\n cursor: true,\n cx: true,\n cy: true,\n d: true,\n decelerate: true,\n descent: true,\n diffuseConstant: true,\n direction: true,\n display: true,\n divisor: true,\n dominantBaseline: true,\n dur: true,\n dx: true,\n dy: true,\n edgeMode: true,\n elevation: true,\n enableBackground: true,\n end: true,\n exponent: true,\n externalResourcesRequired: true,\n fill: true,\n fillOpacity: true,\n fillRule: true,\n filter: true,\n filterRes: true,\n filterUnits: true,\n floodColor: true,\n floodOpacity: true,\n focusable: true,\n fontFamily: true,\n fontSize: true,\n fontSizeAdjust: true,\n fontStretch: true,\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n format: true,\n from: true,\n fr: true, // valid SVG element but React will ask for removal\n fx: true,\n fy: true,\n g1: true,\n g2: true,\n glyphName: true,\n glyphOrientationHorizontal: true,\n glyphOrientationVertical: true,\n glyphRef: true,\n gradientTransform: true,\n gradientUnits: true,\n hanging: true,\n horizAdvX: true,\n horizOriginX: true,\n ideographic: true,\n imageRendering: true,\n in: true,\n in2: true,\n intercept: true,\n k: true,\n k1: true,\n k2: true,\n k3: true,\n k4: true,\n kernelMatrix: true,\n kernelUnitLength: true,\n kerning: true,\n keyPoints: true,\n keySplines: true,\n keyTimes: true,\n lengthAdjust: true,\n letterSpacing: true,\n lightingColor: true,\n limitingConeAngle: true,\n local: true,\n markerEnd: true,\n markerMid: true,\n markerStart: true,\n markerHeight: true,\n markerUnits: true,\n markerWidth: true,\n mask: true,\n maskContentUnits: true,\n maskUnits: true,\n mathematical: true,\n mode: true,\n numOctaves: true,\n offset: true,\n opacity: true,\n operator: true,\n order: true,\n orient: true,\n orientation: true,\n origin: true,\n overflow: true,\n overlinePosition: true,\n overlineThickness: true,\n panose1: true,\n paintOrder: true,\n pathLength: true,\n patternContentUnits: true,\n patternTransform: true,\n patternUnits: true,\n pointerEvents: true,\n points: true,\n pointsAtX: true,\n pointsAtY: true,\n pointsAtZ: true,\n preserveAlpha: true,\n preserveAspectRatio: true,\n primitiveUnits: true,\n r: true,\n radius: true,\n refX: true,\n refY: true,\n renderingIntent: true,\n repeatCount: true,\n repeatDur: true,\n requiredExtensions: true,\n requiredFeatures: true,\n restart: true,\n result: true,\n rotate: true,\n rx: true,\n ry: true,\n scale: true,\n seed: true,\n shapeRendering: true,\n slope: true,\n spacing: true,\n specularConstant: true,\n specularExponent: true,\n speed: true,\n spreadMethod: true,\n startOffset: true,\n stdDeviation: true,\n stemh: true,\n stemv: true,\n stitchTiles: true,\n stopColor: true,\n stopOpacity: true,\n strikethroughPosition: true,\n strikethroughThickness: true,\n string: true,\n stroke: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeLinecap: true,\n strokeLinejoin: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true,\n surfaceScale: true,\n systemLanguage: true,\n tableValues: true,\n targetX: true,\n targetY: true,\n textAnchor: true,\n textDecoration: true,\n textRendering: true,\n textLength: true,\n to: true,\n transform: true,\n u1: true,\n u2: true,\n underlinePosition: true,\n underlineThickness: true,\n unicode: true,\n unicodeBidi: true,\n unicodeRange: true,\n unitsPerEm: true,\n vAlphabetic: true,\n vHanging: true,\n vIdeographic: true,\n vMathematical: true,\n values: true,\n vectorEffect: true,\n version: true,\n vertAdvY: true,\n vertOriginX: true,\n vertOriginY: true,\n viewBox: true,\n viewTarget: true,\n visibility: true,\n widths: true,\n wordSpacing: true,\n writingMode: true,\n x: true,\n xHeight: true,\n x1: true,\n x2: true,\n xChannelSelector: true,\n xlinkActuate: true,\n xlinkArcrole: true,\n xlinkHref: true,\n xlinkRole: true,\n xlinkShow: true,\n xlinkTitle: true,\n xlinkType: true,\n xmlBase: true,\n xmlns: true,\n xmlnsXlink: true,\n xmlLang: true,\n xmlSpace: true,\n y: true,\n y1: true,\n y2: true,\n yChannelSelector: true,\n z: true,\n zoomAndPan: true,\n\n // For preact. We have this code here even though Emotion doesn't support\n // Preact, since @emotion/is-prop-valid is used by some libraries outside of\n // the context of Emotion.\n for: true,\n class: true,\n autofocus: true,\n};\n\nconst validProps = `^((${Object.keys(validPropsRecord).join(\n \"|\",\n)})|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$`;\n\nconst r = new RegExp(validProps);\n\nexport const isPropValid: (prop: string) => boolean = memoize(\n (prop: string) =>\n r.test(prop) ||\n (prop.charCodeAt(0) === 111 /* o */ &&\n prop.charCodeAt(1) === 110 /* n */ &&\n prop.charCodeAt(2) < 91) /* Z+1 */,\n);\n","import styled from \"@emotion/styled\";\nimport { Property } from \"csstype\";\n\nimport {\n background,\n BackgroundProps,\n border,\n borderBottom,\n BorderBottomProps,\n borderColor,\n borderLeft,\n BorderLeftProps,\n borderRadius,\n BorderRadiusProps,\n borderRight,\n BorderRightProps,\n borderStyle,\n BorderStyleProps,\n borderTop,\n BorderTopProps,\n borderWidth,\n BorderWidthProps,\n bottom,\n BottomProps,\n boxShadow,\n BoxShadowProps,\n flexbox,\n FlexboxProps,\n layout,\n LayoutProps,\n left,\n LeftProps,\n overflow,\n OverflowProps,\n position,\n PositionProps,\n ResponsiveValue,\n right,\n RightProps,\n system,\n TLengthStyledSystem,\n top,\n TopProps,\n zIndex,\n ZIndexProps,\n} from \"styled-system\";\nimport { DivProps } from \"../../../types/ElementProps\";\nimport {\n booleanOrNumberToMetricCalc,\n booleanOrNumberToNumber,\n} from \"../../../utils/BooleanOrNumberToNumber\";\nimport { isPropValid } from \"../../util/IsPropValid\";\n\ninterface StyledSystemProps\n extends BorderRadiusProps,\n BorderStyleProps,\n BorderWidthProps,\n BorderLeftProps,\n BorderRightProps,\n BorderTopProps,\n BorderBottomProps,\n FlexboxProps,\n LayoutProps,\n OverflowProps,\n PositionProps,\n ZIndexProps,\n LeftProps,\n RightProps,\n TopProps,\n BottomProps {}\n\nconst shadows = {\n box: \"var(--swui-shadow-box)\",\n popover: \"var(--swui-shadow-popover)\",\n modal: \"var(--swui-shadow-modal)\",\n bottom: \"var(--swui-shadow-bottom)\",\n};\n\ntype ShadowType = keyof typeof shadows;\n\nexport interface BoxProps extends StyledSystemProps, DivProps {\n /**\n * If true, children are placed in a row.\n */\n row?: ResponsiveValue<boolean>;\n\n /**\n * Adds spacing over and under content.\n */\n spacing?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds spacing left and right of content.\n */\n indent?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds spacing between children.\n */\n gap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds gap between columns.\n */\n columnGap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds gap between rows.\n */\n rowGap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds a shadow around the box.\n */\n shadow?: ResponsiveValue<Property.BoxShadow | ShadowType>;\n\n /**\n * Sets the background of the box.\n */\n background?: ResponsiveValue<Property.Background<TLengthStyledSystem>>;\n\n /**\n * Sets the border of the box.\n */\n border?: ResponsiveValue<Property.Border<TLengthStyledSystem>>;\n\n /**\n * Sets the border color of the box.\n */\n borderColor?: ResponsiveValue<Property.BorderColor>;\n\n /**\n * Sets the background of the box when hovering with mouse.\n */\n hoverBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when hovering with mouse.\n */\n hoverBorder?: Property.Border<TLengthStyledSystem>;\n\n /**\n * Sets the background of the box when the box is in focus.\n */\n focusBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when the box is in focus.\n */\n focusBorder?: Property.Border<TLengthStyledSystem>;\n\n /**\n * Sets the background of the box when focus is within the box.\n */\n focusWithinBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when focus is within the box.\n */\n focusWithinBorder?: Property.Border<TLengthStyledSystem>;\n}\n\nconst excludedProps = [\n \"spacing\",\n \"indent\",\n \"gap\",\n \"width\",\n \"height\",\n \"overflow\",\n \"display\",\n];\n\nconst isExcludedWebUiProp = (propName: string) =>\n excludedProps.includes(propName);\n\nconst box = system({\n row: {\n property: \"flexDirection\",\n transform: (row: boolean) => (row ? \"row\" : \"column\"),\n },\n indent: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-indent\",\n transform: booleanOrNumberToNumber,\n },\n spacing: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-spacing\",\n transform: booleanOrNumberToNumber,\n },\n gap: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-gap\",\n transform: booleanOrNumberToNumber,\n },\n columnGap: {\n property: \"columnGap\",\n transform: booleanOrNumberToMetricCalc,\n },\n rowGap: {\n property: \"rowGap\",\n transform: booleanOrNumberToMetricCalc,\n },\n shadow: {\n property: \"boxShadow\",\n transform: (value: ShadowType) => shadows[value] ?? value,\n },\n});\n\ntype InnerProps = BoxProps & BoxShadowProps & BackgroundProps;\n\nexport const Box = styled(\"div\", {\n shouldForwardProp: (propName) =>\n typeof propName === \"string\"\n ? isExcludedWebUiProp(propName)\n ? false\n : isPropValid(propName)\n : false,\n})<InnerProps>`\n --current-spacing: 0;\n --current-indent: 0;\n --current-gap: 0;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n ${box};\n ${background};\n ${border};\n ${borderRight};\n ${borderLeft};\n ${borderTop};\n ${borderBottom};\n ${borderColor};\n ${borderRadius};\n ${borderStyle};\n ${borderWidth};\n ${boxShadow};\n ${flexbox};\n ${overflow};\n ${position};\n ${layout};\n ${zIndex};\n ${left};\n ${right};\n ${top};\n ${bottom};\n\n gap: calc(var(--current-gap) * var(--swui-metrics-space));\n\n padding: calc(var(--current-spacing) * var(--swui-metrics-spacing))\n calc(var(--current-indent) * var(--swui-metrics-indent));\n\n :hover {\n ${({ hoverBackground }) =>\n hoverBackground ? `background: ${hoverBackground};` : \"\"}\n ${({ hoverBorder }) => (hoverBorder ? `border: ${hoverBorder};` : \"\")}\n }\n\n :focus {\n ${({ focusBackground }) =>\n focusBackground ? `background: ${focusBackground};` : \"\"}\n ${({ focusBorder }) => (focusBorder ? `border: ${focusBorder};` : \"\")}\n }\n\n :focus-within {\n ${({ focusWithinBackground }) =>\n focusWithinBackground ? `background: ${focusWithinBackground};` : \"\"}\n ${({ focusWithinBorder }) =>\n focusWithinBorder ? `border: ${focusWithinBorder};` : \"\"}\n }\n`;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\n\nexport const Column = forwardRef<HTMLDivElement, BoxProps>(\n function Column(props, ref) {\n return <Box ref={ref} {...props} />;\n },\n);\n","import { RefObject, useCallback, useLayoutEffect, useState } from \"react\";\n\nexport interface ElementDimensions {\n width: number;\n height: number;\n top: number;\n left: number;\n x: number;\n y: number;\n right: number;\n bottom: number;\n}\n\nexport const getDimensionObject = (node: HTMLElement): ElementDimensions => {\n const { x, y, width, height, bottom, top, left, right } =\n node.getBoundingClientRect();\n\n return {\n width,\n height,\n top,\n left,\n x,\n y,\n right,\n bottom,\n };\n};\n\nconst isEqualDimensions = (\n a: ElementDimensions,\n b: ElementDimensions,\n): boolean =>\n a.x === b.x &&\n a.y === b.y &&\n a.width === b.width &&\n a.height === b.height &&\n a.bottom === b.bottom &&\n a.top === b.top &&\n a.left === b.left &&\n a.right === b.right;\n\nexport const useElementDimensions = (\n ref: RefObject<HTMLElement | null>,\n onResizeElement?: (dimensions: ElementDimensions) => void,\n) => {\n const [dimensions, setDimensions] = useState<ElementDimensions | undefined>();\n\n const updateDimensions = useCallback(() => {\n window.requestAnimationFrame(() => {\n if (ref.current) {\n const newDimensions = getDimensionObject(ref.current);\n if (!dimensions || !isEqualDimensions(dimensions, newDimensions)) {\n if (onResizeElement) {\n onResizeElement(newDimensions);\n }\n }\n setDimensions(newDimensions);\n }\n });\n }, [ref, dimensions, setDimensions, onResizeElement]);\n\n useLayoutEffect(() => {\n updateDimensions();\n }, [updateDimensions]);\n\n return {\n dimensions,\n };\n};\n","import * as React from \"react\";\nimport { forwardRef, RefObject, useRef } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\nimport {\n ElementDimensions,\n useElementDimensions,\n} from \"../../../hooks/UseElementDimensions\";\n\nexport interface ResizeAwareBoxProps extends Omit<BoxProps, \"onResize\"> {\n onResize?: (dimensions: ElementDimensions) => void;\n}\n\nexport const ResizeAwareBox = forwardRef<HTMLDivElement, ResizeAwareBoxProps>(\n function ResizeAwareBox({ onResize, ...boxProps }, ref) {\n const localRef = useRef<HTMLDivElement>(null);\n const currentRef = (ref as RefObject<HTMLDivElement>) ?? localRef;\n useElementDimensions(currentRef, onResize);\n\n return <Box {...boxProps} ref={ref} />;\n },\n);\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\n\nexport const Row = forwardRef<HTMLDivElement, BoxProps>(\n function Row(props, ref) {\n return <Box row ref={ref} {...props} />;\n },\n);\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\nimport { ResponsiveValue, TLengthStyledSystem } from \"styled-system\";\n\nexport interface IndentProps extends BoxProps {\n num?: ResponsiveValue<boolean | TLengthStyledSystem>;\n}\n\nexport const Indent = forwardRef<HTMLDivElement, IndentProps>(function Indent(\n { num = 1, ...props },\n ref,\n) {\n return <Box indent={num} ref={ref} {...props} />;\n});\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\nimport { ResponsiveValue, TLengthStyledSystem } from \"styled-system\";\n\nexport interface SpacingProps extends BoxProps {\n num?: ResponsiveValue<boolean | TLengthStyledSystem>;\n}\n\nexport const Spacing = forwardRef<HTMLDivElement, SpacingProps>(\n function Spacing({ num = 1, ...props }, ref) {\n return <Box spacing={num} ref={ref} {...props} />;\n },\n);\n","import styled from \"@emotion/styled\";\nimport * as React from \"react\";\n\nexport interface SpaceProps {\n half?: boolean;\n horizontal?: boolean;\n num?: number;\n vertical?: boolean;\n}\n\nconst InnerSpace = styled.div`\n --current-size: 1;\n flex: none;\n width: calc(var(--current-size) * var(--swui-metrics-space));\n height: calc(var(--current-size) * var(--swui-metrics-space));\n`;\n\nexport const Space: React.FC<SpaceProps> = ({\n half = false,\n horizontal = false,\n num = 1,\n vertical = false,\n}) => {\n const size = num * (half ? 0.5 : 1);\n\n return (\n <InnerSpace\n style={{\n [\"--current-size\" as string]: size,\n height: horizontal ? 1 : undefined,\n width: vertical ? 1 : undefined,\n }}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\n\ninterface Props {\n nest?: boolean;\n render: (children: ReactNode) => ReactNode;\n children?: ReactNode;\n}\n\nexport const Nest: React.FC<Props> = ({ children, nest, render }) => {\n if (nest) {\n return <>{render(children)}</>;\n }\n return <>{children}</>;\n};\n","import React, {\n createContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport interface AccessibleFontSizeContextValue {\n isFontLarge: boolean;\n fontSizeRatio: number;\n}\n\nexport const AccessibleFontSizeContext =\n createContext<AccessibleFontSizeContextValue>({\n isFontLarge: false,\n fontSizeRatio: 1,\n });\n\nconst baseHeight = 12;\n\nexport const AccessibleFontSizeProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const ref = useRef<HTMLDivElement>(null);\n const [isFontLarge, setIsFontLarge] = useState(false);\n const [fontSizeRatio, setFontSizeRatio] = useState(1);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const height = entry.contentRect.height;\n setIsFontLarge(height > baseHeight);\n setFontSizeRatio(height / baseHeight);\n }\n });\n\n observer.observe(ref.current);\n\n return () => observer.disconnect();\n }, []);\n\n const value = useMemo(\n () => ({ isFontLarge, fontSizeRatio }),\n [fontSizeRatio, isFontLarge],\n );\n\n return (\n <AccessibleFontSizeContext.Provider value={value}>\n <div\n ref={ref}\n aria-hidden\n style={{\n fontSize: \"1rem\",\n position: \"absolute\",\n visibility: \"hidden\",\n height: \"auto\",\n width: \"auto\",\n whiteSpace: \"nowrap\",\n }}\n >\n M\n </div>\n {children}\n </AccessibleFontSizeContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport {\n AccessibleFontSizeContext,\n AccessibleFontSizeContextValue,\n} from \"./AccessibleFontSizeProvider\";\n\nexport const useAccessibleFontSizeContext =\n (): AccessibleFontSizeContextValue => {\n const context = useContext(AccessibleFontSizeContext);\n\n if (!context) {\n return {\n isFontLarge: false,\n fontSizeRatio: 1,\n };\n }\n\n return context;\n };\n","import { pickBy } from \"lodash-es\";\nimport React from \"react\";\n\nexport const getDataProps = (\n props: Record<string, unknown> | object,\n): Record<string, unknown> =>\n pickBy(props, isDataPropMapper) as Record<string, unknown>;\n\nexport const getAriaProps = (\n props: Record<string, unknown>,\n): React.AriaAttributes =>\n pickBy(props, isAriaPropMapper) as React.AriaAttributes;\n\nconst isDataPropMapper = (_: unknown, key: string): boolean =>\n key.startsWith(\"data-\") || key.startsWith(\"aria-\");\n\nconst isAriaPropMapper = (_: unknown, key: string): boolean =>\n key.startsWith(\"aria-\");\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./ScreenReaderOnlyText.module.css\";\nimport { getDataProps } from \"../../utils/PropsForwarder\";\n\nexport interface ScreenReaderOnlyTextProps {\n children?: ReactNode;\n}\n\nexport const ScreenReaderOnlyText: React.FC<ScreenReaderOnlyTextProps> = ({\n children,\n ...props\n}) => {\n return (\n <span className={styles.visuallyHidden} {...getDataProps(props)}>\n {children}\n </span>\n );\n};\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Text.module.css\";\nimport { SpanProps } from \"../../types/ElementProps\";\nimport { Property } from \"csstype\";\n\nexport interface TextProps extends SpanProps {\n variant?: TextVariant;\n size?: TextSize;\n userSelect?: Property.UserSelect;\n whiteSpace?: Property.WhiteSpace;\n wordBreak?: Property.WordBreak;\n textAlign?: Property.TextAlign;\n overflow?: Property.Overflow;\n textOverflow?: Property.TextOverflow;\n color?: string;\n}\n\nexport type TextVariant = \"standard\" | \"caption\" | \"overline\" | \"bold\";\nexport type TextSize = \"large\" | \"medium\" | \"small\" | \"smaller\";\n\nexport const Text = forwardRef<HTMLSpanElement, TextProps>(\n (\n {\n children,\n variant = \"standard\",\n size = \"medium\",\n className,\n color,\n userSelect,\n whiteSpace,\n wordBreak,\n textAlign = \"left\",\n overflow,\n textOverflow,\n style,\n ...spanProps\n },\n ref,\n ) => {\n return (\n <span\n className={cx(styles.text, styles[variant], styles[size], className)}\n ref={ref}\n style={{\n color,\n userSelect,\n whiteSpace,\n wordBreak,\n textAlign,\n overflow,\n textOverflow,\n ...style,\n }}\n {...spanProps}\n >\n {children}\n </span>\n );\n },\n);\n\nexport const Txt = Text;\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const SmallText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"small\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const SmallerText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"smaller\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const StandardText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"medium\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const LargeText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"large\"} {...props} />;\n};\n","import cx from \"classnames\";\nimport { Property } from \"csstype\";\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { H1Props } from \"../../types/ElementProps\";\nimport styles from \"./Heading.module.css\";\n\nexport interface HeadingProps extends H1Props {\n variant?: HeadingVariant;\n whiteSpace?: Property.WhiteSpace;\n wordBreak?: Property.WordBreak;\n as?: HeadingVariant | \"span\";\n}\n\nexport type HeadingVariant = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n (\n {\n variant = \"h3\",\n className,\n color,\n whiteSpace,\n wordBreak,\n style,\n children,\n as,\n ...hProps\n },\n ref,\n ) => {\n const Element = as ?? variant;\n return (\n <Element\n className={cx(styles.heading, styles[variant], className)}\n style={{ color, whiteSpace, wordBreak, ...style }}\n ref={ref}\n {...hProps}\n >\n {children}\n </Element>\n );\n },\n);\n","import * as React from \"react\";\nimport { Heading, HeadingProps } from \"../heading/Heading\";\n\n/**\n * @deprecated Please use `Heading` instead.\n */\nexport const HeaderText: React.FC<Omit<HeadingProps, \"variant\">> = (props) => {\n return <Heading variant={\"h2\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { KeyboardEventHandler, MouseEventHandler, useCallback } from \"react\";\nimport { Box, BoxProps } from \"../layout/box/Box\";\n\nexport interface BlockKeyboardEventsProps extends BoxProps {\n /**\n * Key or keys that will be blocked from bubbling to parents.\n * If not set, all keys are blocked from bubbling.\n */\n blockedKeys?: string | Array<string>;\n\n /**\n * Whether to also block mouse events from bubbling.\n * Default: false\n */\n blockMouse?: boolean;\n}\n\nexport const BlockKeyboardEvents: React.FC<BlockKeyboardEventsProps> = ({\n blockedKeys,\n blockMouse = false,\n ...props\n}) => {\n const keyboardEventHandler = useCallback<KeyboardEventHandler>(\n (ev) => {\n const blockAll = blockedKeys == null;\n const shouldBlock =\n blockAll ||\n (Array.isArray(blockedKeys)\n ? blockedKeys.includes(ev.key)\n : blockedKeys === ev.key);\n\n if (shouldBlock) {\n ev.stopPropagation();\n }\n },\n [blockedKeys],\n );\n\n const mouseEventHandler = useCallback<MouseEventHandler>(\n (ev) => {\n if (!blockMouse) {\n return;\n }\n ev.stopPropagation();\n },\n [blockMouse],\n );\n\n return (\n <Box\n {...props}\n onKeyDown={keyboardEventHandler}\n onKeyUp={keyboardEventHandler}\n onMouseDown={mouseEventHandler}\n onMouseUp={mouseEventHandler}\n />\n );\n};\n","import { useCallback } from \"react\";\n\ntype ArrayItemEqualsComparator<T> = (a: T, b: T) => boolean;\n\nconst defaultComparator = <T>(a: T, b: T) => a === b;\n\nexport const useArraySet = <T>(\n list: Array<T>,\n setList: (list: Array<T>) => void,\n comparator: ArrayItemEqualsComparator<T> = defaultComparator,\n) => {\n const add = useCallback(\n (item: T) => {\n if (!list.some((l) => comparator(l, item))) {\n setList([...list, item]);\n }\n },\n [list, setList, comparator],\n );\n\n const addMultiple = useCallback(\n (items: Array<T>) => {\n setList(\n items.reduce((list, item) => {\n if (!list.some((l) => comparator(l, item))) {\n return [...list, item];\n }\n return list;\n }, list),\n );\n },\n [list, setList, comparator],\n );\n\n const remove = useCallback(\n (item: T) => {\n const index = list.findIndex((l) => comparator(l, item));\n if (index >= 0) {\n setList(list.filter((_, i) => i !== index));\n }\n },\n [list, setList, comparator],\n );\n\n const removeMultiple = useCallback(\n (items: Array<T>) => {\n setList(list.filter((item) => !items.some((l) => comparator(l, item))));\n },\n [list, setList, comparator],\n );\n\n const toggle = useCallback(\n (item: T) => {\n const found = list.some((l) => comparator(l, item));\n if (found) {\n remove(item);\n } else {\n add(item);\n }\n },\n [list, add, remove, comparator],\n );\n\n return {\n add,\n addMultiple,\n remove,\n removeMultiple,\n toggle,\n };\n};\n","import { useCallback, useState } from \"react\";\n\ntype Value = boolean;\ntype SetTrue = () => void;\ntype SetFalse = () => void;\ntype ToggleValue = () => void;\ntype BooleanHook = [Value, SetTrue, SetFalse, ToggleValue];\n\nexport const useBoolean = (initialValue: Value): BooleanHook => {\n const [value, setValue] = useState(initialValue);\n\n const setTrue = useCallback(() => {\n setValue(true);\n }, [setValue]);\n\n const setFalse = useCallback(() => {\n setValue(false);\n }, [setValue]);\n\n const toggle = useCallback(() => {\n setValue((v) => !v);\n }, [setValue]);\n\n return [value, setTrue, setFalse, toggle];\n};\n","import { useEffect, useState } from \"react\";\n\nexport const useDebounce = <T>(value: T, delay: number): T => {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]); // Only re-call effect if value or delay changes\n\n return debouncedValue;\n};\n","import { useEffect, useState } from \"react\";\n\nexport const useDelayedFalse = (value: boolean, delay: number) => {\n const [debouncedValue, setDebouncedValue] = useState<boolean>(value);\n\n useEffect(() => {\n if (value) {\n setDebouncedValue(true);\n }\n\n const handler = setTimeout(() => {\n if (!value) {\n setDebouncedValue(value);\n }\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n","import { useEffect, useState } from \"react\";\n\nlet id = 0;\nconst genId = (componentName?: string) =>\n `webui-${componentName ? componentName + \"-\" : \"\"}${++id}`;\n\n/** @deprecated use useId-hook from React 18 */\nexport const useDomId = (componentName?: string): string => {\n const [id, setId] = useState<string | null>(() => genId(componentName));\n useEffect(() => setId(genId(componentName)), [componentName]);\n return id!;\n};\n","import { RefObject, useEffect, useRef } from \"react\";\n\ntype EventHandler<TEventName extends keyof HTMLElementEventMap> = (\n event: HTMLElementEventMap[TEventName],\n) => void;\n\nexport const useEventListener = <TEventName extends keyof HTMLElementEventMap>(\n ref: RefObject<HTMLElement | null>,\n eventName: TEventName,\n handler: EventHandler<TEventName>,\n) => {\n // Create a ref that stores handler\n const savedHandler = useRef<EventHandler<TEventName>>(null);\n\n // Update ref.current value if handler changes.\n // This allows our effect below to always get latest handler ...\n // ... without us needing to pass it in effect deps array ...\n // ... and potentially cause effect to re-run every render.\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n // Make sure element supports addEventListener\n const isSupported = ref.current && ref.current.addEventListener;\n if (!isSupported) return;\n\n // Create event listener that calls handler function stored in ref\n const eventListener: EventHandler<TEventName> = (event) => {\n if (savedHandler.current) {\n return savedHandler.current(event);\n }\n };\n\n // Add event listener\n if (!ref.current) {\n return;\n }\n\n const element = ref.current;\n element.addEventListener(eventName, eventListener);\n\n // Remove event listener on cleanup\n return () => {\n if (element) {\n element.removeEventListener(eventName, eventListener);\n }\n };\n }, [eventName, ref]); // Re-run if eventName or element changes\n};\n","import { RefObject, useCallback, useEffect } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useElementFocus = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [isInFocus, setIsInFocus, setIsNotInFocus] = useBoolean(false);\n\n useEffect(() => {\n if (document.activeElement === ref.current) {\n setIsInFocus();\n } else {\n setIsNotInFocus();\n }\n }, [ref, setIsNotInFocus, setIsInFocus]);\n\n useEventListener(ref, \"focus\", setIsInFocus);\n useEventListener(ref, \"blur\", setIsNotInFocus);\n\n const focus = useCallback(() => {\n if (ref.current) {\n ref.current.focus();\n }\n }, [ref]);\n\n const blur = useCallback(() => {\n if (ref.current) {\n ref.current.blur();\n }\n }, [ref]);\n\n return { isInFocus, focus, blur };\n};\n","import { useCallback, useLayoutEffect, useRef } from \"react\";\n\ntype Fn<ARGS extends unknown[], R> = (...args: ARGS) => R;\n\nexport const useEventCallback = <A extends unknown[], R>(\n fn: Fn<A, R>,\n): Fn<A, R> => {\n const ref = useRef<Fn<A, R>>(fn);\n useLayoutEffect(() => {\n ref.current = fn;\n });\n return useCallback((...args: A): R => {\n const { current } = ref;\n return current(...args);\n }, []);\n};\n","import React, { MutableRefObject } from \"react\";\n\nexport const useLatest = <T>(value: T): MutableRefObject<T> => {\n const ref = React.useRef(value);\n ref.current = value;\n return ref;\n};\n","import { RefObject } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useMouseIsOver = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [mouseIsOver, setMouseIsOver, setMouseIsNotOver] = useBoolean(false);\n\n useEventListener(ref, \"mouseover\", setMouseIsOver);\n useEventListener(ref, \"mouseout\", setMouseIsNotOver);\n\n return mouseIsOver;\n};\n","import { RefObject } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useMouseIsEntered = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [mouseIsEntered, setMouseIsEntered, setMouseIsNotEntered] =\n useBoolean(false);\n\n useEventListener(ref, \"mouseenter\", setMouseIsEntered);\n useEventListener(ref, \"mouseleave\", setMouseIsNotEntered);\n\n return mouseIsEntered;\n};\n","import * as React from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport const useMultiOnClickOutside = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refs: Array<React.RefObject<any>>,\n handler: (event: TouchEvent | MouseEvent) => void,\n) => {\n const eventHandler = useRef<(event: TouchEvent | MouseEvent) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const listener = (event: TouchEvent | MouseEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n\n const allNotContains = refs\n .filter((ref) => ref.current)\n .every((ref) => {\n return ref.current && !ref.current.contains(event.target);\n });\n\n if (!allNotContains) {\n return;\n }\n\n eventHandler.current(event);\n };\n\n document.addEventListener(\"mousedown\", listener);\n document.addEventListener(\"touchstart\", listener);\n\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n document.removeEventListener(\"touchstart\", listener);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...refs]);\n};\n","import * as React from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport const useOnClickOutside = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: React.RefObject<any>,\n handler: (event: TouchEvent | MouseEvent) => void,\n options?: AddEventListenerOptions,\n) => {\n const eventHandler = useRef<(event: TouchEvent | MouseEvent) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const listener = (event: TouchEvent | MouseEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n\n eventHandler.current(event);\n };\n\n document.addEventListener(\"mousedown\", listener, options);\n document.addEventListener(\"touchstart\", listener, options);\n\n return () => {\n document.removeEventListener(\"mousedown\", listener, options);\n document.removeEventListener(\"touchstart\", listener, options);\n };\n }, [ref, options]);\n};\n","import { debounce } from \"lodash-es\";\nimport { useEffect, useRef } from \"react\";\n\nconst events = [\"mousemove\", \"mousedown\", \"keydown\", \"touchstart\", \"scroll\"];\n\nexport const useOnNoMouseMovement = (callback: () => void, delay: number) => {\n const eventHandler = useRef<(event: Event) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const onIdleChange = debounce(eventHandler.current, delay);\n events.forEach((event) => window.addEventListener(event, onIdleChange));\n\n return () => {\n events.forEach((event) =>\n window.removeEventListener(event, onIdleChange),\n );\n };\n }, [delay]);\n};\n","import { RefObject, useEffect, useMemo, useState } from \"react\";\n\nexport const useOnScreen = (\n ref: RefObject<Element | null>,\n options?: IntersectionObserverInit,\n) => {\n const [isVisible, setIsVisible] = useState(false);\n\n const { rootMargin, root, threshold } = options || {};\n\n const observer = useMemo(() => {\n return new IntersectionObserver(\n ([entry]) => setIsVisible(entry.isIntersecting),\n {\n rootMargin,\n root,\n threshold,\n },\n );\n }, [setIsVisible, rootMargin, root, threshold]);\n\n useEffect(() => {\n if (ref.current) {\n observer.observe(ref.current);\n }\n return () => {\n observer.disconnect();\n };\n }, [observer, ref]);\n\n return isVisible;\n};\n","import {\n MutableRefObject,\n RefCallback,\n RefObject,\n useEffect,\n useRef,\n} from \"react\";\n\nexport const useForwardedRef = <T>(\n ref: RefCallback<T> | MutableRefObject<T> | null,\n): RefObject<NonNullable<T>> => {\n const innerRef = useRef<T>(null) as MutableRefObject<NonNullable<T>>;\n\n useEffect(() => {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(innerRef.current);\n } else {\n ref.current = innerRef.current;\n }\n });\n\n return innerRef;\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport const useTimeoutState = <S>(\n initialValue: S,\n defaultTimeout: number,\n clearTimeoutOnSetValue = true,\n): [S, (v: S) => void] => {\n const [value, setValue] = useState<S>(initialValue);\n const timeoutRef = useRef<NodeJS.Timeout>(null);\n\n const wrappedSetter = useCallback(\n (newValue: S, timeout = defaultTimeout) => {\n setValue(newValue);\n if (clearTimeoutOnSetValue) {\n clearTimeout(timeoutRef.current!);\n }\n timeoutRef.current = setTimeout(() => setValue(initialValue), timeout);\n },\n [defaultTimeout, clearTimeoutOnSetValue, initialValue],\n );\n\n useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current!);\n };\n }, []);\n\n return [value, wrappedSetter];\n};\n","import { useMemo } from \"react\";\n\nexport const useToday = () => {\n return useMemo(() => new Date(), []);\n};\n","export const byStringField =\n <T>(fieldResolver: (item: T) => string) =>\n (a: T, b: T): number =>\n fieldResolver(a).localeCompare(fieldResolver(b));\n\nexport const byNumberField =\n <T>(fieldResolver: (item: T) => number) =>\n (a: T, b: T): number =>\n fieldResolver(a) - fieldResolver(b);\n","export const exhaustSwitchCaseElseThrow = (arg: never) => {\n throw new Error(`Switch unhandled case: ${arg}`);\n};\n\nexport const exhaustSwitchCase = <T>(_arg: never, fallback: T) => {\n return fallback;\n};\n","export const truthyKeysAsList = (r: Record<string, boolean>): Array<string> =>\n Object.keys(r).filter((key) => r[key]);\n","export const parseFloatElseUndefined = (s: string): number | undefined => {\n try {\n const f = parseFloat(s);\n if (isNaN(f)) {\n return undefined;\n }\n if (f == null) {\n return undefined;\n }\n return f;\n } catch {\n /* empty */\n }\n return undefined;\n};\n\nexport const parseIntElseUndefined = (s: string): number | undefined => {\n try {\n const f = parseInt(s, 10);\n if (isNaN(f)) {\n return undefined;\n }\n if (f == null) {\n return undefined;\n }\n return f;\n } catch {\n /* empty */\n }\n return undefined;\n};\n","export function invariant<T>(\n val: T | null | undefined,\n message: string,\n): asserts val is T {\n if (val == null) {\n throw new Error(\"Invariant error: \" + message);\n }\n}\n","import { Fragment, isValidElement, ReactElement, ReactNode } from \"react\";\n\nexport const isEmptyFragment = (node: ReactNode): boolean => {\n if (!isValidElement(node)) return false;\n if (node.type !== Fragment) return false;\n\n // Now TypeScript knows `node` is a ReactElement with known props\n const element = node as ReactElement<{ children?: ReactNode }>;\n const children = element.props.children;\n\n if (Array.isArray(children)) {\n return children.every(isNullishChild);\n }\n\n return isNullishChild(children);\n};\n\nconst isNullishChild = (child: ReactNode): boolean =>\n child == null || child === false;\n"],"names":["SeparatorLine","forwardRef","color","cssColor","size","width","vertical","ref","jsx","styles","ClickableElement","styled","background","pointer","props","hoverBackground","disableOpacityOnClick","disableFocusHighlight","focusBackground","height","borderRadius","Clickable","onClick","onDblClick","tooltip","disablePointer","opacityOnHover","disabled","children","type","restProps","hasClickHandler","booleanOrNumberToNumber","num","numberToMetricCalc","booleanOrNumberToMetricCalc","validPropsRecord","validProps","r","isPropValid","memoize","prop","shadows","excludedProps","isExcludedWebUiProp","propName","box","system","row","value","Box","border","borderRight","borderLeft","borderTop","borderBottom","borderColor","borderStyle","borderWidth","boxShadow","flexbox","overflow","position","layout","zIndex","left","right","top","bottom","hoverBorder","focusBorder","focusWithinBackground","focusWithinBorder","Column","getDimensionObject","node","x","y","isEqualDimensions","a","b","useElementDimensions","onResizeElement","dimensions","setDimensions","useState","updateDimensions","useCallback","newDimensions","useLayoutEffect","ResizeAwareBox","onResize","boxProps","localRef","useRef","Row","Indent","Spacing","InnerSpace","Space","half","horizontal","Nest","nest","render","Fragment","AccessibleFontSizeContext","createContext","baseHeight","AccessibleFontSizeProvider","isFontLarge","setIsFontLarge","fontSizeRatio","setFontSizeRatio","useEffect","observer","entries","entry","useMemo","jsxs","useAccessibleFontSizeContext","context","useContext","getDataProps","pickBy","isDataPropMapper","getAriaProps","isAriaPropMapper","_","key","ScreenReaderOnlyText","Text","variant","className","userSelect","whiteSpace","wordBreak","textAlign","textOverflow","style","spanProps","cx","Txt","SmallText","SmallerText","StandardText","LargeText","Heading","as","hProps","Element","HeaderText","BlockKeyboardEvents","blockedKeys","blockMouse","keyboardEventHandler","ev","mouseEventHandler","defaultComparator","useArraySet","list","setList","comparator","add","item","l","addMultiple","items","remove","index","i","removeMultiple","toggle","useBoolean","initialValue","setValue","setTrue","setFalse","v","useDebounce","delay","debouncedValue","setDebouncedValue","handler","useDelayedFalse","id","genId","componentName","useDomId","setId","useEventListener","eventName","savedHandler","eventListener","event","element","useElementFocus","isInFocus","setIsInFocus","setIsNotInFocus","focus","blur","useEventCallback","fn","args","current","useLatest","React","useMouseIsOver","mouseIsOver","setMouseIsOver","setMouseIsNotOver","useMouseIsEntered","mouseIsEntered","setMouseIsEntered","setMouseIsNotEntered","useMultiOnClickOutside","refs","eventHandler","listener","useOnClickOutside","options","events","useOnNoMouseMovement","callback","onIdleChange","debounce","useOnScreen","isVisible","setIsVisible","rootMargin","root","threshold","useForwardedRef","innerRef","useTimeoutState","defaultTimeout","clearTimeoutOnSetValue","timeoutRef","wrappedSetter","newValue","timeout","useToday","byStringField","fieldResolver","byNumberField","exhaustSwitchCaseElseThrow","arg","exhaustSwitchCase","_arg","fallback","truthyKeysAsList","parseFloatElseUndefined","s","f","parseIntElseUndefined","invariant","val","message","isEmptyFragment","isValidElement","isNullishChild","child"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/decorators/separatorline/SeparatorLine.tsx","../src/components/interaction/Clickable.tsx","../src/utils/BooleanOrNumberToNumber.ts","../src/components/util/IsPropValid.ts","../src/components/layout/box/Box.tsx","../src/components/layout/column/Column.tsx","../src/hooks/UseElementDimensions.ts","../src/components/layout/box/ResizeAwareBox.tsx","../src/components/layout/row/Row.tsx","../src/components/layout/indent/Indent.tsx","../src/components/layout/spacing/Spacing.tsx","../src/components/layout/space/Space.tsx","../src/components/util/Nest.tsx","../src/accessibility/accessible-font-size-detector/AccessibleFontSizeProvider.tsx","../src/accessibility/accessible-font-size-detector/UseAccessibleFontSizeContext.ts","../src/utils/PropsForwarder.ts","../src/accessibility/screen-reader-only-text/ScreenReaderOnlyText.tsx","../src/components/text/Text.tsx","../src/components/deprecated-text/SmallText.tsx","../src/components/deprecated-text/SmallerText.tsx","../src/components/deprecated-text/StandardText.tsx","../src/components/deprecated-text/LargeText.tsx","../src/components/heading/Heading.tsx","../src/components/deprecated-text/HeaderText.tsx","../src/components/events/BlockKeyboardEvents.tsx","../src/hooks/UseArraySet.ts","../src/hooks/UseBoolean.ts","../src/hooks/UseDebounce.ts","../src/hooks/UseDelayedFalse.ts","../src/hooks/UseDomId.ts","../src/hooks/UseEventListener.ts","../src/hooks/UseElementFocus.ts","../src/hooks/UseEventCallback.tsx","../src/hooks/UseLatest.ts","../src/hooks/UseMouseIsOver.ts","../src/hooks/UseMouseIsEntered.ts","../src/hooks/UseMultiOnClickOutside.ts","../src/hooks/UseOnClickOutside.ts","../src/hooks/UseOnNoMouseInput.ts","../src/hooks/UseOnScreen.ts","../src/hooks/UseForwardedRef.ts","../src/hooks/UseTimeoutState.ts","../src/hooks/UseToday.ts","../src/sorting/Comparators.ts","../src/utils/SwitchCaseExhauster.ts","../src/utils/TruthyKeysAsList.ts","../src/utils/parsers/NumberParser.ts","../src/utils/Invariant.ts","../src/utils/FragmentEmptyChecker.ts","../src/utils/translations/PluralFormatProvider.ts"],"sourcesContent":["import { Property } from \"csstype\";\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cssColor } from \"@stenajs-webui/theme\";\nimport styles from \"./SeparatorLine.module.css\";\n\nexport interface SeparatorLineProps {\n color?: Property.Color;\n vertical?: boolean;\n size?: string;\n width?: string;\n}\n\nexport const SeparatorLine = forwardRef<HTMLHRElement, SeparatorLineProps>(\n (\n {\n color = cssColor(\"--lhds-color-ui-300\"),\n size = \"100%\",\n width = \"1px\",\n vertical = false,\n },\n ref,\n ) => {\n return (\n <hr\n className={styles.separatorLine}\n aria-hidden={true}\n color={color}\n style={{\n backgroundColor: color,\n height: vertical ? size || \"100%\" : width || \"1px\",\n width: vertical ? width || \"1px\" : size || \"100%\",\n }}\n ref={ref}\n />\n );\n },\n);\n","import styled from \"@emotion/styled\";\nimport * as React from \"react\";\nimport { CSSProperties, forwardRef, MouseEventHandler } from \"react\";\nimport { ButtonElementProps } from \"../../types/ElementProps\";\n\nexport interface ClickableProps extends ButtonElementProps {\n /** Callback function called when clicking on click area. */\n onClick?: MouseEventHandler<HTMLButtonElement>;\n /** Callback function called when double clicking on click area. */\n onDblClick?: MouseEventHandler<HTMLButtonElement>;\n /** Adds a title to the click area. */\n tooltip?: string;\n /** If set, there is no opacity applies when clicking on the click area. */\n disableOpacityOnClick?: boolean;\n /** Mouse does not turn into pointer when hovering over click area. */\n disablePointer?: boolean;\n /** When set, click area receives opacity when mouse hovers over it. */\n opacityOnHover?: boolean;\n /** Custom style on div with click event. */\n style?: CSSProperties;\n /** Disables shadow when element is focused. */\n disableFocusHighlight?: boolean;\n /** Disables the HTML button element. */\n disabled?: boolean;\n /**\n * Sets the background of the box.\n */\n background?: string;\n /**\n * Sets the background of the box when the box is in focus.\n */\n focusBackground?: string;\n /**\n * Sets the background of the box when hovering with mouse.\n */\n hoverBackground?: string;\n /**\n * The width.\n */\n width?: string;\n /**\n * The height.\n */\n height?: string;\n /**\n * Border radius\n */\n borderRadius?: string;\n}\n\ninterface ClickableElementProps {\n disableOpacityOnClick?: boolean;\n opacityOnHover?: boolean;\n disableFocusHighlight?: boolean;\n pointer?: boolean;\n background?: string;\n focusBackground?: string;\n hoverBackground?: string;\n width?: string;\n height?: string;\n borderRadius?: string;\n}\n\nconst ClickableElement = styled.button<ClickableElementProps>`\n display: inline-block;\n user-select: none;\n border: 0;\n padding: 0;\n background: ${({ background }) => background};\n ${({ pointer }) => (pointer ? \"cursor: pointer;\" : \"\")}\n\n :hover {\n ${(props) => (props.opacityOnHover ? \"opacity: 0.7;\" : \"\")};\n ${({ hoverBackground }) => `background: ${hoverBackground};`}\n }\n :active {\n ${({ disableOpacityOnClick }) =>\n !disableOpacityOnClick ? \"opacity: 0.5;\" : \"\"}\n }\n :focus {\n outline: 0;\n ${({ disableFocusHighlight }) =>\n disableFocusHighlight\n ? \"\"\n : \"box-shadow: 0 0 3pt 2pt rgba(0, 0, 100, 0.3);\"}\n ${({ focusBackground }) => `background: ${focusBackground};`}\n }\n ${({ width }) => (width ? `width: ${width};` : \"\")}\n ${({ height }) => (height ? `height: ${height};` : \"\")}\n ${({ borderRadius }) =>\n borderRadius ? `border-radius: ${borderRadius};` : \"\"}\n`;\n\nexport const Clickable = forwardRef<HTMLButtonElement, ClickableProps>(\n (\n {\n disableFocusHighlight,\n onClick,\n onDblClick,\n tooltip,\n disableOpacityOnClick,\n disablePointer,\n opacityOnHover,\n disabled,\n children,\n background = \"transparent\",\n hoverBackground,\n focusBackground,\n type = \"button\",\n ...restProps\n },\n ref,\n ) => {\n const hasClickHandler = !!(onClick || onDblClick);\n\n return (\n <ClickableElement\n opacityOnHover={opacityOnHover}\n title={tooltip}\n disabled={disabled}\n disableOpacityOnClick={disableOpacityOnClick}\n onClick={onClick}\n onDoubleClick={onDblClick}\n disableFocusHighlight={disableFocusHighlight}\n pointer={hasClickHandler && !disablePointer}\n ref={ref}\n background={background}\n hoverBackground={hoverBackground}\n focusBackground={focusBackground}\n type={type}\n {...restProps}\n >\n {children}\n </ClickableElement>\n );\n },\n);\n","export const booleanOrNumberToNumber = (\n num: number | boolean | undefined,\n): number => {\n if (num == null) {\n return 0;\n }\n if (typeof num === \"boolean\") {\n return num ? 1 : 0;\n }\n return num;\n};\n\nexport const numberToMetricCalc = (num: number): string | undefined => {\n if (num === 0) {\n return undefined;\n }\n return `calc(${num} * var(--swui-metrics-space))`;\n};\n\nexport const booleanOrNumberToMetricCalc = (\n num: number | boolean | undefined,\n): string | undefined => numberToMetricCalc(booleanOrNumberToNumber(num));\n","import { memoize } from \"lodash-es\";\n\nconst validPropsRecord = {\n // react props\n // https://github.com/facebook/react/blob/5495a7f24aef85ba6937truetrue1ce962673ca9f5fde6/src/renderers/dom/shared/hooks/ReactDOMUnknownPropertyHook.js\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true,\n autoFocus: true,\n defaultValue: true,\n defaultChecked: true,\n innerHTML: true,\n suppressContentEditableWarning: true,\n suppressHydrationWarning: true,\n // deprecated react prop\n valueLink: true,\n\n // https://github.com/facebook/react/blob/d7157651f7b72d9888ctrue123e191f9b88cd8f41e9/src/renderers/dom/shared/HTMLDOMPropertyConfig.js\n /**\n * Standard Properties\n */\n\n abbr: true,\n accept: true,\n acceptCharset: true,\n accessKey: true,\n action: true,\n allow: true,\n allowUserMedia: true,\n allowPaymentRequest: true,\n allowFullScreen: true,\n allowTransparency: true,\n alt: true,\n // specifies target context for links with `preload` type\n // as: true,\n async: true,\n autoComplete: true,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: true,\n autoPlay: true,\n capture: true,\n cellPadding: true,\n cellSpacing: true,\n // keygen prop\n challenge: true,\n charSet: true,\n checked: true,\n cite: true,\n classID: true,\n className: true,\n cols: true,\n colSpan: true,\n content: true,\n contentEditable: true,\n contextMenu: true,\n controls: true,\n controlsList: true,\n coords: true,\n crossOrigin: true,\n data: true, // For `<object />` acts as `src`.\n dateTime: true,\n decoding: true,\n default: true,\n defer: true,\n dir: true,\n disabled: true,\n disablePictureInPicture: true,\n disableRemotePlayback: true,\n download: true,\n draggable: true,\n encType: true,\n enterKeyHint: true,\n form: true,\n formAction: true,\n formEncType: true,\n formMethod: true,\n formNoValidate: true,\n formTarget: true,\n frameBorder: true,\n headers: true,\n height: true,\n hidden: true,\n high: true,\n href: true,\n hrefLang: true,\n htmlFor: true,\n httpEquiv: true,\n id: true,\n inputMode: true,\n integrity: true,\n is: true,\n keyParams: true,\n keyType: true,\n kind: true,\n label: true,\n lang: true,\n list: true,\n loading: true,\n loop: true,\n low: true,\n // manifest: true,\n marginHeight: true,\n marginWidth: true,\n max: true,\n maxLength: true,\n media: true,\n mediaGroup: true,\n method: true,\n min: true,\n minLength: true,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: true,\n muted: true,\n name: true,\n nonce: true,\n noValidate: true,\n open: true,\n optimum: true,\n pattern: true,\n placeholder: true,\n playsInline: true,\n poster: true,\n preload: true,\n profile: true,\n radioGroup: true,\n readOnly: true,\n referrerPolicy: true,\n rel: true,\n required: true,\n reversed: true,\n role: true,\n rows: true,\n rowSpan: true,\n sandbox: true,\n scope: true,\n scoped: true,\n scrolling: true,\n seamless: true,\n selected: true,\n shape: true,\n size: true,\n sizes: true,\n // support for projecting regular DOM Elements via V1 named slots ( shadow dom )\n slot: true,\n span: true,\n spellCheck: true,\n src: true,\n srcDoc: true,\n srcLang: true,\n srcSet: true,\n start: true,\n step: true,\n style: true,\n summary: true,\n tabIndex: true,\n target: true,\n title: true,\n translate: true,\n // Setting .type throws on non-<input> tags\n type: true,\n useMap: true,\n value: true,\n width: true,\n wmode: true,\n wrap: true,\n\n /**\n * RDFa Properties\n */\n about: true,\n datatype: true,\n inlist: true,\n prefix: true,\n // property is also supported for OpenGraph in meta tags.\n property: true,\n resource: true,\n typeof: true,\n vocab: true,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: true,\n autoCorrect: true,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: true,\n // color is for Safari mask-icon link\n color: true,\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/search#incremental_This_API_has_not_been_standardized\n incremental: true,\n // used in amp html for indicating the fallback behavior\n // https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/placeholders/\n fallback: true,\n // https://html.spec.whatwg.org/multipage/interaction.html#inert\n inert: true,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: true,\n itemScope: true,\n itemType: true,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: true,\n itemRef: true,\n // used in amp html for eventing purposes\n // https://amp.dev/documentation/guides-and-tutorials/learn/common_attributes/\n on: true,\n // used in amp html for indicating that the option is selectable\n // https://amp.dev/documentation/components/amp-selector/\n option: true,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: true,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<1true\n security: true,\n // IE-only attribute that controls focus behavior\n unselectable: true,\n //\n // SVG properties: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n // The following \"onX\" events have been omitted:\n //\n // onabort\n // onactivate\n // onbegin\n // onclick\n // onend\n // onerror\n // onfocusin\n // onfocusout\n // onload\n // onmousedown\n // onmousemove\n // onmouseout\n // onmouseover\n // onmouseup\n // onrepeat\n // onresize\n // onscroll\n // onunload\n accentHeight: true,\n accumulate: true,\n additive: true,\n alignmentBaseline: true,\n allowReorder: true,\n alphabetic: true,\n amplitude: true,\n arabicForm: true,\n ascent: true,\n attributeName: true,\n attributeType: true,\n autoReverse: true,\n azimuth: true,\n baseFrequency: true,\n baselineShift: true,\n baseProfile: true,\n bbox: true,\n begin: true,\n bias: true,\n by: true,\n calcMode: true,\n capHeight: true,\n clip: true,\n clipPathUnits: true,\n clipPath: true,\n clipRule: true,\n colorInterpolation: true,\n colorInterpolationFilters: true,\n colorProfile: true,\n colorRendering: true,\n contentScriptType: true,\n contentStyleType: true,\n cursor: true,\n cx: true,\n cy: true,\n d: true,\n decelerate: true,\n descent: true,\n diffuseConstant: true,\n direction: true,\n display: true,\n divisor: true,\n dominantBaseline: true,\n dur: true,\n dx: true,\n dy: true,\n edgeMode: true,\n elevation: true,\n enableBackground: true,\n end: true,\n exponent: true,\n externalResourcesRequired: true,\n fill: true,\n fillOpacity: true,\n fillRule: true,\n filter: true,\n filterRes: true,\n filterUnits: true,\n floodColor: true,\n floodOpacity: true,\n focusable: true,\n fontFamily: true,\n fontSize: true,\n fontSizeAdjust: true,\n fontStretch: true,\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n format: true,\n from: true,\n fr: true, // valid SVG element but React will ask for removal\n fx: true,\n fy: true,\n g1: true,\n g2: true,\n glyphName: true,\n glyphOrientationHorizontal: true,\n glyphOrientationVertical: true,\n glyphRef: true,\n gradientTransform: true,\n gradientUnits: true,\n hanging: true,\n horizAdvX: true,\n horizOriginX: true,\n ideographic: true,\n imageRendering: true,\n in: true,\n in2: true,\n intercept: true,\n k: true,\n k1: true,\n k2: true,\n k3: true,\n k4: true,\n kernelMatrix: true,\n kernelUnitLength: true,\n kerning: true,\n keyPoints: true,\n keySplines: true,\n keyTimes: true,\n lengthAdjust: true,\n letterSpacing: true,\n lightingColor: true,\n limitingConeAngle: true,\n local: true,\n markerEnd: true,\n markerMid: true,\n markerStart: true,\n markerHeight: true,\n markerUnits: true,\n markerWidth: true,\n mask: true,\n maskContentUnits: true,\n maskUnits: true,\n mathematical: true,\n mode: true,\n numOctaves: true,\n offset: true,\n opacity: true,\n operator: true,\n order: true,\n orient: true,\n orientation: true,\n origin: true,\n overflow: true,\n overlinePosition: true,\n overlineThickness: true,\n panose1: true,\n paintOrder: true,\n pathLength: true,\n patternContentUnits: true,\n patternTransform: true,\n patternUnits: true,\n pointerEvents: true,\n points: true,\n pointsAtX: true,\n pointsAtY: true,\n pointsAtZ: true,\n preserveAlpha: true,\n preserveAspectRatio: true,\n primitiveUnits: true,\n r: true,\n radius: true,\n refX: true,\n refY: true,\n renderingIntent: true,\n repeatCount: true,\n repeatDur: true,\n requiredExtensions: true,\n requiredFeatures: true,\n restart: true,\n result: true,\n rotate: true,\n rx: true,\n ry: true,\n scale: true,\n seed: true,\n shapeRendering: true,\n slope: true,\n spacing: true,\n specularConstant: true,\n specularExponent: true,\n speed: true,\n spreadMethod: true,\n startOffset: true,\n stdDeviation: true,\n stemh: true,\n stemv: true,\n stitchTiles: true,\n stopColor: true,\n stopOpacity: true,\n strikethroughPosition: true,\n strikethroughThickness: true,\n string: true,\n stroke: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeLinecap: true,\n strokeLinejoin: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true,\n surfaceScale: true,\n systemLanguage: true,\n tableValues: true,\n targetX: true,\n targetY: true,\n textAnchor: true,\n textDecoration: true,\n textRendering: true,\n textLength: true,\n to: true,\n transform: true,\n u1: true,\n u2: true,\n underlinePosition: true,\n underlineThickness: true,\n unicode: true,\n unicodeBidi: true,\n unicodeRange: true,\n unitsPerEm: true,\n vAlphabetic: true,\n vHanging: true,\n vIdeographic: true,\n vMathematical: true,\n values: true,\n vectorEffect: true,\n version: true,\n vertAdvY: true,\n vertOriginX: true,\n vertOriginY: true,\n viewBox: true,\n viewTarget: true,\n visibility: true,\n widths: true,\n wordSpacing: true,\n writingMode: true,\n x: true,\n xHeight: true,\n x1: true,\n x2: true,\n xChannelSelector: true,\n xlinkActuate: true,\n xlinkArcrole: true,\n xlinkHref: true,\n xlinkRole: true,\n xlinkShow: true,\n xlinkTitle: true,\n xlinkType: true,\n xmlBase: true,\n xmlns: true,\n xmlnsXlink: true,\n xmlLang: true,\n xmlSpace: true,\n y: true,\n y1: true,\n y2: true,\n yChannelSelector: true,\n z: true,\n zoomAndPan: true,\n\n // For preact. We have this code here even though Emotion doesn't support\n // Preact, since @emotion/is-prop-valid is used by some libraries outside of\n // the context of Emotion.\n for: true,\n class: true,\n autofocus: true,\n};\n\nconst validProps = `^((${Object.keys(validPropsRecord).join(\n \"|\",\n)})|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$`;\n\nconst r = new RegExp(validProps);\n\nexport const isPropValid: (prop: string) => boolean = memoize(\n (prop: string) =>\n r.test(prop) ||\n (prop.charCodeAt(0) === 111 /* o */ &&\n prop.charCodeAt(1) === 110 /* n */ &&\n prop.charCodeAt(2) < 91) /* Z+1 */,\n);\n","import styled from \"@emotion/styled\";\nimport { Property } from \"csstype\";\n\nimport {\n background,\n BackgroundProps,\n border,\n borderBottom,\n BorderBottomProps,\n borderColor,\n borderLeft,\n BorderLeftProps,\n borderRadius,\n BorderRadiusProps,\n borderRight,\n BorderRightProps,\n borderStyle,\n BorderStyleProps,\n borderTop,\n BorderTopProps,\n borderWidth,\n BorderWidthProps,\n bottom,\n BottomProps,\n boxShadow,\n BoxShadowProps,\n flexbox,\n FlexboxProps,\n layout,\n LayoutProps,\n left,\n LeftProps,\n overflow,\n OverflowProps,\n position,\n PositionProps,\n ResponsiveValue,\n right,\n RightProps,\n system,\n TLengthStyledSystem,\n top,\n TopProps,\n zIndex,\n ZIndexProps,\n} from \"styled-system\";\nimport { DivProps } from \"../../../types/ElementProps\";\nimport {\n booleanOrNumberToMetricCalc,\n booleanOrNumberToNumber,\n} from \"../../../utils/BooleanOrNumberToNumber\";\nimport { isPropValid } from \"../../util/IsPropValid\";\n\ninterface StyledSystemProps\n extends BorderRadiusProps,\n BorderStyleProps,\n BorderWidthProps,\n BorderLeftProps,\n BorderRightProps,\n BorderTopProps,\n BorderBottomProps,\n FlexboxProps,\n LayoutProps,\n OverflowProps,\n PositionProps,\n ZIndexProps,\n LeftProps,\n RightProps,\n TopProps,\n BottomProps {}\n\nconst shadows = {\n box: \"var(--swui-shadow-box)\",\n popover: \"var(--swui-shadow-popover)\",\n modal: \"var(--swui-shadow-modal)\",\n bottom: \"var(--swui-shadow-bottom)\",\n};\n\ntype ShadowType = keyof typeof shadows;\n\nexport interface BoxProps extends StyledSystemProps, DivProps {\n /**\n * If true, children are placed in a row.\n */\n row?: ResponsiveValue<boolean>;\n\n /**\n * Adds spacing over and under content.\n */\n spacing?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds spacing left and right of content.\n */\n indent?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds spacing between children.\n */\n gap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds gap between columns.\n */\n columnGap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds gap between rows.\n */\n rowGap?: ResponsiveValue<boolean | TLengthStyledSystem>;\n\n /**\n * Adds a shadow around the box.\n */\n shadow?: ResponsiveValue<Property.BoxShadow | ShadowType>;\n\n /**\n * Sets the background of the box.\n */\n background?: ResponsiveValue<Property.Background<TLengthStyledSystem>>;\n\n /**\n * Sets the border of the box.\n */\n border?: ResponsiveValue<Property.Border<TLengthStyledSystem>>;\n\n /**\n * Sets the border color of the box.\n */\n borderColor?: ResponsiveValue<Property.BorderColor>;\n\n /**\n * Sets the background of the box when hovering with mouse.\n */\n hoverBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when hovering with mouse.\n */\n hoverBorder?: Property.Border<TLengthStyledSystem>;\n\n /**\n * Sets the background of the box when the box is in focus.\n */\n focusBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when the box is in focus.\n */\n focusBorder?: Property.Border<TLengthStyledSystem>;\n\n /**\n * Sets the background of the box when focus is within the box.\n */\n focusWithinBackground?: Property.Background<TLengthStyledSystem>;\n\n /**\n * Sets the border of the box when focus is within the box.\n */\n focusWithinBorder?: Property.Border<TLengthStyledSystem>;\n}\n\nconst excludedProps = [\n \"spacing\",\n \"indent\",\n \"gap\",\n \"width\",\n \"height\",\n \"overflow\",\n \"display\",\n];\n\nconst isExcludedWebUiProp = (propName: string) =>\n excludedProps.includes(propName);\n\nconst box = system({\n row: {\n property: \"flexDirection\",\n transform: (row: boolean) => (row ? \"row\" : \"column\"),\n },\n indent: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-indent\",\n transform: booleanOrNumberToNumber,\n },\n spacing: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-spacing\",\n transform: booleanOrNumberToNumber,\n },\n gap: {\n // @ts-expect-error Sets a CSS property.\n property: \"--current-gap\",\n transform: booleanOrNumberToNumber,\n },\n columnGap: {\n property: \"columnGap\",\n transform: booleanOrNumberToMetricCalc,\n },\n rowGap: {\n property: \"rowGap\",\n transform: booleanOrNumberToMetricCalc,\n },\n shadow: {\n property: \"boxShadow\",\n transform: (value: ShadowType) => shadows[value] ?? value,\n },\n});\n\ntype InnerProps = BoxProps & BoxShadowProps & BackgroundProps;\n\nexport const Box = styled(\"div\", {\n shouldForwardProp: (propName) =>\n typeof propName === \"string\"\n ? isExcludedWebUiProp(propName)\n ? false\n : isPropValid(propName)\n : false,\n})<InnerProps>`\n --current-spacing: 0;\n --current-indent: 0;\n --current-gap: 0;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n ${box};\n ${background};\n ${border};\n ${borderRight};\n ${borderLeft};\n ${borderTop};\n ${borderBottom};\n ${borderColor};\n ${borderRadius};\n ${borderStyle};\n ${borderWidth};\n ${boxShadow};\n ${flexbox};\n ${overflow};\n ${position};\n ${layout};\n ${zIndex};\n ${left};\n ${right};\n ${top};\n ${bottom};\n\n gap: calc(var(--current-gap) * var(--swui-metrics-space));\n\n padding: calc(var(--current-spacing) * var(--swui-metrics-spacing))\n calc(var(--current-indent) * var(--swui-metrics-indent));\n\n :hover {\n ${({ hoverBackground }) =>\n hoverBackground ? `background: ${hoverBackground};` : \"\"}\n ${({ hoverBorder }) => (hoverBorder ? `border: ${hoverBorder};` : \"\")}\n }\n\n :focus {\n ${({ focusBackground }) =>\n focusBackground ? `background: ${focusBackground};` : \"\"}\n ${({ focusBorder }) => (focusBorder ? `border: ${focusBorder};` : \"\")}\n }\n\n :focus-within {\n ${({ focusWithinBackground }) =>\n focusWithinBackground ? `background: ${focusWithinBackground};` : \"\"}\n ${({ focusWithinBorder }) =>\n focusWithinBorder ? `border: ${focusWithinBorder};` : \"\"}\n }\n`;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\n\nexport const Column = forwardRef<HTMLDivElement, BoxProps>(\n function Column(props, ref) {\n return <Box ref={ref} {...props} />;\n },\n);\n","import { RefObject, useCallback, useLayoutEffect, useState } from \"react\";\n\nexport interface ElementDimensions {\n width: number;\n height: number;\n top: number;\n left: number;\n x: number;\n y: number;\n right: number;\n bottom: number;\n}\n\nexport const getDimensionObject = (node: HTMLElement): ElementDimensions => {\n const { x, y, width, height, bottom, top, left, right } =\n node.getBoundingClientRect();\n\n return {\n width,\n height,\n top,\n left,\n x,\n y,\n right,\n bottom,\n };\n};\n\nconst isEqualDimensions = (\n a: ElementDimensions,\n b: ElementDimensions,\n): boolean =>\n a.x === b.x &&\n a.y === b.y &&\n a.width === b.width &&\n a.height === b.height &&\n a.bottom === b.bottom &&\n a.top === b.top &&\n a.left === b.left &&\n a.right === b.right;\n\nexport const useElementDimensions = (\n ref: RefObject<HTMLElement | null>,\n onResizeElement?: (dimensions: ElementDimensions) => void,\n) => {\n const [dimensions, setDimensions] = useState<ElementDimensions | undefined>();\n\n const updateDimensions = useCallback(() => {\n window.requestAnimationFrame(() => {\n if (ref.current) {\n const newDimensions = getDimensionObject(ref.current);\n if (!dimensions || !isEqualDimensions(dimensions, newDimensions)) {\n if (onResizeElement) {\n onResizeElement(newDimensions);\n }\n }\n setDimensions(newDimensions);\n }\n });\n }, [ref, dimensions, setDimensions, onResizeElement]);\n\n useLayoutEffect(() => {\n updateDimensions();\n }, [updateDimensions]);\n\n return {\n dimensions,\n };\n};\n","import * as React from \"react\";\nimport { forwardRef, RefObject, useRef } from \"react\";\nimport { Box, BoxProps } from \"./Box\";\nimport {\n ElementDimensions,\n useElementDimensions,\n} from \"../../../hooks/UseElementDimensions\";\n\nexport interface ResizeAwareBoxProps extends Omit<BoxProps, \"onResize\"> {\n onResize?: (dimensions: ElementDimensions) => void;\n}\n\nexport const ResizeAwareBox = forwardRef<HTMLDivElement, ResizeAwareBoxProps>(\n function ResizeAwareBox({ onResize, ...boxProps }, ref) {\n const localRef = useRef<HTMLDivElement>(null);\n const currentRef = (ref as RefObject<HTMLDivElement>) ?? localRef;\n useElementDimensions(currentRef, onResize);\n\n return <Box {...boxProps} ref={ref} />;\n },\n);\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\n\nexport const Row = forwardRef<HTMLDivElement, BoxProps>(\n function Row(props, ref) {\n return <Box row ref={ref} {...props} />;\n },\n);\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\nimport { ResponsiveValue, TLengthStyledSystem } from \"styled-system\";\n\nexport interface IndentProps extends BoxProps {\n num?: ResponsiveValue<boolean | TLengthStyledSystem>;\n}\n\nexport const Indent = forwardRef<HTMLDivElement, IndentProps>(function Indent(\n { num = 1, ...props },\n ref,\n) {\n return <Box indent={num} ref={ref} {...props} />;\n});\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { Box, BoxProps } from \"../box/Box\";\nimport { ResponsiveValue, TLengthStyledSystem } from \"styled-system\";\n\nexport interface SpacingProps extends BoxProps {\n num?: ResponsiveValue<boolean | TLengthStyledSystem>;\n}\n\nexport const Spacing = forwardRef<HTMLDivElement, SpacingProps>(\n function Spacing({ num = 1, ...props }, ref) {\n return <Box spacing={num} ref={ref} {...props} />;\n },\n);\n","import styled from \"@emotion/styled\";\nimport * as React from \"react\";\n\nexport interface SpaceProps {\n half?: boolean;\n horizontal?: boolean;\n num?: number;\n vertical?: boolean;\n}\n\nconst InnerSpace = styled.div`\n --current-size: 1;\n flex: none;\n width: calc(var(--current-size) * var(--swui-metrics-space));\n height: calc(var(--current-size) * var(--swui-metrics-space));\n`;\n\nexport const Space: React.FC<SpaceProps> = ({\n half = false,\n horizontal = false,\n num = 1,\n vertical = false,\n}) => {\n const size = num * (half ? 0.5 : 1);\n\n return (\n <InnerSpace\n style={{\n [\"--current-size\" as string]: size,\n height: horizontal ? 1 : undefined,\n width: vertical ? 1 : undefined,\n }}\n />\n );\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\n\ninterface Props {\n nest?: boolean;\n render: (children: ReactNode) => ReactNode;\n children?: ReactNode;\n}\n\nexport const Nest: React.FC<Props> = ({ children, nest, render }) => {\n if (nest) {\n return <>{render(children)}</>;\n }\n return <>{children}</>;\n};\n","import React, {\n createContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport interface AccessibleFontSizeContextValue {\n isFontLarge: boolean;\n fontSizeRatio: number;\n}\n\nexport const AccessibleFontSizeContext =\n createContext<AccessibleFontSizeContextValue>({\n isFontLarge: false,\n fontSizeRatio: 1,\n });\n\nconst baseHeight = 12;\n\nexport const AccessibleFontSizeProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const ref = useRef<HTMLDivElement>(null);\n const [isFontLarge, setIsFontLarge] = useState(false);\n const [fontSizeRatio, setFontSizeRatio] = useState(1);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const height = entry.contentRect.height;\n setIsFontLarge(height > baseHeight);\n setFontSizeRatio(height / baseHeight);\n }\n });\n\n observer.observe(ref.current);\n\n return () => observer.disconnect();\n }, []);\n\n const value = useMemo(\n () => ({ isFontLarge, fontSizeRatio }),\n [fontSizeRatio, isFontLarge],\n );\n\n return (\n <AccessibleFontSizeContext.Provider value={value}>\n <div\n ref={ref}\n aria-hidden\n style={{\n fontSize: \"1rem\",\n position: \"absolute\",\n visibility: \"hidden\",\n height: \"auto\",\n width: \"auto\",\n whiteSpace: \"nowrap\",\n }}\n >\n M\n </div>\n {children}\n </AccessibleFontSizeContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport {\n AccessibleFontSizeContext,\n AccessibleFontSizeContextValue,\n} from \"./AccessibleFontSizeProvider\";\n\nexport const useAccessibleFontSizeContext =\n (): AccessibleFontSizeContextValue => {\n const context = useContext(AccessibleFontSizeContext);\n\n if (!context) {\n return {\n isFontLarge: false,\n fontSizeRatio: 1,\n };\n }\n\n return context;\n };\n","import { pickBy } from \"lodash-es\";\nimport React from \"react\";\n\nexport const getDataProps = (\n props: Record<string, unknown> | object,\n): Record<string, unknown> =>\n pickBy(props, isDataPropMapper) as Record<string, unknown>;\n\nexport const getAriaProps = (\n props: Record<string, unknown>,\n): React.AriaAttributes =>\n pickBy(props, isAriaPropMapper) as React.AriaAttributes;\n\nconst isDataPropMapper = (_: unknown, key: string): boolean =>\n key.startsWith(\"data-\") || key.startsWith(\"aria-\");\n\nconst isAriaPropMapper = (_: unknown, key: string): boolean =>\n key.startsWith(\"aria-\");\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./ScreenReaderOnlyText.module.css\";\nimport { getDataProps } from \"../../utils/PropsForwarder\";\n\nexport interface ScreenReaderOnlyTextProps {\n children?: ReactNode;\n}\n\nexport const ScreenReaderOnlyText: React.FC<ScreenReaderOnlyTextProps> = ({\n children,\n ...props\n}) => {\n return (\n <span className={styles.visuallyHidden} {...getDataProps(props)}>\n {children}\n </span>\n );\n};\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Text.module.css\";\nimport { SpanProps } from \"../../types/ElementProps\";\nimport { Property } from \"csstype\";\n\nexport interface TextProps extends SpanProps {\n variant?: TextVariant;\n size?: TextSize;\n userSelect?: Property.UserSelect;\n whiteSpace?: Property.WhiteSpace;\n wordBreak?: Property.WordBreak;\n textAlign?: Property.TextAlign;\n overflow?: Property.Overflow;\n textOverflow?: Property.TextOverflow;\n color?: string;\n}\n\nexport type TextVariant = \"standard\" | \"caption\" | \"overline\" | \"bold\";\nexport type TextSize = \"large\" | \"medium\" | \"small\" | \"smaller\";\n\nexport const Text = forwardRef<HTMLSpanElement, TextProps>(\n (\n {\n children,\n variant = \"standard\",\n size = \"medium\",\n className,\n color,\n userSelect,\n whiteSpace,\n wordBreak,\n textAlign = \"left\",\n overflow,\n textOverflow,\n style,\n ...spanProps\n },\n ref,\n ) => {\n return (\n <span\n className={cx(styles.text, styles[variant], styles[size], className)}\n ref={ref}\n style={{\n color,\n userSelect,\n whiteSpace,\n wordBreak,\n textAlign,\n overflow,\n textOverflow,\n ...style,\n }}\n {...spanProps}\n >\n {children}\n </span>\n );\n },\n);\n\nexport const Txt = Text;\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const SmallText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"small\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const SmallerText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"smaller\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const StandardText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"medium\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { Text, TextProps } from \"../text/Text\";\n\n/**\n * @deprecated Please use `Text` instead.\n */\nexport const LargeText: React.FC<Omit<TextProps, \"size\">> = (props) => {\n return <Text size={\"large\"} {...props} />;\n};\n","import cx from \"classnames\";\nimport { Property } from \"csstype\";\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { H1Props } from \"../../types/ElementProps\";\nimport styles from \"./Heading.module.css\";\n\nexport interface HeadingProps extends H1Props {\n variant?: HeadingVariant;\n whiteSpace?: Property.WhiteSpace;\n wordBreak?: Property.WordBreak;\n as?: HeadingVariant | \"span\";\n}\n\nexport type HeadingVariant = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n (\n {\n variant = \"h3\",\n className,\n color,\n whiteSpace,\n wordBreak,\n style,\n children,\n as,\n ...hProps\n },\n ref,\n ) => {\n const Element = as ?? variant;\n return (\n <Element\n className={cx(styles.heading, styles[variant], className)}\n style={{ color, whiteSpace, wordBreak, ...style }}\n ref={ref}\n {...hProps}\n >\n {children}\n </Element>\n );\n },\n);\n","import * as React from \"react\";\nimport { Heading, HeadingProps } from \"../heading/Heading\";\n\n/**\n * @deprecated Please use `Heading` instead.\n */\nexport const HeaderText: React.FC<Omit<HeadingProps, \"variant\">> = (props) => {\n return <Heading variant={\"h2\"} {...props} />;\n};\n","import * as React from \"react\";\nimport { KeyboardEventHandler, MouseEventHandler, useCallback } from \"react\";\nimport { Box, BoxProps } from \"../layout/box/Box\";\n\nexport interface BlockKeyboardEventsProps extends BoxProps {\n /**\n * Key or keys that will be blocked from bubbling to parents.\n * If not set, all keys are blocked from bubbling.\n */\n blockedKeys?: string | Array<string>;\n\n /**\n * Whether to also block mouse events from bubbling.\n * Default: false\n */\n blockMouse?: boolean;\n}\n\nexport const BlockKeyboardEvents: React.FC<BlockKeyboardEventsProps> = ({\n blockedKeys,\n blockMouse = false,\n ...props\n}) => {\n const keyboardEventHandler = useCallback<KeyboardEventHandler>(\n (ev) => {\n const blockAll = blockedKeys == null;\n const shouldBlock =\n blockAll ||\n (Array.isArray(blockedKeys)\n ? blockedKeys.includes(ev.key)\n : blockedKeys === ev.key);\n\n if (shouldBlock) {\n ev.stopPropagation();\n }\n },\n [blockedKeys],\n );\n\n const mouseEventHandler = useCallback<MouseEventHandler>(\n (ev) => {\n if (!blockMouse) {\n return;\n }\n ev.stopPropagation();\n },\n [blockMouse],\n );\n\n return (\n <Box\n {...props}\n onKeyDown={keyboardEventHandler}\n onKeyUp={keyboardEventHandler}\n onMouseDown={mouseEventHandler}\n onMouseUp={mouseEventHandler}\n />\n );\n};\n","import { useCallback } from \"react\";\n\ntype ArrayItemEqualsComparator<T> = (a: T, b: T) => boolean;\n\nconst defaultComparator = <T>(a: T, b: T) => a === b;\n\nexport const useArraySet = <T>(\n list: Array<T>,\n setList: (list: Array<T>) => void,\n comparator: ArrayItemEqualsComparator<T> = defaultComparator,\n) => {\n const add = useCallback(\n (item: T) => {\n if (!list.some((l) => comparator(l, item))) {\n setList([...list, item]);\n }\n },\n [list, setList, comparator],\n );\n\n const addMultiple = useCallback(\n (items: Array<T>) => {\n setList(\n items.reduce((list, item) => {\n if (!list.some((l) => comparator(l, item))) {\n return [...list, item];\n }\n return list;\n }, list),\n );\n },\n [list, setList, comparator],\n );\n\n const remove = useCallback(\n (item: T) => {\n const index = list.findIndex((l) => comparator(l, item));\n if (index >= 0) {\n setList(list.filter((_, i) => i !== index));\n }\n },\n [list, setList, comparator],\n );\n\n const removeMultiple = useCallback(\n (items: Array<T>) => {\n setList(list.filter((item) => !items.some((l) => comparator(l, item))));\n },\n [list, setList, comparator],\n );\n\n const toggle = useCallback(\n (item: T) => {\n const found = list.some((l) => comparator(l, item));\n if (found) {\n remove(item);\n } else {\n add(item);\n }\n },\n [list, add, remove, comparator],\n );\n\n return {\n add,\n addMultiple,\n remove,\n removeMultiple,\n toggle,\n };\n};\n","import { useCallback, useState } from \"react\";\n\ntype Value = boolean;\ntype SetTrue = () => void;\ntype SetFalse = () => void;\ntype ToggleValue = () => void;\ntype BooleanHook = [Value, SetTrue, SetFalse, ToggleValue];\n\nexport const useBoolean = (initialValue: Value): BooleanHook => {\n const [value, setValue] = useState(initialValue);\n\n const setTrue = useCallback(() => {\n setValue(true);\n }, [setValue]);\n\n const setFalse = useCallback(() => {\n setValue(false);\n }, [setValue]);\n\n const toggle = useCallback(() => {\n setValue((v) => !v);\n }, [setValue]);\n\n return [value, setTrue, setFalse, toggle];\n};\n","import { useEffect, useState } from \"react\";\n\nexport const useDebounce = <T>(value: T, delay: number): T => {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]); // Only re-call effect if value or delay changes\n\n return debouncedValue;\n};\n","import { useEffect, useState } from \"react\";\n\nexport const useDelayedFalse = (value: boolean, delay: number) => {\n const [debouncedValue, setDebouncedValue] = useState<boolean>(value);\n\n useEffect(() => {\n if (value) {\n setDebouncedValue(true);\n }\n\n const handler = setTimeout(() => {\n if (!value) {\n setDebouncedValue(value);\n }\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n","import { useEffect, useState } from \"react\";\n\nlet id = 0;\nconst genId = (componentName?: string) =>\n `webui-${componentName ? componentName + \"-\" : \"\"}${++id}`;\n\n/** @deprecated use useId-hook from React 18 */\nexport const useDomId = (componentName?: string): string => {\n const [id, setId] = useState<string | null>(() => genId(componentName));\n useEffect(() => setId(genId(componentName)), [componentName]);\n return id!;\n};\n","import { RefObject, useEffect, useRef } from \"react\";\n\ntype EventHandler<TEventName extends keyof HTMLElementEventMap> = (\n event: HTMLElementEventMap[TEventName],\n) => void;\n\nexport const useEventListener = <TEventName extends keyof HTMLElementEventMap>(\n ref: RefObject<HTMLElement | null>,\n eventName: TEventName,\n handler: EventHandler<TEventName>,\n) => {\n // Create a ref that stores handler\n const savedHandler = useRef<EventHandler<TEventName>>(null);\n\n // Update ref.current value if handler changes.\n // This allows our effect below to always get latest handler ...\n // ... without us needing to pass it in effect deps array ...\n // ... and potentially cause effect to re-run every render.\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n // Make sure element supports addEventListener\n const isSupported = ref.current && ref.current.addEventListener;\n if (!isSupported) return;\n\n // Create event listener that calls handler function stored in ref\n const eventListener: EventHandler<TEventName> = (event) => {\n if (savedHandler.current) {\n return savedHandler.current(event);\n }\n };\n\n // Add event listener\n if (!ref.current) {\n return;\n }\n\n const element = ref.current;\n element.addEventListener(eventName, eventListener);\n\n // Remove event listener on cleanup\n return () => {\n if (element) {\n element.removeEventListener(eventName, eventListener);\n }\n };\n }, [eventName, ref]); // Re-run if eventName or element changes\n};\n","import { RefObject, useCallback, useEffect } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useElementFocus = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [isInFocus, setIsInFocus, setIsNotInFocus] = useBoolean(false);\n\n useEffect(() => {\n if (document.activeElement === ref.current) {\n setIsInFocus();\n } else {\n setIsNotInFocus();\n }\n }, [ref, setIsNotInFocus, setIsInFocus]);\n\n useEventListener(ref, \"focus\", setIsInFocus);\n useEventListener(ref, \"blur\", setIsNotInFocus);\n\n const focus = useCallback(() => {\n if (ref.current) {\n ref.current.focus();\n }\n }, [ref]);\n\n const blur = useCallback(() => {\n if (ref.current) {\n ref.current.blur();\n }\n }, [ref]);\n\n return { isInFocus, focus, blur };\n};\n","import { useCallback, useLayoutEffect, useRef } from \"react\";\n\ntype Fn<ARGS extends unknown[], R> = (...args: ARGS) => R;\n\nexport const useEventCallback = <A extends unknown[], R>(\n fn: Fn<A, R>,\n): Fn<A, R> => {\n const ref = useRef<Fn<A, R>>(fn);\n useLayoutEffect(() => {\n ref.current = fn;\n });\n return useCallback((...args: A): R => {\n const { current } = ref;\n return current(...args);\n }, []);\n};\n","import React, { MutableRefObject } from \"react\";\n\nexport const useLatest = <T>(value: T): MutableRefObject<T> => {\n const ref = React.useRef(value);\n ref.current = value;\n return ref;\n};\n","import { RefObject } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useMouseIsOver = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [mouseIsOver, setMouseIsOver, setMouseIsNotOver] = useBoolean(false);\n\n useEventListener(ref, \"mouseover\", setMouseIsOver);\n useEventListener(ref, \"mouseout\", setMouseIsNotOver);\n\n return mouseIsOver;\n};\n","import { RefObject } from \"react\";\nimport { useBoolean } from \"./UseBoolean\";\nimport { useEventListener } from \"./UseEventListener\";\n\nexport const useMouseIsEntered = <TElement extends HTMLElement>(\n ref: RefObject<TElement>,\n) => {\n const [mouseIsEntered, setMouseIsEntered, setMouseIsNotEntered] =\n useBoolean(false);\n\n useEventListener(ref, \"mouseenter\", setMouseIsEntered);\n useEventListener(ref, \"mouseleave\", setMouseIsNotEntered);\n\n return mouseIsEntered;\n};\n","import * as React from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport const useMultiOnClickOutside = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refs: Array<React.RefObject<any>>,\n handler: (event: TouchEvent | MouseEvent) => void,\n) => {\n const eventHandler = useRef<(event: TouchEvent | MouseEvent) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const listener = (event: TouchEvent | MouseEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n\n const allNotContains = refs\n .filter((ref) => ref.current)\n .every((ref) => {\n return ref.current && !ref.current.contains(event.target);\n });\n\n if (!allNotContains) {\n return;\n }\n\n eventHandler.current(event);\n };\n\n document.addEventListener(\"mousedown\", listener);\n document.addEventListener(\"touchstart\", listener);\n\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n document.removeEventListener(\"touchstart\", listener);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...refs]);\n};\n","import * as React from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport const useOnClickOutside = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: React.RefObject<any>,\n handler: (event: TouchEvent | MouseEvent) => void,\n options?: AddEventListenerOptions,\n) => {\n const eventHandler = useRef<(event: TouchEvent | MouseEvent) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const listener = (event: TouchEvent | MouseEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n\n eventHandler.current(event);\n };\n\n document.addEventListener(\"mousedown\", listener, options);\n document.addEventListener(\"touchstart\", listener, options);\n\n return () => {\n document.removeEventListener(\"mousedown\", listener, options);\n document.removeEventListener(\"touchstart\", listener, options);\n };\n }, [ref, options]);\n};\n","import { debounce } from \"lodash-es\";\nimport { useEffect, useRef } from \"react\";\n\nconst events = [\"mousemove\", \"mousedown\", \"keydown\", \"touchstart\", \"scroll\"];\n\nexport const useOnNoMouseMovement = (callback: () => void, delay: number) => {\n const eventHandler = useRef<(event: Event) => void>(() => {\n return;\n });\n\n useEffect(() => {\n eventHandler.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const onIdleChange = debounce(eventHandler.current, delay);\n events.forEach((event) => window.addEventListener(event, onIdleChange));\n\n return () => {\n events.forEach((event) =>\n window.removeEventListener(event, onIdleChange),\n );\n };\n }, [delay]);\n};\n","import { RefObject, useEffect, useMemo, useState } from \"react\";\n\nexport const useOnScreen = (\n ref: RefObject<Element | null>,\n options?: IntersectionObserverInit,\n) => {\n const [isVisible, setIsVisible] = useState(false);\n\n const { rootMargin, root, threshold } = options || {};\n\n const observer = useMemo(() => {\n return new IntersectionObserver(\n ([entry]) => setIsVisible(entry.isIntersecting),\n {\n rootMargin,\n root,\n threshold,\n },\n );\n }, [setIsVisible, rootMargin, root, threshold]);\n\n useEffect(() => {\n if (ref.current) {\n observer.observe(ref.current);\n }\n return () => {\n observer.disconnect();\n };\n }, [observer, ref]);\n\n return isVisible;\n};\n","import {\n MutableRefObject,\n RefCallback,\n RefObject,\n useEffect,\n useRef,\n} from \"react\";\n\nexport const useForwardedRef = <T>(\n ref: RefCallback<T> | MutableRefObject<T> | null,\n): RefObject<NonNullable<T>> => {\n const innerRef = useRef<T>(null) as MutableRefObject<NonNullable<T>>;\n\n useEffect(() => {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(innerRef.current);\n } else {\n ref.current = innerRef.current;\n }\n });\n\n return innerRef;\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport const useTimeoutState = <S>(\n initialValue: S,\n defaultTimeout: number,\n clearTimeoutOnSetValue = true,\n): [S, (v: S) => void] => {\n const [value, setValue] = useState<S>(initialValue);\n const timeoutRef = useRef<NodeJS.Timeout>(null);\n\n const wrappedSetter = useCallback(\n (newValue: S, timeout = defaultTimeout) => {\n setValue(newValue);\n if (clearTimeoutOnSetValue) {\n clearTimeout(timeoutRef.current!);\n }\n timeoutRef.current = setTimeout(() => setValue(initialValue), timeout);\n },\n [defaultTimeout, clearTimeoutOnSetValue, initialValue],\n );\n\n useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current!);\n };\n }, []);\n\n return [value, wrappedSetter];\n};\n","import { useMemo } from \"react\";\n\nexport const useToday = () => {\n return useMemo(() => new Date(), []);\n};\n","export const byStringField =\n <T>(fieldResolver: (item: T) => string) =>\n (a: T, b: T): number =>\n fieldResolver(a).localeCompare(fieldResolver(b));\n\nexport const byNumberField =\n <T>(fieldResolver: (item: T) => number) =>\n (a: T, b: T): number =>\n fieldResolver(a) - fieldResolver(b);\n","export const exhaustSwitchCaseElseThrow = (arg: never) => {\n throw new Error(`Switch unhandled case: ${arg}`);\n};\n\nexport const exhaustSwitchCase = <T>(_arg: never, fallback: T) => {\n return fallback;\n};\n","export const truthyKeysAsList = (r: Record<string, boolean>): Array<string> =>\n Object.keys(r).filter((key) => r[key]);\n","export const parseFloatElseUndefined = (s: string): number | undefined => {\n try {\n const f = parseFloat(s);\n if (isNaN(f)) {\n return undefined;\n }\n if (f == null) {\n return undefined;\n }\n return f;\n } catch {\n /* empty */\n }\n return undefined;\n};\n\nexport const parseIntElseUndefined = (s: string): number | undefined => {\n try {\n const f = parseInt(s, 10);\n if (isNaN(f)) {\n return undefined;\n }\n if (f == null) {\n return undefined;\n }\n return f;\n } catch {\n /* empty */\n }\n return undefined;\n};\n","export function invariant<T>(\n val: T | null | undefined,\n message: string,\n): asserts val is T {\n if (val == null) {\n throw new Error(\"Invariant error: \" + message);\n }\n}\n","import { Fragment, isValidElement, ReactElement, ReactNode } from \"react\";\n\nexport const isEmptyFragment = (node: ReactNode): boolean => {\n if (!isValidElement(node)) return false;\n if (node.type !== Fragment) return false;\n\n // Now TypeScript knows `node` is a ReactElement with known props\n const element = node as ReactElement<{ children?: ReactNode }>;\n const children = element.props.children;\n\n if (Array.isArray(children)) {\n return children.every(isNullishChild);\n }\n\n return isNullishChild(children);\n};\n\nconst isNullishChild = (child: ReactNode): boolean =>\n child == null || child === false;\n","import { PluralForms } from \"./PluralForms\";\n\nexport type PluralRuleSelect = (n: number) => Intl.LDMLPluralRule;\n\nexport type FormatPlural = (\n n: number,\n p: PluralForms,\n) => string | null | undefined;\n\nexport const selectPluralRule = (localeCode: string): PluralRuleSelect => {\n try {\n const pluralRules = new Intl.PluralRules(localeCode);\n return (num: number) => pluralRules.select(num);\n } catch {\n return (num: number) => {\n switch (num) {\n case 0:\n return \"zero\";\n case 1:\n return \"one\";\n case 2:\n return \"two\";\n default:\n return \"other\";\n }\n };\n }\n};\n\nexport const pluralFormatter = (select: PluralRuleSelect): FormatPlural => {\n return (num: number, forms: PluralForms) =>\n forms[select(num)] ?? forms.other ?? \"\";\n};\n"],"names":["SeparatorLine","forwardRef","color","cssColor","size","width","vertical","ref","jsx","styles","ClickableElement","styled","background","pointer","props","hoverBackground","disableOpacityOnClick","disableFocusHighlight","focusBackground","height","borderRadius","Clickable","onClick","onDblClick","tooltip","disablePointer","opacityOnHover","disabled","children","type","restProps","hasClickHandler","booleanOrNumberToNumber","num","numberToMetricCalc","booleanOrNumberToMetricCalc","validPropsRecord","validProps","r","isPropValid","memoize","prop","shadows","excludedProps","isExcludedWebUiProp","propName","box","system","row","value","Box","border","borderRight","borderLeft","borderTop","borderBottom","borderColor","borderStyle","borderWidth","boxShadow","flexbox","overflow","position","layout","zIndex","left","right","top","bottom","hoverBorder","focusBorder","focusWithinBackground","focusWithinBorder","Column","getDimensionObject","node","x","y","isEqualDimensions","a","b","useElementDimensions","onResizeElement","dimensions","setDimensions","useState","updateDimensions","useCallback","newDimensions","useLayoutEffect","ResizeAwareBox","onResize","boxProps","localRef","useRef","Row","Indent","Spacing","InnerSpace","Space","half","horizontal","Nest","nest","render","Fragment","AccessibleFontSizeContext","createContext","baseHeight","AccessibleFontSizeProvider","isFontLarge","setIsFontLarge","fontSizeRatio","setFontSizeRatio","useEffect","observer","entries","entry","useMemo","jsxs","useAccessibleFontSizeContext","context","useContext","getDataProps","pickBy","isDataPropMapper","getAriaProps","isAriaPropMapper","_","key","ScreenReaderOnlyText","Text","variant","className","userSelect","whiteSpace","wordBreak","textAlign","textOverflow","style","spanProps","cx","Txt","SmallText","SmallerText","StandardText","LargeText","Heading","as","hProps","Element","HeaderText","BlockKeyboardEvents","blockedKeys","blockMouse","keyboardEventHandler","ev","mouseEventHandler","defaultComparator","useArraySet","list","setList","comparator","add","item","l","addMultiple","items","remove","index","i","removeMultiple","toggle","useBoolean","initialValue","setValue","setTrue","setFalse","v","useDebounce","delay","debouncedValue","setDebouncedValue","handler","useDelayedFalse","id","genId","componentName","useDomId","setId","useEventListener","eventName","savedHandler","eventListener","event","element","useElementFocus","isInFocus","setIsInFocus","setIsNotInFocus","focus","blur","useEventCallback","fn","args","current","useLatest","React","useMouseIsOver","mouseIsOver","setMouseIsOver","setMouseIsNotOver","useMouseIsEntered","mouseIsEntered","setMouseIsEntered","setMouseIsNotEntered","useMultiOnClickOutside","refs","eventHandler","listener","useOnClickOutside","options","events","useOnNoMouseMovement","callback","onIdleChange","debounce","useOnScreen","isVisible","setIsVisible","rootMargin","root","threshold","useForwardedRef","innerRef","useTimeoutState","defaultTimeout","clearTimeoutOnSetValue","timeoutRef","wrappedSetter","newValue","timeout","useToday","byStringField","fieldResolver","byNumberField","exhaustSwitchCaseElseThrow","arg","exhaustSwitchCase","_arg","fallback","truthyKeysAsList","parseFloatElseUndefined","s","f","parseIntElseUndefined","invariant","val","message","isEmptyFragment","isValidElement","isNullishChild","child","selectPluralRule","localeCode","pluralRules","pluralFormatter","select","forms"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { PluralForms } from "./PluralForms";
2
+ export type PluralRuleSelect = (n: number) => Intl.LDMLPluralRule;
3
+ export type FormatPlural = (n: number, p: PluralForms) => string | null | undefined;
4
+ export declare const selectPluralRule: (localeCode: string) => PluralRuleSelect;
5
+ export declare const pluralFormatter: (select: PluralRuleSelect) => FormatPlural;
@@ -0,0 +1,8 @@
1
+ export interface PluralForms {
2
+ few?: string | undefined | null;
3
+ many?: string | undefined | null;
4
+ one?: string | undefined | null;
5
+ other?: string | undefined | null;
6
+ two?: string | undefined | null;
7
+ zero?: string | undefined | null;
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stenajs-webui/core",
3
- "version": "23.3.0",
3
+ "version": "23.4.0",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "author": "mattias800",
@@ -63,9 +63,9 @@
63
63
  "files": [
64
64
  "dist"
65
65
  ],
66
- "gitHead": "f77611c000c9f603782fc05c8ce49cc6ec0ef39f",
66
+ "gitHead": "356a1a2d17e4d38fc8b6f0db2c12685ab4278d13",
67
67
  "dependencies": {
68
- "@stenajs-webui/theme": "23.3.0",
68
+ "@stenajs-webui/theme": "23.4.0",
69
69
  "classnames": "^2.5.1",
70
70
  "lodash-es": "^4.17.21"
71
71
  },