@solibo/solibo-ui 2.0.2 → 2.1.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/assets/index.css +1 -1
- package/dist/assets/index13.css +1 -1
- package/dist/assets/index16.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/index21.css +1 -1
- package/dist/assets/index28.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/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 -1
- package/dist/assets/index49.css +1 -1
- package/dist/assets/index50.css +1 -1
- package/dist/assets/index51.css +1 -1
- package/dist/assets/index52.css +1 -1
- package/dist/assets/index53.css +1 -1
- package/dist/assets/index54.css +1 -1
- package/dist/assets/index55.css +1 -0
- package/dist/assets/index6.css +1 -1
- package/dist/components/badge/index.cjs +1 -1
- package/dist/components/badge/index.js +38 -38
- package/dist/components/checkbox/index.cjs +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/clipboard/index.cjs +2 -0
- package/dist/components/clipboard/index.cjs.map +1 -0
- package/dist/components/clipboard/index.js +29 -0
- package/dist/components/clipboard/index.js.map +1 -0
- package/dist/components/collapsible/index.cjs +1 -1
- package/dist/components/collapsible/index.js +1 -1
- package/dist/components/controls/index.cjs +1 -1
- package/dist/components/controls/index.js +2 -2
- package/dist/components/croppable/index.cjs +1 -1
- package/dist/components/croppable/index.js +1 -1
- package/dist/components/dialog/index.cjs +1 -1
- package/dist/components/dialog/index.js +35 -35
- package/dist/components/divider/index.cjs +1 -1
- package/dist/components/divider/index.js +3 -3
- package/dist/components/dropdown/index.cjs +1 -1
- package/dist/components/dropdown/index.js +4 -4
- package/dist/components/dropzone/index.cjs +1 -1
- package/dist/components/dropzone/index.js +1 -1
- package/dist/components/editor/index.cjs +1 -1
- package/dist/components/editor/index.js +2 -2
- package/dist/components/empty-state/index.cjs +1 -1
- package/dist/components/empty-state/index.cjs.map +1 -1
- package/dist/components/empty-state/index.js +16 -11
- package/dist/components/empty-state/index.js.map +1 -1
- package/dist/components/fieldset/index.cjs +1 -1
- package/dist/components/fieldset/index.js +1 -1
- package/dist/components/figure/index.cjs +1 -1
- package/dist/components/figure/index.js +1 -1
- package/dist/components/file/index.cjs +1 -1
- package/dist/components/file/index.js +1 -1
- package/dist/components/graph/index.cjs +1 -1
- package/dist/components/graph/index.js +26 -26
- 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 +22 -22
- package/dist/components/icon/index.cjs +1 -1
- package/dist/components/icon/index.cjs.map +1 -1
- package/dist/components/icon/index.js +28 -26
- package/dist/components/icon/index.js.map +1 -1
- package/dist/components/iframe/index.cjs +1 -1
- package/dist/components/iframe/index.cjs.map +1 -1
- package/dist/components/iframe/index.js +45 -44
- package/dist/components/iframe/index.js.map +1 -1
- package/dist/components/input/index.cjs +1 -1
- package/dist/components/input/index.js +2 -2
- 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 +72 -44
- package/dist/components/list/index.js.map +1 -1
- package/dist/components/loading/index.cjs +1 -1
- package/dist/components/loading/index.js +1 -1
- package/dist/components/menu/index.cjs +1 -1
- package/dist/components/menu/index.cjs.map +1 -1
- package/dist/components/menu/index.js +23 -22
- package/dist/components/menu/index.js.map +1 -1
- package/dist/components/message/index.cjs +1 -1
- package/dist/components/message/index.cjs.map +1 -1
- package/dist/components/message/index.js +33 -33
- package/dist/components/message/index.js.map +1 -1
- package/dist/components/nav/index.cjs +1 -1
- package/dist/components/nav/index.js +30 -30
- package/dist/components/popover/index.cjs +1 -1
- package/dist/components/popover/index.cjs.map +1 -1
- package/dist/components/popover/index.js +81 -69
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/search/index.cjs +1 -1
- package/dist/components/search/index.js +1 -1
- package/dist/components/select/index.cjs +1 -1
- package/dist/components/select/index.js +2 -2
- package/dist/components/sortable/index.cjs.map +1 -1
- package/dist/components/sortable/index.js.map +1 -1
- package/dist/components/table/index.cjs.map +1 -1
- package/dist/components/table/index.js.map +1 -1
- package/dist/components/textarea/index.cjs +1 -1
- package/dist/components/textarea/index.js +12 -12
- package/dist/components/toolbar/index.cjs +1 -1
- package/dist/components/toolbar/index.js +1 -1
- package/dist/components/widget/index.cjs +1 -1
- package/dist/components/widget/index.cjs.map +1 -1
- package/dist/components/widget/index.js +13 -8
- package/dist/components/widget/index.js.map +1 -1
- package/dist/icons-BTif0nDb.cjs +2 -0
- package/dist/icons-BTif0nDb.cjs.map +1 -0
- package/dist/{icons-dUP7sKyt.js → icons-CBbpxsJF.js} +32 -5
- package/dist/icons-CBbpxsJF.js.map +1 -0
- package/dist/{index-Bt7vnwji.cjs → index-5qUTKX7P.cjs} +2 -2
- package/dist/{index-Bt7vnwji.cjs.map → index-5qUTKX7P.cjs.map} +1 -1
- package/dist/{index-BLb3JiCr.js → index-BuSfz4qx.js} +3 -3
- package/dist/{index-BLb3JiCr.js.map → index-BuSfz4qx.js.map} +1 -1
- package/dist/index-CeHwRKAg.cjs +2 -0
- package/dist/{index-CQlMdqOp.cjs.map → index-CeHwRKAg.cjs.map} +1 -1
- package/dist/index-DBWgRXp9.js +83 -0
- package/dist/{index-CbJ2-IPc.js.map → index-DBWgRXp9.js.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +45 -7
- package/dist/index.js +97 -95
- package/dist/index.js.map +1 -1
- package/dist/menu-popover-CdhAgSQb.cjs +2 -0
- package/dist/menu-popover-CdhAgSQb.cjs.map +1 -0
- package/dist/menu-popover-D-Ax5zzy.js +77 -0
- package/dist/menu-popover-D-Ax5zzy.js.map +1 -0
- package/dist/tokens.json +1 -1
- package/package.json +1 -1
- package/dist/icons-Dv_p0bUF.cjs +0 -2
- package/dist/icons-Dv_p0bUF.cjs.map +0 -1
- package/dist/icons-dUP7sKyt.js.map +0 -1
- package/dist/index-CQlMdqOp.cjs +0 -2
- package/dist/index-CbJ2-IPc.js +0 -83
- package/dist/menu-popover-CM3v5s-5.cjs +0 -2
- package/dist/menu-popover-CM3v5s-5.cjs.map +0 -1
- package/dist/menu-popover-DOkciab5.js +0 -74
- package/dist/menu-popover-DOkciab5.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "react/jsx-runtime";
|
|
2
2
|
import "../../classix-DG18itHa.js";
|
|
3
|
-
import "../../icons-
|
|
4
|
-
import { S as e } from "../../index-
|
|
3
|
+
import "../../icons-CBbpxsJF.js";
|
|
4
|
+
import { S as e } from "../../index-BuSfz4qx.js";
|
|
5
5
|
import "../../use-touched-B999bBr8.js";
|
|
6
6
|
export {
|
|
7
7
|
e as Select
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/sortable/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { createContext, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { List } from '@/components/list';\n\nimport styles from './styles.module.css';\n\ntype SortItem = { id: string; weight: number };\n\ntype SortableItemContextValue = {\n canMoveDown: boolean;\n canMoveUp: boolean;\n index: number;\n moveDown: () => void;\n moveUp: () => void;\n};\n\nconst SortableItemContext = createContext<SortableItemContextValue | null>(null);\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useOptionalSortableItem() {\n return useContext(SortableItemContext);\n}\n\ntype SortableProps = React.ComponentPropsWithoutRef<'ol'> & {\n columns?: number;\n isRearranging?: boolean;\n onChangeOrder: (order: SortItem[]) => void;\n};\n\ntype SortableStyle = React.CSSProperties & {\n '--sortable-placeholder-height'?: string;\n '--sortable-placeholder-radius'?: string;\n '--sortable-placeholder-width'?: string;\n};\n\ntype ZoneSize = {\n borderRadius: string;\n height: number;\n width: number;\n wrapperHeight: number;\n};\n\nconst toPixels = (value: string) => Number.parseFloat(value) || 0;\n\nconst measureDraggedItem = (item: HTMLLIElement): ZoneSize => {\n const content = item.firstElementChild;\n const itemRect = item.getBoundingClientRect();\n\n if (content) {\n const rect = content.getBoundingClientRect();\n\n return {\n borderRadius: window.getComputedStyle(content).borderRadius,\n height: rect.height,\n width: rect.width,\n wrapperHeight: itemRect.height,\n };\n }\n\n const style = window.getComputedStyle(item);\n const horizontalInsets =\n toPixels(style.borderLeftWidth) +\n toPixels(style.borderRightWidth) +\n toPixels(style.paddingLeft) +\n toPixels(style.paddingRight);\n const verticalInsets =\n toPixels(style.borderBottomWidth) +\n toPixels(style.borderTopWidth) +\n toPixels(style.paddingBottom) +\n toPixels(style.paddingTop);\n\n return {\n borderRadius: style.borderRadius,\n height: Math.max(0, itemRect.height - verticalInsets),\n width: Math.max(0, itemRect.width - horizontalInsets),\n wrapperHeight: itemRect.height,\n };\n};\n\n/**\n * Children must provide a stable `data-id` for emits `{ id, weight }` and `key` (reconciliation).\n */\n\nexport function Sortable({\n children,\n className,\n columns = 1,\n isRearranging = false,\n onChangeOrder,\n ...props\n}: SortableProps) {\n const cols = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;\n const arr = useMemo(() => React.Children.toArray(children), [children]);\n const drag = useRef(-1);\n const usesTouchInput = useMemo(\n () =>\n typeof window !== 'undefined' &&\n (navigator.maxTouchPoints > 0 || window.matchMedia('(pointer: coarse)').matches),\n []\n );\n const touchDragActive = useRef(false);\n const touchDropIndex = useRef<number | null>(null);\n const touchHoldTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const touchStart = useRef<{ x: number; y: number } | null>(null);\n const suppressClickUntil = useRef(0);\n const touchPosition = useRef<{ x: number; y: number } | null>(null);\n const autoScrollFrame = useRef<number | null>(null);\n const preventTouchScroll = useRef((event: TouchEvent) => event.preventDefault()).current;\n const [zoneSize, setZoneSize] = useState({\n borderRadius: '0px',\n height: 0,\n width: 0,\n wrapperHeight: 0,\n });\n const [dropIndex, setDropIndex] = useState<number | null>(null);\n const withVars: SortableStyle = {\n ...props.style,\n '--sortable-placeholder-height': `${zoneSize.height}px`,\n '--sortable-placeholder-radius': zoneSize.borderRadius,\n '--sortable-placeholder-width': `${zoneSize.width}px`,\n };\n\n const moveItem = (from: number, to: number) => {\n if (to < 0 || to >= arr.length || from === to) return;\n\n const next = arr.slice();\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n\n onChangeOrder(\n next.map((item, index) => ({\n id: String(\n React.isValidElement(item)\n ? ((item.props as { 'data-id'?: string })['data-id'] ?? `idx-${index}`)\n : `idx-${index}`\n ),\n weight: next.length - 1 - index,\n }))\n );\n };\n\n const clearTouchHoldTimer = () => {\n if (touchHoldTimer.current !== null) {\n clearTimeout(touchHoldTimer.current);\n touchHoldTimer.current = null;\n }\n };\n\n const clearAutoScrollFrame = () => {\n if (autoScrollFrame.current !== null) {\n cancelAnimationFrame(autoScrollFrame.current);\n autoScrollFrame.current = null;\n }\n };\n\n const getScrollableAncestor = (element: HTMLElement | null) => {\n let current = element?.parentElement ?? null;\n\n while (current) {\n const { overflowY } = window.getComputedStyle(current);\n const canScroll =\n /(auto|scroll|overlay)/.test(overflowY) && current.scrollHeight > current.clientHeight;\n\n if (canScroll) return current;\n current = current.parentElement;\n }\n\n return document.scrollingElement instanceof HTMLElement ? document.scrollingElement : null;\n };\n\n const resetTouchDragState = (suppressNextClick = false) => {\n clearTouchHoldTimer();\n clearAutoScrollFrame();\n window.removeEventListener('touchmove', preventTouchScroll);\n touchPosition.current = null;\n touchDragActive.current = false;\n touchDropIndex.current = null;\n touchStart.current = null;\n suppressClickUntil.current = suppressNextClick ? Date.now() + 500 : 0;\n drag.current = -1;\n setDropIndex(null);\n };\n\n const startDrag = (index: number, item: HTMLLIElement) => {\n drag.current = index;\n setZoneSize(measureDraggedItem(item));\n setDropIndex(index);\n };\n\n const isInteractiveTarget = (target: EventTarget | null) =>\n target instanceof Element &&\n Boolean(\n target.closest(\n 'button, a, input, textarea, select, option, [role=\"button\"], [contenteditable=\"true\"]'\n )\n );\n\n const getDropIndex = (target: HTMLElement, index: number, clientY: number) => {\n const from = drag.current;\n if (!Number.isInteger(index) || from < 0 || index === from) return null;\n\n const rect = target.getBoundingClientRect();\n const itemHeight = index === from + 1 ? zoneSize.wrapperHeight : rect.height;\n const isBottomHalf = clientY > rect.top + itemHeight / 2;\n const rawIndex = isBottomHalf ? index + 1 : index;\n return rawIndex > from ? rawIndex - 1 : rawIndex;\n };\n\n const updateTouchDropIndex = (clientX: number, clientY: number) => {\n const target = document\n .elementFromPoint(clientX, clientY)\n ?.closest<HTMLElement>('[data-sortable-index]');\n if (!target) return;\n\n const nextDropIndex = getDropIndex(target, Number(target.dataset.sortableIndex), clientY);\n if (nextDropIndex === null) return;\n\n touchDropIndex.current = nextDropIndex;\n setDropIndex(nextDropIndex);\n };\n\n const startTouchAutoScroll = (item: HTMLElement) => {\n const scrollContainer = getScrollableAncestor(item);\n if (!scrollContainer) return;\n\n const edgeSize = 72;\n const maxSpeed = 18;\n\n const step = () => {\n if (!touchDragActive.current) {\n autoScrollFrame.current = null;\n return;\n }\n\n const position = touchPosition.current;\n if (!position) {\n autoScrollFrame.current = requestAnimationFrame(step);\n return;\n }\n\n const rect =\n scrollContainer === document.scrollingElement\n ? { top: 0, bottom: window.innerHeight }\n : scrollContainer.getBoundingClientRect();\n\n let speed = 0;\n\n if (position.y < rect.top + edgeSize) {\n const distance = Math.max(0, position.y - rect.top);\n speed = -maxSpeed * (1 - distance / edgeSize);\n } else if (position.y > rect.bottom - edgeSize) {\n const distance = Math.max(0, rect.bottom - position.y);\n speed = maxSpeed * (1 - distance / edgeSize);\n }\n\n if (speed !== 0) {\n scrollContainer.scrollBy({ top: speed, behavior: 'auto' });\n updateTouchDropIndex(position.x, position.y);\n }\n\n autoScrollFrame.current = requestAnimationFrame(step);\n };\n\n clearAutoScrollFrame();\n autoScrollFrame.current = requestAnimationFrame(step);\n };\n\n const resetDragState = () => {\n drag.current = -1;\n setDropIndex(null);\n };\n\n useEffect(\n () => () => {\n clearTouchHoldTimer();\n clearAutoScrollFrame();\n window.removeEventListener('touchmove', preventTouchScroll);\n },\n [preventTouchScroll]\n );\n\n return (\n <List\n className={cx(className, styles.sortable, cols > 1 && styles.columns)}\n columns={columns}\n ordered\n style={withVars}\n {...props}\n >\n {arr.map((child, i) => {\n const key = React.isValidElement(child) ? child.key : null;\n\n return (\n <li\n key={key ?? i}\n data-sortable-index={i}\n onClickCapture={(e) => {\n if (suppressClickUntil.current <= Date.now()) return;\n e.preventDefault();\n e.stopPropagation();\n suppressClickUntil.current = 0;\n }}\n className={cx(\n dropIndex !== null && dropIndex > i - 10 && dropIndex < i + 10 && styles.pseudo,\n dropIndex === i && drag.current < i && styles['target-below'],\n dropIndex === i && drag.current > i && styles['target-above'],\n drag.current === i && styles.dragging\n )}\n onContextMenu={(e) => {\n if (touchDragActive.current || touchHoldTimer.current !== null) {\n e.preventDefault();\n }\n }}\n onTouchStart={(e) => {\n if (isRearranging || isInteractiveTarget(e.target)) return;\n suppressClickUntil.current = 0;\n\n const touch = e.touches[0];\n if (!touch) return;\n\n const item = e.currentTarget;\n touchStart.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n\n clearTouchHoldTimer();\n touchHoldTimer.current = setTimeout(() => {\n startDrag(i, item);\n touchDragActive.current = true;\n touchDropIndex.current = i;\n touchPosition.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n window.addEventListener('touchmove', preventTouchScroll, { passive: false });\n startTouchAutoScroll(item);\n }, 350);\n }}\n onTouchMove={(e) => {\n const touch = e.touches[0];\n if (!touch) return;\n\n touchPosition.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n\n if (!touchDragActive.current) {\n const start = touchStart.current;\n if (!start) return;\n\n const distance = Math.hypot(touch.clientX - start.x, touch.clientY - start.y);\n if (distance > 8) {\n clearTouchHoldTimer();\n touchStart.current = null;\n }\n return;\n }\n updateTouchDropIndex(touch.clientX, touch.clientY);\n }}\n onTouchEnd={(e) => {\n clearTouchHoldTimer();\n\n if (!touchDragActive.current) {\n touchStart.current = null;\n return;\n }\n\n e.preventDefault();\n const from = drag.current;\n const to = touchDropIndex.current;\n\n if (from >= 0 && to !== null && from !== to) {\n moveItem(from, to);\n }\n\n resetTouchDragState(true);\n }}\n onTouchCancel={() => resetTouchDragState()}\n draggable={!isRearranging && !usesTouchInput}\n onDragEnd={() => resetDragState()}\n onDragOver={(e) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n const nextDropIndex = getDropIndex(e.currentTarget, i, e.clientY);\n if (nextDropIndex === null) return;\n setDropIndex(nextDropIndex);\n }}\n onDragStart={(e) => {\n if (usesTouchInput) {\n e.preventDefault();\n return;\n }\n startDrag(i, e.currentTarget);\n e.dataTransfer.setData('text/plain', '');\n e.dataTransfer.effectAllowed = 'move';\n }}\n onDrop={(e) => {\n e.preventDefault();\n const from = drag.current;\n const to = dropIndex;\n if (from < 0 || to === null || from === to) return;\n moveItem(from, to);\n resetDragState();\n }}\n >\n <SortableItemContext.Provider\n value={{\n canMoveDown: i < arr.length - 1,\n canMoveUp: i > 0,\n index: i,\n moveDown: () => moveItem(i, i + 1),\n moveUp: () => moveItem(i, i - 1),\n }}\n >\n {child}\n </SortableItemContext.Provider>\n </li>\n );\n })}\n </List>\n );\n}\n"],"names":["SortableItemContext","createContext","useOptionalSortableItem","useContext","toPixels","value","Number","parseFloat","measureDraggedItem","item","content","firstElementChild","itemRect","getBoundingClientRect","rect","borderRadius","window","getComputedStyle","height","width","wrapperHeight","style","horizontalInsets","borderLeftWidth","borderRightWidth","paddingLeft","paddingRight","verticalInsets","borderBottomWidth","borderTopWidth","paddingBottom","paddingTop","Math","max","Sortable","children","className","columns","isRearranging","onChangeOrder","props","cols","isFinite","floor","arr","useMemo","React","Children","toArray","drag","useRef","usesTouchInput","navigator","maxTouchPoints","matchMedia","matches","touchDragActive","touchDropIndex","touchHoldTimer","touchStart","suppressClickUntil","touchPosition","autoScrollFrame","preventTouchScroll","event","preventDefault","current","zoneSize","setZoneSize","useState","dropIndex","setDropIndex","withVars","moveItem","from","to","length","next","slice","moved","splice","map","index","id","String","isValidElement","weight","clearTouchHoldTimer","clearTimeout","clearAutoScrollFrame","cancelAnimationFrame","getScrollableAncestor","element","parentElement","overflowY","test","scrollHeight","clientHeight","document","scrollingElement","HTMLElement","resetTouchDragState","suppressNextClick","removeEventListener","Date","now","startDrag","isInteractiveTarget","target","Element","Boolean","closest","getDropIndex","clientY","isInteger","itemHeight","rawIndex","top","updateTouchDropIndex","clientX","elementFromPoint","nextDropIndex","dataset","sortableIndex","startTouchAutoScroll","scrollContainer","edgeSize","maxSpeed","step","position","requestAnimationFrame","bottom","innerHeight","speed","y","distance","scrollBy","behavior","x","resetDragState","useEffect","jsx","List","cx","styles","sortable","child","i","key","e","stopPropagation","pseudo","dragging","touch","touches","currentTarget","setTimeout","addEventListener","passive","start","hypot","dataTransfer","dropEffect","setData","effectAllowed","canMoveDown","canMoveUp","moveDown","moveUp"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/sortable/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { createContext, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { List } from '@/components/list';\n\nimport styles from './styles.module.css';\n\ntype SortItem = { id: string; weight: number };\n\ntype SortableItemContextValue = {\n canMoveDown: boolean;\n canMoveUp: boolean;\n index: number;\n moveDown: () => void;\n moveUp: () => void;\n};\n\nconst SortableItemContext = createContext<SortableItemContextValue | null>(null);\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useOptionalSortableItem() {\n return useContext(SortableItemContext);\n}\n\ntype SortableProps = React.ComponentPropsWithoutRef<'ol'> & {\n columns?: number;\n isRearranging?: boolean;\n onChangeOrder: (order: SortItem[]) => void;\n};\n\ntype SortableStyle = React.CSSProperties & {\n '--sortable-placeholder-height'?: string;\n '--sortable-placeholder-radius'?: string;\n '--sortable-placeholder-width'?: string;\n};\n\ntype ZoneSize = {\n borderRadius: string;\n height: number;\n width: number;\n wrapperHeight: number;\n};\n\nconst toPixels = (value: string) => Number.parseFloat(value) || 0;\n\nconst measureDraggedItem = (item: HTMLLIElement): ZoneSize => {\n const content = item.firstElementChild;\n const itemRect = item.getBoundingClientRect();\n\n if (content) {\n const rect = content.getBoundingClientRect();\n\n return {\n borderRadius: window.getComputedStyle(content).borderRadius,\n height: rect.height,\n width: rect.width,\n wrapperHeight: itemRect.height,\n };\n }\n\n const style = window.getComputedStyle(item);\n const horizontalInsets =\n toPixels(style.borderLeftWidth) +\n toPixels(style.borderRightWidth) +\n toPixels(style.paddingLeft) +\n toPixels(style.paddingRight);\n const verticalInsets =\n toPixels(style.borderBottomWidth) +\n toPixels(style.borderTopWidth) +\n toPixels(style.paddingBottom) +\n toPixels(style.paddingTop);\n\n return {\n borderRadius: style.borderRadius,\n height: Math.max(0, itemRect.height - verticalInsets),\n width: Math.max(0, itemRect.width - horizontalInsets),\n wrapperHeight: itemRect.height,\n };\n};\n\nexport function Sortable({\n children,\n className,\n columns = 1,\n isRearranging = false,\n onChangeOrder,\n ...props\n}: SortableProps) {\n const cols = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;\n const arr = useMemo(() => React.Children.toArray(children), [children]);\n const drag = useRef(-1);\n const usesTouchInput = useMemo(\n () =>\n typeof window !== 'undefined' &&\n (navigator.maxTouchPoints > 0 || window.matchMedia('(pointer: coarse)').matches),\n []\n );\n const touchDragActive = useRef(false);\n const touchDropIndex = useRef<number | null>(null);\n const touchHoldTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const touchStart = useRef<{ x: number; y: number } | null>(null);\n const suppressClickUntil = useRef(0);\n const touchPosition = useRef<{ x: number; y: number } | null>(null);\n const autoScrollFrame = useRef<number | null>(null);\n const preventTouchScroll = useRef((event: TouchEvent) => event.preventDefault()).current;\n const [zoneSize, setZoneSize] = useState({\n borderRadius: '0px',\n height: 0,\n width: 0,\n wrapperHeight: 0,\n });\n const [dropIndex, setDropIndex] = useState<number | null>(null);\n const withVars: SortableStyle = {\n ...props.style,\n '--sortable-placeholder-height': `${zoneSize.height}px`,\n '--sortable-placeholder-radius': zoneSize.borderRadius,\n '--sortable-placeholder-width': `${zoneSize.width}px`,\n };\n\n const moveItem = (from: number, to: number) => {\n if (to < 0 || to >= arr.length || from === to) return;\n\n const next = arr.slice();\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n\n onChangeOrder(\n next.map((item, index) => ({\n id: String(\n React.isValidElement(item)\n ? ((item.props as { 'data-id'?: string })['data-id'] ?? `idx-${index}`)\n : `idx-${index}`\n ),\n weight: next.length - 1 - index,\n }))\n );\n };\n\n const clearTouchHoldTimer = () => {\n if (touchHoldTimer.current !== null) {\n clearTimeout(touchHoldTimer.current);\n touchHoldTimer.current = null;\n }\n };\n\n const clearAutoScrollFrame = () => {\n if (autoScrollFrame.current !== null) {\n cancelAnimationFrame(autoScrollFrame.current);\n autoScrollFrame.current = null;\n }\n };\n\n const getScrollableAncestor = (element: HTMLElement | null) => {\n let current = element?.parentElement ?? null;\n\n while (current) {\n const { overflowY } = window.getComputedStyle(current);\n const canScroll =\n /(auto|scroll|overlay)/.test(overflowY) && current.scrollHeight > current.clientHeight;\n\n if (canScroll) return current;\n current = current.parentElement;\n }\n\n return document.scrollingElement instanceof HTMLElement ? document.scrollingElement : null;\n };\n\n const resetTouchDragState = (suppressNextClick = false) => {\n clearTouchHoldTimer();\n clearAutoScrollFrame();\n window.removeEventListener('touchmove', preventTouchScroll);\n touchPosition.current = null;\n touchDragActive.current = false;\n touchDropIndex.current = null;\n touchStart.current = null;\n suppressClickUntil.current = suppressNextClick ? Date.now() + 500 : 0;\n drag.current = -1;\n setDropIndex(null);\n };\n\n const startDrag = (index: number, item: HTMLLIElement) => {\n drag.current = index;\n setZoneSize(measureDraggedItem(item));\n setDropIndex(index);\n };\n\n const isInteractiveTarget = (target: EventTarget | null) =>\n target instanceof Element &&\n Boolean(\n target.closest(\n 'button, a, input, textarea, select, option, [role=\"button\"], [contenteditable=\"true\"]'\n )\n );\n\n const getDropIndex = (target: HTMLElement, index: number, clientY: number) => {\n const from = drag.current;\n if (!Number.isInteger(index) || from < 0 || index === from) return null;\n\n const rect = target.getBoundingClientRect();\n const itemHeight = index === from + 1 ? zoneSize.wrapperHeight : rect.height;\n const isBottomHalf = clientY > rect.top + itemHeight / 2;\n const rawIndex = isBottomHalf ? index + 1 : index;\n return rawIndex > from ? rawIndex - 1 : rawIndex;\n };\n\n const updateTouchDropIndex = (clientX: number, clientY: number) => {\n const target = document\n .elementFromPoint(clientX, clientY)\n ?.closest<HTMLElement>('[data-sortable-index]');\n if (!target) return;\n\n const nextDropIndex = getDropIndex(target, Number(target.dataset.sortableIndex), clientY);\n if (nextDropIndex === null) return;\n\n touchDropIndex.current = nextDropIndex;\n setDropIndex(nextDropIndex);\n };\n\n const startTouchAutoScroll = (item: HTMLElement) => {\n const scrollContainer = getScrollableAncestor(item);\n if (!scrollContainer) return;\n\n const edgeSize = 72;\n const maxSpeed = 18;\n\n const step = () => {\n if (!touchDragActive.current) {\n autoScrollFrame.current = null;\n return;\n }\n\n const position = touchPosition.current;\n if (!position) {\n autoScrollFrame.current = requestAnimationFrame(step);\n return;\n }\n\n const rect =\n scrollContainer === document.scrollingElement\n ? { top: 0, bottom: window.innerHeight }\n : scrollContainer.getBoundingClientRect();\n\n let speed = 0;\n\n if (position.y < rect.top + edgeSize) {\n const distance = Math.max(0, position.y - rect.top);\n speed = -maxSpeed * (1 - distance / edgeSize);\n } else if (position.y > rect.bottom - edgeSize) {\n const distance = Math.max(0, rect.bottom - position.y);\n speed = maxSpeed * (1 - distance / edgeSize);\n }\n\n if (speed !== 0) {\n scrollContainer.scrollBy({ top: speed, behavior: 'auto' });\n updateTouchDropIndex(position.x, position.y);\n }\n\n autoScrollFrame.current = requestAnimationFrame(step);\n };\n\n clearAutoScrollFrame();\n autoScrollFrame.current = requestAnimationFrame(step);\n };\n\n const resetDragState = () => {\n drag.current = -1;\n setDropIndex(null);\n };\n\n useEffect(\n () => () => {\n clearTouchHoldTimer();\n clearAutoScrollFrame();\n window.removeEventListener('touchmove', preventTouchScroll);\n },\n [preventTouchScroll]\n );\n\n return (\n <List\n className={cx(className, styles.sortable, cols > 1 && styles.columns)}\n columns={columns}\n ordered\n style={withVars}\n {...props}\n >\n {arr.map((child, i) => {\n const key = React.isValidElement(child) ? child.key : null;\n\n return (\n <li\n key={key ?? i}\n data-sortable-index={i}\n onClickCapture={(e) => {\n if (suppressClickUntil.current <= Date.now()) return;\n e.preventDefault();\n e.stopPropagation();\n suppressClickUntil.current = 0;\n }}\n className={cx(\n dropIndex !== null && dropIndex > i - 10 && dropIndex < i + 10 && styles.pseudo,\n dropIndex === i && drag.current < i && styles['target-below'],\n dropIndex === i && drag.current > i && styles['target-above'],\n drag.current === i && styles.dragging\n )}\n onContextMenu={(e) => {\n if (touchDragActive.current || touchHoldTimer.current !== null) {\n e.preventDefault();\n }\n }}\n onTouchStart={(e) => {\n if (isRearranging || isInteractiveTarget(e.target)) return;\n suppressClickUntil.current = 0;\n\n const touch = e.touches[0];\n if (!touch) return;\n\n const item = e.currentTarget;\n touchStart.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n\n clearTouchHoldTimer();\n touchHoldTimer.current = setTimeout(() => {\n startDrag(i, item);\n touchDragActive.current = true;\n touchDropIndex.current = i;\n touchPosition.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n window.addEventListener('touchmove', preventTouchScroll, { passive: false });\n startTouchAutoScroll(item);\n }, 350);\n }}\n onTouchMove={(e) => {\n const touch = e.touches[0];\n if (!touch) return;\n\n touchPosition.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n\n if (!touchDragActive.current) {\n const start = touchStart.current;\n if (!start) return;\n\n const distance = Math.hypot(touch.clientX - start.x, touch.clientY - start.y);\n if (distance > 8) {\n clearTouchHoldTimer();\n touchStart.current = null;\n }\n return;\n }\n updateTouchDropIndex(touch.clientX, touch.clientY);\n }}\n onTouchEnd={(e) => {\n clearTouchHoldTimer();\n\n if (!touchDragActive.current) {\n touchStart.current = null;\n return;\n }\n\n e.preventDefault();\n const from = drag.current;\n const to = touchDropIndex.current;\n\n if (from >= 0 && to !== null && from !== to) {\n moveItem(from, to);\n }\n\n resetTouchDragState(true);\n }}\n onTouchCancel={() => resetTouchDragState()}\n draggable={!isRearranging && !usesTouchInput}\n onDragEnd={() => resetDragState()}\n onDragOver={(e) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n const nextDropIndex = getDropIndex(e.currentTarget, i, e.clientY);\n if (nextDropIndex === null) return;\n setDropIndex(nextDropIndex);\n }}\n onDragStart={(e) => {\n if (usesTouchInput) {\n e.preventDefault();\n return;\n }\n startDrag(i, e.currentTarget);\n e.dataTransfer.setData('text/plain', '');\n e.dataTransfer.effectAllowed = 'move';\n }}\n onDrop={(e) => {\n e.preventDefault();\n const from = drag.current;\n const to = dropIndex;\n if (from < 0 || to === null || from === to) return;\n moveItem(from, to);\n resetDragState();\n }}\n >\n <SortableItemContext.Provider\n value={{\n canMoveDown: i < arr.length - 1,\n canMoveUp: i > 0,\n index: i,\n moveDown: () => moveItem(i, i + 1),\n moveUp: () => moveItem(i, i - 1),\n }}\n >\n {child}\n </SortableItemContext.Provider>\n </li>\n );\n })}\n </List>\n );\n}\n"],"names":["SortableItemContext","createContext","useOptionalSortableItem","useContext","toPixels","value","Number","parseFloat","measureDraggedItem","item","content","firstElementChild","itemRect","getBoundingClientRect","rect","borderRadius","window","getComputedStyle","height","width","wrapperHeight","style","horizontalInsets","borderLeftWidth","borderRightWidth","paddingLeft","paddingRight","verticalInsets","borderBottomWidth","borderTopWidth","paddingBottom","paddingTop","Math","max","Sortable","children","className","columns","isRearranging","onChangeOrder","props","cols","isFinite","floor","arr","useMemo","React","Children","toArray","drag","useRef","usesTouchInput","navigator","maxTouchPoints","matchMedia","matches","touchDragActive","touchDropIndex","touchHoldTimer","touchStart","suppressClickUntil","touchPosition","autoScrollFrame","preventTouchScroll","event","preventDefault","current","zoneSize","setZoneSize","useState","dropIndex","setDropIndex","withVars","moveItem","from","to","length","next","slice","moved","splice","map","index","id","String","isValidElement","weight","clearTouchHoldTimer","clearTimeout","clearAutoScrollFrame","cancelAnimationFrame","getScrollableAncestor","element","parentElement","overflowY","test","scrollHeight","clientHeight","document","scrollingElement","HTMLElement","resetTouchDragState","suppressNextClick","removeEventListener","Date","now","startDrag","isInteractiveTarget","target","Element","Boolean","closest","getDropIndex","clientY","isInteger","itemHeight","rawIndex","top","updateTouchDropIndex","clientX","elementFromPoint","nextDropIndex","dataset","sortableIndex","startTouchAutoScroll","scrollContainer","edgeSize","maxSpeed","step","position","requestAnimationFrame","bottom","innerHeight","speed","y","distance","scrollBy","behavior","x","resetDragState","useEffect","jsx","List","cx","styles","sortable","child","i","key","e","stopPropagation","pseudo","dragging","touch","touches","currentTarget","setTimeout","addEventListener","passive","start","hypot","dataTransfer","dropEffect","setData","effectAllowed","canMoveDown","canMoveUp","moveDown","moveUp"],"mappings":"oaAiBMA,EAAsBC,EAAAA,cAA+C,IAAI,EAGxE,SAASC,IAA0B,CACxC,OAAOC,EAAAA,WAAWH,CAAmB,CACvC,CAqBA,MAAMI,EAAYC,GAAkBC,OAAOC,WAAWF,CAAK,GAAK,EAE1DG,GAAsBC,GAAkC,CAC5D,MAAMC,EAAUD,EAAKE,kBACfC,EAAWH,EAAKI,sBAAAA,EAEtB,GAAIH,EAAS,CACX,MAAMI,EAAOJ,EAAQG,sBAAAA,EAErB,MAAO,CACLE,aAAcC,OAAOC,iBAAiBP,CAAO,EAAEK,aAC/CG,OAAQJ,EAAKI,OACbC,MAAOL,EAAKK,MACZC,cAAeR,EAASM,MAAAA,CAE5B,CAEA,MAAMG,EAAQL,OAAOC,iBAAiBR,CAAI,EACpCa,EACJlB,EAASiB,EAAME,eAAe,EAC9BnB,EAASiB,EAAMG,gBAAgB,EAC/BpB,EAASiB,EAAMI,WAAW,EAC1BrB,EAASiB,EAAMK,YAAY,EACvBC,EACJvB,EAASiB,EAAMO,iBAAiB,EAChCxB,EAASiB,EAAMQ,cAAc,EAC7BzB,EAASiB,EAAMS,aAAa,EAC5B1B,EAASiB,EAAMU,UAAU,EAE3B,MAAO,CACLhB,aAAcM,EAAMN,aACpBG,OAAQc,KAAKC,IAAI,EAAGrB,EAASM,OAASS,CAAc,EACpDR,MAAOa,KAAKC,IAAI,EAAGrB,EAASO,MAAQG,CAAgB,EACpDF,cAAeR,EAASM,MAAAA,CAE5B,EAEO,SAASgB,GAAS,CACvBC,SAAAA,EACAC,UAAAA,EACAC,QAAAA,EAAU,EACVC,cAAAA,EAAgB,GAChBC,cAAAA,EACA,GAAGC,CACU,EAAG,CAChB,MAAMC,EAAOnC,OAAOoC,SAASL,CAAO,EAAIL,KAAKC,IAAI,EAAGD,KAAKW,MAAMN,CAAO,CAAC,EAAI,EACrEO,EAAMC,UAAQ,IAAMC,EAAMC,SAASC,QAAQb,CAAQ,EAAG,CAACA,CAAQ,CAAC,EAChEc,EAAOC,EAAAA,OAAO,EAAE,EAChBC,EAAiBN,EAAAA,QACrB,IACE,OAAO7B,OAAW,MACjBoC,UAAUC,eAAiB,GAAKrC,OAAOsC,WAAW,mBAAmB,EAAEC,SAC1E,CAAA,CACF,EACMC,EAAkBN,EAAAA,OAAO,EAAK,EAC9BO,EAAiBP,EAAAA,OAAsB,IAAI,EAC3CQ,EAAiBR,EAAAA,OAA6C,IAAI,EAClES,EAAaT,EAAAA,OAAwC,IAAI,EACzDU,EAAqBV,EAAAA,OAAO,CAAC,EAC7BW,EAAgBX,EAAAA,OAAwC,IAAI,EAC5DY,EAAkBZ,EAAAA,OAAsB,IAAI,EAC5Ca,EAAqBb,EAAAA,OAAQc,GAAsBA,EAAMC,eAAAA,CAAgB,EAAEC,QAC3E,CAACC,EAAUC,CAAW,EAAIC,WAAS,CACvCtD,aAAc,MACdG,OAAQ,EACRC,MAAO,EACPC,cAAe,CAAA,CAChB,EACK,CAACkD,EAAWC,CAAY,EAAIF,EAAAA,SAAwB,IAAI,EACxDG,EAA0B,CAC9B,GAAGhC,EAAMnB,MACT,gCAAiC,GAAG8C,EAASjD,MAAM,KACnD,gCAAiCiD,EAASpD,aAC1C,+BAAgC,GAAGoD,EAAShD,KAAK,IAAA,EAG7CsD,EAAWA,CAACC,EAAcC,IAAe,CAC7C,GAAIA,EAAK,GAAKA,GAAM/B,EAAIgC,QAAUF,IAASC,EAAI,OAE/C,MAAME,EAAOjC,EAAIkC,MAAAA,EACX,CAACC,CAAK,EAAIF,EAAKG,OAAON,EAAM,CAAC,EACnCG,EAAKG,OAAOL,EAAI,EAAGI,CAAK,EAExBxC,EACEsC,EAAKI,IAAI,CAACxE,EAAMyE,KAAW,CACzBC,GAAIC,OACFtC,EAAMuC,eAAe5E,CAAI,EACnBA,EAAK+B,MAAiC,SAAS,GAAK,OAAO0C,CAAK,GAClE,OAAOA,CAAK,EAClB,EACAI,OAAQT,EAAKD,OAAS,EAAIM,CAAAA,EAC1B,CACJ,CACF,EAEMK,EAAsBA,IAAM,CAC5B7B,EAAeQ,UAAY,OAC7BsB,aAAa9B,EAAeQ,OAAO,EACnCR,EAAeQ,QAAU,KAE7B,EAEMuB,EAAuBA,IAAM,CAC7B3B,EAAgBI,UAAY,OAC9BwB,qBAAqB5B,EAAgBI,OAAO,EAC5CJ,EAAgBI,QAAU,KAE9B,EAEMyB,EAAyBC,GAAgC,CAC7D,IAAI1B,GAAU0B,GAAAA,YAAAA,EAASC,gBAAiB,KAExC,KAAO3B,GAAS,CACd,KAAM,CAAE4B,UAAAA,CAAAA,EAAc9E,OAAOC,iBAAiBiD,CAAO,EAIrD,GAFE,wBAAwB6B,KAAKD,CAAS,GAAK5B,EAAQ8B,aAAe9B,EAAQ+B,aAE7D,OAAO/B,EACtBA,EAAUA,EAAQ2B,aACpB,CAEA,OAAOK,SAASC,4BAA4BC,YAAcF,SAASC,iBAAmB,IACxF,EAEME,EAAsBA,CAACC,EAAoB,KAAU,CACzDf,EAAAA,EACAE,EAAAA,EACAzE,OAAOuF,oBAAoB,YAAaxC,CAAkB,EAC1DF,EAAcK,QAAU,KACxBV,EAAgBU,QAAU,GAC1BT,EAAeS,QAAU,KACzBP,EAAWO,QAAU,KACrBN,EAAmBM,QAAUoC,EAAoBE,KAAKC,IAAAA,EAAQ,IAAM,EACpExD,EAAKiB,QAAU,GACfK,EAAa,IAAI,CACnB,EAEMmC,EAAYA,CAACxB,EAAezE,IAAwB,CACxDwC,EAAKiB,QAAUgB,EACfd,EAAY5D,GAAmBC,CAAI,CAAC,EACpC8D,EAAaW,CAAK,CACpB,EAEMyB,EAAuBC,GAC3BA,aAAkBC,SAClBC,EACEF,EAAOG,QACL,uFACF,EAGEC,EAAeA,CAACJ,EAAqB1B,EAAe+B,IAAoB,CAC5E,MAAMvC,EAAOzB,EAAKiB,QAClB,GAAI,CAAC5D,OAAO4G,UAAUhC,CAAK,GAAKR,EAAO,GAAKQ,IAAUR,EAAM,OAAO,KAEnE,MAAM5D,EAAO8F,EAAO/F,sBAAAA,EACdsG,EAAajC,IAAUR,EAAO,EAAIP,EAAS/C,cAAgBN,EAAKI,OAEhEkG,EADeH,EAAUnG,EAAKuG,IAAMF,EAAa,EACvBjC,EAAQ,EAAIA,EAC5C,OAAOkC,EAAW1C,EAAO0C,EAAW,EAAIA,CAC1C,EAEME,EAAuBA,CAACC,EAAiBN,IAAoB,OACjE,MAAML,GAASV,EAAAA,SACZsB,iBAAiBD,EAASN,CAAO,IADrBf,YAAAA,EAEXa,QAAqB,yBACzB,GAAI,CAACH,EAAQ,OAEb,MAAMa,EAAgBT,EAAaJ,EAAQtG,OAAOsG,EAAOc,QAAQC,aAAa,EAAGV,CAAO,EACpFQ,IAAkB,OAEtBhE,EAAeS,QAAUuD,EACzBlD,EAAakD,CAAa,EAC5B,EAEMG,EAAwBnH,GAAsB,CAClD,MAAMoH,EAAkBlC,EAAsBlF,CAAI,EAClD,GAAI,CAACoH,EAAiB,OAEtB,MAAMC,EAAW,GACXC,EAAW,GAEXC,EAAOA,IAAM,CACjB,GAAI,CAACxE,EAAgBU,QAAS,CAC5BJ,EAAgBI,QAAU,KAC1B,MACF,CAEA,MAAM+D,EAAWpE,EAAcK,QAC/B,GAAI,CAAC+D,EAAU,CACbnE,EAAgBI,QAAUgE,sBAAsBF,CAAI,EACpD,MACF,CAEA,MAAMlH,EACJ+G,IAAoB3B,SAASC,iBACzB,CAAEkB,IAAK,EAAGc,OAAQnH,OAAOoH,WAAAA,EACzBP,EAAgBhH,sBAAAA,EAEtB,IAAIwH,EAAQ,EAEZ,GAAIJ,EAASK,EAAIxH,EAAKuG,IAAMS,EAAU,CACpC,MAAMS,EAAWvG,KAAKC,IAAI,EAAGgG,EAASK,EAAIxH,EAAKuG,GAAG,EAClDgB,EAAQ,CAACN,GAAY,EAAIQ,EAAWT,EACtC,SAAWG,EAASK,EAAIxH,EAAKqH,OAASL,EAAU,CAC9C,MAAMS,EAAWvG,KAAKC,IAAI,EAAGnB,EAAKqH,OAASF,EAASK,CAAC,EACrDD,EAAQN,GAAY,EAAIQ,EAAWT,EACrC,CAEIO,IAAU,IACZR,EAAgBW,SAAS,CAAEnB,IAAKgB,EAAOI,SAAU,MAAA,CAAQ,EACzDnB,EAAqBW,EAASS,EAAGT,EAASK,CAAC,GAG7CxE,EAAgBI,QAAUgE,sBAAsBF,CAAI,CACtD,EAEAvC,EAAAA,EACA3B,EAAgBI,QAAUgE,sBAAsBF,CAAI,CACtD,EAEMW,EAAiBA,IAAM,CAC3B1F,EAAKiB,QAAU,GACfK,EAAa,IAAI,CACnB,EAEAqE,OAAAA,EAAAA,UACE,IAAM,IAAM,CACVrD,EAAAA,EACAE,EAAAA,EACAzE,OAAOuF,oBAAoB,YAAaxC,CAAkB,CAC5D,EACA,CAACA,CAAkB,CACrB,EAGE8E,EAAAA,IAACC,EAAAA,KAAA,CACC,UAAWC,EAAAA,EAAG3G,EAAW4G,EAAOC,SAAUxG,EAAO,GAAKuG,EAAO3G,OAAO,EACpE,QAAAA,EACA,QAAO,GACP,MAAOmC,EACP,GAAIhC,EAAM,iBAAA,WAETI,SAAAA,EAAIqC,IAAI,CAACiE,EAAOC,IAAM,CACrB,MAAMC,EAAMtG,EAAMuC,eAAe6D,CAAK,EAAIA,EAAME,IAAM,KAEtD,OACEP,EAAAA,IAAC,KAAA,CAEC,sBAAqBM,EACrB,eAAiBE,GAAM,CACjBzF,EAAmBM,SAAWsC,KAAKC,IAAAA,IACvC4C,EAAEpF,eAAAA,EACFoF,EAAEC,gBAAAA,EACF1F,EAAmBM,QAAU,EAC/B,EACA,UAAW6E,IACTzE,IAAc,MAAQA,EAAY6E,EAAI,IAAM7E,EAAY6E,EAAI,IAAMH,EAAOO,OACzEjF,IAAc6E,GAAKlG,EAAKiB,QAAUiF,GAAKH,EAAO,cAAc,EAC5D1E,IAAc6E,GAAKlG,EAAKiB,QAAUiF,GAAKH,EAAO,cAAc,EAC5D/F,EAAKiB,UAAYiF,GAAKH,EAAOQ,QAC/B,EACA,cAAgBH,GAAM,EAChB7F,EAAgBU,SAAWR,EAAeQ,UAAY,OACxDmF,EAAEpF,eAAAA,CAEN,EACA,aAAeoF,GAAM,CACnB,GAAI/G,GAAiBqE,EAAoB0C,EAAEzC,MAAM,EAAG,OACpDhD,EAAmBM,QAAU,EAE7B,MAAMuF,EAAQJ,EAAEK,QAAQ,CAAC,EACzB,GAAI,CAACD,EAAO,OAEZ,MAAMhJ,EAAO4I,EAAEM,cACfhG,EAAWO,QAAU,CACnBwE,EAAGe,EAAMlC,QACTe,EAAGmB,EAAMxC,OAAAA,EAGX1B,EAAAA,EACA7B,EAAeQ,QAAU0F,WAAW,IAAM,CACxClD,EAAUyC,EAAG1I,CAAI,EACjB+C,EAAgBU,QAAU,GAC1BT,EAAeS,QAAUiF,EACzBtF,EAAcK,QAAU,CACtBwE,EAAGe,EAAMlC,QACTe,EAAGmB,EAAMxC,OAAAA,EAEXjG,OAAO6I,iBAAiB,YAAa9F,EAAoB,CAAE+F,QAAS,EAAA,CAAO,EAC3ElC,EAAqBnH,CAAI,CAC3B,EAAG,GAAG,CACR,EACA,YAAc4I,GAAM,CAClB,MAAMI,EAAQJ,EAAEK,QAAQ,CAAC,EACzB,GAAKD,EAOL,IALA5F,EAAcK,QAAU,CACtBwE,EAAGe,EAAMlC,QACTe,EAAGmB,EAAMxC,OAAAA,EAGP,CAACzD,EAAgBU,QAAS,CAC5B,MAAM6F,EAAQpG,EAAWO,QACzB,GAAI,CAAC6F,EAAO,OAEK/H,KAAKgI,MAAMP,EAAMlC,QAAUwC,EAAMrB,EAAGe,EAAMxC,QAAU8C,EAAMzB,CAAC,EAC7D,IACb/C,EAAAA,EACA5B,EAAWO,QAAU,MAEvB,MACF,CACAoD,EAAqBmC,EAAMlC,QAASkC,EAAMxC,OAAO,EACnD,EACA,WAAaoC,GAAM,CAGjB,GAFA9D,EAAAA,EAEI,CAAC/B,EAAgBU,QAAS,CAC5BP,EAAWO,QAAU,KACrB,MACF,CAEAmF,EAAEpF,eAAAA,EACF,MAAMS,EAAOzB,EAAKiB,QACZS,EAAKlB,EAAeS,QAEtBQ,GAAQ,GAAKC,IAAO,MAAQD,IAASC,GACvCF,EAASC,EAAMC,CAAE,EAGnB0B,EAAoB,EAAI,CAC1B,EACA,cAAe,IAAMA,EAAAA,EACrB,UAAW,CAAC/D,GAAiB,CAACa,EAC9B,UAAW,IAAMwF,EAAAA,EACjB,WAAaU,GAAM,CACjBA,EAAEpF,eAAAA,EACFoF,EAAEY,aAAaC,WAAa,OAC5B,MAAMzC,EAAgBT,EAAaqC,EAAEM,cAAeR,EAAGE,EAAEpC,OAAO,EAC5DQ,IAAkB,MACtBlD,EAAakD,CAAa,CAC5B,EACA,YAAc4B,GAAM,CAClB,GAAIlG,EAAgB,CAClBkG,EAAEpF,eAAAA,EACF,MACF,CACAyC,EAAUyC,EAAGE,EAAEM,aAAa,EAC5BN,EAAEY,aAAaE,QAAQ,aAAc,EAAE,EACvCd,EAAEY,aAAaG,cAAgB,MACjC,EACA,OAASf,GAAM,CACbA,EAAEpF,eAAAA,EACF,MAAMS,EAAOzB,EAAKiB,QACZS,EAAKL,EACPI,EAAO,GAAKC,IAAO,MAAQD,IAASC,IACxCF,EAASC,EAAMC,CAAE,EACjBgE,EAAAA,EACF,EAAE,iBAAA,WAEF,eAAC3I,EAAoB,SAApB,CACC,MAAO,CACLqK,YAAalB,EAAIvG,EAAIgC,OAAS,EAC9B0F,UAAWnB,EAAI,EACfjE,MAAOiE,EACPoB,SAAUA,IAAM9F,EAAS0E,EAAGA,EAAI,CAAC,EACjCqB,OAAQA,IAAM/F,EAAS0E,EAAGA,EAAI,CAAC,CAAA,EAGhCD,SAAAA,CAAAA,CACH,CAAA,EA3HKE,GAAOD,CA4Hd,CAEJ,CAAC,CAAA,CACH,CAEJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/sortable/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { createContext, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { List } from '@/components/list';\n\nimport styles from './styles.module.css';\n\ntype SortItem = { id: string; weight: number };\n\ntype SortableItemContextValue = {\n canMoveDown: boolean;\n canMoveUp: boolean;\n index: number;\n moveDown: () => void;\n moveUp: () => void;\n};\n\nconst SortableItemContext = createContext<SortableItemContextValue | null>(null);\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useOptionalSortableItem() {\n return useContext(SortableItemContext);\n}\n\ntype SortableProps = React.ComponentPropsWithoutRef<'ol'> & {\n columns?: number;\n isRearranging?: boolean;\n onChangeOrder: (order: SortItem[]) => void;\n};\n\ntype SortableStyle = React.CSSProperties & {\n '--sortable-placeholder-height'?: string;\n '--sortable-placeholder-radius'?: string;\n '--sortable-placeholder-width'?: string;\n};\n\ntype ZoneSize = {\n borderRadius: string;\n height: number;\n width: number;\n wrapperHeight: number;\n};\n\nconst toPixels = (value: string) => Number.parseFloat(value) || 0;\n\nconst measureDraggedItem = (item: HTMLLIElement): ZoneSize => {\n const content = item.firstElementChild;\n const itemRect = item.getBoundingClientRect();\n\n if (content) {\n const rect = content.getBoundingClientRect();\n\n return {\n borderRadius: window.getComputedStyle(content).borderRadius,\n height: rect.height,\n width: rect.width,\n wrapperHeight: itemRect.height,\n };\n }\n\n const style = window.getComputedStyle(item);\n const horizontalInsets =\n toPixels(style.borderLeftWidth) +\n toPixels(style.borderRightWidth) +\n toPixels(style.paddingLeft) +\n toPixels(style.paddingRight);\n const verticalInsets =\n toPixels(style.borderBottomWidth) +\n toPixels(style.borderTopWidth) +\n toPixels(style.paddingBottom) +\n toPixels(style.paddingTop);\n\n return {\n borderRadius: style.borderRadius,\n height: Math.max(0, itemRect.height - verticalInsets),\n width: Math.max(0, itemRect.width - horizontalInsets),\n wrapperHeight: itemRect.height,\n };\n};\n\n/**\n * Children must provide a stable `data-id` for emits `{ id, weight }` and `key` (reconciliation).\n */\n\nexport function Sortable({\n children,\n className,\n columns = 1,\n isRearranging = false,\n onChangeOrder,\n ...props\n}: SortableProps) {\n const cols = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;\n const arr = useMemo(() => React.Children.toArray(children), [children]);\n const drag = useRef(-1);\n const usesTouchInput = useMemo(\n () =>\n typeof window !== 'undefined' &&\n (navigator.maxTouchPoints > 0 || window.matchMedia('(pointer: coarse)').matches),\n []\n );\n const touchDragActive = useRef(false);\n const touchDropIndex = useRef<number | null>(null);\n const touchHoldTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const touchStart = useRef<{ x: number; y: number } | null>(null);\n const suppressClickUntil = useRef(0);\n const touchPosition = useRef<{ x: number; y: number } | null>(null);\n const autoScrollFrame = useRef<number | null>(null);\n const preventTouchScroll = useRef((event: TouchEvent) => event.preventDefault()).current;\n const [zoneSize, setZoneSize] = useState({\n borderRadius: '0px',\n height: 0,\n width: 0,\n wrapperHeight: 0,\n });\n const [dropIndex, setDropIndex] = useState<number | null>(null);\n const withVars: SortableStyle = {\n ...props.style,\n '--sortable-placeholder-height': `${zoneSize.height}px`,\n '--sortable-placeholder-radius': zoneSize.borderRadius,\n '--sortable-placeholder-width': `${zoneSize.width}px`,\n };\n\n const moveItem = (from: number, to: number) => {\n if (to < 0 || to >= arr.length || from === to) return;\n\n const next = arr.slice();\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n\n onChangeOrder(\n next.map((item, index) => ({\n id: String(\n React.isValidElement(item)\n ? ((item.props as { 'data-id'?: string })['data-id'] ?? `idx-${index}`)\n : `idx-${index}`\n ),\n weight: next.length - 1 - index,\n }))\n );\n };\n\n const clearTouchHoldTimer = () => {\n if (touchHoldTimer.current !== null) {\n clearTimeout(touchHoldTimer.current);\n touchHoldTimer.current = null;\n }\n };\n\n const clearAutoScrollFrame = () => {\n if (autoScrollFrame.current !== null) {\n cancelAnimationFrame(autoScrollFrame.current);\n autoScrollFrame.current = null;\n }\n };\n\n const getScrollableAncestor = (element: HTMLElement | null) => {\n let current = element?.parentElement ?? null;\n\n while (current) {\n const { overflowY } = window.getComputedStyle(current);\n const canScroll =\n /(auto|scroll|overlay)/.test(overflowY) && current.scrollHeight > current.clientHeight;\n\n if (canScroll) return current;\n current = current.parentElement;\n }\n\n return document.scrollingElement instanceof HTMLElement ? document.scrollingElement : null;\n };\n\n const resetTouchDragState = (suppressNextClick = false) => {\n clearTouchHoldTimer();\n clearAutoScrollFrame();\n window.removeEventListener('touchmove', preventTouchScroll);\n touchPosition.current = null;\n touchDragActive.current = false;\n touchDropIndex.current = null;\n touchStart.current = null;\n suppressClickUntil.current = suppressNextClick ? Date.now() + 500 : 0;\n drag.current = -1;\n setDropIndex(null);\n };\n\n const startDrag = (index: number, item: HTMLLIElement) => {\n drag.current = index;\n setZoneSize(measureDraggedItem(item));\n setDropIndex(index);\n };\n\n const isInteractiveTarget = (target: EventTarget | null) =>\n target instanceof Element &&\n Boolean(\n target.closest(\n 'button, a, input, textarea, select, option, [role=\"button\"], [contenteditable=\"true\"]'\n )\n );\n\n const getDropIndex = (target: HTMLElement, index: number, clientY: number) => {\n const from = drag.current;\n if (!Number.isInteger(index) || from < 0 || index === from) return null;\n\n const rect = target.getBoundingClientRect();\n const itemHeight = index === from + 1 ? zoneSize.wrapperHeight : rect.height;\n const isBottomHalf = clientY > rect.top + itemHeight / 2;\n const rawIndex = isBottomHalf ? index + 1 : index;\n return rawIndex > from ? rawIndex - 1 : rawIndex;\n };\n\n const updateTouchDropIndex = (clientX: number, clientY: number) => {\n const target = document\n .elementFromPoint(clientX, clientY)\n ?.closest<HTMLElement>('[data-sortable-index]');\n if (!target) return;\n\n const nextDropIndex = getDropIndex(target, Number(target.dataset.sortableIndex), clientY);\n if (nextDropIndex === null) return;\n\n touchDropIndex.current = nextDropIndex;\n setDropIndex(nextDropIndex);\n };\n\n const startTouchAutoScroll = (item: HTMLElement) => {\n const scrollContainer = getScrollableAncestor(item);\n if (!scrollContainer) return;\n\n const edgeSize = 72;\n const maxSpeed = 18;\n\n const step = () => {\n if (!touchDragActive.current) {\n autoScrollFrame.current = null;\n return;\n }\n\n const position = touchPosition.current;\n if (!position) {\n autoScrollFrame.current = requestAnimationFrame(step);\n return;\n }\n\n const rect =\n scrollContainer === document.scrollingElement\n ? { top: 0, bottom: window.innerHeight }\n : scrollContainer.getBoundingClientRect();\n\n let speed = 0;\n\n if (position.y < rect.top + edgeSize) {\n const distance = Math.max(0, position.y - rect.top);\n speed = -maxSpeed * (1 - distance / edgeSize);\n } else if (position.y > rect.bottom - edgeSize) {\n const distance = Math.max(0, rect.bottom - position.y);\n speed = maxSpeed * (1 - distance / edgeSize);\n }\n\n if (speed !== 0) {\n scrollContainer.scrollBy({ top: speed, behavior: 'auto' });\n updateTouchDropIndex(position.x, position.y);\n }\n\n autoScrollFrame.current = requestAnimationFrame(step);\n };\n\n clearAutoScrollFrame();\n autoScrollFrame.current = requestAnimationFrame(step);\n };\n\n const resetDragState = () => {\n drag.current = -1;\n setDropIndex(null);\n };\n\n useEffect(\n () => () => {\n clearTouchHoldTimer();\n clearAutoScrollFrame();\n window.removeEventListener('touchmove', preventTouchScroll);\n },\n [preventTouchScroll]\n );\n\n return (\n <List\n className={cx(className, styles.sortable, cols > 1 && styles.columns)}\n columns={columns}\n ordered\n style={withVars}\n {...props}\n >\n {arr.map((child, i) => {\n const key = React.isValidElement(child) ? child.key : null;\n\n return (\n <li\n key={key ?? i}\n data-sortable-index={i}\n onClickCapture={(e) => {\n if (suppressClickUntil.current <= Date.now()) return;\n e.preventDefault();\n e.stopPropagation();\n suppressClickUntil.current = 0;\n }}\n className={cx(\n dropIndex !== null && dropIndex > i - 10 && dropIndex < i + 10 && styles.pseudo,\n dropIndex === i && drag.current < i && styles['target-below'],\n dropIndex === i && drag.current > i && styles['target-above'],\n drag.current === i && styles.dragging\n )}\n onContextMenu={(e) => {\n if (touchDragActive.current || touchHoldTimer.current !== null) {\n e.preventDefault();\n }\n }}\n onTouchStart={(e) => {\n if (isRearranging || isInteractiveTarget(e.target)) return;\n suppressClickUntil.current = 0;\n\n const touch = e.touches[0];\n if (!touch) return;\n\n const item = e.currentTarget;\n touchStart.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n\n clearTouchHoldTimer();\n touchHoldTimer.current = setTimeout(() => {\n startDrag(i, item);\n touchDragActive.current = true;\n touchDropIndex.current = i;\n touchPosition.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n window.addEventListener('touchmove', preventTouchScroll, { passive: false });\n startTouchAutoScroll(item);\n }, 350);\n }}\n onTouchMove={(e) => {\n const touch = e.touches[0];\n if (!touch) return;\n\n touchPosition.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n\n if (!touchDragActive.current) {\n const start = touchStart.current;\n if (!start) return;\n\n const distance = Math.hypot(touch.clientX - start.x, touch.clientY - start.y);\n if (distance > 8) {\n clearTouchHoldTimer();\n touchStart.current = null;\n }\n return;\n }\n updateTouchDropIndex(touch.clientX, touch.clientY);\n }}\n onTouchEnd={(e) => {\n clearTouchHoldTimer();\n\n if (!touchDragActive.current) {\n touchStart.current = null;\n return;\n }\n\n e.preventDefault();\n const from = drag.current;\n const to = touchDropIndex.current;\n\n if (from >= 0 && to !== null && from !== to) {\n moveItem(from, to);\n }\n\n resetTouchDragState(true);\n }}\n onTouchCancel={() => resetTouchDragState()}\n draggable={!isRearranging && !usesTouchInput}\n onDragEnd={() => resetDragState()}\n onDragOver={(e) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n const nextDropIndex = getDropIndex(e.currentTarget, i, e.clientY);\n if (nextDropIndex === null) return;\n setDropIndex(nextDropIndex);\n }}\n onDragStart={(e) => {\n if (usesTouchInput) {\n e.preventDefault();\n return;\n }\n startDrag(i, e.currentTarget);\n e.dataTransfer.setData('text/plain', '');\n e.dataTransfer.effectAllowed = 'move';\n }}\n onDrop={(e) => {\n e.preventDefault();\n const from = drag.current;\n const to = dropIndex;\n if (from < 0 || to === null || from === to) return;\n moveItem(from, to);\n resetDragState();\n }}\n >\n <SortableItemContext.Provider\n value={{\n canMoveDown: i < arr.length - 1,\n canMoveUp: i > 0,\n index: i,\n moveDown: () => moveItem(i, i + 1),\n moveUp: () => moveItem(i, i - 1),\n }}\n >\n {child}\n </SortableItemContext.Provider>\n </li>\n );\n })}\n </List>\n );\n}\n"],"names":["SortableItemContext","createContext","useOptionalSortableItem","useContext","toPixels","value","Number","parseFloat","measureDraggedItem","item","content","firstElementChild","itemRect","getBoundingClientRect","rect","borderRadius","window","getComputedStyle","height","width","wrapperHeight","style","horizontalInsets","borderLeftWidth","borderRightWidth","paddingLeft","paddingRight","verticalInsets","borderBottomWidth","borderTopWidth","paddingBottom","paddingTop","Math","max","Sortable","children","className","columns","isRearranging","onChangeOrder","props","cols","isFinite","floor","arr","useMemo","React","Children","toArray","drag","useRef","usesTouchInput","navigator","maxTouchPoints","matchMedia","matches","touchDragActive","touchDropIndex","touchHoldTimer","touchStart","suppressClickUntil","touchPosition","autoScrollFrame","preventTouchScroll","event","preventDefault","current","zoneSize","setZoneSize","useState","dropIndex","setDropIndex","withVars","moveItem","from","to","length","next","slice","moved","splice","map","index","id","String","isValidElement","weight","clearTouchHoldTimer","clearTimeout","clearAutoScrollFrame","cancelAnimationFrame","getScrollableAncestor","element","parentElement","overflowY","test","scrollHeight","clientHeight","document","scrollingElement","HTMLElement","resetTouchDragState","suppressNextClick","removeEventListener","Date","now","startDrag","isInteractiveTarget","target","Element","Boolean","closest","getDropIndex","clientY","isInteger","itemHeight","rawIndex","top","updateTouchDropIndex","clientX","elementFromPoint","nextDropIndex","dataset","sortableIndex","startTouchAutoScroll","scrollContainer","edgeSize","maxSpeed","step","position","requestAnimationFrame","bottom","innerHeight","speed","y","distance","scrollBy","behavior","x","resetDragState","useEffect","jsx","List","cx","styles","sortable","child","i","key","e","stopPropagation","pseudo","dragging","touch","touches","currentTarget","setTimeout","addEventListener","passive","start","hypot","dataTransfer","dropEffect","setData","effectAllowed","canMoveDown","canMoveUp","moveDown","moveUp"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/sortable/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { createContext, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { List } from '@/components/list';\n\nimport styles from './styles.module.css';\n\ntype SortItem = { id: string; weight: number };\n\ntype SortableItemContextValue = {\n canMoveDown: boolean;\n canMoveUp: boolean;\n index: number;\n moveDown: () => void;\n moveUp: () => void;\n};\n\nconst SortableItemContext = createContext<SortableItemContextValue | null>(null);\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useOptionalSortableItem() {\n return useContext(SortableItemContext);\n}\n\ntype SortableProps = React.ComponentPropsWithoutRef<'ol'> & {\n columns?: number;\n isRearranging?: boolean;\n onChangeOrder: (order: SortItem[]) => void;\n};\n\ntype SortableStyle = React.CSSProperties & {\n '--sortable-placeholder-height'?: string;\n '--sortable-placeholder-radius'?: string;\n '--sortable-placeholder-width'?: string;\n};\n\ntype ZoneSize = {\n borderRadius: string;\n height: number;\n width: number;\n wrapperHeight: number;\n};\n\nconst toPixels = (value: string) => Number.parseFloat(value) || 0;\n\nconst measureDraggedItem = (item: HTMLLIElement): ZoneSize => {\n const content = item.firstElementChild;\n const itemRect = item.getBoundingClientRect();\n\n if (content) {\n const rect = content.getBoundingClientRect();\n\n return {\n borderRadius: window.getComputedStyle(content).borderRadius,\n height: rect.height,\n width: rect.width,\n wrapperHeight: itemRect.height,\n };\n }\n\n const style = window.getComputedStyle(item);\n const horizontalInsets =\n toPixels(style.borderLeftWidth) +\n toPixels(style.borderRightWidth) +\n toPixels(style.paddingLeft) +\n toPixels(style.paddingRight);\n const verticalInsets =\n toPixels(style.borderBottomWidth) +\n toPixels(style.borderTopWidth) +\n toPixels(style.paddingBottom) +\n toPixels(style.paddingTop);\n\n return {\n borderRadius: style.borderRadius,\n height: Math.max(0, itemRect.height - verticalInsets),\n width: Math.max(0, itemRect.width - horizontalInsets),\n wrapperHeight: itemRect.height,\n };\n};\n\nexport function Sortable({\n children,\n className,\n columns = 1,\n isRearranging = false,\n onChangeOrder,\n ...props\n}: SortableProps) {\n const cols = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;\n const arr = useMemo(() => React.Children.toArray(children), [children]);\n const drag = useRef(-1);\n const usesTouchInput = useMemo(\n () =>\n typeof window !== 'undefined' &&\n (navigator.maxTouchPoints > 0 || window.matchMedia('(pointer: coarse)').matches),\n []\n );\n const touchDragActive = useRef(false);\n const touchDropIndex = useRef<number | null>(null);\n const touchHoldTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const touchStart = useRef<{ x: number; y: number } | null>(null);\n const suppressClickUntil = useRef(0);\n const touchPosition = useRef<{ x: number; y: number } | null>(null);\n const autoScrollFrame = useRef<number | null>(null);\n const preventTouchScroll = useRef((event: TouchEvent) => event.preventDefault()).current;\n const [zoneSize, setZoneSize] = useState({\n borderRadius: '0px',\n height: 0,\n width: 0,\n wrapperHeight: 0,\n });\n const [dropIndex, setDropIndex] = useState<number | null>(null);\n const withVars: SortableStyle = {\n ...props.style,\n '--sortable-placeholder-height': `${zoneSize.height}px`,\n '--sortable-placeholder-radius': zoneSize.borderRadius,\n '--sortable-placeholder-width': `${zoneSize.width}px`,\n };\n\n const moveItem = (from: number, to: number) => {\n if (to < 0 || to >= arr.length || from === to) return;\n\n const next = arr.slice();\n const [moved] = next.splice(from, 1);\n next.splice(to, 0, moved);\n\n onChangeOrder(\n next.map((item, index) => ({\n id: String(\n React.isValidElement(item)\n ? ((item.props as { 'data-id'?: string })['data-id'] ?? `idx-${index}`)\n : `idx-${index}`\n ),\n weight: next.length - 1 - index,\n }))\n );\n };\n\n const clearTouchHoldTimer = () => {\n if (touchHoldTimer.current !== null) {\n clearTimeout(touchHoldTimer.current);\n touchHoldTimer.current = null;\n }\n };\n\n const clearAutoScrollFrame = () => {\n if (autoScrollFrame.current !== null) {\n cancelAnimationFrame(autoScrollFrame.current);\n autoScrollFrame.current = null;\n }\n };\n\n const getScrollableAncestor = (element: HTMLElement | null) => {\n let current = element?.parentElement ?? null;\n\n while (current) {\n const { overflowY } = window.getComputedStyle(current);\n const canScroll =\n /(auto|scroll|overlay)/.test(overflowY) && current.scrollHeight > current.clientHeight;\n\n if (canScroll) return current;\n current = current.parentElement;\n }\n\n return document.scrollingElement instanceof HTMLElement ? document.scrollingElement : null;\n };\n\n const resetTouchDragState = (suppressNextClick = false) => {\n clearTouchHoldTimer();\n clearAutoScrollFrame();\n window.removeEventListener('touchmove', preventTouchScroll);\n touchPosition.current = null;\n touchDragActive.current = false;\n touchDropIndex.current = null;\n touchStart.current = null;\n suppressClickUntil.current = suppressNextClick ? Date.now() + 500 : 0;\n drag.current = -1;\n setDropIndex(null);\n };\n\n const startDrag = (index: number, item: HTMLLIElement) => {\n drag.current = index;\n setZoneSize(measureDraggedItem(item));\n setDropIndex(index);\n };\n\n const isInteractiveTarget = (target: EventTarget | null) =>\n target instanceof Element &&\n Boolean(\n target.closest(\n 'button, a, input, textarea, select, option, [role=\"button\"], [contenteditable=\"true\"]'\n )\n );\n\n const getDropIndex = (target: HTMLElement, index: number, clientY: number) => {\n const from = drag.current;\n if (!Number.isInteger(index) || from < 0 || index === from) return null;\n\n const rect = target.getBoundingClientRect();\n const itemHeight = index === from + 1 ? zoneSize.wrapperHeight : rect.height;\n const isBottomHalf = clientY > rect.top + itemHeight / 2;\n const rawIndex = isBottomHalf ? index + 1 : index;\n return rawIndex > from ? rawIndex - 1 : rawIndex;\n };\n\n const updateTouchDropIndex = (clientX: number, clientY: number) => {\n const target = document\n .elementFromPoint(clientX, clientY)\n ?.closest<HTMLElement>('[data-sortable-index]');\n if (!target) return;\n\n const nextDropIndex = getDropIndex(target, Number(target.dataset.sortableIndex), clientY);\n if (nextDropIndex === null) return;\n\n touchDropIndex.current = nextDropIndex;\n setDropIndex(nextDropIndex);\n };\n\n const startTouchAutoScroll = (item: HTMLElement) => {\n const scrollContainer = getScrollableAncestor(item);\n if (!scrollContainer) return;\n\n const edgeSize = 72;\n const maxSpeed = 18;\n\n const step = () => {\n if (!touchDragActive.current) {\n autoScrollFrame.current = null;\n return;\n }\n\n const position = touchPosition.current;\n if (!position) {\n autoScrollFrame.current = requestAnimationFrame(step);\n return;\n }\n\n const rect =\n scrollContainer === document.scrollingElement\n ? { top: 0, bottom: window.innerHeight }\n : scrollContainer.getBoundingClientRect();\n\n let speed = 0;\n\n if (position.y < rect.top + edgeSize) {\n const distance = Math.max(0, position.y - rect.top);\n speed = -maxSpeed * (1 - distance / edgeSize);\n } else if (position.y > rect.bottom - edgeSize) {\n const distance = Math.max(0, rect.bottom - position.y);\n speed = maxSpeed * (1 - distance / edgeSize);\n }\n\n if (speed !== 0) {\n scrollContainer.scrollBy({ top: speed, behavior: 'auto' });\n updateTouchDropIndex(position.x, position.y);\n }\n\n autoScrollFrame.current = requestAnimationFrame(step);\n };\n\n clearAutoScrollFrame();\n autoScrollFrame.current = requestAnimationFrame(step);\n };\n\n const resetDragState = () => {\n drag.current = -1;\n setDropIndex(null);\n };\n\n useEffect(\n () => () => {\n clearTouchHoldTimer();\n clearAutoScrollFrame();\n window.removeEventListener('touchmove', preventTouchScroll);\n },\n [preventTouchScroll]\n );\n\n return (\n <List\n className={cx(className, styles.sortable, cols > 1 && styles.columns)}\n columns={columns}\n ordered\n style={withVars}\n {...props}\n >\n {arr.map((child, i) => {\n const key = React.isValidElement(child) ? child.key : null;\n\n return (\n <li\n key={key ?? i}\n data-sortable-index={i}\n onClickCapture={(e) => {\n if (suppressClickUntil.current <= Date.now()) return;\n e.preventDefault();\n e.stopPropagation();\n suppressClickUntil.current = 0;\n }}\n className={cx(\n dropIndex !== null && dropIndex > i - 10 && dropIndex < i + 10 && styles.pseudo,\n dropIndex === i && drag.current < i && styles['target-below'],\n dropIndex === i && drag.current > i && styles['target-above'],\n drag.current === i && styles.dragging\n )}\n onContextMenu={(e) => {\n if (touchDragActive.current || touchHoldTimer.current !== null) {\n e.preventDefault();\n }\n }}\n onTouchStart={(e) => {\n if (isRearranging || isInteractiveTarget(e.target)) return;\n suppressClickUntil.current = 0;\n\n const touch = e.touches[0];\n if (!touch) return;\n\n const item = e.currentTarget;\n touchStart.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n\n clearTouchHoldTimer();\n touchHoldTimer.current = setTimeout(() => {\n startDrag(i, item);\n touchDragActive.current = true;\n touchDropIndex.current = i;\n touchPosition.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n window.addEventListener('touchmove', preventTouchScroll, { passive: false });\n startTouchAutoScroll(item);\n }, 350);\n }}\n onTouchMove={(e) => {\n const touch = e.touches[0];\n if (!touch) return;\n\n touchPosition.current = {\n x: touch.clientX,\n y: touch.clientY,\n };\n\n if (!touchDragActive.current) {\n const start = touchStart.current;\n if (!start) return;\n\n const distance = Math.hypot(touch.clientX - start.x, touch.clientY - start.y);\n if (distance > 8) {\n clearTouchHoldTimer();\n touchStart.current = null;\n }\n return;\n }\n updateTouchDropIndex(touch.clientX, touch.clientY);\n }}\n onTouchEnd={(e) => {\n clearTouchHoldTimer();\n\n if (!touchDragActive.current) {\n touchStart.current = null;\n return;\n }\n\n e.preventDefault();\n const from = drag.current;\n const to = touchDropIndex.current;\n\n if (from >= 0 && to !== null && from !== to) {\n moveItem(from, to);\n }\n\n resetTouchDragState(true);\n }}\n onTouchCancel={() => resetTouchDragState()}\n draggable={!isRearranging && !usesTouchInput}\n onDragEnd={() => resetDragState()}\n onDragOver={(e) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n const nextDropIndex = getDropIndex(e.currentTarget, i, e.clientY);\n if (nextDropIndex === null) return;\n setDropIndex(nextDropIndex);\n }}\n onDragStart={(e) => {\n if (usesTouchInput) {\n e.preventDefault();\n return;\n }\n startDrag(i, e.currentTarget);\n e.dataTransfer.setData('text/plain', '');\n e.dataTransfer.effectAllowed = 'move';\n }}\n onDrop={(e) => {\n e.preventDefault();\n const from = drag.current;\n const to = dropIndex;\n if (from < 0 || to === null || from === to) return;\n moveItem(from, to);\n resetDragState();\n }}\n >\n <SortableItemContext.Provider\n value={{\n canMoveDown: i < arr.length - 1,\n canMoveUp: i > 0,\n index: i,\n moveDown: () => moveItem(i, i + 1),\n moveUp: () => moveItem(i, i - 1),\n }}\n >\n {child}\n </SortableItemContext.Provider>\n </li>\n );\n })}\n </List>\n );\n}\n"],"names":["SortableItemContext","createContext","useOptionalSortableItem","useContext","toPixels","value","Number","parseFloat","measureDraggedItem","item","content","firstElementChild","itemRect","getBoundingClientRect","rect","borderRadius","window","getComputedStyle","height","width","wrapperHeight","style","horizontalInsets","borderLeftWidth","borderRightWidth","paddingLeft","paddingRight","verticalInsets","borderBottomWidth","borderTopWidth","paddingBottom","paddingTop","Math","max","Sortable","children","className","columns","isRearranging","onChangeOrder","props","cols","isFinite","floor","arr","useMemo","React","Children","toArray","drag","useRef","usesTouchInput","navigator","maxTouchPoints","matchMedia","matches","touchDragActive","touchDropIndex","touchHoldTimer","touchStart","suppressClickUntil","touchPosition","autoScrollFrame","preventTouchScroll","event","preventDefault","current","zoneSize","setZoneSize","useState","dropIndex","setDropIndex","withVars","moveItem","from","to","length","next","slice","moved","splice","map","index","id","String","isValidElement","weight","clearTouchHoldTimer","clearTimeout","clearAutoScrollFrame","cancelAnimationFrame","getScrollableAncestor","element","parentElement","overflowY","test","scrollHeight","clientHeight","document","scrollingElement","HTMLElement","resetTouchDragState","suppressNextClick","removeEventListener","Date","now","startDrag","isInteractiveTarget","target","Element","Boolean","closest","getDropIndex","clientY","isInteger","itemHeight","rawIndex","top","updateTouchDropIndex","clientX","elementFromPoint","nextDropIndex","dataset","sortableIndex","startTouchAutoScroll","scrollContainer","edgeSize","maxSpeed","step","position","requestAnimationFrame","bottom","innerHeight","speed","y","distance","scrollBy","behavior","x","resetDragState","useEffect","jsx","List","cx","styles","sortable","child","i","key","e","stopPropagation","pseudo","dragging","touch","touches","currentTarget","setTimeout","addEventListener","passive","start","hypot","dataTransfer","dropEffect","setData","effectAllowed","canMoveDown","canMoveUp","moveDown","moveUp"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/table/index.tsx"],"sourcesContent":["import { Children, cloneElement, isValidElement, useCallback, useRef } from 'react';\n\nimport { Icon } from '../icon';\nimport styles from './styles.module.css';\n\nexport type TableProps = React.TableHTMLAttributes<HTMLTableElement> & {\n children?: React.ReactNode;\n locale?: string | string[];\n};\n\ntype SortType = 'date' | 'number' | 'text';\n\ntype TableChildProps = {\n children?: React.ReactNode;\n colSpan?: number;\n 'data-span'?: string;\n 'data-type'?: SortType;\n};\n\nconst isTableElement = (child: React.ReactNode): child is React.ReactElement<TableChildProps> =>\n isValidElement<TableChildProps>(child);\n\nconst countCells = (children: React.ReactNode): number =>\n Children.toArray(children).reduce<number>((count, child) => {\n if (!isTableElement(child)) return count;\n return (\n count + (child.type === 'td' || child.type === 'th' ? 1 : countCells(child.props.children))\n );\n }, 0);\n\nconst getFirstRowCellCount = (children: React.ReactNode): number | null => {\n for (const child of Children.toArray(children)) {\n if (!isTableElement(child)) continue;\n\n if (child.type === 'tr') return countCells(child.props.children);\n\n const nestedCount = getFirstRowCellCount(child.props.children);\n if (nestedCount !== null) return nestedCount;\n }\n\n return null;\n};\n\nconst normalizeChildren = (children: React.ReactNode, columnCount: number): React.ReactNode =>\n Children.map(children, (child) => {\n if (!isTableElement(child)) return child;\n\n let nextChildren =\n child.props.children === undefined\n ? child.props.children\n : normalizeChildren(child.props.children, columnCount);\n let nextProps: Partial<TableChildProps> | undefined;\n\n if (child.type === 'td' && child.props['data-span'] === 'all') {\n nextProps = { colSpan: columnCount };\n }\n\n if (child.type === 'th' && child.props['data-type']) {\n nextChildren = (\n <span className={styles.sortable}>\n {nextChildren}\n <Icon name='CaretUpDown' />\n </span>\n );\n }\n\n return nextProps || nextChildren !== child.props.children\n ? cloneElement(child, nextProps, nextChildren)\n : child;\n });\n\
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/table/index.tsx"],"sourcesContent":["import { Children, cloneElement, isValidElement, useCallback, useRef } from 'react';\n\nimport { Icon } from '../icon';\nimport styles from './styles.module.css';\n\nexport type TableProps = React.TableHTMLAttributes<HTMLTableElement> & {\n children?: React.ReactNode;\n locale?: string | string[];\n};\n\ntype SortType = 'date' | 'number' | 'text';\n\ntype TableChildProps = {\n children?: React.ReactNode;\n colSpan?: number;\n 'data-span'?: string;\n 'data-type'?: SortType;\n};\n\nconst isTableElement = (child: React.ReactNode): child is React.ReactElement<TableChildProps> =>\n isValidElement<TableChildProps>(child);\n\nconst countCells = (children: React.ReactNode): number =>\n Children.toArray(children).reduce<number>((count, child) => {\n if (!isTableElement(child)) return count;\n return (\n count + (child.type === 'td' || child.type === 'th' ? 1 : countCells(child.props.children))\n );\n }, 0);\n\nconst getFirstRowCellCount = (children: React.ReactNode): number | null => {\n for (const child of Children.toArray(children)) {\n if (!isTableElement(child)) continue;\n\n if (child.type === 'tr') return countCells(child.props.children);\n\n const nestedCount = getFirstRowCellCount(child.props.children);\n if (nestedCount !== null) return nestedCount;\n }\n\n return null;\n};\n\nconst normalizeChildren = (children: React.ReactNode, columnCount: number): React.ReactNode =>\n Children.map(children, (child) => {\n if (!isTableElement(child)) return child;\n\n let nextChildren =\n child.props.children === undefined\n ? child.props.children\n : normalizeChildren(child.props.children, columnCount);\n let nextProps: Partial<TableChildProps> | undefined;\n\n if (child.type === 'td' && child.props['data-span'] === 'all') {\n nextProps = { colSpan: columnCount };\n }\n\n if (child.type === 'th' && child.props['data-type']) {\n nextChildren = (\n <span className={styles.sortable}>\n {nextChildren}\n <Icon name='CaretUpDown' />\n </span>\n );\n }\n\n return nextProps || nextChildren !== child.props.children\n ? cloneElement(child, nextProps, nextChildren)\n : child;\n });\n\nconst compare = (a: string, b: string, type: SortType, locale?: string | string[], dir = 1) => {\n if (type === 'text') {\n return a.localeCompare(b, locale, { sensitivity: 'base' }) * dir;\n }\n\n const left = type === 'date' ? Date.parse(a) : Number.parseFloat(a);\n const right = type === 'date' ? Date.parse(b) : Number.parseFloat(b);\n\n if (Number.isNaN(left) && Number.isNaN(right)) return 0;\n if (Number.isNaN(left)) return 1;\n if (Number.isNaN(right)) return -1;\n return (left - right) * dir;\n};\n\nexport const Table = ({ children, locale, ...props }: TableProps) => {\n const ref = useRef<HTMLTableElement | null>(null);\n const columnCount = getFirstRowCellCount(children);\n const normalizedChildren =\n columnCount && columnCount > 0 ? normalizeChildren(children, columnCount) : children;\n\n const setSortState = (\n thead: HTMLTableSectionElement,\n active: HTMLTableCellElement,\n dir: 'asc' | 'desc'\n ) => {\n const ths = thead.querySelectorAll<HTMLTableCellElement>('th[data-type]');\n\n ths.forEach((th) => {\n if (th === active) {\n th.dataset.dir = dir;\n th.setAttribute('aria-sort', dir === 'asc' ? 'ascending' : 'descending');\n } else {\n delete th.dataset.dir;\n th.setAttribute('aria-sort', 'none');\n }\n });\n };\n\n const onClick = useCallback(\n (e: React.MouseEvent<HTMLTableElement>) => {\n const table = ref.current;\n if (!table) return;\n\n const th = (e.target as HTMLElement | null)?.closest('th');\n if (!th) return;\n\n const thead = table.tHead;\n if (!thead || !thead.contains(th)) return;\n\n const col = th.cellIndex;\n if (col < 0) return;\n\n const tbody = table.tBodies?.[0];\n if (!tbody) return;\n\n const type = th.getAttribute('data-type') as SortType | null;\n if (!type) return;\n\n const direction = th.dataset.dir === 'asc' ? 'desc' : 'asc';\n setSortState(thead, th, direction);\n const dir = direction === 'asc' ? 1 : -1;\n\n const rows = Array.from(tbody.rows);\n\n rows.sort((a, b) => {\n const av = (a.cells[col]?.textContent ?? '').trim();\n const bv = (b.cells[col]?.textContent ?? '').trim();\n return compare(av, bv, type, locale, dir);\n });\n\n tbody.append(...rows);\n },\n [locale]\n );\n\n return (\n <table\n className={styles.table}\n onClick={onClick}\n ref={ref}\n {...props}\n >\n {normalizedChildren}\n </table>\n );\n};\n"],"names":["isTableElement","child","isValidElement","countCells","children","Children","toArray","reduce","count","type","props","getFirstRowCellCount","nestedCount","normalizeChildren","columnCount","map","nextChildren","undefined","nextProps","colSpan","jsxs","styles","sortable","jsx","Icon","cloneElement","compare","a","b","locale","dir","localeCompare","sensitivity","left","Date","parse","Number","parseFloat","right","isNaN","Table","ref","useRef","normalizedChildren","setSortState","thead","active","querySelectorAll","forEach","th","dataset","setAttribute","onClick","useCallback","e","table","current","target","closest","tHead","contains","col","cellIndex","tbody","tBodies","getAttribute","direction","rows","Array","from","sort","av","cells","textContent","trim","bv","append"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/table/index.tsx"],"sourcesContent":["import { Children, cloneElement, isValidElement, useCallback, useRef } from 'react';\n\nimport { Icon } from '../icon';\nimport styles from './styles.module.css';\n\nexport type TableProps = React.TableHTMLAttributes<HTMLTableElement> & {\n children?: React.ReactNode;\n locale?: string | string[];\n};\n\ntype SortType = 'date' | 'number' | 'text';\n\ntype TableChildProps = {\n children?: React.ReactNode;\n colSpan?: number;\n 'data-span'?: string;\n 'data-type'?: SortType;\n};\n\nconst isTableElement = (child: React.ReactNode): child is React.ReactElement<TableChildProps> =>\n isValidElement<TableChildProps>(child);\n\nconst countCells = (children: React.ReactNode): number =>\n Children.toArray(children).reduce<number>((count, child) => {\n if (!isTableElement(child)) return count;\n return (\n count + (child.type === 'td' || child.type === 'th' ? 1 : countCells(child.props.children))\n );\n }, 0);\n\nconst getFirstRowCellCount = (children: React.ReactNode): number | null => {\n for (const child of Children.toArray(children)) {\n if (!isTableElement(child)) continue;\n\n if (child.type === 'tr') return countCells(child.props.children);\n\n const nestedCount = getFirstRowCellCount(child.props.children);\n if (nestedCount !== null) return nestedCount;\n }\n\n return null;\n};\n\nconst normalizeChildren = (children: React.ReactNode, columnCount: number): React.ReactNode =>\n Children.map(children, (child) => {\n if (!isTableElement(child)) return child;\n\n let nextChildren =\n child.props.children === undefined\n ? child.props.children\n : normalizeChildren(child.props.children, columnCount);\n let nextProps: Partial<TableChildProps> | undefined;\n\n if (child.type === 'td' && child.props['data-span'] === 'all') {\n nextProps = { colSpan: columnCount };\n }\n\n if (child.type === 'th' && child.props['data-type']) {\n nextChildren = (\n <span className={styles.sortable}>\n {nextChildren}\n <Icon name='CaretUpDown' />\n </span>\n );\n }\n\n return nextProps || nextChildren !== child.props.children\n ? cloneElement(child, nextProps, nextChildren)\n : child;\n });\n\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/table/index.tsx"],"sourcesContent":["import { Children, cloneElement, isValidElement, useCallback, useRef } from 'react';\n\nimport { Icon } from '../icon';\nimport styles from './styles.module.css';\n\nexport type TableProps = React.TableHTMLAttributes<HTMLTableElement> & {\n children?: React.ReactNode;\n locale?: string | string[];\n};\n\ntype SortType = 'date' | 'number' | 'text';\n\ntype TableChildProps = {\n children?: React.ReactNode;\n colSpan?: number;\n 'data-span'?: string;\n 'data-type'?: SortType;\n};\n\nconst isTableElement = (child: React.ReactNode): child is React.ReactElement<TableChildProps> =>\n isValidElement<TableChildProps>(child);\n\nconst countCells = (children: React.ReactNode): number =>\n Children.toArray(children).reduce<number>((count, child) => {\n if (!isTableElement(child)) return count;\n return (\n count + (child.type === 'td' || child.type === 'th' ? 1 : countCells(child.props.children))\n );\n }, 0);\n\nconst getFirstRowCellCount = (children: React.ReactNode): number | null => {\n for (const child of Children.toArray(children)) {\n if (!isTableElement(child)) continue;\n\n if (child.type === 'tr') return countCells(child.props.children);\n\n const nestedCount = getFirstRowCellCount(child.props.children);\n if (nestedCount !== null) return nestedCount;\n }\n\n return null;\n};\n\nconst normalizeChildren = (children: React.ReactNode, columnCount: number): React.ReactNode =>\n Children.map(children, (child) => {\n if (!isTableElement(child)) return child;\n\n let nextChildren =\n child.props.children === undefined\n ? child.props.children\n : normalizeChildren(child.props.children, columnCount);\n let nextProps: Partial<TableChildProps> | undefined;\n\n if (child.type === 'td' && child.props['data-span'] === 'all') {\n nextProps = { colSpan: columnCount };\n }\n\n if (child.type === 'th' && child.props['data-type']) {\n nextChildren = (\n <span className={styles.sortable}>\n {nextChildren}\n <Icon name='CaretUpDown' />\n </span>\n );\n }\n\n return nextProps || nextChildren !== child.props.children\n ? cloneElement(child, nextProps, nextChildren)\n : child;\n });\n\nconst compare = (a: string, b: string, type: SortType, locale?: string | string[], dir = 1) => {\n if (type === 'text') {\n return a.localeCompare(b, locale, { sensitivity: 'base' }) * dir;\n }\n\n const left = type === 'date' ? Date.parse(a) : Number.parseFloat(a);\n const right = type === 'date' ? Date.parse(b) : Number.parseFloat(b);\n\n if (Number.isNaN(left) && Number.isNaN(right)) return 0;\n if (Number.isNaN(left)) return 1;\n if (Number.isNaN(right)) return -1;\n return (left - right) * dir;\n};\n\nexport const Table = ({ children, locale, ...props }: TableProps) => {\n const ref = useRef<HTMLTableElement | null>(null);\n const columnCount = getFirstRowCellCount(children);\n const normalizedChildren =\n columnCount && columnCount > 0 ? normalizeChildren(children, columnCount) : children;\n\n const setSortState = (\n thead: HTMLTableSectionElement,\n active: HTMLTableCellElement,\n dir: 'asc' | 'desc'\n ) => {\n const ths = thead.querySelectorAll<HTMLTableCellElement>('th[data-type]');\n\n ths.forEach((th) => {\n if (th === active) {\n th.dataset.dir = dir;\n th.setAttribute('aria-sort', dir === 'asc' ? 'ascending' : 'descending');\n } else {\n delete th.dataset.dir;\n th.setAttribute('aria-sort', 'none');\n }\n });\n };\n\n const onClick = useCallback(\n (e: React.MouseEvent<HTMLTableElement>) => {\n const table = ref.current;\n if (!table) return;\n\n const th = (e.target as HTMLElement | null)?.closest('th');\n if (!th) return;\n\n const thead = table.tHead;\n if (!thead || !thead.contains(th)) return;\n\n const col = th.cellIndex;\n if (col < 0) return;\n\n const tbody = table.tBodies?.[0];\n if (!tbody) return;\n\n const type = th.getAttribute('data-type') as SortType | null;\n if (!type) return;\n\n const direction = th.dataset.dir === 'asc' ? 'desc' : 'asc';\n setSortState(thead, th, direction);\n const dir = direction === 'asc' ? 1 : -1;\n\n const rows = Array.from(tbody.rows);\n\n rows.sort((a, b) => {\n const av = (a.cells[col]?.textContent ?? '').trim();\n const bv = (b.cells[col]?.textContent ?? '').trim();\n return compare(av, bv, type, locale, dir);\n });\n\n tbody.append(...rows);\n },\n [locale]\n );\n\n return (\n <table\n className={styles.table}\n onClick={onClick}\n ref={ref}\n {...props}\n >\n {normalizedChildren}\n </table>\n );\n};\n"],"names":["isTableElement","child","isValidElement","countCells","children","Children","toArray","reduce","count","type","props","getFirstRowCellCount","nestedCount","normalizeChildren","columnCount","map","nextChildren","undefined","nextProps","colSpan","jsxs","styles","sortable","jsx","Icon","cloneElement","compare","a","b","locale","dir","localeCompare","sensitivity","left","Date","parse","Number","parseFloat","right","isNaN","Table","ref","useRef","normalizedChildren","setSortState","thead","active","ths","querySelectorAll","forEach","th","dataset","setAttribute","onClick","useCallback","e","table","current","target","closest","tHead","contains","col","cellIndex","tbody","tBodies","getAttribute","direction","rows","Array","from","sort","av","cells","textContent","trim","bv","append"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index6.css');const e=require("react/jsx-runtime"),_=require("../../classix-5H4IWnMA.cjs"),r=require("../../use-touched-Bq5Gjbpz.cjs"),m="
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index6.css');const e=require("react/jsx-runtime"),_=require("../../classix-5H4IWnMA.cjs"),r=require("../../use-touched-Bq5Gjbpz.cjs"),m="_label_1e0ld_3",b="_textarea_1e0ld_12",j="_touched_1e0ld_31",t={label:m,textarea:b,touched:j},T=({className:c,label:a,maxRows:l=12,minRows:n=3,onBlur:u,required:s,style:d,value:o,...x})=>{const{touched:i,onBlur:h}=r.useTouched(o==="");return e.jsxs("label",{className:t.label,"data-component":"textarea",children:[a&&e.jsx("span",{"data-required":s||void 0,children:a}),e.jsx("textarea",{...x,className:_.t(t.textarea,c,i&&t.touched),onBlur:r.composeEventHandlers(h,u),required:s,style:{...d,"--min-rows":n,"--max-rows":l},value:o})]})};exports.Textarea=T;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { jsxs as _, jsx as
|
|
1
|
+
import { jsxs as _, jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import { t as h } from "../../classix-DG18itHa.js";
|
|
3
3
|
import { u as i, c as p } from "../../use-touched-B999bBr8.js";
|
|
4
|
-
import '../../assets/index6.css';const b = "
|
|
4
|
+
import '../../assets/index6.css';const b = "_label_1e0ld_3", f = "_textarea_1e0ld_12", B = "_touched_1e0ld_31", e = {
|
|
5
5
|
label: b,
|
|
6
6
|
textarea: f,
|
|
7
7
|
touched: B
|
|
8
8
|
}, N = ({
|
|
9
|
-
className:
|
|
10
|
-
label:
|
|
11
|
-
maxRows:
|
|
12
|
-
minRows:
|
|
13
|
-
onBlur:
|
|
9
|
+
className: s,
|
|
10
|
+
label: t,
|
|
11
|
+
maxRows: l = 12,
|
|
12
|
+
minRows: c = 3,
|
|
13
|
+
onBlur: n,
|
|
14
14
|
required: a,
|
|
15
15
|
style: d,
|
|
16
16
|
value: o,
|
|
@@ -20,12 +20,12 @@ import '../../assets/index6.css';const b = "_label_123ts_3", f = "_textarea_123t
|
|
|
20
20
|
touched: u,
|
|
21
21
|
onBlur: x
|
|
22
22
|
} = i(o === "");
|
|
23
|
-
return /* @__PURE__ */ _("label", { className:
|
|
24
|
-
|
|
25
|
-
/* @__PURE__ */
|
|
23
|
+
return /* @__PURE__ */ _("label", { className: e.label, "data-component": "textarea", children: [
|
|
24
|
+
t && /* @__PURE__ */ r("span", { "data-required": a || void 0, children: t }),
|
|
25
|
+
/* @__PURE__ */ r("textarea", { ...m, className: h(e.textarea, s, u && e.touched), onBlur: p(x, n), required: a, style: {
|
|
26
26
|
...d,
|
|
27
|
-
"--min-rows":
|
|
28
|
-
"--max-rows":
|
|
27
|
+
"--min-rows": c,
|
|
28
|
+
"--max-rows": l
|
|
29
29
|
}, value: o })
|
|
30
30
|
] });
|
|
31
31
|
};
|
|
@@ -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/index55.css');const a=require("react/jsx-runtime"),l=require("../../classix-5H4IWnMA.cjs"),s="_toolbar_vp38k_1",n="_editor_vp38k_34",o={toolbar:s,default:"_default_vp38k_28",editor:n},i=({children:t,variant:e="default"})=>a.jsx("div",{className:l.t(o.toolbar,o[e]),onClick:r=>r.stopPropagation(),"data-component":"toolbar",children:t});exports.Toolbar=i;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as l } from "react/jsx-runtime";
|
|
2
2
|
import { t as e } from "../../classix-DG18itHa.js";
|
|
3
|
-
import '../../assets/
|
|
3
|
+
import '../../assets/index55.css';const s = "_toolbar_vp38k_1", n = "_editor_vp38k_34", o = {
|
|
4
4
|
toolbar: s,
|
|
5
5
|
default: "_default_vp38k_28",
|
|
6
6
|
editor: n
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index2.css');const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index2.css');const o=require("react/jsx-runtime"),i=require("../../classix-5H4IWnMA.cjs"),n=require("../card/index.cjs"),l="_widget_1yaql_1",d="_color1_1yaql_21",a="_color2_1yaql_25",t={widget:l,color1:d,color2:a},_=({children:c,className:r,color:e,...s})=>o.jsx("div",{className:i.t(t.widget,r,e&&t[`color${e}`]),...s,"data-component":"widget",children:o.jsx(n.Card,{children:c})});exports.Widget=_;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/widget/index.tsx"],"sourcesContent":["import { Card } from '@/components/card';\n\nimport styles from './styles.module.css';\n\nexport type WidgetProps = {\n children: React.ReactNode;\n};\n\nexport const Widget = ({ children, ...props }: WidgetProps) => {\n return (\n <div\n className={styles.widget}\n {...props}\n >\n <Card>{children}</Card>\n </div>\n );\n};\n"],"names":["Widget","children","props","jsx","styles","widget","Card"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/widget/index.tsx"],"sourcesContent":["import cx from 'classix';\n\nimport { Card } from '@/components/card';\n\nimport styles from './styles.module.css';\n\nexport type WidgetProps = {\n children: React.ReactNode;\n className?: string;\n color?: '1' | '2';\n};\n\nexport const Widget = ({ children, className, color, ...props }: WidgetProps) => {\n return (\n <div\n className={cx(styles.widget, className, color && styles[`color${color}`])}\n {...props}\n >\n <Card>{children}</Card>\n </div>\n );\n};\n"],"names":["Widget","children","className","color","props","jsx","cx","styles","widget","Card"],"mappings":"yRAYaA,EAASA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWC,MAAAA,EAAO,GAAGC,CAAmB,IAEvEC,MAAC,OACC,UAAWC,EAAAA,EAAGC,EAAOC,OAAQN,EAAWC,GAASI,EAAO,QAAQJ,CAAK,EAAE,CAAC,EACxE,GAAIC,EAAM,iBAAA,SAEV,SAAAC,EAAAA,IAACI,EAAAA,KAAA,CAAMR,SAAAA,CAAAA,CAAS,CAAA,CAClB"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
2
|
+
import { t as i } from "../../classix-DG18itHa.js";
|
|
3
|
+
import { Card as d } from "../card/index.js";
|
|
4
|
+
import '../../assets/index2.css';const s = "_widget_1yaql_1", n = "_color1_1yaql_21", _ = "_color2_1yaql_25", r = {
|
|
5
|
+
widget: s,
|
|
6
|
+
color1: n,
|
|
7
|
+
color2: _
|
|
8
|
+
}, p = ({
|
|
9
|
+
children: c,
|
|
10
|
+
className: e,
|
|
11
|
+
color: o,
|
|
12
|
+
...l
|
|
13
|
+
}) => /* @__PURE__ */ t("div", { className: i(r.widget, e, o && r[`color${o}`]), ...l, "data-component": "widget", children: /* @__PURE__ */ t(d, { children: c }) });
|
|
9
14
|
export {
|
|
10
|
-
|
|
15
|
+
p as Widget
|
|
11
16
|
};
|
|
12
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/widget/index.tsx"],"sourcesContent":["import { Card } from '@/components/card';\n\nimport styles from './styles.module.css';\n\nexport type WidgetProps = {\n children: React.ReactNode;\n};\n\nexport const Widget = ({ children, ...props }: WidgetProps) => {\n return (\n <div\n className={styles.widget}\n {...props}\n >\n <Card>{children}</Card>\n </div>\n );\n};\n"],"names":["Widget","children","props","jsx","styles","widget","Card"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/widget/index.tsx"],"sourcesContent":["import cx from 'classix';\n\nimport { Card } from '@/components/card';\n\nimport styles from './styles.module.css';\n\nexport type WidgetProps = {\n children: React.ReactNode;\n className?: string;\n color?: '1' | '2';\n};\n\nexport const Widget = ({ children, className, color, ...props }: WidgetProps) => {\n return (\n <div\n className={cx(styles.widget, className, color && styles[`color${color}`])}\n {...props}\n >\n <Card>{children}</Card>\n </div>\n );\n};\n"],"names":["Widget","children","className","color","props","jsx","cx","styles","widget","Card"],"mappings":";;;;;;;GAYaA,IAASA,CAAC;AAAA,EAAEC,UAAAA;AAAAA,EAAUC,WAAAA;AAAAA,EAAWC,OAAAA;AAAAA,EAAO,GAAGC;AAAmB,MAEvE,gBAAAC,EAAC,SACC,WAAWC,EAAGC,EAAOC,QAAQN,GAAWC,KAASI,EAAO,QAAQJ,CAAK,EAAE,CAAC,GACxE,GAAIC,GAAM,kBAAA,UAEV,UAAA,gBAAAC,EAACI,GAAA,EAAMR,UAAAA,EAAAA,CAAS,EAAA,CAClB;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const h={ArrowDown:{regular:'<path d="M205.66,149.66l-72,72a8,8,0,0,1-11.32,0l-72-72a8,8,0,0,1,11.32-11.32L120,196.69V40a8,8,0,0,1,16,0V196.69l58.34-58.35a8,8,0,0,1,11.32,11.32Z"/>'},ArrowRight:{regular:'<path d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z"/>'},ArrowsClockwise:{regular:'<path d="M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z"/>'},ArrowsDownUp:{regular:'<path d="M117.66,170.34a8,8,0,0,1,0,11.32l-32,32a8,8,0,0,1-11.32,0l-32-32a8,8,0,0,1,11.32-11.32L72,188.69V48a8,8,0,0,1,16,0V188.69l18.34-18.35A8,8,0,0,1,117.66,170.34Zm96-96-32-32a8,8,0,0,0-11.32,0l-32,32a8,8,0,0,0,11.32,11.32L168,67.31V208a8,8,0,0,0,16,0V67.31l18.34,18.35a8,8,0,0,0,11.32-11.32Z"/>'},ArrowSquareOut:{regular:'<path d="M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"/>'},ArrowUp:{regular:'<path d="M205.66,117.66a8,8,0,0,1-11.32,0L136,59.31V216a8,8,0,0,1-16,0V59.31L61.66,117.66a8,8,0,0,1-11.32-11.32l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,205.66,117.66Z"/>'},Bell:{fill:'<path d="M221.8,175.94C216.25,166.38,208,139.33,208,104a80,80,0,1,0-160,0c0,35.34-8.26,62.38-13.81,71.94A16,16,0,0,0,48,200H88.81a40,40,0,0,0,78.38,0H208a16,16,0,0,0,13.8-24.06ZM128,216a24,24,0,0,1-22.62-16h45.24A24,24,0,0,1,128,216Z"/>'},BuildingApartment:{fill:'<path d="M240,208h-8V72a8,8,0,0,0-8-8H184V40a8,8,0,0,0-8-8H80a8,8,0,0,0-8,8V96H32a8,8,0,0,0-8,8V208H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16ZM80,176H64a8,8,0,0,1,0-16H80a8,8,0,0,1,0,16Zm0-32H64a8,8,0,0,1,0-16H80a8,8,0,0,1,0,16Zm64,64H112V168h32Zm-8-64H120a8,8,0,0,1,0-16h16a8,8,0,0,1,0,16Zm0-32H120a8,8,0,0,1,0-16h16a8,8,0,0,1,0,16Zm0-32H120a8,8,0,0,1,0-16h16a8,8,0,0,1,0,16Zm56,96H176a8,8,0,0,1,0-16h16a8,8,0,0,1,0,16Zm0-32H176a8,8,0,0,1,0-16h16a8,8,0,0,1,0,16Zm0-32H176a8,8,0,0,1,0-16h16a8,8,0,0,1,0,16Z"/>',regular:'<path d="M240,208h-8V72a8,8,0,0,0-8-8H184V40a8,8,0,0,0-8-8H80a8,8,0,0,0-8,8V96H32a8,8,0,0,0-8,8V208H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16ZM40,112H80a8,8,0,0,0,8-8V48h80V72a8,8,0,0,0,8,8h40V208H152V168a8,8,0,0,0-8-8H112a8,8,0,0,0-8,8v40H40Zm96,96H120V176h16ZM112,72a8,8,0,0,1,8-8h16a8,8,0,0,1,0,16H120A8,8,0,0,1,112,72Zm0,32a8,8,0,0,1,8-8h16a8,8,0,0,1,0,16H120A8,8,0,0,1,112,104Zm56,0a8,8,0,0,1,8-8h16a8,8,0,0,1,0,16H176A8,8,0,0,1,168,104ZM88,136a8,8,0,0,1-8,8H64a8,8,0,0,1,0-16H80A8,8,0,0,1,88,136Zm0,32a8,8,0,0,1-8,8H64a8,8,0,0,1,0-16H80A8,8,0,0,1,88,168Zm24-32a8,8,0,0,1,8-8h16a8,8,0,0,1,0,16H120A8,8,0,0,1,112,136Zm56,0a8,8,0,0,1,8-8h16a8,8,0,0,1,0,16H176A8,8,0,0,1,168,136Zm0,32a8,8,0,0,1,8-8h16a8,8,0,0,1,0,16H176A8,8,0,0,1,168,168Z"/>'},CaretDown:{regular:'<path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z"/>'},CaretLeft:{regular:'<path d="M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z"/>'},CaretRight:{regular:'<path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/>'},CaretUpDown:{regular:'<path d="M181.66,170.34a8,8,0,0,1,0,11.32l-48,48a8,8,0,0,1-11.32,0l-48-48a8,8,0,0,1,11.32-11.32L128,212.69l42.34-42.35A8,8,0,0,1,181.66,170.34Zm-96-84.68L128,43.31l42.34,42.35a8,8,0,0,0,11.32-11.32l-48-48a8,8,0,0,0-11.32,0l-48,48A8,8,0,0,0,85.66,85.66Z"/>'},ChatsCircle:{fill:'<path d="M232.07,186.76a80,80,0,0,0-62.5-114.17A80,80,0,1,0,23.93,138.76l-7.27,24.71a16,16,0,0,0,19.87,19.87l24.71-7.27a80.39,80.39,0,0,0,25.18,7.35,80,80,0,0,0,108.34,40.65l24.71,7.27a16,16,0,0,0,19.87-19.86Zm-16.25,1.47L224,216l-27.76-8.17a8,8,0,0,0-6,.63,64.05,64.05,0,0,1-85.87-24.88A79.93,79.93,0,0,0,174.7,89.71a64,64,0,0,1,41.75,92.48A8,8,0,0,0,215.82,188.23Z"/>'},Check:{regular:'<path d="M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"/>'},CheckCircle:{fill:'<path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm45.66,85.66-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32Z"/>'},ClipboardText:{fill:'<path d="M200,32H163.74a47.92,47.92,0,0,0-71.48,0H56A16,16,0,0,0,40,48V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V48A16,16,0,0,0,200,32Zm-72,0a32,32,0,0,1,32,32H96A32,32,0,0,1,128,32Zm32,128H96a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Zm0-32H96a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Z"/>',regular:'<path d="M168,152a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,152Zm-8-40H96a8,8,0,0,0,0,16h64a8,8,0,0,0,0-16Zm56-64V216a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V48A16,16,0,0,1,56,32H92.26a47.92,47.92,0,0,1,71.48,0H200A16,16,0,0,1,216,48ZM96,64h64a32,32,0,0,0-64,0ZM200,48H173.25A47.93,47.93,0,0,1,176,64v8a8,8,0,0,1-8,8H88a8,8,0,0,1-8-8V64a47.93,47.93,0,0,1,2.75-16H56V216H200Z"/>'},Clock:{fill:'<path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z"/>'},Confetti:{fill:'<path d="M111.49,52.63a15.8,15.8,0,0,0-26,5.77L33,202.78A15.83,15.83,0,0,0,47.76,224a16,16,0,0,0,5.46-1l144.37-52.5a15.8,15.8,0,0,0,5.78-26ZM65.14,161.13l19.2-52.79,63.32,63.32-52.8,19.2ZM160,72a37.8,37.8,0,0,1,3.84-15.58C169.14,45.83,179.14,40,192,40c6.7,0,11-2.29,13.65-7.21A22,22,0,0,0,208,23.94,8,8,0,0,1,224,24c0,12.86-8.52,32-32,32-6.7,0-11,2.29-13.65,7.21A22,22,0,0,0,176,72.06,8,8,0,0,1,160,72ZM136,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm101.66,82.34a8,8,0,1,1-11.32,11.31l-16-16a8,8,0,0,1,11.32-11.32Zm4.87-42.75-24,8a8,8,0,0,1-5.06-15.18l24-8a8,8,0,0,1,5.06,15.18Z"/>'},Copy:{fill:'<path d="M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32Zm-8,128H176V88a8,8,0,0,0-8-8H96V48H208Z"/>',regular:'<path d="M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z"/>'},DotsThreeVertical:{regular:'<path d="M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128ZM128,72a12,12,0,1,0-12-12A12,12,0,0,0,128,72Zm0,112a12,12,0,1,0,12,12A12,12,0,0,0,128,184Z"/>'},DownloadSimple:{regular:'<path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z"/>'},Envelope:{fill:'<path d="M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM98.71,128,40,181.81V74.19Zm11.84,10.85,12,11.05a8,8,0,0,0,10.82,0l12-11.05,58,53.15H52.57ZM157.29,128,216,74.18V181.82Z"/>'},FileDoc:{fill:'<path d="M44,120H212.07a4,4,0,0,0,4-4V88a8,8,0,0,0-2.34-5.66l-56-56A8,8,0,0,0,152.05,24H56A16,16,0,0,0,40,40v76A4,4,0,0,0,44,120Zm108-76,44,44h-44ZM52,144H36a8,8,0,0,0-8,8v56a8,8,0,0,0,8,8H51.33C71,216,87.55,200.52,88,180.87A36,36,0,0,0,52,144Zm-.49,56H44V160h8a20,20,0,0,1,20,20.77C71.59,191.59,62.35,200,51.52,200Zm170.67-4.28a8.26,8.26,0,0,1-.73,11.09,30,30,0,0,1-21.4,9.19c-17.65,0-32-16.15-32-36s14.36-36,32-36a30,30,0,0,1,21.4,9.19,8.26,8.26,0,0,1,.73,11.09,8,8,0,0,1-11.9.38A14.21,14.21,0,0,0,200.06,160c-8.82,0-16,9-16,20s7.18,20,16,20a14.25,14.25,0,0,0,10.23-4.66A8,8,0,0,1,222.19,195.72ZM128,144c-17.65,0-32,16.15-32,36s14.37,36,32,36,32-16.15,32-36S145.69,144,128,144Zm0,56c-8.83,0-16-9-16-20s7.18-20,16-20,16,9,16,20S136.86,200,128,200Z"/>'},FilePdf:{fill:'<path d="M44,120H212a4,4,0,0,0,4-4V88a8,8,0,0,0-2.34-5.66l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40v76A4,4,0,0,0,44,120ZM152,44l44,44H152Zm72,108.53a8.18,8.18,0,0,1-8.25,7.47H192v16h15.73a8.17,8.17,0,0,1,8.25,7.47,8,8,0,0,1-8,8.53H192v15.73a8.17,8.17,0,0,1-7.47,8.25,8,8,0,0,1-8.53-8V152a8,8,0,0,1,8-8h32A8,8,0,0,1,224,152.53ZM64,144H48a8,8,0,0,0-8,8v55.73A8.17,8.17,0,0,0,47.47,216,8,8,0,0,0,56,208v-8h7.4c15.24,0,28.14-11.92,28.59-27.15A28,28,0,0,0,64,144Zm-.35,40H56V160h8a12,12,0,0,1,12,13.16A12.25,12.25,0,0,1,63.65,184ZM128,144H112a8,8,0,0,0-8,8v56a8,8,0,0,0,8,8h15.32c19.66,0,36.21-15.48,36.67-35.13A36,36,0,0,0,128,144Zm-.49,56H120V160h8a20,20,0,0,1,20,20.77C147.58,191.59,138.34,200,127.51,200Z"/>'},FilePlus:{fill:'<path d="M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM152,160H136v16a8,8,0,0,1-16,0V160H104a8,8,0,0,1,0-16h16V128a8,8,0,0,1,16,0v16h16a8,8,0,0,1,0,16Zm0-72V43.31L196.69,88Z"/>'},FilePpt:{fill:'<path d="M224,152.53a8.17,8.17,0,0,1-8.25,7.47H204v47.73a8.17,8.17,0,0,1-7.47,8.25,8,8,0,0,1-8.53-8V160H176.27a8.17,8.17,0,0,1-8.25-7.47,8,8,0,0,1,8-8.53h40A8,8,0,0,1,224,152.53ZM92,172.85C91.54,188.08,78.64,200,63.4,200H56v7.73A8.17,8.17,0,0,1,48.53,216,8,8,0,0,1,40,208V152a8,8,0,0,1,8-8H64A28,28,0,0,1,92,172.85Zm-16-2A12.25,12.25,0,0,0,63.65,160H56v24h8A12,12,0,0,0,76,170.84Zm84,2C159.54,188.08,146.64,200,131.4,200H124v7.73a8.17,8.17,0,0,1-7.47,8.25,8,8,0,0,1-8.53-8V152a8,8,0,0,1,8-8h16A28,28,0,0,1,160,172.85Zm-16-2A12.25,12.25,0,0,0,131.65,160H124v24h8A12,12,0,0,0,144,170.84ZM40,116V40A16,16,0,0,1,56,24h96a8,8,0,0,1,5.66,2.34l56,56A8,8,0,0,1,216,88v28a4,4,0,0,1-4,4H44A4,4,0,0,1,40,116ZM152,88h44L152,44Z"/>'},FileText:{fill:'<path d="M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,176H96a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Zm0-32H96a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Zm-8-56V44l44,44Z"/>'},FileXls:{fill:'<path d="M44,120H212a4,4,0,0,0,4-4V88a8,8,0,0,0-2.34-5.66l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40v76A4,4,0,0,0,44,120ZM152,44l44,44H152Zm4,164.53a8.18,8.18,0,0,1-8.25,7.47H120a8,8,0,0,1-8-8V152.27a8.18,8.18,0,0,1,7.47-8.25,8,8,0,0,1,8.53,8v48h20A8,8,0,0,1,156,208.53ZM94.51,156.65,77.83,180l16.68,23.35a8,8,0,0,1-13,9.3L68,193.76,54.51,212.65a8,8,0,1,1-13-9.3L58.17,180,41.49,156.65a8,8,0,0,1,2.3-11.46,8.19,8.19,0,0,1,10.88,2.38L68,166.24l13.49-18.89a8,8,0,0,1,13,9.3Zm121.28,39.66a20.81,20.81,0,0,1-9.18,15.23C201.42,215,194.94,216,189.12,216a60.63,60.63,0,0,1-15.19-2,8,8,0,0,1,4.31-15.41c4.38,1.21,14.94,2.71,19.54-.35.89-.6,1.84-1.52,2.15-3.93.34-2.67-.72-4.1-12.78-7.59-9.35-2.7-25-7.23-23-23.12a20.58,20.58,0,0,1,8.95-14.94c11.84-8,30.72-3.31,32.83-2.76a8,8,0,0,1-4.07,15.48c-4.48-1.17-15.22-2.56-19.82.56a4.54,4.54,0,0,0-2,3.67c-.11.9-.13,1.08,1.12,1.9,2.31,1.49,6.45,2.68,10.45,3.84C201.48,174.17,218,179,215.79,196.31Z"/>'},Flag:{fill:'<path d="M232,56V176a8,8,0,0,1-2.76,6c-15.28,13.23-29.89,18-43.82,18-18.91,0-36.57-8.74-53-16.85C105.87,170,82.79,158.61,56,179.77V224a8,8,0,0,1-16,0V56a8,8,0,0,1,2.77-6h0c36-31.18,68.31-15.21,96.79-1.12C167,62.46,190.79,74.2,218.76,50A8,8,0,0,1,232,56Z"/>'},Folder:{fill:'<path d="M216,72H131.31L104,44.69A15.88,15.88,0,0,0,92.69,40H40A16,16,0,0,0,24,56V200.62A15.41,15.41,0,0,0,39.39,216h177.5A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72ZM40,56H92.69l16,16H40Z"/>'},FolderOpen:{fill:'<path d="M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Z"/>'},Funnel:{fill:'<path d="M227.81,66.76l-.08.09L160,139.17v55.49A16,16,0,0,1,152.87,208l-32,21.34A16,16,0,0,1,96,216V139.17L28.27,66.85l-.08-.09A16,16,0,0,1,40,40H216a16,16,0,0,1,11.84,26.76Z"/>'},Gear:{fill:'<path d="M216,130.16q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.6,107.6,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.29,107.29,0,0,0-26.25-10.86,8,8,0,0,0-7.06,1.48L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.6,107.6,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z"/>',regular:'<path d="M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.21,107.21,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.71,107.71,0,0,0-26.25-10.87,8,8,0,0,0-7.06,1.49L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.21,107.21,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8,8,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8,8,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z"/>'},HandCoins:{fill:'<path d="M128.09,57.38a36,36,0,0,1,55.17-27.82,4,4,0,0,1-.56,7A52.06,52.06,0,0,0,152,84c0,1.17,0,2.34.12,3.49a4,4,0,0,1-6,3.76A36,36,0,0,1,128.09,57.38ZM240,160.61a24.47,24.47,0,0,1-13.6,22l-.44.2-38.83,16.54a6.94,6.94,0,0,1-1.19.4l-64,16A7.93,7.93,0,0,1,120,216H16A16,16,0,0,1,0,200V160a16,16,0,0,1,16-16H44.69l22.62-22.63A31.82,31.82,0,0,1,89.94,112H140a28,28,0,0,1,27.25,34.45l41.84-9.62A24.61,24.61,0,0,1,240,160.61Zm-16,0a8.61,8.61,0,0,0-10.87-8.3l-.31.08-67,15.41a8.32,8.32,0,0,1-1.79.2H112a8,8,0,0,1,0-16h28a12,12,0,0,0,0-24H89.94a15.86,15.86,0,0,0-11.31,4.69L56,155.31V200h63l62.43-15.61,38-16.18A8.56,8.56,0,0,0,224,160.61ZM168,84a36,36,0,1,0,36-36A36,36,0,0,0,168,84Z"/>'},House:{fill:'<path d="M224,120v96a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V164a4,4,0,0,0-4-4H108a4,4,0,0,0-4,4v52a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V120a16,16,0,0,1,4.69-11.31l80-80a16,16,0,0,1,22.62,0l80,80A16,16,0,0,1,224,120Z"/>',regular:'<path d="M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z"/>'},Image:{fill:'<path d="M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM156,88a12,12,0,1,1-12,12A12,12,0,0,1,156,88Zm60,112H40V160.69l46.34-46.35a8,8,0,0,1,11.32,0h0L165,181.66a8,8,0,0,0,11.32-11.32l-17.66-17.65L173,138.34a8,8,0,0,1,11.31,0L216,170.07V200Z"/>'},Info:{fill:'<path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-4,48a12,12,0,1,1-12,12A12,12,0,0,1,124,72Zm12,112a16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40a8,8,0,0,1,0,16Z"/>'},Link:{regular:'<path d="M240,88.23a54.43,54.43,0,0,1-16,37L189.25,160a54.27,54.27,0,0,1-38.63,16h-.05A54.63,54.63,0,0,1,96,119.84a8,8,0,0,1,16,.45A38.62,38.62,0,0,0,150.58,160h0a38.39,38.39,0,0,0,27.31-11.31l34.75-34.75a38.63,38.63,0,0,0-54.63-54.63l-11,11A8,8,0,0,1,135.7,59l11-11A54.65,54.65,0,0,1,224,48,54.86,54.86,0,0,1,240,88.23ZM109,185.66l-11,11A38.41,38.41,0,0,1,70.6,208h0a38.63,38.63,0,0,1-27.29-65.94L78,107.31A38.63,38.63,0,0,1,144,135.71a8,8,0,0,0,16,.45A54.86,54.86,0,0,0,144,96a54.65,54.65,0,0,0-77.27,0L32,130.75A54.62,54.62,0,0,0,70.56,224h0a54.28,54.28,0,0,0,38.64-16l11-11A8,8,0,0,0,109,185.66Z"/>'},LinkBreak:{regular:'<path d="M198.63,57.37a32,32,0,0,0-45.19-.06L141.79,69.52a8,8,0,0,1-11.58-11l11.72-12.29a1.59,1.59,0,0,1,.13-.13,48,48,0,0,1,67.88,67.88,1.59,1.59,0,0,1-.13.13l-12.29,11.72a8,8,0,0,1-11-11.58l12.21-11.65A32,32,0,0,0,198.63,57.37ZM114.21,186.48l-11.65,12.21a32,32,0,0,1-45.25-45.25l12.21-11.65a8,8,0,0,0-11-11.58L46.19,141.93a1.59,1.59,0,0,0-.13.13,48,48,0,0,0,67.88,67.88,1.59,1.59,0,0,0,.13-.13l11.72-12.29a8,8,0,1,0-11.58-11ZM216,152H192a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16ZM40,104H64a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm120,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V192A8,8,0,0,0,160,184ZM96,72a8,8,0,0,0,8-8V40a8,8,0,0,0-16,0V64A8,8,0,0,0,96,72Z"/>'},List:{regular:'<path d="M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z"/>'},ListBullets:{regular:'<path d="M80,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H88A8,8,0,0,1,80,64Zm136,56H88a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm0,64H88a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16ZM44,52A12,12,0,1,0,56,64,12,12,0,0,0,44,52Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,116Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,180Z"/>'},LockKey:{fill:'<path d="M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80Zm-72,78.63V184a8,8,0,0,1-16,0V158.63a24,24,0,1,1,16,0ZM160,80H96V56a32,32,0,0,1,64,0Z"/>'},MagnifyingGlass:{regular:'<path d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"/>'},MapPin:{fill:'<path d="M128,16a88.1,88.1,0,0,0-88,88c0,75.3,80,132.17,83.41,134.55a8,8,0,0,0,9.18,0C136,236.17,216,179.3,216,104A88.1,88.1,0,0,0,128,16Zm0,56a32,32,0,1,1-32,32A32,32,0,0,1,128,72Z"/>'},Megaphone:{fill:'<path d="M200,72H160.2c-2.91-.17-53.62-3.74-101.91-44.24A16,16,0,0,0,32,40V200a16,16,0,0,0,26.29,12.25c37.77-31.68,77-40.76,93.71-43.3v31.72A16,16,0,0,0,159.12,214l11,7.33A16,16,0,0,0,194.5,212l11.77-44.36A48,48,0,0,0,200,72ZM179,207.89l0,.11-11-7.33V168h21.6ZM200,152H168V88h32a32,32,0,1,1,0,64Z"/>',regular:'<path d="M248,120a48.05,48.05,0,0,0-48-48H160.2c-2.91-.17-53.62-3.74-101.91-44.24A16,16,0,0,0,32,40V200a16,16,0,0,0,26.29,12.25c37.77-31.68,77-40.76,93.71-43.3v31.72A16,16,0,0,0,159.12,214l11,7.33A16,16,0,0,0,194.5,212l11.77-44.36A48.07,48.07,0,0,0,248,120ZM48,199.93V40h0c42.81,35.91,86.63,45,104,47.24v65.48C134.65,155,90.84,164.07,48,199.93Zm131,8,0,.11-11-7.33V168h21.6ZM200,152H168V88h32a32,32,0,1,1,0,64Z"/>'},NotePencil:{fill:'<path d="M224,128v80a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32h80a8,8,0,0,1,0,16H48V208H208V128a8,8,0,0,1,16,0Zm5.66-58.34-96,96A8,8,0,0,1,128,168H96a8,8,0,0,1-8-8V128a8,8,0,0,1,2.34-5.66l96-96a8,8,0,0,1,11.32,0l32,32A8,8,0,0,1,229.66,69.66Zm-17-5.66L192,43.31,179.31,56,200,76.69Z"/>'},Paperclip:{regular:'<path d="M209.66,122.34a8,8,0,0,1,0,11.32l-82.05,82a56,56,0,0,1-79.2-79.21L147.67,35.73a40,40,0,1,1,56.61,56.55L105,193A24,24,0,1,1,71,159L154.3,74.38A8,8,0,1,1,165.7,85.6L82.39,170.31a8,8,0,1,0,11.27,11.36L192.93,81A24,24,0,1,0,159,47L59.76,147.68a40,40,0,1,0,56.53,56.62l82.06-82A8,8,0,0,1,209.66,122.34Z"/>'},PaperPlaneTilt:{fill:'<path d="M231.4,44.34s0,.1,0,.15l-58.2,191.94a15.88,15.88,0,0,1-14,11.51q-.69.06-1.38.06a15.86,15.86,0,0,1-14.42-9.15L107,164.15a4,4,0,0,1,.77-4.58l57.92-57.92a8,8,0,0,0-11.31-11.31L96.43,148.26a4,4,0,0,1-4.58.77L17.08,112.64a16,16,0,0,1,2.49-29.8l191.94-58.2.15,0A16,16,0,0,1,231.4,44.34Z"/>'},Pencil:{fill:'<path d="M227.31,73.37,182.63,28.68a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H92.69A15.86,15.86,0,0,0,104,219.31L227.31,96a16,16,0,0,0,0-22.63ZM51.31,160l90.35-90.35,16.68,16.69L68,176.68ZM48,179.31,76.69,208H48Zm48,25.38L79.31,188l90.35-90.35h0l16.68,16.69Z"/>'},PenNib:{fill:'<path d="M243.31,81.36,174.63,12.68a16,16,0,0,0-22.63,0L123.56,41.12l-58,21.76A16,16,0,0,0,55.36,75.23L34.59,199.83a4,4,0,0,0,6.77,3.49l57-57a23.85,23.85,0,0,1-2.29-12.08,24,24,0,1,1,13.6,23.4l-57,57a4,4,0,0,0,3.49,6.77l124.61-20.77a16,16,0,0,0,12.35-10.16l21.77-58.07L243.31,104a16,16,0,0,0,0-22.63ZM208,116.68,139.32,48l24-24L232,92.68Z"/>'},Phone:{fill:'<path d="M231.88,175.08A56.26,56.26,0,0,1,176,224C96.6,224,32,159.4,32,80A56.26,56.26,0,0,1,80.92,24.12a16,16,0,0,1,16.62,9.52l21.12,47.15,0,.12A16,16,0,0,1,117.39,96c-.18.27-.37.52-.57.77L96,121.45c7.49,15.22,23.41,31,38.83,38.51l24.34-20.71a8.12,8.12,0,0,1,.75-.56,16,16,0,0,1,15.17-1.4l.13.06,47.11,21.11A16,16,0,0,1,231.88,175.08Z"/>',regular:'<path d="M222.37,158.46l-47.11-21.11-.13-.06a16,16,0,0,0-15.17,1.4,8.12,8.12,0,0,0-.75.56L134.87,160c-15.42-7.49-31.34-23.29-38.83-38.51l20.78-24.71c.2-.25.39-.5.57-.77a16,16,0,0,0,1.32-15.06l0-.12L97.54,33.64a16,16,0,0,0-16.62-9.52A56.26,56.26,0,0,0,32,80c0,79.4,64.6,144,144,144a56.26,56.26,0,0,0,55.88-48.92A16,16,0,0,0,222.37,158.46ZM176,208A128.14,128.14,0,0,1,48,80,40.2,40.2,0,0,1,82.87,40a.61.61,0,0,0,0,.12l21,47L83.2,111.86a6.13,6.13,0,0,0-.57.77,16,16,0,0,0-1,15.7c9.06,18.53,27.73,37.06,46.46,46.11a16,16,0,0,0,15.75-1.14,8.44,8.44,0,0,0,.74-.56L168.89,152l47,21.05h0s.08,0,.11,0A40.21,40.21,0,0,1,176,208Z"/>'},Plus:{regular:'<path d="M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z"/>'},PushPin:{fill:'<path d="M235.33,104l-53.47,53.65c4.56,12.67,6.45,33.89-13.19,60A15.93,15.93,0,0,1,157,224c-.38,0-.75,0-1.13,0a16,16,0,0,1-11.32-4.69L96.29,171,53.66,213.66a8,8,0,0,1-11.32-11.32L85,159.71l-48.3-48.3A16,16,0,0,1,38,87.63c25.42-20.51,49.75-16.48,60.4-13.14L152,20.7a16,16,0,0,1,22.63,0l60.69,60.68A16,16,0,0,1,235.33,104Z"/>'},PushPinSimpleSlash:{fill:'<path d="M79.25,38.69a4,4,0,0,1,3-6.69H192a8,8,0,0,1,8,8.53A8.17,8.17,0,0,1,191.73,48h-6.19L206.7,167.91a4,4,0,0,1-6.9,3.39ZM213.92,210.62l-160-176A8,8,0,1,0,42.08,45.38L66.24,72,49.29,168H40a8,8,0,0,0,0,16h80v56a8,8,0,0,0,16,0V184h32.1l34,37.38a8,8,0,1,0,11.84-10.76Z"/>'},SidebarSimple:{fill:'<path d="M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,160H88V56H216V200Z"/>',regular:'<path d="M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM40,56H80V200H40ZM216,200H96V56H216V200Z"/>'},Signature:{regular:'<path d="M232,168H63.86c2.66-5.24,5.33-10.63,8-16.11,15,1.65,32.58-8.78,52.66-31.14,5,13.46,14.45,30.93,30.58,31.25,9.06.18,18.11-5.2,27.42-16.37C189.31,143.75,203.3,152,232,152a8,8,0,0,0,0-16c-30.43,0-39.43-10.45-40-16.11a7.67,7.67,0,0,0-5.46-7.75,8.14,8.14,0,0,0-9.25,3.49c-12.07,18.54-19.38,20.43-21.92,20.37-8.26-.16-16.66-19.52-19.54-33.42a8,8,0,0,0-14.09-3.37C101.54,124.55,88,133.08,79.57,135.29,88.06,116.42,94.4,99.85,98.46,85.9c6.82-23.44,7.32-39.83,1.51-50.1-3-5.38-9.34-11.8-22.06-11.8C61.85,24,49.18,39.18,43.14,65.65c-3.59,15.71-4.18,33.21-1.62,48s7.87,25.55,15.59,31.94c-3.73,7.72-7.53,15.26-11.23,22.41H24a8,8,0,0,0,0,16H37.41c-11.32,21-20.12,35.64-20.26,35.88a8,8,0,1,0,13.71,8.24c.15-.26,11.27-18.79,24.7-44.12H232a8,8,0,0,0,0-16ZM58.74,69.21C62.72,51.74,70.43,40,77.91,40c5.33,0,7.1,1.86,8.13,3.67,3,5.33,6.52,24.19-21.66,86.39C56.12,118.78,53.31,93,58.74,69.21Z"/>'},SlidersHorizontal:{fill:'<path d="M32,80a8,8,0,0,1,8-8H77.17a28,28,0,0,1,53.66,0H216a8,8,0,0,1,0,16H130.83a28,28,0,0,1-53.66,0H40A8,8,0,0,1,32,80Zm184,88H194.83a28,28,0,0,0-53.66,0H40a8,8,0,0,0,0,16H141.17a28,28,0,0,0,53.66,0H216a8,8,0,0,0,0-16Z"/>'},Tag:{fill:'<path d="M243.31,136,144,36.69A15.86,15.86,0,0,0,132.69,32H40a8,8,0,0,0-8,8v92.69A15.86,15.86,0,0,0,36.69,144L136,243.31a16,16,0,0,0,22.63,0l84.68-84.68a16,16,0,0,0,0-22.63ZM84,96A12,12,0,1,1,96,84,12,12,0,0,1,84,96Z"/>'},TextB:{regular:'<path d="M178.48,115.7A44,44,0,0,0,148,40H80a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8h80a48,48,0,0,0,18.48-92.3ZM88,56h60a28,28,0,0,1,0,56H88Zm72,136H88V128h72a32,32,0,0,1,0,64Z"/>'},TextItalic:{regular:'<path d="M200,56a8,8,0,0,1-8,8H157.77L115.1,192H144a8,8,0,0,1,0,16H64a8,8,0,0,1,0-16H98.23L140.9,64H112a8,8,0,0,1,0-16h80A8,8,0,0,1,200,56Z"/>'},TextUnderline:{regular:'<path d="M200,224a8,8,0,0,1-8,8H64a8,8,0,0,1,0-16H192A8,8,0,0,1,200,224Zm-72-24a64.07,64.07,0,0,0,64-64V56a8,8,0,0,0-16,0v80a48,48,0,0,1-96,0V56a8,8,0,0,0-16,0v80A64.07,64.07,0,0,0,128,200Z"/>'},Trash:{fill:'<path d="M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM112,168a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm0-120H96V40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Z"/>'},UploadSimple:{regular:'<path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0ZM93.66,77.66,120,51.31V144a8,8,0,0,0,16,0V51.31l26.34,26.35a8,8,0,0,0,11.32-11.32l-40-40a8,8,0,0,0-11.32,0l-40,40A8,8,0,0,0,93.66,77.66Z"/>'},User:{fill:'<path d="M230.93,220a8,8,0,0,1-6.93,4H32a8,8,0,0,1-6.92-12c15.23-26.33,38.7-45.21,66.09-54.16a72,72,0,1,1,73.66,0c27.39,8.95,50.86,27.83,66.09,54.16A8,8,0,0,1,230.93,220Z"/>',regular:'<path d="M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8c18.84-32.56,52.14-52,89.07-52s70.23,19.44,89.07,52a8,8,0,1,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z"/>'},UserMinus:{fill:'<path d="M198.13,194.85A8,8,0,0,1,192,208H24a8,8,0,0,1-6.12-13.15c14.94-17.78,33.52-30.41,54.17-37.17a68,68,0,1,1,71.9,0C164.6,164.44,183.18,177.07,198.13,194.85ZM248,128H200a8,8,0,0,0,0,16h48a8,8,0,0,0,0-16Z"/>'},UserPlus:{fill:'<path d="M256,136a8,8,0,0,1-8,8H232v16a8,8,0,0,1-16,0V144H200a8,8,0,0,1,0-16h16V112a8,8,0,0,1,16,0v16h16A8,8,0,0,1,256,136ZM144,157.68a68,68,0,1,0-71.9,0c-20.65,6.76-39.23,19.39-54.17,37.17A8,8,0,0,0,24,208H192a8,8,0,0,0,6.13-13.15C183.18,177.07,164.6,164.44,144,157.68Z"/>'},Users:{fill:'<path d="M164.47,195.63a8,8,0,0,1-6.7,12.37H10.23a8,8,0,0,1-6.7-12.37,95.83,95.83,0,0,1,47.22-37.71,60,60,0,1,1,66.5,0A95.83,95.83,0,0,1,164.47,195.63Zm87.91-.15a95.87,95.87,0,0,0-47.13-37.56A60,60,0,0,0,144.7,54.59a4,4,0,0,0-1.33,6A75.83,75.83,0,0,1,147,150.53a4,4,0,0,0,1.07,5.53,112.32,112.32,0,0,1,29.85,30.83,23.92,23.92,0,0,1,3.65,16.47,4,4,0,0,0,3.95,4.64h60.3a8,8,0,0,0,7.73-5.93A8.22,8.22,0,0,0,252.38,195.48Z"/>',regular:'<path d="M117.25,157.92a60,60,0,1,0-66.5,0A95.83,95.83,0,0,0,3.53,195.63a8,8,0,1,0,13.4,8.74,80,80,0,0,1,134.14,0,8,8,0,0,0,13.4-8.74A95.83,95.83,0,0,0,117.25,157.92ZM40,108a44,44,0,1,1,44,44A44.05,44.05,0,0,1,40,108Zm210.14,98.7a8,8,0,0,1-11.07-2.33A79.83,79.83,0,0,0,172,168a8,8,0,0,1,0-16,44,44,0,1,0-16.34-84.87,8,8,0,1,1-5.94-14.85,60,60,0,0,1,55.53,105.64,95.83,95.83,0,0,1,47.22,37.71A8,8,0,0,1,250.14,206.7Z"/>'},Warning:{fill:'<path d="M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z"/>'},X:{regular:'<path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/>'}};Object.freeze(Object.keys(h));function t(a){return a.replace(/&/gu,"&").replace(/"/gu,""").replace(/'/gu,"'").replace(/</gu,"<").replace(/>/gu,">")}function A(a,l="currentColor"){const H=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="${t(l)}">${a}</svg>`;return`url("data:image/svg+xml,${encodeURIComponent(H)}")`}function e(a,l,H){const Z=h[a];if(!Z)return A(String(Z),l);const V=Object.values(Z)[0],M=H&&Z[H]||V;return A(M,l)}exports.iconSVG=e;
|
|
2
|
+
//# sourceMappingURL=icons-BTif0nDb.cjs.map
|