@solibo/solibo-ui 0.5.16 → 1.0.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/README.md +1 -0
- package/dist/assets/index.css +1 -1
- package/dist/assets/index10.css +1 -1
- package/dist/assets/index11.css +1 -1
- package/dist/assets/index12.css +1 -1
- package/dist/assets/index13.css +1 -1
- package/dist/assets/index14.css +1 -1
- package/dist/assets/index15.css +1 -1
- package/dist/assets/index16.css +1 -1
- package/dist/assets/index17.css +1 -1
- package/dist/assets/index18.css +1 -1
- package/dist/assets/index19.css +1 -1
- package/dist/assets/index2.css +1 -1
- package/dist/assets/index20.css +0 -1
- package/dist/assets/index21.css +1 -1
- package/dist/assets/index22.css +1 -1
- package/dist/assets/index23.css +1 -1
- package/dist/assets/index24.css +1 -1
- package/dist/assets/index25.css +1 -1
- package/dist/assets/index26.css +1 -1
- package/dist/assets/index27.css +1 -1
- package/dist/assets/index28.css +1 -1
- package/dist/assets/index29.css +1 -1
- package/dist/assets/index3.css +1 -1
- package/dist/assets/index30.css +1 -1
- package/dist/assets/index31.css +1 -1
- package/dist/assets/index32.css +1 -1
- package/dist/assets/index33.css +1 -1
- package/dist/assets/index34.css +1 -1
- package/dist/assets/index35.css +1 -1
- package/dist/assets/index36.css +1 -1
- package/dist/assets/index37.css +1 -1
- package/dist/assets/index38.css +1 -1
- package/dist/assets/index39.css +1 -1
- package/dist/assets/index4.css +1 -1
- package/dist/assets/index40.css +1 -1
- package/dist/assets/index41.css +1 -1
- package/dist/assets/index42.css +1 -1
- package/dist/assets/index43.css +1 -1
- package/dist/assets/index44.css +1 -1
- package/dist/assets/index45.css +1 -1
- package/dist/assets/index46.css +1 -1
- package/dist/assets/index47.css +1 -1
- package/dist/assets/index48.css +1 -0
- package/dist/assets/index49.css +1 -0
- package/dist/assets/index5.css +1 -1
- package/dist/assets/index50.css +1 -0
- package/dist/assets/index51.css +1 -0
- package/dist/assets/index6.css +1 -1
- package/dist/assets/index7.css +1 -0
- package/dist/assets/index8.css +1 -1
- package/dist/assets/index9.css +1 -1
- package/dist/components/app-link/index.cjs +1 -1
- package/dist/components/app-link/index.cjs.map +1 -1
- package/dist/components/app-link/index.js +3 -3
- package/dist/components/app-link/index.js.map +1 -1
- package/dist/components/aside/index.cjs +1 -1
- package/dist/components/aside/index.cjs.map +1 -1
- package/dist/components/aside/index.js +28 -14
- package/dist/components/aside/index.js.map +1 -1
- package/dist/components/avatar/index.cjs +2 -0
- package/dist/components/avatar/index.cjs.map +1 -0
- package/dist/components/avatar/index.js +53 -0
- package/dist/components/avatar/index.js.map +1 -0
- package/dist/components/badge/index.cjs +1 -1
- package/dist/components/badge/index.cjs.map +1 -1
- package/dist/components/badge/index.js +39 -19
- package/dist/components/badge/index.js.map +1 -1
- package/dist/components/banner/index.cjs +1 -1
- package/dist/components/banner/index.js +8 -8
- package/dist/components/branding/index.cjs +1 -1
- package/dist/components/branding/index.cjs.map +1 -1
- package/dist/components/branding/index.js +8 -7
- package/dist/components/branding/index.js.map +1 -1
- package/dist/components/button/index.cjs +1 -1
- package/dist/components/button/index.cjs.map +1 -1
- package/dist/components/button/index.js +28 -24
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/card/index.cjs +2 -0
- package/dist/components/card/index.cjs.map +1 -0
- package/dist/components/card/index.js +49 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/checkbox/index.cjs +1 -1
- package/dist/components/checkbox/index.cjs.map +1 -1
- package/dist/components/checkbox/index.js +3 -3
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/chip/index.cjs +1 -1
- package/dist/components/chip/index.cjs.map +1 -1
- package/dist/components/chip/index.js +12 -12
- package/dist/components/chip/index.js.map +1 -1
- package/dist/components/collapsible/index.cjs +2 -0
- package/dist/components/collapsible/index.cjs.map +1 -0
- package/dist/components/collapsible/index.js +41 -0
- package/dist/components/collapsible/index.js.map +1 -0
- package/dist/components/controls/index.cjs +1 -1
- package/dist/components/controls/index.cjs.map +1 -1
- package/dist/components/controls/index.js +33 -31
- package/dist/components/controls/index.js.map +1 -1
- package/dist/components/croppable/index.cjs +2 -0
- package/dist/components/croppable/index.cjs.map +1 -0
- package/dist/components/{_croppable → croppable}/index.js +129 -129
- package/dist/components/croppable/index.js.map +1 -0
- package/dist/components/dialog/index.cjs +1 -1
- package/dist/components/dialog/index.cjs.map +1 -1
- package/dist/components/dialog/index.js +21 -18
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/dropdown/index.cjs +2 -0
- package/dist/components/dropdown/index.cjs.map +1 -0
- package/dist/components/dropdown/index.js +212 -0
- package/dist/components/dropdown/index.js.map +1 -0
- package/dist/components/dropzone/index.cjs +2 -0
- package/dist/components/dropzone/index.cjs.map +1 -0
- package/dist/components/{_dropzone → dropzone}/index.js +28 -28
- package/dist/components/dropzone/index.js.map +1 -0
- package/dist/components/editor/index.cjs +58 -0
- package/dist/components/editor/index.cjs.map +1 -0
- package/dist/components/{_editor → editor}/index.js +2185 -2134
- package/dist/components/editor/index.js.map +1 -0
- package/dist/components/empty-state/index.cjs +2 -0
- package/dist/components/empty-state/index.cjs.map +1 -0
- package/dist/components/empty-state/index.js +17 -0
- package/dist/components/empty-state/index.js.map +1 -0
- package/dist/components/fieldset/index.cjs +2 -0
- package/dist/components/fieldset/index.cjs.map +1 -0
- package/dist/components/fieldset/index.js +12 -0
- package/dist/components/fieldset/index.js.map +1 -0
- package/dist/components/figure/index.cjs +1 -1
- package/dist/components/figure/index.cjs.map +1 -1
- package/dist/components/figure/index.js +11 -17
- package/dist/components/figure/index.js.map +1 -1
- package/dist/components/file/index.cjs +1 -1
- package/dist/components/file/index.cjs.map +1 -1
- package/dist/components/file/index.js +46 -22
- package/dist/components/file/index.js.map +1 -1
- package/dist/components/footer/index.cjs +1 -1
- package/dist/components/footer/index.js +3 -3
- package/dist/components/form/index.cjs +1 -1
- package/dist/components/form/index.cjs.map +1 -1
- package/dist/components/form/index.js +8 -8
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/graph/index.cjs +1 -1
- package/dist/components/graph/index.js +1 -1
- package/dist/components/group/index.cjs +1 -1
- package/dist/components/group/index.js +3 -3
- package/dist/components/header/index.cjs +1 -1
- package/dist/components/header/index.cjs.map +1 -1
- package/dist/components/header/index.js +10 -8
- package/dist/components/header/index.js.map +1 -1
- package/dist/components/icon/index.cjs +1 -1
- package/dist/components/icon/index.cjs.map +1 -1
- package/dist/components/icon/index.js +27 -33
- package/dist/components/icon/index.js.map +1 -1
- package/dist/components/iframe/index.cjs +2 -0
- package/dist/components/iframe/index.cjs.map +1 -0
- package/dist/components/iframe/index.js +93 -0
- package/dist/components/iframe/index.js.map +1 -0
- package/dist/components/image/index.cjs +1 -1
- package/dist/components/image/index.js +1 -1
- package/dist/components/input/index.cjs +1 -1
- package/dist/components/input/index.cjs.map +1 -1
- package/dist/components/input/index.js +7 -53
- package/dist/components/input/index.js.map +1 -1
- package/dist/components/link/index.cjs +1 -1
- package/dist/components/link/index.js +1 -1
- package/dist/components/list/index.cjs +1 -1
- package/dist/components/list/index.cjs.map +1 -1
- package/dist/components/list/index.js +38 -33
- package/dist/components/list/index.js.map +1 -1
- package/dist/components/loading/index.cjs +1 -1
- package/dist/components/loading/index.cjs.map +1 -1
- package/dist/components/loading/index.js +13 -13
- package/dist/components/loading/index.js.map +1 -1
- package/dist/components/menu/index.cjs +2 -0
- package/dist/components/menu/index.cjs.map +1 -0
- package/dist/components/{_menu → menu}/index.js +30 -29
- package/dist/components/menu/index.js.map +1 -0
- package/dist/components/message/index.cjs +1 -1
- package/dist/components/message/index.cjs.map +1 -1
- package/dist/components/message/index.js +36 -17
- package/dist/components/message/index.js.map +1 -1
- package/dist/components/messages/index.cjs +2 -0
- package/dist/components/messages/index.cjs.map +1 -0
- package/dist/components/messages/index.js +40 -0
- package/dist/components/messages/index.js.map +1 -0
- package/dist/components/nav/index.cjs +1 -1
- package/dist/components/nav/index.cjs.map +1 -1
- package/dist/components/nav/index.js +24 -22
- package/dist/components/nav/index.js.map +1 -1
- package/dist/components/object/index.cjs +1 -1
- package/dist/components/object/index.js +3 -3
- package/dist/components/popover/index.cjs +1 -1
- package/dist/components/popover/index.cjs.map +1 -1
- package/dist/components/popover/index.js +16 -16
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/portal/index.cjs +2 -0
- package/dist/components/portal/index.cjs.map +1 -0
- package/dist/components/portal/index.js +30 -0
- package/dist/components/portal/index.js.map +1 -0
- package/dist/components/search/index.cjs +2 -0
- package/dist/components/search/index.cjs.map +1 -0
- package/dist/components/search/index.js +62 -0
- package/dist/components/search/index.js.map +1 -0
- package/dist/components/select/index.cjs +1 -1
- package/dist/components/select/index.js +3 -3
- package/dist/components/sortable/index.cjs +2 -0
- package/dist/components/{_sortable/index.js.map → sortable/index.cjs.map} +1 -1
- package/dist/components/{_sortable → sortable}/index.js +1 -1
- package/dist/components/sortable/index.js.map +1 -0
- package/dist/components/table/index.cjs +1 -1
- package/dist/components/table/index.cjs.map +1 -1
- package/dist/components/table/index.js +15 -15
- package/dist/components/table/index.js.map +1 -1
- package/dist/components/textarea/index.cjs +1 -1
- package/dist/components/textarea/index.cjs.map +1 -1
- package/dist/components/textarea/index.js +20 -20
- package/dist/components/textarea/index.js.map +1 -1
- package/dist/components/toast/index.cjs +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/toasts/index.cjs +2 -0
- package/dist/components/{_toasts/index.js.map → toasts/index.cjs.map} +1 -1
- package/dist/components/{_toasts → toasts}/index.js +1 -1
- package/dist/components/toasts/index.js.map +1 -0
- package/dist/components/toggle/index.cjs +1 -1
- package/dist/components/toggle/index.js +1 -1
- package/dist/components/toolbar/index.cjs +1 -1
- package/dist/components/toolbar/index.js +7 -7
- package/dist/components/widget/index.cjs +2 -0
- package/dist/components/widget/index.cjs.map +1 -0
- package/dist/components/{_widget → widget}/index.js +2 -2
- package/dist/components/widget/index.js.map +1 -0
- package/dist/icons-CKzd_L4D.js +149 -0
- package/dist/icons-CKzd_L4D.js.map +1 -0
- package/dist/icons-DYCSlAoX.cjs +2 -0
- package/dist/icons-DYCSlAoX.cjs.map +1 -0
- package/dist/index-BOkkyMbX.cjs +2 -0
- package/dist/index-BOkkyMbX.cjs.map +1 -0
- package/dist/index-D-AyCDg7.js +72 -0
- package/dist/index-D-AyCDg7.js.map +1 -0
- package/dist/index-DS2cY2g4.js +73 -0
- package/dist/index-DS2cY2g4.js.map +1 -0
- package/dist/index-iItPktfX.cjs +2 -0
- package/dist/index-iItPktfX.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +269 -92
- package/dist/index.js +98 -93
- package/dist/index.js.map +1 -1
- package/dist/tokens.css +60 -4
- package/dist/tokens.json +894 -46
- package/dist/use-touched-DXIJVVzz.js +14 -0
- package/dist/use-touched-DXIJVVzz.js.map +1 -0
- package/dist/use-touched-D_TJ8wDc.cjs +2 -0
- package/dist/use-touched-D_TJ8wDc.cjs.map +1 -0
- package/package.json +6 -3
- package/dist/assets/styles.css +0 -1
- package/dist/components/_avatar/index.cjs +0 -2
- package/dist/components/_avatar/index.cjs.map +0 -1
- package/dist/components/_avatar/index.js +0 -18
- package/dist/components/_avatar/index.js.map +0 -1
- package/dist/components/_card/index.cjs +0 -2
- package/dist/components/_card/index.cjs.map +0 -1
- package/dist/components/_card/index.js +0 -47
- package/dist/components/_card/index.js.map +0 -1
- package/dist/components/_collapsible/index.cjs +0 -2
- package/dist/components/_collapsible/index.cjs.map +0 -1
- package/dist/components/_collapsible/index.js +0 -23
- package/dist/components/_collapsible/index.js.map +0 -1
- package/dist/components/_croppable/index.cjs +0 -2
- package/dist/components/_croppable/index.cjs.map +0 -1
- package/dist/components/_croppable/index.js.map +0 -1
- package/dist/components/_dropdown/index.cjs +0 -2
- package/dist/components/_dropdown/index.cjs.map +0 -1
- package/dist/components/_dropdown/index.js +0 -188
- package/dist/components/_dropdown/index.js.map +0 -1
- package/dist/components/_dropzone/index.cjs +0 -2
- package/dist/components/_dropzone/index.cjs.map +0 -1
- package/dist/components/_dropzone/index.js.map +0 -1
- package/dist/components/_editor/index.cjs +0 -58
- package/dist/components/_editor/index.cjs.map +0 -1
- package/dist/components/_editor/index.js.map +0 -1
- package/dist/components/_menu/index.cjs +0 -2
- package/dist/components/_menu/index.cjs.map +0 -1
- package/dist/components/_menu/index.js.map +0 -1
- package/dist/components/_messages/index.cjs +0 -2
- package/dist/components/_messages/index.cjs.map +0 -1
- package/dist/components/_messages/index.js +0 -37
- package/dist/components/_messages/index.js.map +0 -1
- package/dist/components/_portal/index.cjs +0 -2
- package/dist/components/_portal/index.cjs.map +0 -1
- package/dist/components/_portal/index.js +0 -26
- package/dist/components/_portal/index.js.map +0 -1
- package/dist/components/_sortable/index.cjs +0 -2
- package/dist/components/_sortable/index.cjs.map +0 -1
- package/dist/components/_toasts/index.cjs +0 -2
- package/dist/components/_toasts/index.cjs.map +0 -1
- package/dist/components/_widget/index.cjs +0 -2
- package/dist/components/_widget/index.cjs.map +0 -1
- package/dist/components/_widget/index.js.map +0 -1
- package/dist/components/accordion/index.cjs +0 -2
- package/dist/components/accordion/index.cjs.map +0 -1
- package/dist/components/accordion/index.js +0 -21
- package/dist/components/accordion/index.js.map +0 -1
- package/dist/icons-D6XjzxSX.js +0 -81
- package/dist/icons-D6XjzxSX.js.map +0 -1
- package/dist/icons-s-lGsxio.cjs +0 -2
- package/dist/icons-s-lGsxio.cjs.map +0 -1
- package/dist/index-BMYV_5ZN.js +0 -42
- package/dist/index-BMYV_5ZN.js.map +0 -1
- package/dist/index-FM_lJcIM.cjs +0 -2
- package/dist/index-FM_lJcIM.cjs.map +0 -1
- package/dist/styles.module-BON5Bi9g.cjs +0 -2
- package/dist/styles.module-BON5Bi9g.cjs.map +0 -1
- package/dist/styles.module-DbpbMZGd.js +0 -10
- package/dist/styles.module-DbpbMZGd.js.map +0 -1
- package/dist/utils--n2yqjCy.js +0 -45
- package/dist/utils--n2yqjCy.js.map +0 -1
- package/dist/utils-DBzf7CFq.cjs +0 -2
- package/dist/utils-DBzf7CFq.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/iframe/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { type ComponentPropsWithoutRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Button } from '../button';\nimport { Dialog } from '../dialog';\nimport styles from './styles.module.css';\n\nconst MIN_AUTO_HEIGHT = 120;\nconst MAX_AUTO_HEIGHT = 12000;\nconst AUTO_HEIGHT_BUFFER = 8;\n\nexport type IframeProps = Omit<ComponentPropsWithoutRef<'iframe'>, 'src' | 'srcDoc' | 'title'> & {\n accessibleLabel: string;\n autoResize?: boolean;\n closeFullscreenLabel?: string;\n fullscreenLabel?: string;\n hasFullscreenView?: boolean;\n srcDoc: string;\n};\n\nexport const Iframe = ({\n accessibleLabel,\n autoResize = false,\n className,\n closeFullscreenLabel = 'Close fullscreen',\n fullscreenLabel = 'View in fullscreen',\n hasFullscreenView = true,\n loading = 'lazy',\n onLoad,\n referrerPolicy = 'no-referrer',\n sandbox = '',\n srcDoc,\n style,\n ...props\n}: IframeProps) => {\n const iframeRef = useRef<HTMLIFrameElement>(null);\n const measurementFrameRef = useRef<number | null>(null);\n const followUpMeasurementTimeoutRef = useRef<number | null>(null);\n const [measuredHeight, setMeasuredHeight] = useState(MIN_AUTO_HEIGHT);\n const [isFullscreenOpen, setIsFullscreenOpen] = useState(false);\n\n const clearScheduledMeasurements = useCallback(() => {\n if (measurementFrameRef.current !== null) {\n window.cancelAnimationFrame(measurementFrameRef.current);\n measurementFrameRef.current = null;\n }\n\n if (followUpMeasurementTimeoutRef.current !== null) {\n window.clearTimeout(followUpMeasurementTimeoutRef.current);\n followUpMeasurementTimeoutRef.current = null;\n }\n }, []);\n\n const measureSize = useCallback(() => {\n if (!autoResize) return;\n\n const iframe = iframeRef.current;\n const iframeDocument = iframe?.contentDocument;\n if (!iframe || !iframeDocument) return;\n\n const renderedHeight = iframe.style.height;\n\n try {\n // measure from a stable viewport height so content sized with percentages or\n // viewport units cannot feed the iframe's previous height back into itself\n iframe.style.height = `${MIN_AUTO_HEIGHT}px`;\n\n const content =\n iframeDocument.querySelector<HTMLElement>('[data-iframe-content]') ?? iframeDocument.body;\n const contentRect = content.getBoundingClientRect();\n const { body, documentElement } = iframeDocument;\n const height = Math.min(\n Math.max(\n Math.ceil(\n Math.max(\n content.scrollHeight,\n content.offsetHeight,\n contentRect.height,\n body.scrollHeight,\n body.offsetHeight,\n documentElement.scrollHeight,\n documentElement.offsetHeight\n ) + AUTO_HEIGHT_BUFFER\n ),\n MIN_AUTO_HEIGHT\n ),\n MAX_AUTO_HEIGHT\n );\n\n setMeasuredHeight(height);\n } catch {\n // cross-origin iframe content cannot be measured; retain minimum height\n } finally {\n iframe.style.height = renderedHeight;\n }\n }, [autoResize]);\n\n const scheduleSizeMeasurement = useCallback(() => {\n if (!autoResize || measurementFrameRef.current !== null) return;\n\n measurementFrameRef.current = window.requestAnimationFrame(() => {\n measurementFrameRef.current = null;\n measureSize();\n\n if (followUpMeasurementTimeoutRef.current !== null) {\n window.clearTimeout(followUpMeasurementTimeoutRef.current);\n }\n\n followUpMeasurementTimeoutRef.current = window.setTimeout(() => {\n followUpMeasurementTimeoutRef.current = null;\n measureSize();\n }, 250);\n });\n }, [autoResize, measureSize]);\n\n const handleLoad: NonNullable<IframeProps['onLoad']> = (event) => {\n scheduleSizeMeasurement();\n\n const iframeDocument = iframeRef.current?.contentDocument;\n Array.from(iframeDocument?.images ?? []).forEach((image) => {\n if (image.complete) return;\n image.addEventListener('load', scheduleSizeMeasurement, { once: true });\n image.addEventListener('error', scheduleSizeMeasurement, { once: true });\n });\n iframeDocument?.fonts?.ready.then(scheduleSizeMeasurement).catch(() => undefined);\n\n onLoad?.(event);\n };\n\n useEffect(() => {\n if (!autoResize) return undefined;\n\n clearScheduledMeasurements();\n setMeasuredHeight(MIN_AUTO_HEIGHT);\n scheduleSizeMeasurement();\n\n return clearScheduledMeasurements;\n }, [autoResize, clearScheduledMeasurements, scheduleSizeMeasurement, srcDoc]);\n\n useEffect(() => {\n if (!autoResize) return undefined;\n\n window.addEventListener('resize', scheduleSizeMeasurement);\n window.visualViewport?.addEventListener('resize', scheduleSizeMeasurement);\n\n return () => {\n window.removeEventListener('resize', scheduleSizeMeasurement);\n window.visualViewport?.removeEventListener('resize', scheduleSizeMeasurement);\n };\n }, [autoResize, scheduleSizeMeasurement]);\n\n return (\n <div className={styles.wrapper}>\n {hasFullscreenView && (\n <div className={styles.toolbar}>\n <Button\n aria-expanded={isFullscreenOpen}\n aria-haspopup='dialog'\n onClick={() => setIsFullscreenOpen(true)}\n variant='tertiary'\n >\n {fullscreenLabel}\n </Button>\n </div>\n )}\n <iframe\n {...props}\n className={cx(styles.iframe, className)}\n loading={loading}\n onLoad={handleLoad}\n ref={iframeRef}\n referrerPolicy={referrerPolicy}\n sandbox={sandbox}\n srcDoc={srcDoc}\n style={\n autoResize\n ? {\n ...style,\n height: measuredHeight,\n minHeight: MIN_AUTO_HEIGHT,\n }\n : style\n }\n title={accessibleLabel}\n />\n {isFullscreenOpen && (\n <Dialog\n aria-label={`${accessibleLabel} fullscreen`}\n className={styles['fullscreen-dialog']}\n onKeyDown={(event) => {\n if (event.key === 'Escape') setIsFullscreenOpen(false);\n }}\n open\n setOpen={setIsFullscreenOpen}\n >\n <div className={styles['fullscreen-toolbar']}>\n <Button\n autoFocus\n onClick={() => setIsFullscreenOpen(false)}\n >\n {closeFullscreenLabel}\n </Button>\n </div>\n <iframe\n {...props}\n className={cx(styles.iframe, styles['fullscreen-iframe'], className)}\n loading='eager'\n referrerPolicy={referrerPolicy}\n sandbox={sandbox}\n srcDoc={srcDoc}\n title={`${accessibleLabel} fullscreen`}\n />\n </Dialog>\n )}\n </div>\n );\n};\n"],"names":["MIN_AUTO_HEIGHT","MAX_AUTO_HEIGHT","AUTO_HEIGHT_BUFFER","Iframe","accessibleLabel","autoResize","className","closeFullscreenLabel","fullscreenLabel","hasFullscreenView","loading","onLoad","referrerPolicy","sandbox","srcDoc","style","props","iframeRef","useRef","measurementFrameRef","followUpMeasurementTimeoutRef","measuredHeight","setMeasuredHeight","useState","isFullscreenOpen","setIsFullscreenOpen","clearScheduledMeasurements","useCallback","current","window","cancelAnimationFrame","clearTimeout","measureSize","iframe","iframeDocument","contentDocument","renderedHeight","height","content","querySelector","body","contentRect","getBoundingClientRect","documentElement","Math","min","max","ceil","scrollHeight","offsetHeight","scheduleSizeMeasurement","requestAnimationFrame","setTimeout","handleLoad","event","Array","from","images","forEach","image","complete","addEventListener","once","fonts","ready","then","catch","useEffect","visualViewport","removeEventListener","styles","wrapper","toolbar","jsx","Button","cx","minHeight","jsxs","Dialog","key"],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { jsxs as I, jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { t as N } from "../../classix-DG18itHa.js";
|
|
3
|
+
import { useRef as v, useState as O, useCallback as H, useEffect as C } from "react";
|
|
4
|
+
import { Button as S } from "../button/index.js";
|
|
5
|
+
import { Dialog as L } from "../dialog/index.js";
|
|
6
|
+
import '../../assets/index18.css';const K = "_wrapper_2h6kn_1", X = "_toolbar_2h6kn_6", D = "_iframe_2h6kn_16", o = {
|
|
7
|
+
wrapper: K,
|
|
8
|
+
toolbar: X,
|
|
9
|
+
"fullscreen-toolbar": "_fullscreen-toolbar_2h6kn_7",
|
|
10
|
+
iframe: D,
|
|
11
|
+
"fullscreen-dialog": "_fullscreen-dialog_2h6kn_22",
|
|
12
|
+
"fullscreen-iframe": "_fullscreen-iframe_2h6kn_39"
|
|
13
|
+
}, u = 120, J = 12e3, Q = 8, R = ({
|
|
14
|
+
accessibleLabel: d,
|
|
15
|
+
autoResize: n = !1,
|
|
16
|
+
className: y,
|
|
17
|
+
closeFullscreenLabel: U = "Close fullscreen",
|
|
18
|
+
fullscreenLabel: B = "View in fullscreen",
|
|
19
|
+
hasFullscreenView: G = !0,
|
|
20
|
+
loading: V = "lazy",
|
|
21
|
+
onLoad: h,
|
|
22
|
+
referrerPolicy: E = "no-referrer",
|
|
23
|
+
sandbox: k = "",
|
|
24
|
+
srcDoc: p,
|
|
25
|
+
style: M,
|
|
26
|
+
...T
|
|
27
|
+
}) => {
|
|
28
|
+
const w = v(null), i = v(null), l = v(null), [$, F] = O(u), [A, f] = O(!1), g = H(() => {
|
|
29
|
+
i.current !== null && (window.cancelAnimationFrame(i.current), i.current = null), l.current !== null && (window.clearTimeout(l.current), l.current = null);
|
|
30
|
+
}, []), _ = H(() => {
|
|
31
|
+
if (!n) return;
|
|
32
|
+
const e = w.current, r = e == null ? void 0 : e.contentDocument;
|
|
33
|
+
if (!e || !r) return;
|
|
34
|
+
const m = e.style.height;
|
|
35
|
+
try {
|
|
36
|
+
e.style.height = `${u}px`;
|
|
37
|
+
const c = r.querySelector("[data-iframe-content]") ?? r.body, a = c.getBoundingClientRect(), {
|
|
38
|
+
body: b,
|
|
39
|
+
documentElement: x
|
|
40
|
+
} = r, q = Math.min(Math.max(Math.ceil(Math.max(c.scrollHeight, c.offsetHeight, a.height, b.scrollHeight, b.offsetHeight, x.scrollHeight, x.offsetHeight) + Q), u), J);
|
|
41
|
+
F(q);
|
|
42
|
+
} catch {
|
|
43
|
+
} finally {
|
|
44
|
+
e.style.height = m;
|
|
45
|
+
}
|
|
46
|
+
}, [n]), t = H(() => {
|
|
47
|
+
!n || i.current !== null || (i.current = window.requestAnimationFrame(() => {
|
|
48
|
+
i.current = null, _(), l.current !== null && window.clearTimeout(l.current), l.current = window.setTimeout(() => {
|
|
49
|
+
l.current = null, _();
|
|
50
|
+
}, 250);
|
|
51
|
+
}));
|
|
52
|
+
}, [n, _]), j = (e) => {
|
|
53
|
+
var m, c;
|
|
54
|
+
t();
|
|
55
|
+
const r = (m = w.current) == null ? void 0 : m.contentDocument;
|
|
56
|
+
Array.from((r == null ? void 0 : r.images) ?? []).forEach((a) => {
|
|
57
|
+
a.complete || (a.addEventListener("load", t, {
|
|
58
|
+
once: !0
|
|
59
|
+
}), a.addEventListener("error", t, {
|
|
60
|
+
once: !0
|
|
61
|
+
}));
|
|
62
|
+
}), (c = r == null ? void 0 : r.fonts) == null || c.ready.then(t).catch(() => {
|
|
63
|
+
}), h == null || h(e);
|
|
64
|
+
};
|
|
65
|
+
return C(() => {
|
|
66
|
+
if (n)
|
|
67
|
+
return g(), F(u), t(), g;
|
|
68
|
+
}, [n, g, t, p]), C(() => {
|
|
69
|
+
var e;
|
|
70
|
+
if (n)
|
|
71
|
+
return window.addEventListener("resize", t), (e = window.visualViewport) == null || e.addEventListener("resize", t), () => {
|
|
72
|
+
var r;
|
|
73
|
+
window.removeEventListener("resize", t), (r = window.visualViewport) == null || r.removeEventListener("resize", t);
|
|
74
|
+
};
|
|
75
|
+
}, [n, t]), /* @__PURE__ */ I("div", { className: o.wrapper, "data-component": "iframe", children: [
|
|
76
|
+
G && /* @__PURE__ */ s("div", { className: o.toolbar, children: /* @__PURE__ */ s(S, { "aria-expanded": A, "aria-haspopup": "dialog", onClick: () => f(!0), variant: "tertiary", children: B }) }),
|
|
77
|
+
/* @__PURE__ */ s("iframe", { ...T, className: N(o.iframe, y), loading: V, onLoad: j, ref: w, referrerPolicy: E, sandbox: k, srcDoc: p, style: n ? {
|
|
78
|
+
...M,
|
|
79
|
+
height: $,
|
|
80
|
+
minHeight: u
|
|
81
|
+
} : M, title: d }),
|
|
82
|
+
A && /* @__PURE__ */ I(L, { "aria-label": `${d} fullscreen`, className: o["fullscreen-dialog"], onKeyDown: (e) => {
|
|
83
|
+
e.key === "Escape" && f(!1);
|
|
84
|
+
}, open: !0, setOpen: f, children: [
|
|
85
|
+
/* @__PURE__ */ s("div", { className: o["fullscreen-toolbar"], children: /* @__PURE__ */ s(S, { autoFocus: !0, onClick: () => f(!1), children: U }) }),
|
|
86
|
+
/* @__PURE__ */ s("iframe", { ...T, className: N(o.iframe, o["fullscreen-iframe"], y), loading: "eager", referrerPolicy: E, sandbox: k, srcDoc: p, title: `${d} fullscreen` })
|
|
87
|
+
] })
|
|
88
|
+
] });
|
|
89
|
+
};
|
|
90
|
+
export {
|
|
91
|
+
R as Iframe
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/iframe/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { type ComponentPropsWithoutRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Button } from '../button';\nimport { Dialog } from '../dialog';\nimport styles from './styles.module.css';\n\nconst MIN_AUTO_HEIGHT = 120;\nconst MAX_AUTO_HEIGHT = 12000;\nconst AUTO_HEIGHT_BUFFER = 8;\n\nexport type IframeProps = Omit<ComponentPropsWithoutRef<'iframe'>, 'src' | 'srcDoc' | 'title'> & {\n accessibleLabel: string;\n autoResize?: boolean;\n closeFullscreenLabel?: string;\n fullscreenLabel?: string;\n hasFullscreenView?: boolean;\n srcDoc: string;\n};\n\nexport const Iframe = ({\n accessibleLabel,\n autoResize = false,\n className,\n closeFullscreenLabel = 'Close fullscreen',\n fullscreenLabel = 'View in fullscreen',\n hasFullscreenView = true,\n loading = 'lazy',\n onLoad,\n referrerPolicy = 'no-referrer',\n sandbox = '',\n srcDoc,\n style,\n ...props\n}: IframeProps) => {\n const iframeRef = useRef<HTMLIFrameElement>(null);\n const measurementFrameRef = useRef<number | null>(null);\n const followUpMeasurementTimeoutRef = useRef<number | null>(null);\n const [measuredHeight, setMeasuredHeight] = useState(MIN_AUTO_HEIGHT);\n const [isFullscreenOpen, setIsFullscreenOpen] = useState(false);\n\n const clearScheduledMeasurements = useCallback(() => {\n if (measurementFrameRef.current !== null) {\n window.cancelAnimationFrame(measurementFrameRef.current);\n measurementFrameRef.current = null;\n }\n\n if (followUpMeasurementTimeoutRef.current !== null) {\n window.clearTimeout(followUpMeasurementTimeoutRef.current);\n followUpMeasurementTimeoutRef.current = null;\n }\n }, []);\n\n const measureSize = useCallback(() => {\n if (!autoResize) return;\n\n const iframe = iframeRef.current;\n const iframeDocument = iframe?.contentDocument;\n if (!iframe || !iframeDocument) return;\n\n const renderedHeight = iframe.style.height;\n\n try {\n // measure from a stable viewport height so content sized with percentages or\n // viewport units cannot feed the iframe's previous height back into itself\n iframe.style.height = `${MIN_AUTO_HEIGHT}px`;\n\n const content =\n iframeDocument.querySelector<HTMLElement>('[data-iframe-content]') ?? iframeDocument.body;\n const contentRect = content.getBoundingClientRect();\n const { body, documentElement } = iframeDocument;\n const height = Math.min(\n Math.max(\n Math.ceil(\n Math.max(\n content.scrollHeight,\n content.offsetHeight,\n contentRect.height,\n body.scrollHeight,\n body.offsetHeight,\n documentElement.scrollHeight,\n documentElement.offsetHeight\n ) + AUTO_HEIGHT_BUFFER\n ),\n MIN_AUTO_HEIGHT\n ),\n MAX_AUTO_HEIGHT\n );\n\n setMeasuredHeight(height);\n } catch {\n // cross-origin iframe content cannot be measured; retain minimum height\n } finally {\n iframe.style.height = renderedHeight;\n }\n }, [autoResize]);\n\n const scheduleSizeMeasurement = useCallback(() => {\n if (!autoResize || measurementFrameRef.current !== null) return;\n\n measurementFrameRef.current = window.requestAnimationFrame(() => {\n measurementFrameRef.current = null;\n measureSize();\n\n if (followUpMeasurementTimeoutRef.current !== null) {\n window.clearTimeout(followUpMeasurementTimeoutRef.current);\n }\n\n followUpMeasurementTimeoutRef.current = window.setTimeout(() => {\n followUpMeasurementTimeoutRef.current = null;\n measureSize();\n }, 250);\n });\n }, [autoResize, measureSize]);\n\n const handleLoad: NonNullable<IframeProps['onLoad']> = (event) => {\n scheduleSizeMeasurement();\n\n const iframeDocument = iframeRef.current?.contentDocument;\n Array.from(iframeDocument?.images ?? []).forEach((image) => {\n if (image.complete) return;\n image.addEventListener('load', scheduleSizeMeasurement, { once: true });\n image.addEventListener('error', scheduleSizeMeasurement, { once: true });\n });\n iframeDocument?.fonts?.ready.then(scheduleSizeMeasurement).catch(() => undefined);\n\n onLoad?.(event);\n };\n\n useEffect(() => {\n if (!autoResize) return undefined;\n\n clearScheduledMeasurements();\n setMeasuredHeight(MIN_AUTO_HEIGHT);\n scheduleSizeMeasurement();\n\n return clearScheduledMeasurements;\n }, [autoResize, clearScheduledMeasurements, scheduleSizeMeasurement, srcDoc]);\n\n useEffect(() => {\n if (!autoResize) return undefined;\n\n window.addEventListener('resize', scheduleSizeMeasurement);\n window.visualViewport?.addEventListener('resize', scheduleSizeMeasurement);\n\n return () => {\n window.removeEventListener('resize', scheduleSizeMeasurement);\n window.visualViewport?.removeEventListener('resize', scheduleSizeMeasurement);\n };\n }, [autoResize, scheduleSizeMeasurement]);\n\n return (\n <div className={styles.wrapper}>\n {hasFullscreenView && (\n <div className={styles.toolbar}>\n <Button\n aria-expanded={isFullscreenOpen}\n aria-haspopup='dialog'\n onClick={() => setIsFullscreenOpen(true)}\n variant='tertiary'\n >\n {fullscreenLabel}\n </Button>\n </div>\n )}\n <iframe\n {...props}\n className={cx(styles.iframe, className)}\n loading={loading}\n onLoad={handleLoad}\n ref={iframeRef}\n referrerPolicy={referrerPolicy}\n sandbox={sandbox}\n srcDoc={srcDoc}\n style={\n autoResize\n ? {\n ...style,\n height: measuredHeight,\n minHeight: MIN_AUTO_HEIGHT,\n }\n : style\n }\n title={accessibleLabel}\n />\n {isFullscreenOpen && (\n <Dialog\n aria-label={`${accessibleLabel} fullscreen`}\n className={styles['fullscreen-dialog']}\n onKeyDown={(event) => {\n if (event.key === 'Escape') setIsFullscreenOpen(false);\n }}\n open\n setOpen={setIsFullscreenOpen}\n >\n <div className={styles['fullscreen-toolbar']}>\n <Button\n autoFocus\n onClick={() => setIsFullscreenOpen(false)}\n >\n {closeFullscreenLabel}\n </Button>\n </div>\n <iframe\n {...props}\n className={cx(styles.iframe, styles['fullscreen-iframe'], className)}\n loading='eager'\n referrerPolicy={referrerPolicy}\n sandbox={sandbox}\n srcDoc={srcDoc}\n title={`${accessibleLabel} fullscreen`}\n />\n </Dialog>\n )}\n </div>\n );\n};\n"],"names":["MIN_AUTO_HEIGHT","MAX_AUTO_HEIGHT","AUTO_HEIGHT_BUFFER","Iframe","accessibleLabel","autoResize","className","closeFullscreenLabel","fullscreenLabel","hasFullscreenView","loading","onLoad","referrerPolicy","sandbox","srcDoc","style","props","iframeRef","useRef","measurementFrameRef","followUpMeasurementTimeoutRef","measuredHeight","setMeasuredHeight","useState","isFullscreenOpen","setIsFullscreenOpen","clearScheduledMeasurements","useCallback","current","window","cancelAnimationFrame","clearTimeout","measureSize","iframe","iframeDocument","contentDocument","renderedHeight","height","content","querySelector","body","contentRect","getBoundingClientRect","documentElement","Math","min","max","ceil","scrollHeight","offsetHeight","scheduleSizeMeasurement","requestAnimationFrame","setTimeout","handleLoad","event","Array","from","images","forEach","image","complete","addEventListener","once","fonts","ready","then","catch","useEffect","visualViewport","removeEventListener","styles","wrapper","toolbar","jsx","Button","cx","minHeight","jsxs","Dialog","key"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index17.css');const d=require("react/jsx-runtime"),c=require("react"),o="_image_14j8z_1",y={image:o};function S({fadeDurationMs:n=250,showOnError:r=!0,onLoad:a,onError:i,style:l,...t}){const u=c.useRef(null),[m,s]=c.useState(!1);c.useEffect(()=>{s(!1)},[t.src,t.srcSet]),c.useEffect(()=>{const e=u.current;e&&e.complete&&e.naturalWidth>0&&s(!0)},[t.src,t.srcSet]);const f=e=>{s(!0),a==null||a(e)},g=e=>{r&&s(!0),i==null||i(e)};return d.jsx("img",{...t,className:y.image,onLoad:f,onError:g,ref:u,style:{...l,opacity:m?1:0,"--duration-override":`${n}ms`},"data-component":"image"})}exports.Image=S;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as g } from "react/jsx-runtime";
|
|
2
2
|
import { useRef as o, useState as h, useEffect as m } from "react";
|
|
3
|
-
import '../../assets/
|
|
3
|
+
import '../../assets/index17.css';const y = "_image_14j8z_1", S = {
|
|
4
4
|
image: y
|
|
5
5
|
};
|
|
6
6
|
function x({
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("react/jsx-runtime");require("../../classix-5H4IWnMA.cjs");require("react");require("../../icons-DYCSlAoX.cjs");const e=require("../../index-iItPktfX.cjs");require("../../use-touched-D_TJ8wDc.cjs");exports.Input=e.Input;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,56 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
function A({
|
|
8
|
-
className: L,
|
|
9
|
-
defaultCountryCode: m = "+47",
|
|
10
|
-
disabled: u = !1,
|
|
11
|
-
icon: i,
|
|
12
|
-
label: h,
|
|
13
|
-
placeholder: d,
|
|
14
|
-
ref: v,
|
|
15
|
-
required: c,
|
|
16
|
-
type: t = "text",
|
|
17
|
-
...e
|
|
18
|
-
}) {
|
|
19
|
-
const [l, g] = S(""), [r, f] = S(""), {
|
|
20
|
-
onChange: P,
|
|
21
|
-
value: p,
|
|
22
|
-
...T
|
|
23
|
-
} = e, {
|
|
24
|
-
touched: x,
|
|
25
|
-
onBlur: C
|
|
26
|
-
} = E(p === ""), N = i && t !== "radio" && t !== "datetime-local" ? {
|
|
27
|
-
"--icon-svg": B(i, !0)
|
|
28
|
-
} : void 0;
|
|
29
|
-
I(() => {
|
|
30
|
-
if (typeof e.onChange == "function" && t === "tel") {
|
|
31
|
-
const a = {
|
|
32
|
-
name: e.name,
|
|
33
|
-
value: r ? (l || m).split(" ").join("") + r.split(" ").join("") : void 0
|
|
34
|
-
};
|
|
35
|
-
e.onChange({
|
|
36
|
-
target: a,
|
|
37
|
-
currentTarget: a
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}, [l, r]), I(() => {
|
|
41
|
-
t === "tel" && !e.value && (f(""), g(""));
|
|
42
|
-
}, [e.value, t]);
|
|
43
|
-
const V = /* @__PURE__ */ j(w, { children: [
|
|
44
|
-
/* @__PURE__ */ o("input", { disabled: u, hidden: !0, onChange: P, pattern: void 0, placeholder: d, ref: v, type: t, value: p }),
|
|
45
|
-
/* @__PURE__ */ o("input", { type: "text", className: s(n.code, n.input), disabled: u, maxLength: 5, onChange: (a) => g(a.target.value), placeholder: m, value: l }),
|
|
46
|
-
/* @__PURE__ */ o("input", { type: "tel", className: s(n.input, x && n.touched), "data-icon": i ? "true" : void 0, disabled: u, maxLength: 14, name: void 0, onChange: (a) => f(a.target.value), onBlur: C, pattern: e.pattern, required: c, style: N, value: r, ...T })
|
|
47
|
-
] });
|
|
48
|
-
return /* @__PURE__ */ j("label", { className: n.label, "data-component": "input", children: [
|
|
49
|
-
h && /* @__PURE__ */ o("span", { "data-required": c || void 0, children: h }),
|
|
50
|
-
t === "tel" ? V : /* @__PURE__ */ o("input", { ref: v, className: s(n.input, L, x && n.touched), "data-icon": i ? "true" : void 0, disabled: u, onBlur: C, placeholder: d, required: c, style: N, type: t, ...e })
|
|
51
|
-
] });
|
|
52
|
-
}
|
|
1
|
+
import "react/jsx-runtime";
|
|
2
|
+
import "../../classix-DG18itHa.js";
|
|
3
|
+
import "react";
|
|
4
|
+
import "../../icons-CKzd_L4D.js";
|
|
5
|
+
import { I as a } from "../../index-DS2cY2g4.js";
|
|
6
|
+
import "../../use-touched-DXIJVVzz.js";
|
|
53
7
|
export {
|
|
54
|
-
|
|
8
|
+
a as Input
|
|
55
9
|
};
|
|
56
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index47.css');const s=require("react/jsx-runtime"),l=require("../../classix-5H4IWnMA.cjs"),m="_link_xhd9q_1",o="_primary_xhd9q_7",c="_danger_xhd9q_13",_="_minimal_xhd9q_21",n={link:m,primary:o,danger:c,minimal:_},d=({children:i,className:r,to:e="#",variant:t="primary",...a})=>s.jsx("a",{className:l.t(r,n.link,n[t]),href:e,...a,"data-component":"link",children:i});exports.Link=d;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as o } from "react/jsx-runtime";
|
|
2
2
|
import { t as _ } from "../../classix-DG18itHa.js";
|
|
3
|
-
import '../../assets/
|
|
3
|
+
import '../../assets/index47.css';const s = "_link_xhd9q_1", l = "_primary_xhd9q_7", e = "_danger_xhd9q_13", c = "_minimal_xhd9q_21", n = {
|
|
4
4
|
link: s,
|
|
5
5
|
primary: l,
|
|
6
6
|
danger: e,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index48.css');const r=require("react/jsx-runtime"),j=require("../../classix-5H4IWnMA.cjs"),l=require("react");function E(n){return l.isValidElement(n)&&n.type===l.Fragment}function x(n,s=[]){return l.Children.forEach(n,e=>{E(e)?x(e.props.children,s):s.push(e)}),s}function h(n,{wrapper:s="li"}={}){return x(n).filter(t=>t!==null).map((t,c)=>{if(l.isValidElement(t)&&t.type===s)return t;const a=l.isValidElement(t)&&t.key!=null?t.key:c;return l.createElement(s,{key:a},t)})}const N="_controls_1lnsr_1",d="_horizontal_1lnsr_6",g="_list_1lnsr_17",p="_columns_1lnsr_58",o={controls:N,horizontal:d,list:g,columns:p};function z({children:n,className:s,columns:e=1,controls:i,horizontal:t,ordered:c,style:a,...u}){const m=Number.isFinite(e)?Math.max(1,Math.floor(e)):1,f=j.t(s,o.list,m>1&&o.columns,t&&o.horizontal),_={...a,"--list-columns":m},y=c?r.jsx("ol",{className:f,style:_,...u,children:h(n)}):r.jsx("ul",{className:f,style:_,...u,children:h(n)});return i==null?y:r.jsxs(r.Fragment,{children:[r.jsx("div",{className:o.controls,children:i}),y]})}exports.List=z;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/lib/
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/lib/wrap-children.tsx","../../../src/components/list/index.tsx"],"sourcesContent":["import React, { JSX } from 'react';\n\ntype WrapOptions<T extends keyof JSX.IntrinsicElements = 'li'> = {\n wrapper?: T;\n};\n\nfunction isFragmentElement(\n node: React.ReactNode\n): node is React.ReactElement<{ children?: React.ReactNode }> {\n return React.isValidElement(node) && node.type === React.Fragment;\n}\n\nfunction flattenChildren(children: React.ReactNode, out: React.ReactNode[] = []) {\n React.Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n flattenChildren(child.props.children, out);\n } else {\n out.push(child);\n }\n });\n return out;\n}\n\nexport function wrapChildren<T extends keyof JSX.IntrinsicElements = 'li'>(\n children: React.ReactNode,\n { wrapper = 'li' as T }: WrapOptions<T> = {}\n) {\n const flat = flattenChildren(children);\n\n const filterNull = flat.filter((child) => child !== null);\n\n return filterNull.map((child, i) => {\n if (React.isValidElement(child) && child.type === wrapper) {\n return child;\n }\n\n const key = React.isValidElement(child) && child.key != null ? child.key : i;\n\n return React.createElement(wrapper, { key }, child);\n });\n}\n","import cx from 'classix';\n\nimport { wrapChildren } from '@/lib/wrap-children';\n\nimport styles from './styles.module.css';\n\nexport type ListProps = React.ComponentPropsWithoutRef<'ul'> & {\n columns?: number;\n controls?: React.ReactNode;\n horizontal?: boolean;\n ordered?: boolean;\n};\n\nexport function List({\n children,\n className,\n columns = 1,\n controls,\n horizontal,\n ordered,\n style,\n ...props\n}: ListProps) {\n const cols = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;\n\n const classes = cx(\n className,\n styles.list,\n cols > 1 && styles.columns,\n horizontal && styles.horizontal\n );\n\n type withVars = React.CSSProperties & {\n '--list-columns'?: number;\n };\n\n const withVars: withVars = {\n ...style,\n '--list-columns': cols,\n };\n\n const list = ordered ? (\n <ol\n className={classes}\n style={withVars}\n {...props}\n >\n {wrapChildren(children)}\n </ol>\n ) : (\n <ul\n className={classes}\n style={withVars}\n {...props}\n >\n {wrapChildren(children)}\n </ul>\n );\n\n if (controls === undefined || controls === null) return list;\n\n return (\n <>\n <div className={styles.controls}>{controls}</div>\n {list}\n </>\n );\n}\n"],"names":["isFragmentElement","node","React","isValidElement","type","Fragment","flattenChildren","children","out","Children","forEach","child","props","push","wrapChildren","wrapper","filter","map","i","key","createElement","List","className","columns","controls","horizontal","ordered","style","cols","Number","isFinite","Math","max","floor","classes","cx","styles","list","withVars","jsx","jsxs"],"mappings":"gLAMA,SAASA,EACPC,EAC4D,CAC5D,OAAOC,EAAMC,eAAeF,CAAI,GAAKA,EAAKG,OAASF,EAAMG,QAC3D,CAEA,SAASC,EAAgBC,EAA2BC,EAAyB,GAAI,CAC/EN,OAAAA,EAAMO,SAASC,QAAQH,EAAWI,GAAU,CACtCX,EAAkBW,CAAK,EACzBL,EAAgBK,EAAMC,MAAML,SAAUC,CAAG,EAEzCA,EAAIK,KAAKF,CAAK,CAElB,CAAC,EACMH,CACT,CAEO,SAASM,EACdP,EACA,CAAEQ,QAAAA,EAAU,IAA0B,EAAI,GAC1C,CAKA,OAJaT,EAAgBC,CAAQ,EAEbS,OAAQL,GAAUA,IAAU,IAAI,EAEtCM,IAAI,CAACN,EAAOO,IAAM,CAClC,GAAIhB,EAAMC,eAAeQ,CAAK,GAAKA,EAAMP,OAASW,EAChD,OAAOJ,EAGT,MAAMQ,EAAMjB,EAAMC,eAAeQ,CAAK,GAAKA,EAAMQ,KAAO,KAAOR,EAAMQ,IAAMD,EAE3E,OAAOhB,EAAMkB,cAAcL,EAAS,CAAEI,IAAAA,CAAAA,EAAOR,CAAK,CACpD,CAAC,CACH,2IC3BO,SAASU,EAAK,CACnBd,SAAAA,EACAe,UAAAA,EACAC,QAAAA,EAAU,EACVC,SAAAA,EACAC,WAAAA,EACAC,QAAAA,EACAC,MAAAA,EACA,GAAGf,CACM,EAAG,CACZ,MAAMgB,EAAOC,OAAOC,SAASP,CAAO,EAAIQ,KAAKC,IAAI,EAAGD,KAAKE,MAAMV,CAAO,CAAC,EAAI,EAErEW,EAAUC,EAAAA,EACdb,EACAc,EAAOC,KACPT,EAAO,GAAKQ,EAAOb,QACnBE,GAAcW,EAAOX,UACvB,EAMMa,EAAqB,CACzB,GAAGX,EACH,iBAAkBC,CAAAA,EAGdS,EAAOX,EACXa,MAAC,KAAA,CACC,UAAWL,EACX,MAAOI,EACP,GAAI1B,EAEHE,SAAAA,EAAaP,CAAQ,EACxB,EAEAgC,EAAAA,IAAC,KAAA,CACC,UAAWL,EACX,MAAOI,EACP,GAAI1B,EAEHE,SAAAA,EAAaP,CAAQ,CAAA,CACxB,EAGF,OAA8BiB,GAAa,KAAaa,EAGtDG,EAAAA,KAAAnC,WAAA,CACE,SAAA,CAAAkC,EAAAA,IAAC,MAAA,CAAI,UAAWH,EAAOZ,SAAWA,SAAAA,EAAS,EAC1Ca,CAAAA,EACH,CAEJ"}
|
|
@@ -1,47 +1,52 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { t as
|
|
3
|
-
import
|
|
4
|
-
import '../../assets/
|
|
5
|
-
return
|
|
1
|
+
import { jsx as c, jsxs as E, Fragment as N } from "react/jsx-runtime";
|
|
2
|
+
import { t as d } from "../../classix-DG18itHa.js";
|
|
3
|
+
import e from "react";
|
|
4
|
+
import '../../assets/index48.css';function x(n) {
|
|
5
|
+
return e.isValidElement(n) && n.type === e.Fragment;
|
|
6
6
|
}
|
|
7
|
-
function p(n,
|
|
8
|
-
return
|
|
9
|
-
|
|
10
|
-
}),
|
|
7
|
+
function p(n, l = []) {
|
|
8
|
+
return e.Children.forEach(n, (s) => {
|
|
9
|
+
x(s) ? p(s.props.children, l) : l.push(s);
|
|
10
|
+
}), l;
|
|
11
11
|
}
|
|
12
|
-
function
|
|
13
|
-
wrapper:
|
|
12
|
+
function y(n, {
|
|
13
|
+
wrapper: l = "li"
|
|
14
14
|
} = {}) {
|
|
15
|
-
return p(n).filter((t) => t !== null).map((t,
|
|
16
|
-
if (
|
|
15
|
+
return p(n).filter((t) => t !== null).map((t, i) => {
|
|
16
|
+
if (e.isValidElement(t) && t.type === l)
|
|
17
17
|
return t;
|
|
18
|
-
const
|
|
19
|
-
return
|
|
20
|
-
key:
|
|
18
|
+
const a = e.isValidElement(t) && t.key != null ? t.key : i;
|
|
19
|
+
return e.createElement(l, {
|
|
20
|
+
key: a
|
|
21
21
|
}, t);
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
const z = "_controls_1lnsr_1", F = "_horizontal_1lnsr_6", V = "_list_1lnsr_17", g = "_columns_1lnsr_58", o = {
|
|
25
|
+
controls: z,
|
|
26
|
+
horizontal: F,
|
|
27
|
+
list: V,
|
|
28
|
+
columns: g
|
|
28
29
|
};
|
|
29
|
-
function
|
|
30
|
+
function v({
|
|
30
31
|
children: n,
|
|
31
|
-
className:
|
|
32
|
-
columns:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
className: l,
|
|
33
|
+
columns: s = 1,
|
|
34
|
+
controls: r,
|
|
35
|
+
horizontal: t,
|
|
36
|
+
ordered: i,
|
|
37
|
+
style: a,
|
|
38
|
+
...m
|
|
37
39
|
}) {
|
|
38
|
-
const
|
|
39
|
-
...
|
|
40
|
-
"--list-columns":
|
|
41
|
-
};
|
|
42
|
-
return
|
|
40
|
+
const u = Number.isFinite(s) ? Math.max(1, Math.floor(s)) : 1, f = d(l, o.list, u > 1 && o.columns, t && o.horizontal), _ = {
|
|
41
|
+
...a,
|
|
42
|
+
"--list-columns": u
|
|
43
|
+
}, h = i ? /* @__PURE__ */ c("ol", { className: f, style: _, ...m, children: y(n) }) : /* @__PURE__ */ c("ul", { className: f, style: _, ...m, children: y(n) });
|
|
44
|
+
return r == null ? h : /* @__PURE__ */ E(N, { children: [
|
|
45
|
+
/* @__PURE__ */ c("div", { className: o.controls, children: r }),
|
|
46
|
+
h
|
|
47
|
+
] });
|
|
43
48
|
}
|
|
44
49
|
export {
|
|
45
|
-
|
|
50
|
+
v as List
|
|
46
51
|
};
|
|
47
52
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/lib/
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/lib/wrap-children.tsx","../../../src/components/list/index.tsx"],"sourcesContent":["import React, { JSX } from 'react';\n\ntype WrapOptions<T extends keyof JSX.IntrinsicElements = 'li'> = {\n wrapper?: T;\n};\n\nfunction isFragmentElement(\n node: React.ReactNode\n): node is React.ReactElement<{ children?: React.ReactNode }> {\n return React.isValidElement(node) && node.type === React.Fragment;\n}\n\nfunction flattenChildren(children: React.ReactNode, out: React.ReactNode[] = []) {\n React.Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n flattenChildren(child.props.children, out);\n } else {\n out.push(child);\n }\n });\n return out;\n}\n\nexport function wrapChildren<T extends keyof JSX.IntrinsicElements = 'li'>(\n children: React.ReactNode,\n { wrapper = 'li' as T }: WrapOptions<T> = {}\n) {\n const flat = flattenChildren(children);\n\n const filterNull = flat.filter((child) => child !== null);\n\n return filterNull.map((child, i) => {\n if (React.isValidElement(child) && child.type === wrapper) {\n return child;\n }\n\n const key = React.isValidElement(child) && child.key != null ? child.key : i;\n\n return React.createElement(wrapper, { key }, child);\n });\n}\n","import cx from 'classix';\n\nimport { wrapChildren } from '@/lib/wrap-children';\n\nimport styles from './styles.module.css';\n\nexport type ListProps = React.ComponentPropsWithoutRef<'ul'> & {\n columns?: number;\n controls?: React.ReactNode;\n horizontal?: boolean;\n ordered?: boolean;\n};\n\nexport function List({\n children,\n className,\n columns = 1,\n controls,\n horizontal,\n ordered,\n style,\n ...props\n}: ListProps) {\n const cols = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;\n\n const classes = cx(\n className,\n styles.list,\n cols > 1 && styles.columns,\n horizontal && styles.horizontal\n );\n\n type withVars = React.CSSProperties & {\n '--list-columns'?: number;\n };\n\n const withVars: withVars = {\n ...style,\n '--list-columns': cols,\n };\n\n const list = ordered ? (\n <ol\n className={classes}\n style={withVars}\n {...props}\n >\n {wrapChildren(children)}\n </ol>\n ) : (\n <ul\n className={classes}\n style={withVars}\n {...props}\n >\n {wrapChildren(children)}\n </ul>\n );\n\n if (controls === undefined || controls === null) return list;\n\n return (\n <>\n <div className={styles.controls}>{controls}</div>\n {list}\n </>\n );\n}\n"],"names":["isFragmentElement","node","React","isValidElement","type","Fragment","flattenChildren","children","out","Children","forEach","child","props","push","wrapChildren","wrapper","filter","map","i","key","createElement","List","className","columns","controls","horizontal","ordered","style","cols","Number","isFinite","Math","max","floor","classes","cx","styles","list","withVars","jsx","jsxs"],"mappings":";;;AAMA,SAASA,EACPC,GAC4D;AAC5D,SAAOC,EAAMC,eAAeF,CAAI,KAAKA,EAAKG,SAASF,EAAMG;AAC3D;AAEA,SAASC,EAAgBC,GAA2BC,IAAyB,IAAI;AAC/EN,SAAAA,EAAMO,SAASC,QAAQH,GAAWI,CAAAA,MAAU;AAC1C,IAAIX,EAAkBW,CAAK,IACzBL,EAAgBK,EAAMC,MAAML,UAAUC,CAAG,IAEzCA,EAAIK,KAAKF,CAAK;AAAA,EAElB,CAAC,GACMH;AACT;AAEO,SAASM,EACdP,GACA;AAAA,EAAEQ,SAAAA,IAAU;AAA0B,IAAI,IAC1C;AAKA,SAJaT,EAAgBC,CAAQ,EAEbS,OAAQL,CAAAA,MAAUA,MAAU,IAAI,EAEtCM,IAAI,CAACN,GAAOO,MAAM;AAClC,QAAIhB,EAAMC,eAAeQ,CAAK,KAAKA,EAAMP,SAASW;AAChD,aAAOJ;AAGT,UAAMQ,IAAMjB,EAAMC,eAAeQ,CAAK,KAAKA,EAAMQ,OAAO,OAAOR,EAAMQ,MAAMD;AAE3E,WAAOhB,EAAMkB,cAAcL,GAAS;AAAA,MAAEI,KAAAA;AAAAA,IAAAA,GAAOR,CAAK;AAAA,EACpD,CAAC;AACH;;;;;;;AC3BO,SAASU,EAAK;AAAA,EACnBd,UAAAA;AAAAA,EACAe,WAAAA;AAAAA,EACAC,SAAAA,IAAU;AAAA,EACVC,UAAAA;AAAAA,EACAC,YAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACA,GAAGf;AACM,GAAG;AACZ,QAAMgB,IAAOC,OAAOC,SAASP,CAAO,IAAIQ,KAAKC,IAAI,GAAGD,KAAKE,MAAMV,CAAO,CAAC,IAAI,GAErEW,IAAUC,EACdb,GACAc,EAAOC,MACPT,IAAO,KAAKQ,EAAOb,SACnBE,KAAcW,EAAOX,UACvB,GAMMa,IAAqB;AAAA,IACzB,GAAGX;AAAAA,IACH,kBAAkBC;AAAAA,EAAAA,GAGdS,IAAOX,IACX,gBAAAa,EAAC,MAAA,EACC,WAAWL,GACX,OAAOI,GACP,GAAI1B,GAEHE,UAAAA,EAAaP,CAAQ,GACxB,IAEA,gBAAAgC,EAAC,MAAA,EACC,WAAWL,GACX,OAAOI,GACP,GAAI1B,GAEHE,UAAAA,EAAaP,CAAQ,EAAA,CACxB;AAGF,SAA8BiB,KAAa,OAAaa,IAGtD,gBAAAG,EAAAnC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAkC,EAAC,OAAA,EAAI,WAAWH,EAAOZ,UAAWA,UAAAA,GAAS;AAAA,IAC1Ca;AAAAA,EAAAA,GACH;AAEJ;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index49.css');const t=require("react/jsx-runtime"),d=require("../../classix-5H4IWnMA.cjs"),c="_loading_1d5zd_23",l="_spin_1d5zd_1",_="_ping_1d5zd_39",r="_sticky_1d5zd_65",n={loading:c,default:"_default_1d5zd_28",spin:l,ping:_,sticky:r},g=({variant:i="default",size:s,sticky:o=!1,...a})=>{const e={"--border-size":s?s/8+"px":void 0,"--size":s?s+"px":void 0};return t.jsx("div",{className:d.t(n.loading,o&&n.sticky),"data-component":"loading",children:t.jsx("span",{className:d.t(n.loading,n[i]),style:e,...a})})};exports.Loading=g;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/loading/index.tsx"],"sourcesContent":["import { cx } from 'classix';\n\nimport styles from './styles.module.css';\n\nexport type LoadingProps = {\n size?: number;\n sticky?: boolean;\n variant?: 'default' | 'ping';\n};\n\
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/loading/index.tsx"],"sourcesContent":["import { cx } from 'classix';\n\nimport styles from './styles.module.css';\n\nexport type LoadingProps = {\n size?: number;\n sticky?: boolean;\n variant?: 'default' | 'ping';\n};\n\nexport const Loading = ({ variant = 'default', size, sticky = false, ...props }: LoadingProps) => {\n type withVars = React.CSSProperties & {\n '--border-size'?: string;\n '--size'?: string;\n };\n\n const withVars: withVars = {\n '--border-size': size ? size / 8 + 'px' : undefined,\n '--size': size ? size + 'px' : undefined,\n };\n\n return (\n <div className={cx(styles.loading, sticky && styles.sticky)}>\n <span\n className={cx(styles.loading, styles[variant])}\n style={withVars}\n {...props}\n />\n </div>\n );\n};\n"],"names":["Loading","variant","size","sticky","props","withVars","undefined","jsx","cx","styles","loading"],"mappings":"8SAUaA,EAAUA,CAAC,CAAEC,QAAAA,EAAU,UAAWC,KAAAA,EAAMC,OAAAA,EAAS,GAAO,GAAGC,CAAoB,IAAM,CAMhG,MAAMC,EAAqB,CACzB,gBAAiBH,EAAOA,EAAO,EAAI,KAAOI,OAC1C,SAAUJ,EAAOA,EAAO,KAAOI,MAAAA,EAGjC,OACEC,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAAA,EAAGC,EAAOC,QAASP,GAAUM,EAAON,MAAM,EAAE,iBAAA,UAC1D,SAAAI,MAAC,QACC,UAAWC,EAAAA,EAAGC,EAAOC,QAASD,EAAOR,CAAO,CAAC,EAC7C,MAAOI,EACP,GAAID,CAAAA,CAAM,CAAA,CAEd,CAEJ"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { t } from "../../classix-DG18itHa.js";
|
|
3
|
-
import '../../assets/
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { t as s } from "../../classix-DG18itHa.js";
|
|
3
|
+
import '../../assets/index49.css';const l = "_loading_1d5zd_23", _ = "_spin_1d5zd_1", p = "_ping_1d5zd_39", e = "_sticky_1d5zd_65", n = {
|
|
4
4
|
loading: l,
|
|
5
|
-
default: "
|
|
5
|
+
default: "_default_1d5zd_28",
|
|
6
6
|
spin: _,
|
|
7
7
|
ping: p,
|
|
8
8
|
sticky: e
|
|
9
|
-
},
|
|
10
|
-
variant:
|
|
11
|
-
size:
|
|
12
|
-
sticky:
|
|
13
|
-
...
|
|
9
|
+
}, m = ({
|
|
10
|
+
variant: t = "default",
|
|
11
|
+
size: d,
|
|
12
|
+
sticky: i = !1,
|
|
13
|
+
...a
|
|
14
14
|
}) => {
|
|
15
15
|
const c = {
|
|
16
|
-
"--border-size":
|
|
17
|
-
"--size":
|
|
16
|
+
"--border-size": d ? d / 8 + "px" : void 0,
|
|
17
|
+
"--size": d ? d + "px" : void 0
|
|
18
18
|
};
|
|
19
|
-
return /* @__PURE__ */
|
|
19
|
+
return /* @__PURE__ */ o("div", { className: s(n.loading, i && n.sticky), "data-component": "loading", children: /* @__PURE__ */ o("span", { className: s(n.loading, n[t]), style: c, ...a }) });
|
|
20
20
|
};
|
|
21
21
|
export {
|
|
22
|
-
|
|
22
|
+
m as Loading
|
|
23
23
|
};
|
|
24
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/loading/index.tsx"],"sourcesContent":["import { cx } from 'classix';\n\nimport styles from './styles.module.css';\n\nexport type LoadingProps = {\n size?: number;\n sticky?: boolean;\n variant?: 'default' | 'ping';\n};\n\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/loading/index.tsx"],"sourcesContent":["import { cx } from 'classix';\n\nimport styles from './styles.module.css';\n\nexport type LoadingProps = {\n size?: number;\n sticky?: boolean;\n variant?: 'default' | 'ping';\n};\n\nexport const Loading = ({ variant = 'default', size, sticky = false, ...props }: LoadingProps) => {\n type withVars = React.CSSProperties & {\n '--border-size'?: string;\n '--size'?: string;\n };\n\n const withVars: withVars = {\n '--border-size': size ? size / 8 + 'px' : undefined,\n '--size': size ? size + 'px' : undefined,\n };\n\n return (\n <div className={cx(styles.loading, sticky && styles.sticky)}>\n <span\n className={cx(styles.loading, styles[variant])}\n style={withVars}\n {...props}\n />\n </div>\n );\n};\n"],"names":["Loading","variant","size","sticky","props","withVars","undefined","jsx","cx","styles","loading"],"mappings":";;;;;;;;GAUaA,IAAUA,CAAC;AAAA,EAAEC,SAAAA,IAAU;AAAA,EAAWC,MAAAA;AAAAA,EAAMC,QAAAA,IAAS;AAAA,EAAO,GAAGC;AAAoB,MAAM;AAMhG,QAAMC,IAAqB;AAAA,IACzB,iBAAiBH,IAAOA,IAAO,IAAI,OAAOI;AAAAA,IAC1C,UAAUJ,IAAOA,IAAO,OAAOI;AAAAA,EAAAA;AAGjC,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAGC,EAAOC,SAASP,KAAUM,EAAON,MAAM,GAAE,kBAAA,WAC1D,UAAA,gBAAAI,EAAC,UACC,WAAWC,EAAGC,EAAOC,SAASD,EAAOR,CAAO,CAAC,GAC7C,OAAOI,GACP,GAAID,EAAAA,CAAM,EAAA,CAEd;AAEJ;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index15.css');const r=require("react/jsx-runtime"),m=require("../../classix-5H4IWnMA.cjs"),f=require("react"),b=require("../button/index.cjs"),p=require("../icon/index.cjs"),h=require("../list/index.cjs"),j=require("../popover/index.cjs"),v="_list_z7awx_3",y="_item_z7awx_15",w="_active_z7awx_38",D="_danger_z7awx_47",l={list:v,item:y,active:w,danger:D};function q(o){return o.filter(s=>!!(s&&!s.disabled))}const k=({close:o,initialFocus:s,items:u,menuAccessibleLabel:d,onItemSelect:c})=>{const a=f.useRef([]),t=f.useCallback(e=>{const n=q(a.current);if(n.length===0)return;if(e==="first"){n[0].focus();return}if(e==="last"){n[n.length-1].focus();return}const i=n.indexOf(document.activeElement),g=e==="next"?(i+1)%n.length:(i-1+n.length)%n.length;n[g].focus()},[]);f.useEffect(()=>{t(s??"first")},[t,s]);const x=e=>{if(e.key==="ArrowDown"){e.preventDefault(),t("next");return}if(e.key==="ArrowUp"){e.preventDefault(),t("previous");return}if(e.key==="Home"){e.preventDefault(),t("first");return}e.key==="End"&&(e.preventDefault(),t("last"))},_=e=>{var n;(n=e.onSelect)==null||n.call(e),c==null||c(e),o()};return r.jsx(h.List,{"aria-label":d,className:l.list,onKeyDown:x,role:"menu","data-component":"menupanel",children:u.map((e,n)=>r.jsx("li",{role:"none",children:r.jsxs(b.Button,{"aria-current":e.isActive?"true":void 0,"aria-label":e.accessibleLabel,className:m.t(l.item,e.isActive&&l.active,e.isDanger&&l.danger),disabled:e.disabled,onClick:()=>_(e),ref:i=>{a.current[n]=i},role:"menuitem",variant:"tertiary",children:[e.icon&&r.jsx(p.Icon,{fill:!0,gap:"right",name:e.icon,size:"small"}),r.jsx("span",{children:e.label})]})},e.id??n))})},z=({items:o,menuAccessibleLabel:s="Menu",onItemSelect:u,position:d="left",triggerAccessibleLabel:c="Open menu"})=>r.jsx(j.Popover,{position:d,triggerAccessibleLabel:c,triggerAriaHasPopup:"menu",triggerButtonContent:r.jsx(p.Icon,{name:"dots",size:"medium"}),"data-component":"menu",children:({close:a,initialFocus:t})=>r.jsx(k,{close:a,initialFocus:t,items:o,menuAccessibleLabel:s,onItemSelect:u})});exports.Menu=z;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/menu/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { type IconName } from '@/components/icon/icons';\nimport { List } from '@/components/list';\nimport { Popover, type PopoverInitialFocus, type PopoverRenderProps } from '@/components/popover';\n\nimport styles from './styles.module.css';\n\nexport type MenuItem = {\n accessibleLabel?: string;\n disabled?: boolean;\n icon?: IconName;\n id?: string;\n isActive?: boolean;\n isDanger?: boolean;\n label: React.ReactNode;\n onSelect?: () => void;\n};\n\nexport type MenuProps = {\n items: MenuItem[];\n menuAccessibleLabel?: string;\n onItemSelect?: (item: MenuItem) => void;\n position?: 'left' | 'right';\n triggerAccessibleLabel?: string;\n};\n\ntype MenuFocusTarget = 'first' | 'last' | 'next' | 'previous';\n\ntype MenuPanelProps = Pick<MenuProps, 'items' | 'menuAccessibleLabel' | 'onItemSelect'> & {\n close: PopoverRenderProps['close'];\n initialFocus?: PopoverInitialFocus;\n};\n\nfunction getFocusableItems(items: Array<HTMLButtonElement | null>) {\n return items.filter((item): item is HTMLButtonElement => Boolean(item && !item.disabled));\n}\n\nconst MenuPanel = ({\n close,\n initialFocus,\n items,\n menuAccessibleLabel,\n onItemSelect,\n}: MenuPanelProps) => {\n const itemRefs = useRef<Array<HTMLButtonElement | null>>([]);\n\n const focusItem = useCallback((target: MenuFocusTarget) => {\n const focusableItems = getFocusableItems(itemRefs.current);\n\n if (focusableItems.length === 0) {\n return;\n }\n\n if (target === 'first') {\n focusableItems[0].focus();\n return;\n }\n\n if (target === 'last') {\n focusableItems[focusableItems.length - 1].focus();\n return;\n }\n\n const currentIndex = focusableItems.indexOf(document.activeElement as HTMLButtonElement);\n const nextIndex =\n target === 'next'\n ? (currentIndex + 1) % focusableItems.length\n : (currentIndex - 1 + focusableItems.length) % focusableItems.length;\n\n focusableItems[nextIndex].focus();\n }, []);\n\n useEffect(() => {\n focusItem(initialFocus ?? 'first');\n }, [focusItem, initialFocus]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusItem('next');\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusItem('previous');\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n focusItem('first');\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n focusItem('last');\n }\n };\n\n const handleItemSelect = (item: MenuItem) => {\n item.onSelect?.();\n onItemSelect?.(item);\n close();\n };\n\n return (\n <List\n aria-label={menuAccessibleLabel}\n className={styles.list}\n onKeyDown={handleKeyDown}\n role='menu'\n >\n {items.map((item, index) => (\n <li\n key={item.id ?? index}\n role='none'\n >\n <Button\n aria-current={item.isActive ? 'true' : undefined}\n aria-label={item.accessibleLabel}\n className={cx(\n styles.item,\n item.isActive && styles.active,\n item.isDanger && styles.danger\n )}\n disabled={item.disabled}\n onClick={() => handleItemSelect(item)}\n ref={(node) => {\n itemRefs.current[index] = node;\n }}\n role='menuitem'\n variant='tertiary'\n >\n {item.icon && (\n <Icon\n fill\n gap='right'\n name={item.icon}\n size='small'\n />\n )}\n <span>{item.label}</span>\n </Button>\n </li>\n ))}\n </List>\n );\n};\n\nexport const Menu = ({\n items,\n menuAccessibleLabel = 'Menu',\n onItemSelect,\n position = 'left',\n triggerAccessibleLabel = 'Open menu',\n}: MenuProps) => {\n return (\n <Popover\n position={position}\n triggerAccessibleLabel={triggerAccessibleLabel}\n triggerAriaHasPopup='menu'\n triggerButtonContent={\n <Icon\n name='dots'\n size='medium'\n />\n }\n >\n {({ close, initialFocus }) => (\n <MenuPanel\n close={close}\n initialFocus={initialFocus}\n items={items}\n menuAccessibleLabel={menuAccessibleLabel}\n onItemSelect={onItemSelect}\n />\n )}\n </Popover>\n );\n};\n"],"names":["getFocusableItems","items","filter","item","Boolean","disabled","MenuPanel","close","initialFocus","menuAccessibleLabel","onItemSelect","itemRefs","useRef","focusItem","useCallback","target","focusableItems","current","length","focus","currentIndex","indexOf","document","activeElement","nextIndex","useEffect","handleKeyDown","event","key","preventDefault","handleItemSelect","onSelect","jsx","List","styles","list","map","index","jsxs","Button","isActive","undefined","accessibleLabel","cx","active","isDanger","danger","node","icon","Icon","label","id","Menu","position","triggerAccessibleLabel","Popover"],"mappings":"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"}
|