@synnaxlabs/pluto 0.16.0 → 0.18.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.
Files changed (94) hide show
  1. package/dist/{Keyboard-79lsaV0f.cjs → Keyboard-Jopa0ImN.cjs} +2 -2
  2. package/dist/{Keyboard-79lsaV0f.cjs.map → Keyboard-Jopa0ImN.cjs.map} +1 -1
  3. package/dist/{Keyboard-SVZgM51r.js → Keyboard-kcohZ0JP.js} +2 -2
  4. package/dist/{Keyboard-SVZgM51r.js.map → Keyboard-kcohZ0JP.js.map} +1 -1
  5. package/dist/{Link-PQmsc2rv.js → Link-4oN98LnE.js} +2 -2
  6. package/dist/{Link-PQmsc2rv.js.map → Link-4oN98LnE.js.map} +1 -1
  7. package/dist/{Link-z0ioMNDX.cjs → Link-5t5MufKE.cjs} +2 -2
  8. package/dist/{Link-z0ioMNDX.cjs.map → Link-5t5MufKE.cjs.map} +1 -1
  9. package/dist/{Toggle-wVZJoVtX.cjs → Toggle-qW_TcIDh.cjs} +13 -13
  10. package/dist/{Toggle-wVZJoVtX.cjs.map → Toggle-qW_TcIDh.cjs.map} +1 -1
  11. package/dist/{Toggle-3mGeA8rE.js → Toggle-zmqGwWeq.js} +39 -37
  12. package/dist/{Toggle-3mGeA8rE.js.map → Toggle-zmqGwWeq.js.map} +1 -1
  13. package/dist/button.cjs +1 -1
  14. package/dist/button.js +1 -1
  15. package/dist/color.cjs +1 -1
  16. package/dist/color.js +1 -1
  17. package/dist/dropdown.cjs +1 -1
  18. package/dist/dropdown.js +1 -1
  19. package/dist/{external-jrFYN1k7.js → external-1WVrscEc.js} +2 -2
  20. package/dist/{external-jrFYN1k7.js.map → external-1WVrscEc.js.map} +1 -1
  21. package/dist/{external-V5Rc7RD4.cjs → external-6DXc9G-d.cjs} +2 -2
  22. package/dist/{external-V5Rc7RD4.cjs.map → external-6DXc9G-d.cjs.map} +1 -1
  23. package/dist/{external-j1RQBbSY.js → external-7FFXJt69.js} +2 -2
  24. package/dist/external-7FFXJt69.js.map +1 -0
  25. package/dist/{external-CRkuAd6C.cjs → external-A4JYxI--.cjs} +2 -2
  26. package/dist/external-A4JYxI--.cjs.map +1 -0
  27. package/dist/{external-1scdpCD9.js → external-D_-pAYEQ.js} +3 -3
  28. package/dist/{external-1scdpCD9.js.map → external-D_-pAYEQ.js.map} +1 -1
  29. package/dist/{external-FtteEuf4.js → external-K7wZqIN6.js} +2 -2
  30. package/dist/{external-FtteEuf4.js.map → external-K7wZqIN6.js.map} +1 -1
  31. package/dist/{external-WdZmpbBs.cjs → external-KoFBpSsV.cjs} +2 -2
  32. package/dist/{external-WdZmpbBs.cjs.map → external-KoFBpSsV.cjs.map} +1 -1
  33. package/dist/{external-PuMpEjUQ.cjs → external-Mc8M8Xzl.cjs} +2 -2
  34. package/dist/{external-PuMpEjUQ.cjs.map → external-Mc8M8Xzl.cjs.map} +1 -1
  35. package/dist/{external-QpYuwpfo.js → external-P6hmttIX.js} +2 -2
  36. package/dist/{external-QpYuwpfo.js.map → external-P6hmttIX.js.map} +1 -1
  37. package/dist/{external-hclXaeBH.cjs → external-RsG62zSr.cjs} +2 -2
  38. package/dist/{external-hclXaeBH.cjs.map → external-RsG62zSr.cjs.map} +1 -1
  39. package/dist/{external-LDAF36fG.js → external-Sip1coAq.js} +3 -3
  40. package/dist/{external-LDAF36fG.js.map → external-Sip1coAq.js.map} +1 -1
  41. package/dist/{external-qFz2sVjt.cjs → external-UezDJS5P.cjs} +2 -2
  42. package/dist/{external-qFz2sVjt.cjs.map → external-UezDJS5P.cjs.map} +1 -1
  43. package/dist/{external-bw_0NdEr.js → external-dD3TNRhO.js} +3 -3
  44. package/dist/{external-bw_0NdEr.js.map → external-dD3TNRhO.js.map} +1 -1
  45. package/dist/{external-iZdy0KqS.cjs → external-dFd3d4ZY.cjs} +2 -2
  46. package/dist/{external-iZdy0KqS.cjs.map → external-dFd3d4ZY.cjs.map} +1 -1
  47. package/dist/{external-7CL_DLHQ.cjs → external-er-l9iZA.cjs} +2 -2
  48. package/dist/{external-7CL_DLHQ.cjs.map → external-er-l9iZA.cjs.map} +1 -1
  49. package/dist/{external-f3-E2t1n.js → external-luTLo-w7.js} +2 -2
  50. package/dist/{external-f3-E2t1n.js.map → external-luTLo-w7.js.map} +1 -1
  51. package/dist/{external-ogG2kUq2.cjs → external-n4UdyJ7i.cjs} +2 -2
  52. package/dist/{external-ogG2kUq2.cjs.map → external-n4UdyJ7i.cjs.map} +1 -1
  53. package/dist/{external-mgTxEe4K.js → external-rZ3m5Z0a.js} +2 -2
  54. package/dist/{external-mgTxEe4K.js.map → external-rZ3m5Z0a.js.map} +1 -1
  55. package/dist/external-vjJtYX9R.cjs +2 -0
  56. package/dist/external-vjJtYX9R.cjs.map +1 -0
  57. package/dist/{external-194aFdnj.js → external-wMjPMnSO.js} +3 -3
  58. package/dist/{external-194aFdnj.js.map → external-wMjPMnSO.js.map} +1 -1
  59. package/dist/{external-jcvqdb1Z.cjs → external-y6ws_3c6.cjs} +2 -2
  60. package/dist/{external-jcvqdb1Z.cjs.map → external-y6ws_3c6.cjs.map} +1 -1
  61. package/dist/{external-HTq0VBUW.js → external-zoOMJkop.js} +3 -3
  62. package/dist/external-zoOMJkop.js.map +1 -0
  63. package/dist/header.cjs +1 -1
  64. package/dist/header.js +1 -1
  65. package/dist/index.cjs +1 -1
  66. package/dist/index.cjs.map +1 -1
  67. package/dist/index.js +800 -799
  68. package/dist/index.js.map +1 -1
  69. package/dist/input.cjs +1 -1
  70. package/dist/input.js +1 -1
  71. package/dist/list.cjs +1 -1
  72. package/dist/list.js +1 -1
  73. package/dist/menu.cjs +1 -1
  74. package/dist/menu.js +1 -1
  75. package/dist/select/Multiple.d.ts +2 -2
  76. package/dist/select/Select.spec.d.ts +9 -0
  77. package/dist/select/Single.d.ts +2 -2
  78. package/dist/tabs.cjs +1 -1
  79. package/dist/tabs.js +1 -1
  80. package/dist/text.cjs +1 -1
  81. package/dist/text.js +2 -2
  82. package/dist/theming.cjs +1 -1
  83. package/dist/theming.js +2 -2
  84. package/dist/tree.cjs +1 -1
  85. package/dist/tree.js +1 -1
  86. package/dist/triggers.cjs +1 -1
  87. package/dist/triggers.js +1 -1
  88. package/package.json +6 -6
  89. package/dist/external-CRkuAd6C.cjs.map +0 -1
  90. package/dist/external-HTq0VBUW.js.map +0 -1
  91. package/dist/external-VwYNFmdb.cjs +0 -2
  92. package/dist/external-VwYNFmdb.cjs.map +0 -1
  93. package/dist/external-j1RQBbSY.js.map +0 -1
  94. package/dist/select/SelectA.spec.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"external-iZdy0KqS.cjs","sources":["../src/tabs/Tabs.tsx","../src/tabs/Selector.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport React, {\n createContext,\n type ReactElement,\n type ReactNode,\n useContext,\n useState,\n useCallback,\n} from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { type TabSpec, Selector } from \"@/tabs/Selector\";\nimport { type ComponentSize } from \"@/util/component\";\nimport { type RenderProp } from \"@/util/renderProp\";\n\nexport interface Tab extends TabSpec {\n content?: ReactNode;\n}\n\nexport type TabRenderProp = RenderProp<Tab>;\n\nexport interface UseStaticTabsProps {\n tabs: Tab[];\n content?: TabRenderProp;\n onSelect?: (key: string) => void;\n}\n\nexport const resetSelection = (selected = \"\", tabs: Tab[] = []): string | undefined => {\n if (tabs.length === 0) return undefined;\n return tabs.find((t) => t.tabKey === selected) != null\n ? selected\n : tabs[tabs.length - 1]?.tabKey;\n};\n\nexport const rename = (key: string, title: string, tabs: Tab[]): Tab[] => {\n title = title.trim();\n if (title.length === 0) return tabs;\n const t = tabs.find((t) => t.tabKey === key);\n if (t == null || t.name === title) return tabs;\n return tabs.map((t) => (t.tabKey === key ? { ...t, name: title } : t));\n};\n\nexport const useStatic = ({\n tabs,\n content,\n onSelect,\n}: UseStaticTabsProps): TabsContextValue => {\n const [selected, setSelected] = useState(tabs[0]?.tabKey ?? \"\");\n\n const handleSelect = useCallback(\n (key: string): void => {\n setSelected(key);\n onSelect?.(key);\n },\n [setSelected, onSelect],\n );\n\n return {\n tabs,\n selected,\n content,\n onSelect: handleSelect,\n };\n};\n\nexport interface TabsContextValue {\n tabs: Tab[];\n emptyContent?: ReactElement | null;\n closable?: boolean;\n selected?: string;\n onSelect?: (key: string) => void;\n content?: TabRenderProp;\n onClose?: (key: string) => void;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;\n onRename?: (key: string, title: string) => void;\n onCreate?: () => void;\n}\n\nexport interface TabsProps\n extends Omit<\n Align.SpaceProps,\n \"children\" | \"onSelect\" | \"size\" | \"onDragStart\" | \"onDragEnd\" | \"content\"\n >,\n TabsContextValue {\n children?: TabRenderProp;\n size?: ComponentSize;\n}\n\nexport const TabsContext = createContext<TabsContextValue>({ tabs: [] });\n\nexport const useTabsContext = (): TabsContextValue => useContext(TabsContext);\n\nexport const Tabs = ({\n content,\n children,\n onSelect,\n selected,\n closable,\n tabs,\n onClose,\n onDragStart,\n onDragEnd,\n onCreate,\n onRename,\n emptyContent,\n className,\n onDragOver,\n onDrop,\n size = \"medium\",\n direction: dir = \"y\",\n ...props\n}: TabsProps): ReactElement => (\n <Align.Space\n empty\n className={CSS(CSS.B(\"tabs\"), className)}\n onDragOver={onDragOver}\n onDrop={onDrop}\n direction={dir}\n {...props}\n >\n <TabsContext.Provider\n value={{\n tabs,\n emptyContent,\n selected,\n closable,\n content: children ?? content,\n onSelect,\n onClose,\n onDragStart,\n onDragEnd,\n onRename,\n onCreate,\n onDrop,\n }}\n >\n <Selector size={size} direction={direction.swap(dir)} />\n <Content />\n </TabsContext.Provider>\n </Align.Space>\n);\n\nexport const Provider = TabsContext.Provider;\n\nexport const Content = (): ReactElement | null => {\n const {\n tabs,\n selected,\n content: renderProp,\n emptyContent,\n onSelect,\n } = useTabsContext();\n let content: ReactNode = null;\n const selectedTab = tabs.find((tab) => tab.tabKey === selected);\n if (selected == null || selectedTab == null) return emptyContent ?? null;\n if (renderProp != null) content = renderProp(selectedTab);\n else if (selectedTab.content != null) content = selectedTab.content;\n return (\n <div\n className={CSS.B(\"tabs-content\")}\n onClick={() => onSelect?.(selected)}\n style={{\n width: \"100%\",\n height: \"100%\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {content}\n </div>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n type DragEventHandler,\n type MouseEventHandler,\n type ReactElement,\n useCallback,\n} from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\n\nimport { Align } from \"@/align\";\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { useTabsContext } from \"@/tabs/Tabs\";\nimport { Text } from \"@/text\";\nimport { type ComponentSize } from \"@/util/component\";\n\nimport \"@/tabs/Selector.css\";\n\nexport interface TabSpec {\n tabKey: string;\n name: string;\n closable?: boolean;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nexport interface SelectorProps extends Omit<Align.SpaceProps, \"children\" | \"size\"> {\n size: ComponentSize;\n}\n\nconst CLS = \"tabs-selector\";\n\nexport const Selector = ({\n className,\n size = \"medium\",\n direction = \"x\",\n ...props\n}: SelectorProps): ReactElement | null => {\n const {\n tabs,\n selected,\n onSelect,\n onClose,\n closable,\n onDragEnd,\n onDragStart,\n onDrop,\n onRename,\n onCreate,\n } = useTabsContext();\n return (\n <Align.Space\n className={CSS(CSS.B(CLS), CSS.size(size), className)}\n align=\"center\"\n justify=\"spaceBetween\"\n onDrop={onDrop}\n empty\n direction={direction}\n {...props}\n >\n <Align.Space direction={direction} className={CSS.BE(CLS, \"tabs\")} empty>\n {tabs.map((tab) => (\n <SelectorButton\n key={tab.tabKey}\n selected={selected}\n onSelect={onSelect}\n onClose={onClose}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onRename={onRename}\n closable={tab.closable ?? closable}\n size={size}\n {...tab}\n />\n ))}\n </Align.Space>\n <Align.Space className={CSS.BE(CLS, \"actions\")}>\n {onCreate != null && (\n <Button.Icon size={size} sharp onClick={onCreate}>\n <Icon.Add />\n </Button.Icon>\n )}\n </Align.Space>\n </Align.Space>\n );\n};\n\nconst SelectorButton = ({\n selected,\n onSelect,\n onClose,\n tabKey,\n name,\n onDragStart,\n onDragEnd,\n onRename,\n closable = true,\n icon,\n size,\n editable = true,\n}: SelectorButtonProps): ReactElement => {\n const handleDragStart: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragStart?.(e, { tabKey, name }),\n [onDragStart, tabKey, name],\n );\n\n const handleDragEnd: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragEnd?.(e, { tabKey, name }),\n [onDragEnd, tabKey, name],\n );\n\n const handleClose: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n e.stopPropagation();\n onClose?.(tabKey);\n },\n [onClose, tabKey],\n );\n\n const _onSelect = useCallback(() => onSelect?.(tabKey), [onSelect, tabKey]);\n\n return (\n <Align.Pack\n size={size}\n className={CSS(\n CSS.BE(CLS, \"btn\"),\n onRename == null && CSS.BEM(CLS, \"btn\", \"uneditable\"),\n CSS.selected(selected === tabKey),\n closable && onClose != null && CSS.BEM(CLS, \"btn\", \"closable\"),\n )}\n draggable\n direction=\"x\"\n justify=\"center\"\n align=\"center\"\n onClick={_onSelect}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n bordered={false}\n rounded={false}\n >\n <Name\n name={name}\n tabKey={tabKey}\n onRename={onRename}\n icon={icon}\n editable={editable}\n level={Text.ComponentSizeLevels[size]}\n />\n {closable && onClose != null && (\n <Button.Icon onClick={handleClose}>\n <Icon.Close aria-label=\"pluto-tabs__close\" />\n </Button.Icon>\n )}\n </Align.Pack>\n );\n};\n\nexport interface SelectorButtonProps extends TabSpec {\n selected?: string;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onSelect?: (key: string) => void;\n onClose?: (key: string) => void;\n onRename?: (key: string, name: string) => void;\n size: ComponentSize;\n}\n\ninterface NameProps extends Text.CoreProps<Text.Level> {\n onRename?: (key: string, name: string) => void;\n name: string;\n tabKey: string;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nconst Name = ({\n onRename,\n name,\n tabKey,\n icon,\n editable = true,\n ...props\n}: NameProps): ReactElement => {\n if (onRename == null || !editable) {\n if (icon != null)\n return (\n <Text.WithIcon startIcon={icon} noWrap {...props}>\n {name}\n </Text.WithIcon>\n );\n return (\n <Text.Text noWrap {...props}>\n {name}\n </Text.Text>\n );\n }\n return (\n <Text.Editable<Text.Level>\n onChange={(newText: string) => onRename(tabKey, newText)}\n value={name}\n noWrap\n {...props}\n />\n );\n};\n"],"names":["resetSelection","selected","tabs","t","_a","rename","key","title","useStatic","content","onSelect","setSelected","useState","handleSelect","useCallback","TabsContext","createContext","useTabsContext","useContext","Tabs","children","closable","onClose","onDragStart","onDragEnd","onCreate","onRename","emptyContent","className","onDragOver","onDrop","size","dir","props","jsx","Align.Space","CSS","jsxs","Selector","direction","Content","Provider","renderProp","selectedTab","tab","CLS","SelectorButton","Button.Icon","Icon","tabKey","name","icon","editable","handleDragStart","e","handleDragEnd","handleClose","_onSelect","Align.Pack","Name","Text.ComponentSizeLevels","Text.WithIcon","Text.Text","Text.Editable","newText"],"mappings":"2NAsCaA,EAAiB,CAACC,EAAW,GAAIC,EAAc,CAAA,IAA2B,OACrF,GAAIA,EAAK,SAAW,EACpB,OAAOA,EAAK,KAAMC,GAAMA,EAAE,SAAWF,CAAQ,GAAK,KAC9CA,GACAG,EAAAF,EAAKA,EAAK,OAAS,CAAC,IAApB,YAAAE,EAAuB,MAC7B,EAEaC,EAAS,CAACC,EAAaC,EAAeL,IAAuB,CAExE,GADAK,EAAQA,EAAM,OACVA,EAAM,SAAW,EAAU,OAAAL,EAC/B,MAAMC,EAAID,EAAK,KAAMC,GAAMA,EAAE,SAAWG,CAAG,EACvC,OAAAH,GAAK,MAAQA,EAAE,OAASI,EAAcL,EACnCA,EAAK,IAAKC,GAAOA,EAAE,SAAWG,EAAM,CAAE,GAAGH,EAAG,KAAMI,GAAUJ,CAAE,CACvE,EAEaK,EAAY,CAAC,CACxB,KAAAN,EACA,QAAAO,EACA,SAAAC,CACF,IAA4C,OACpC,KAAA,CAACT,EAAUU,CAAW,EAAIC,aAASR,EAAAF,EAAK,CAAC,IAAN,YAAAE,EAAS,SAAU,EAAE,EAExDS,EAAeC,EAAA,YAClBR,GAAsB,CACrBK,EAAYL,CAAG,EACfI,GAAA,MAAAA,EAAWJ,EACb,EACA,CAACK,EAAaD,CAAQ,CAAA,EAGjB,MAAA,CACL,KAAAR,EACA,SAAAD,EACA,QAAAQ,EACA,SAAUI,CAAA,CAEd,EA2BaE,EAAcC,EAAAA,cAAgC,CAAE,KAAM,CAAA,CAAI,CAAA,EAE1DC,EAAiB,IAAwBC,aAAWH,CAAW,EAE/DI,EAAO,CAAC,CACnB,QAAAV,EACA,SAAAW,EACA,SAAAV,EACA,SAAAT,EACA,SAAAoB,EACA,KAAAnB,EACA,QAAAoB,EACA,YAAAC,EACA,UAAAC,EACA,SAAAC,EACA,SAAAC,EACA,aAAAC,EACA,UAAAC,EACA,WAAAC,EACA,OAAAC,EACA,KAAAC,EAAO,SACP,UAAWC,EAAM,IACjB,GAAGC,CACL,IACEC,EAAA,kBAAA,IAACC,EAAM,MAAN,CACC,MAAK,GACL,UAAWC,EAAI,IAAAA,EAAA,IAAI,EAAE,MAAM,EAAGR,CAAS,EACvC,WAAAC,EACA,OAAAC,EACA,UAAWE,EACV,GAAGC,EAEJ,SAAAI,EAAA,kBAAA,KAACtB,EAAY,SAAZ,CACC,MAAO,CACL,KAAAb,EACA,aAAAyB,EACA,SAAA1B,EACA,SAAAoB,EACA,QAASD,GAAYX,EACrB,SAAAC,EACA,QAAAY,EACA,YAAAC,EACA,UAAAC,EACA,SAAAE,EACA,SAAAD,EACA,OAAAK,CACF,EAEA,SAAA,CAAAI,wBAACI,GAAS,KAAAP,EAAY,UAAWQ,EAAAA,YAAU,KAAKP,CAAG,EAAG,0BACrDQ,EAAQ,EAAA,CAAA,CAAA,CACX,CAAA,CACF,EAGWC,EAAW1B,EAAY,SAEvByB,EAAU,IAA2B,CAC1C,KAAA,CACJ,KAAAtC,EACA,SAAAD,EACA,QAASyC,EACT,aAAAf,EACA,SAAAjB,GACEO,EAAe,EACnB,IAAIR,EAAqB,KACzB,MAAMkC,EAAczC,EAAK,KAAM0C,GAAQA,EAAI,SAAW3C,CAAQ,EAC1D,OAAAA,GAAY,MAAQ0C,GAAe,KAAahB,GAAgB,MAChEe,GAAc,KAAMjC,EAAUiC,EAAWC,CAAW,EAC/CA,EAAY,SAAW,OAAMlC,EAAUkC,EAAY,SAE1DT,EAAA,kBAAA,IAAC,MAAA,CACC,UAAWE,EAAAA,IAAI,EAAE,cAAc,EAC/B,QAAS,IAAM1B,GAAA,YAAAA,EAAWT,GAC1B,MAAO,CACL,MAAO,OACP,OAAQ,OACR,SAAU,WACV,SAAU,QACZ,EAEC,SAAAQ,CAAA,CAAA,EAGP,ECjJMoC,EAAM,gBAECP,EAAW,CAAC,CACvB,UAAAV,EACA,KAAAG,EAAO,SACP,UAAAQ,EAAY,IACZ,GAAGN,CACL,IAA0C,CAClC,KAAA,CACJ,KAAA/B,EACA,SAAAD,EACA,SAAAS,EACA,QAAAY,EACA,SAAAD,EACA,UAAAG,EACA,YAAAD,EACA,OAAAO,EACA,SAAAJ,EACA,SAAAD,GACER,EAAe,EAEjB,OAAAoB,EAAA,kBAAA,KAACF,EAAM,MAAN,CACC,UAAWC,EAAAA,IAAIA,EAAA,IAAI,EAAES,CAAG,EAAGT,EAAAA,IAAI,KAAKL,CAAI,EAAGH,CAAS,EACpD,MAAM,SACN,QAAQ,eACR,OAAAE,EACA,MAAK,GACL,UAAAS,EACC,GAAGN,EAEJ,SAAA,CAAAC,EAAA,kBAAA,IAACC,EAAM,MAAN,CAAY,UAAAI,EAAsB,UAAWH,EAAAA,IAAI,GAAGS,EAAK,MAAM,EAAG,MAAK,GACrE,SAAK3C,EAAA,IAAK0C,GACTV,EAAA,kBAAA,IAACY,EAAA,CAEC,SAAA7C,EACA,SAAAS,EACA,QAAAY,EACA,YAAAC,EACA,UAAAC,EACA,SAAAE,EACA,SAAUkB,EAAI,UAAYvB,EAC1B,KAAAU,EACC,GAAGa,CAAA,EATCA,EAAI,MAWZ,CAAA,EACH,EACAV,EAAAA,kBAAAA,IAACC,EAAM,MAAN,CAAY,UAAWC,EAAI,IAAA,GAAGS,EAAK,SAAS,EAC1C,SAAApB,GAAY,MACXS,EAAAA,kBAAAA,IAACa,EAAAA,KAAA,CAAY,KAAAhB,EAAY,MAAK,GAAC,QAASN,EACtC,SAAAS,EAAA,kBAAA,IAACc,EAAK,GAAA,IAAL,EAAS,CAAA,CACZ,CAEJ,CAAA,CAAA,CAAA,CAAA,CAGN,EAEMF,EAAiB,CAAC,CACtB,SAAA7C,EACA,SAAAS,EACA,QAAAY,EACA,OAAA2B,EACA,KAAAC,EACA,YAAA3B,EACA,UAAAC,EACA,SAAAE,EACA,SAAAL,EAAW,GACX,KAAA8B,EACA,KAAApB,EACA,SAAAqB,EAAW,EACb,IAAyC,CACvC,MAAMC,EAAoDvC,EAAA,YACvDwC,GAAM/B,GAAA,YAAAA,EAAc+B,EAAG,CAAE,OAAAL,EAAQ,KAAAC,IAClC,CAAC3B,EAAa0B,EAAQC,CAAI,CAAA,EAGtBK,EAAkDzC,EAAA,YACrDwC,GAAM9B,GAAA,YAAAA,EAAY8B,EAAG,CAAE,OAAAL,EAAQ,KAAAC,IAChC,CAAC1B,EAAWyB,EAAQC,CAAI,CAAA,EAGpBM,EAAoD1C,EAAA,YACvDwC,GAAM,CACLA,EAAE,gBAAgB,EAClBhC,GAAA,MAAAA,EAAU2B,EACZ,EACA,CAAC3B,EAAS2B,CAAM,CAAA,EAGZQ,EAAY3C,cAAY,IAAMJ,GAAA,YAAAA,EAAWuC,GAAS,CAACvC,EAAUuC,CAAM,CAAC,EAGxE,OAAAZ,EAAA,kBAAA,KAACqB,EAAM,KAAN,CACC,KAAA3B,EACA,UAAWK,EAAA,IACTA,MAAI,GAAGS,EAAK,KAAK,EACjBnB,GAAY,MAAQU,EAAA,IAAI,IAAIS,EAAK,MAAO,YAAY,EACpDT,MAAI,SAASnC,IAAagD,CAAM,EAChC5B,GAAYC,GAAW,MAAQc,EAAAA,IAAI,IAAIS,EAAK,MAAO,UAAU,CAC/D,EACA,UAAS,GACT,UAAU,IACV,QAAQ,SACR,MAAM,SACN,QAASY,EACT,YAAaJ,EACb,UAAWE,EACX,SAAU,GACV,QAAS,GAET,SAAA,CAAArB,EAAA,kBAAA,IAACyB,EAAA,CACC,KAAAT,EACA,OAAAD,EACA,SAAAvB,EACA,KAAAyB,EACA,SAAAC,EACA,MAAOQ,EAAK,oBAAoB7B,CAAI,CAAA,CACtC,EACCV,GAAYC,GAAW,MACtBY,EAAA,kBAAA,IAACa,EAAA,KAAA,CAAY,QAASS,EACpB,iCAACR,EAAK,GAAA,MAAL,CAAW,aAAW,mBAAoB,CAAA,EAC7C,CAAA,CAAA,CAAA,CAIR,EAoBMW,EAAO,CAAC,CACZ,SAAAjC,EACA,KAAAwB,EACA,OAAAD,EACA,KAAAE,EACA,SAAAC,EAAW,GACX,GAAGnB,CACL,IACMP,GAAY,MAAQ,CAAC0B,EACnBD,GAAQ,KAERjB,wBAAC2B,EAAAA,SAAA,CAAc,UAAWV,EAAM,OAAM,GAAE,GAAGlB,EACxC,SACHiB,CAAA,CAAA,EAGFhB,EAAA,kBAAA,IAAC4B,OAAA,CAAU,OAAM,GAAE,GAAG7B,EACnB,SACHiB,CAAA,CAAA,EAIFhB,EAAA,kBAAA,IAAC6B,EAAK,SAAL,CACC,SAAWC,GAAoBtC,EAASuB,EAAQe,CAAO,EACvD,MAAOd,EACP,OAAM,GACL,GAAGjB,CAAA,CAAA"}
1
+ {"version":3,"file":"external-dFd3d4ZY.cjs","sources":["../src/tabs/Tabs.tsx","../src/tabs/Selector.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport React, {\n createContext,\n type ReactElement,\n type ReactNode,\n useContext,\n useState,\n useCallback,\n} from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { type TabSpec, Selector } from \"@/tabs/Selector\";\nimport { type ComponentSize } from \"@/util/component\";\nimport { type RenderProp } from \"@/util/renderProp\";\n\nexport interface Tab extends TabSpec {\n content?: ReactNode;\n}\n\nexport type TabRenderProp = RenderProp<Tab>;\n\nexport interface UseStaticTabsProps {\n tabs: Tab[];\n content?: TabRenderProp;\n onSelect?: (key: string) => void;\n}\n\nexport const resetSelection = (selected = \"\", tabs: Tab[] = []): string | undefined => {\n if (tabs.length === 0) return undefined;\n return tabs.find((t) => t.tabKey === selected) != null\n ? selected\n : tabs[tabs.length - 1]?.tabKey;\n};\n\nexport const rename = (key: string, title: string, tabs: Tab[]): Tab[] => {\n title = title.trim();\n if (title.length === 0) return tabs;\n const t = tabs.find((t) => t.tabKey === key);\n if (t == null || t.name === title) return tabs;\n return tabs.map((t) => (t.tabKey === key ? { ...t, name: title } : t));\n};\n\nexport const useStatic = ({\n tabs,\n content,\n onSelect,\n}: UseStaticTabsProps): TabsContextValue => {\n const [selected, setSelected] = useState(tabs[0]?.tabKey ?? \"\");\n\n const handleSelect = useCallback(\n (key: string): void => {\n setSelected(key);\n onSelect?.(key);\n },\n [setSelected, onSelect],\n );\n\n return {\n tabs,\n selected,\n content,\n onSelect: handleSelect,\n };\n};\n\nexport interface TabsContextValue {\n tabs: Tab[];\n emptyContent?: ReactElement | null;\n closable?: boolean;\n selected?: string;\n onSelect?: (key: string) => void;\n content?: TabRenderProp;\n onClose?: (key: string) => void;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;\n onRename?: (key: string, title: string) => void;\n onCreate?: () => void;\n}\n\nexport interface TabsProps\n extends Omit<\n Align.SpaceProps,\n \"children\" | \"onSelect\" | \"size\" | \"onDragStart\" | \"onDragEnd\" | \"content\"\n >,\n TabsContextValue {\n children?: TabRenderProp;\n size?: ComponentSize;\n}\n\nexport const TabsContext = createContext<TabsContextValue>({ tabs: [] });\n\nexport const useTabsContext = (): TabsContextValue => useContext(TabsContext);\n\nexport const Tabs = ({\n content,\n children,\n onSelect,\n selected,\n closable,\n tabs,\n onClose,\n onDragStart,\n onDragEnd,\n onCreate,\n onRename,\n emptyContent,\n className,\n onDragOver,\n onDrop,\n size = \"medium\",\n direction: dir = \"y\",\n ...props\n}: TabsProps): ReactElement => (\n <Align.Space\n empty\n className={CSS(CSS.B(\"tabs\"), className)}\n onDragOver={onDragOver}\n onDrop={onDrop}\n direction={dir}\n {...props}\n >\n <TabsContext.Provider\n value={{\n tabs,\n emptyContent,\n selected,\n closable,\n content: children ?? content,\n onSelect,\n onClose,\n onDragStart,\n onDragEnd,\n onRename,\n onCreate,\n onDrop,\n }}\n >\n <Selector size={size} direction={direction.swap(dir)} />\n <Content />\n </TabsContext.Provider>\n </Align.Space>\n);\n\nexport const Provider = TabsContext.Provider;\n\nexport const Content = (): ReactElement | null => {\n const {\n tabs,\n selected,\n content: renderProp,\n emptyContent,\n onSelect,\n } = useTabsContext();\n let content: ReactNode = null;\n const selectedTab = tabs.find((tab) => tab.tabKey === selected);\n if (selected == null || selectedTab == null) return emptyContent ?? null;\n if (renderProp != null) content = renderProp(selectedTab);\n else if (selectedTab.content != null) content = selectedTab.content;\n return (\n <div\n className={CSS.B(\"tabs-content\")}\n onClick={() => onSelect?.(selected)}\n style={{\n width: \"100%\",\n height: \"100%\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {content}\n </div>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n type DragEventHandler,\n type MouseEventHandler,\n type ReactElement,\n useCallback,\n} from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\n\nimport { Align } from \"@/align\";\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { useTabsContext } from \"@/tabs/Tabs\";\nimport { Text } from \"@/text\";\nimport { type ComponentSize } from \"@/util/component\";\n\nimport \"@/tabs/Selector.css\";\n\nexport interface TabSpec {\n tabKey: string;\n name: string;\n closable?: boolean;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nexport interface SelectorProps extends Omit<Align.SpaceProps, \"children\" | \"size\"> {\n size: ComponentSize;\n}\n\nconst CLS = \"tabs-selector\";\n\nexport const Selector = ({\n className,\n size = \"medium\",\n direction = \"x\",\n ...props\n}: SelectorProps): ReactElement | null => {\n const {\n tabs,\n selected,\n onSelect,\n onClose,\n closable,\n onDragEnd,\n onDragStart,\n onDrop,\n onRename,\n onCreate,\n } = useTabsContext();\n return (\n <Align.Space\n className={CSS(CSS.B(CLS), CSS.size(size), className)}\n align=\"center\"\n justify=\"spaceBetween\"\n onDrop={onDrop}\n empty\n direction={direction}\n {...props}\n >\n <Align.Space direction={direction} className={CSS.BE(CLS, \"tabs\")} empty>\n {tabs.map((tab) => (\n <SelectorButton\n key={tab.tabKey}\n selected={selected}\n onSelect={onSelect}\n onClose={onClose}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onRename={onRename}\n closable={tab.closable ?? closable}\n size={size}\n {...tab}\n />\n ))}\n </Align.Space>\n <Align.Space className={CSS.BE(CLS, \"actions\")}>\n {onCreate != null && (\n <Button.Icon size={size} sharp onClick={onCreate}>\n <Icon.Add />\n </Button.Icon>\n )}\n </Align.Space>\n </Align.Space>\n );\n};\n\nconst SelectorButton = ({\n selected,\n onSelect,\n onClose,\n tabKey,\n name,\n onDragStart,\n onDragEnd,\n onRename,\n closable = true,\n icon,\n size,\n editable = true,\n}: SelectorButtonProps): ReactElement => {\n const handleDragStart: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragStart?.(e, { tabKey, name }),\n [onDragStart, tabKey, name],\n );\n\n const handleDragEnd: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragEnd?.(e, { tabKey, name }),\n [onDragEnd, tabKey, name],\n );\n\n const handleClose: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n e.stopPropagation();\n onClose?.(tabKey);\n },\n [onClose, tabKey],\n );\n\n const _onSelect = useCallback(() => onSelect?.(tabKey), [onSelect, tabKey]);\n\n return (\n <Align.Pack\n size={size}\n className={CSS(\n CSS.BE(CLS, \"btn\"),\n onRename == null && CSS.BEM(CLS, \"btn\", \"uneditable\"),\n CSS.selected(selected === tabKey),\n closable && onClose != null && CSS.BEM(CLS, \"btn\", \"closable\"),\n )}\n draggable\n direction=\"x\"\n justify=\"center\"\n align=\"center\"\n onClick={_onSelect}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n bordered={false}\n rounded={false}\n >\n <Name\n name={name}\n tabKey={tabKey}\n onRename={onRename}\n icon={icon}\n editable={editable}\n level={Text.ComponentSizeLevels[size]}\n />\n {closable && onClose != null && (\n <Button.Icon onClick={handleClose}>\n <Icon.Close aria-label=\"pluto-tabs__close\" />\n </Button.Icon>\n )}\n </Align.Pack>\n );\n};\n\nexport interface SelectorButtonProps extends TabSpec {\n selected?: string;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onSelect?: (key: string) => void;\n onClose?: (key: string) => void;\n onRename?: (key: string, name: string) => void;\n size: ComponentSize;\n}\n\ninterface NameProps extends Text.CoreProps<Text.Level> {\n onRename?: (key: string, name: string) => void;\n name: string;\n tabKey: string;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nconst Name = ({\n onRename,\n name,\n tabKey,\n icon,\n editable = true,\n ...props\n}: NameProps): ReactElement => {\n if (onRename == null || !editable) {\n if (icon != null)\n return (\n <Text.WithIcon startIcon={icon} noWrap {...props}>\n {name}\n </Text.WithIcon>\n );\n return (\n <Text.Text noWrap {...props}>\n {name}\n </Text.Text>\n );\n }\n return (\n <Text.Editable<Text.Level>\n onChange={(newText: string) => onRename(tabKey, newText)}\n value={name}\n noWrap\n {...props}\n />\n );\n};\n"],"names":["resetSelection","selected","tabs","t","_a","rename","key","title","useStatic","content","onSelect","setSelected","useState","handleSelect","useCallback","TabsContext","createContext","useTabsContext","useContext","Tabs","children","closable","onClose","onDragStart","onDragEnd","onCreate","onRename","emptyContent","className","onDragOver","onDrop","size","dir","props","jsx","Align.Space","CSS","jsxs","Selector","direction","Content","Provider","renderProp","selectedTab","tab","CLS","SelectorButton","Button.Icon","Icon","tabKey","name","icon","editable","handleDragStart","e","handleDragEnd","handleClose","_onSelect","Align.Pack","Name","Text.ComponentSizeLevels","Text.WithIcon","Text.Text","Text.Editable","newText"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("./Toggle-wVZJoVtX.cjs"),c=require("./jsx-runtime-evvPGacs.cjs"),l=require("react"),i=require("./css-JWFtNl10.cjs"),M=require("./Center-Q-fgAb96.cjs");require("./aggregator-6_J8kSSO.cjs");const y=require("./Keyboard-79lsaV0f.cjs"),R=t=>{const{listen:o}=e.useContext$1(),[d,n]=l.useState([]);return l.useEffect(()=>o(({next:[r]})=>n(r??[])),[o,n]),c.jsxRuntimeExports.jsx(e.Text,{...t,children:d.join(" ")})},f=({onDrag:t,triggers:o=[["MouseLeft"],["MouseRight"]],bound:d,loose:n=!1})=>{const r=l.useRef(null),s=l.useRef(i.xy.ZERO),a=l.useCallback(u=>{const x=i.xy.construct(u);if(r.current===null)return;const{triggers:g}=r.current;t({box:i.box$1.construct(s.current,x),cursor:x,triggers:g,stage:"during"})},[t]),E=l.useCallback(u=>{const{stage:x,cursor:g}=u;x==="start"?(t({box:i.box$1.construct(g),...u}),window.addEventListener("mousemove",a),r.current=u,s.current=g):x==="end"&&r.current!=null&&(t({box:i.box$1.construct(s.current,g),...u}),window.removeEventListener("mousemove",a),r.current=null,s.current=i.xy.ZERO)},[t]);e.use$2({triggers:o,callback:E,region:d,loose:n})},m=({className:t,style:o,trigger:d,...n})=>{const r={Control:c.jsxRuntimeExports.jsx(e.Symbols.Meta,{}),Alt:c.jsxRuntimeExports.jsx(e.Symbols.Alt,{}),Shift:c.jsxRuntimeExports.jsx(e.u0.Keyboard.Shift,{}),MouseLeft:"Left Click",MouseRight:"Right Click",MouseMiddle:"Middle Click"};return c.jsxRuntimeExports.jsx(M.Space,{className:t,style:o,direction:"x",children:d.map(s=>c.jsxRuntimeExports.jsx(y.Keyboard,{...n,children:r[s]??s},s))})},S=Object.freeze(Object.defineProperty({__proto__:null,ALPHANUMERIC_KEYS:e.ALPHANUMERIC_KEYS,ALPHANUMERIC_KEYS_SET:e.ALPHANUMERIC_KEYS_SET,KEYS:e.KEYS,MOUSE_KEYS:e.MOUSE_KEYS,Provider:e.Provider$1,Status:R,Text:m,compareModeConfigs:e.compareModeConfigs,determineMode:e.determineMode,diff:e.diff,eventKey:e.eventKey,filter:e.filter,flattenConfig:e.flattenConfig,keyZ:e.keyZ,keyboardKey:e.keyboardKey,match:e.match,mouseKey:e.mouseKey,mouseKeyZ:e.mouseKeyZ,purge:e.purge,purgeMouse:e.purgeMouse,triggerZ:e.triggerZ,use:e.use$2,useContext:e.useContext$1,useDrag:f,useFlattenedMemoConfig:e.useFlattenedMemoConfig,useHeld:e.useHeld,useHeldRef:e.useHeldRef},Symbol.toStringTag,{value:"Module"}));exports.Text=m;exports.external=S;exports.useDrag=f;
2
- //# sourceMappingURL=external-7CL_DLHQ.cjs.map
1
+ "use strict";const e=require("./Toggle-qW_TcIDh.cjs"),c=require("./jsx-runtime-evvPGacs.cjs"),l=require("react"),i=require("./css-JWFtNl10.cjs"),M=require("./Center-Q-fgAb96.cjs");require("./aggregator-6_J8kSSO.cjs");const y=require("./Keyboard-Jopa0ImN.cjs"),R=t=>{const{listen:o}=e.useContext$1(),[d,n]=l.useState([]);return l.useEffect(()=>o(({next:[r]})=>n(r??[])),[o,n]),c.jsxRuntimeExports.jsx(e.Text,{...t,children:d.join(" ")})},f=({onDrag:t,triggers:o=[["MouseLeft"],["MouseRight"]],bound:d,loose:n=!1})=>{const r=l.useRef(null),s=l.useRef(i.xy.ZERO),a=l.useCallback(u=>{const x=i.xy.construct(u);if(r.current===null)return;const{triggers:g}=r.current;t({box:i.box$1.construct(s.current,x),cursor:x,triggers:g,stage:"during"})},[t]),E=l.useCallback(u=>{const{stage:x,cursor:g}=u;x==="start"?(t({box:i.box$1.construct(g),...u}),window.addEventListener("mousemove",a),r.current=u,s.current=g):x==="end"&&r.current!=null&&(t({box:i.box$1.construct(s.current,g),...u}),window.removeEventListener("mousemove",a),r.current=null,s.current=i.xy.ZERO)},[t]);e.use$2({triggers:o,callback:E,region:d,loose:n})},m=({className:t,style:o,trigger:d,...n})=>{const r={Control:c.jsxRuntimeExports.jsx(e.Symbols.Meta,{}),Alt:c.jsxRuntimeExports.jsx(e.Symbols.Alt,{}),Shift:c.jsxRuntimeExports.jsx(e.u0.Keyboard.Shift,{}),MouseLeft:"Left Click",MouseRight:"Right Click",MouseMiddle:"Middle Click"};return c.jsxRuntimeExports.jsx(M.Space,{className:t,style:o,direction:"x",children:d.map(s=>c.jsxRuntimeExports.jsx(y.Keyboard,{...n,children:r[s]??s},s))})},S=Object.freeze(Object.defineProperty({__proto__:null,ALPHANUMERIC_KEYS:e.ALPHANUMERIC_KEYS,ALPHANUMERIC_KEYS_SET:e.ALPHANUMERIC_KEYS_SET,KEYS:e.KEYS,MOUSE_KEYS:e.MOUSE_KEYS,Provider:e.Provider$1,Status:R,Text:m,compareModeConfigs:e.compareModeConfigs,determineMode:e.determineMode,diff:e.diff,eventKey:e.eventKey,filter:e.filter,flattenConfig:e.flattenConfig,keyZ:e.keyZ,keyboardKey:e.keyboardKey,match:e.match,mouseKey:e.mouseKey,mouseKeyZ:e.mouseKeyZ,purge:e.purge,purgeMouse:e.purgeMouse,triggerZ:e.triggerZ,use:e.use$2,useContext:e.useContext$1,useDrag:f,useFlattenedMemoConfig:e.useFlattenedMemoConfig,useHeld:e.useHeld,useHeldRef:e.useHeldRef},Symbol.toStringTag,{value:"Module"}));exports.Text=m;exports.external=S;exports.useDrag=f;
2
+ //# sourceMappingURL=external-er-l9iZA.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-7CL_DLHQ.cjs","sources":["../src/triggers/Status.tsx","../src/triggers/useDrag.ts","../src/triggers/Text.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement, useEffect, useState } from \"react\";\n\nimport { Text } from \"@/text\";\nimport { useContext } from \"@/triggers/Provider\";\nimport { type Trigger } from \"@/triggers/triggers\";\n\nexport interface StatusProps extends Text.TextProps {}\n\nexport const Status = (props: StatusProps): ReactElement => {\n const { listen } = useContext();\n const [trigger, setTrigger] = useState<Trigger>([]);\n\n useEffect(\n () => listen(({ next: [trigger] }) => setTrigger(trigger ?? [])),\n [listen, setTrigger],\n );\n\n return <Text.Text {...props}>{trigger.join(\" \")}</Text.Text>;\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type RefObject, useCallback, useRef } from \"react\";\n\nimport { box, xy } from \"@synnaxlabs/x\";\n\nimport { use, type UseEvent } from \"@/triggers/hooks\";\nimport { type Stage, type Trigger } from \"@/triggers/triggers\";\n\nexport interface DragEvent {\n stage: Stage;\n box: box.Box;\n cursor: xy.XY;\n triggers: Trigger[];\n}\n\nexport type DragCallback = (props: DragEvent) => void;\n\nexport interface UseDragProps {\n bound: RefObject<HTMLElement>;\n triggers?: Trigger[];\n onDrag: DragCallback;\n loose?: boolean;\n}\n\nexport const useDrag = ({\n onDrag,\n triggers = [[\"MouseLeft\"], [\"MouseRight\"]],\n bound,\n loose = false,\n}: UseDragProps): void => {\n const triggerRef = useRef<UseEvent | null>(null);\n const startLoc = useRef<xy.XY>(xy.ZERO);\n const onMove = useCallback(\n (e: xy.Client & { buttons: number }) => {\n const cursor = xy.construct(e);\n if (triggerRef.current === null) return;\n const { triggers } = triggerRef.current;\n onDrag({\n box: box.construct(startLoc.current, cursor),\n cursor,\n triggers,\n stage: \"during\",\n });\n },\n [onDrag],\n );\n const handleTrigger = useCallback(\n (event: UseEvent): void => {\n const { stage, cursor } = event;\n if (stage === \"start\") {\n onDrag({ box: box.construct(cursor), ...event });\n window.addEventListener(\"mousemove\", onMove);\n triggerRef.current = event;\n startLoc.current = cursor;\n } else if (stage === \"end\" && triggerRef.current != null) {\n onDrag({ box: box.construct(startLoc.current, cursor), ...event });\n window.removeEventListener(\"mousemove\", onMove);\n triggerRef.current = null;\n startLoc.current = xy.ZERO;\n }\n },\n [onDrag],\n );\n use({ triggers, callback: handleTrigger, region: bound, loose });\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\n\nimport { Align } from \"@/align\";\nimport { Text as Core } from \"@/text\";\nimport { type Key, type Trigger } from \"@/triggers/triggers\";\n\nexport type TextProps<L extends Core.Level> = Core.KeyboardProps<L> & {\n trigger: Trigger;\n};\n\nexport const Text = <L extends Core.Level>({\n className,\n style,\n trigger,\n ...props\n}: TextProps<L>): ReactElement => {\n const CUSTOM_TEXT: Partial<Record<Key, ReactElement | string>> = {\n Control: <Core.Symbols.Meta />,\n Alt: <Core.Symbols.Alt />,\n Shift: <Icon.Keyboard.Shift />,\n MouseLeft: \"Left Click\",\n MouseRight: \"Right Click\",\n MouseMiddle: \"Middle Click\",\n };\n return (\n <Align.Space className={className} style={style} direction=\"x\">\n {trigger.map((t) => (\n // @ts-expect-error\n <Core.Keyboard<L> key={t} {...props}>\n {CUSTOM_TEXT[t] ?? t}\n </Core.Keyboard>\n ))}\n </Align.Space>\n );\n};\n"],"names":["Status","props","listen","useContext","trigger","setTrigger","useState","useEffect","jsx","Text.Text","useDrag","onDrag","triggers","bound","loose","triggerRef","useRef","startLoc","xy","onMove","useCallback","e","cursor","box","handleTrigger","event","stage","use","Text","className","style","CUSTOM_TEXT","Core.Symbols","Icon","Align.Space","t","Core.Keyboard"],"mappings":"oQAiBaA,EAAUC,GAAqC,CACpD,KAAA,CAAE,OAAAC,GAAWC,EAAAA,eACb,CAACC,EAASC,CAAU,EAAIC,EAAA,SAAkB,CAAE,CAAA,EAElDC,OAAAA,EAAA,UACE,IAAML,EAAO,CAAC,CAAE,KAAM,CAACE,CAAO,CAAA,IAAQC,EAAWD,GAAW,CAAA,CAAE,CAAC,EAC/D,CAACF,EAAQG,CAAU,CAAA,EAGdG,EAAA,kBAAA,IAACC,OAAA,CAAW,GAAGR,EAAQ,SAAAG,EAAQ,KAAK,GAAG,CAAE,CAAA,CAClD,ECKaM,EAAU,CAAC,CACtB,OAAAC,EACA,SAAAC,EAAW,CAAC,CAAC,WAAW,EAAG,CAAC,YAAY,CAAC,EACzC,MAAAC,EACA,MAAAC,EAAQ,EACV,IAA0B,CAClB,MAAAC,EAAaC,SAAwB,IAAI,EACzCC,EAAWD,EAAAA,OAAcE,EAAA,GAAG,IAAI,EAChCC,EAASC,EAAA,YACZC,GAAuC,CAChC,MAAAC,EAASJ,EAAAA,GAAG,UAAUG,CAAC,EAC7B,GAAIN,EAAW,UAAY,KAAM,OACjC,KAAM,CAAE,SAAAH,GAAaG,EAAW,QACzBJ,EAAA,CACL,IAAKY,EAAAA,MAAI,UAAUN,EAAS,QAASK,CAAM,EAC3C,OAAAA,EACA,SAAAV,EACA,MAAO,QAAA,CACR,CACH,EACA,CAACD,CAAM,CAAA,EAEHa,EAAgBJ,EAAA,YACnBK,GAA0B,CACnB,KAAA,CAAE,MAAAC,EAAO,OAAAJ,CAAW,EAAAG,EACtBC,IAAU,SACLf,EAAA,CAAE,IAAKY,QAAI,UAAUD,CAAM,EAAG,GAAGG,EAAO,EACxC,OAAA,iBAAiB,YAAaN,CAAM,EAC3CJ,EAAW,QAAUU,EACrBR,EAAS,QAAUK,GACVI,IAAU,OAASX,EAAW,SAAW,OAC3CJ,EAAA,CAAE,IAAKY,EAAA,MAAI,UAAUN,EAAS,QAASK,CAAM,EAAG,GAAGG,CAAA,CAAO,EAC1D,OAAA,oBAAoB,YAAaN,CAAM,EAC9CJ,EAAW,QAAU,KACrBE,EAAS,QAAUC,EAAG,GAAA,KAE1B,EACA,CAACP,CAAM,CAAA,EAETgB,QAAI,CAAE,SAAAf,EAAU,SAAUY,EAAe,OAAQX,EAAO,MAAAC,EAAO,CACjE,ECnDac,EAAO,CAAuB,CACzC,UAAAC,EACA,MAAAC,EACA,QAAA1B,EACA,GAAGH,CACL,IAAkC,CAChC,MAAM8B,EAA2D,CAC/D,QAASvB,EAAA,kBAAA,IAACwB,UAAa,KAAb,CAAA,CAAkB,EAC5B,IAAKxB,EAAA,kBAAA,IAACwB,UAAa,IAAb,CAAA,CAAiB,EACvB,MAAOxB,EAAAA,kBAAAA,IAACyB,EAAAA,GAAK,SAAS,MAAd,CAAA,CAAoB,EAC5B,UAAW,aACX,WAAY,cACZ,YAAa,cAAA,EAGb,OAAAzB,wBAAC0B,EAAAA,MAAA,CAAY,UAAAL,EAAsB,MAAAC,EAAc,UAAU,IACxD,SAAQ1B,EAAA,IAAK+B,GAEZ3B,wBAAC4B,EAAAA,SAAA,CAA0B,GAAGnC,EAC3B,SAAY8B,EAAAI,CAAC,GAAKA,CAAA,EADEA,CAEvB,CACD,CACH,CAAA,CAEJ"}
1
+ {"version":3,"file":"external-er-l9iZA.cjs","sources":["../src/triggers/Status.tsx","../src/triggers/useDrag.ts","../src/triggers/Text.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement, useEffect, useState } from \"react\";\n\nimport { Text } from \"@/text\";\nimport { useContext } from \"@/triggers/Provider\";\nimport { type Trigger } from \"@/triggers/triggers\";\n\nexport interface StatusProps extends Text.TextProps {}\n\nexport const Status = (props: StatusProps): ReactElement => {\n const { listen } = useContext();\n const [trigger, setTrigger] = useState<Trigger>([]);\n\n useEffect(\n () => listen(({ next: [trigger] }) => setTrigger(trigger ?? [])),\n [listen, setTrigger],\n );\n\n return <Text.Text {...props}>{trigger.join(\" \")}</Text.Text>;\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type RefObject, useCallback, useRef } from \"react\";\n\nimport { box, xy } from \"@synnaxlabs/x\";\n\nimport { use, type UseEvent } from \"@/triggers/hooks\";\nimport { type Stage, type Trigger } from \"@/triggers/triggers\";\n\nexport interface DragEvent {\n stage: Stage;\n box: box.Box;\n cursor: xy.XY;\n triggers: Trigger[];\n}\n\nexport type DragCallback = (props: DragEvent) => void;\n\nexport interface UseDragProps {\n bound: RefObject<HTMLElement>;\n triggers?: Trigger[];\n onDrag: DragCallback;\n loose?: boolean;\n}\n\nexport const useDrag = ({\n onDrag,\n triggers = [[\"MouseLeft\"], [\"MouseRight\"]],\n bound,\n loose = false,\n}: UseDragProps): void => {\n const triggerRef = useRef<UseEvent | null>(null);\n const startLoc = useRef<xy.XY>(xy.ZERO);\n const onMove = useCallback(\n (e: xy.Client & { buttons: number }) => {\n const cursor = xy.construct(e);\n if (triggerRef.current === null) return;\n const { triggers } = triggerRef.current;\n onDrag({\n box: box.construct(startLoc.current, cursor),\n cursor,\n triggers,\n stage: \"during\",\n });\n },\n [onDrag],\n );\n const handleTrigger = useCallback(\n (event: UseEvent): void => {\n const { stage, cursor } = event;\n if (stage === \"start\") {\n onDrag({ box: box.construct(cursor), ...event });\n window.addEventListener(\"mousemove\", onMove);\n triggerRef.current = event;\n startLoc.current = cursor;\n } else if (stage === \"end\" && triggerRef.current != null) {\n onDrag({ box: box.construct(startLoc.current, cursor), ...event });\n window.removeEventListener(\"mousemove\", onMove);\n triggerRef.current = null;\n startLoc.current = xy.ZERO;\n }\n },\n [onDrag],\n );\n use({ triggers, callback: handleTrigger, region: bound, loose });\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\n\nimport { Align } from \"@/align\";\nimport { Text as Core } from \"@/text\";\nimport { type Key, type Trigger } from \"@/triggers/triggers\";\n\nexport type TextProps<L extends Core.Level> = Core.KeyboardProps<L> & {\n trigger: Trigger;\n};\n\nexport const Text = <L extends Core.Level>({\n className,\n style,\n trigger,\n ...props\n}: TextProps<L>): ReactElement => {\n const CUSTOM_TEXT: Partial<Record<Key, ReactElement | string>> = {\n Control: <Core.Symbols.Meta />,\n Alt: <Core.Symbols.Alt />,\n Shift: <Icon.Keyboard.Shift />,\n MouseLeft: \"Left Click\",\n MouseRight: \"Right Click\",\n MouseMiddle: \"Middle Click\",\n };\n return (\n <Align.Space className={className} style={style} direction=\"x\">\n {trigger.map((t) => (\n // @ts-expect-error\n <Core.Keyboard<L> key={t} {...props}>\n {CUSTOM_TEXT[t] ?? t}\n </Core.Keyboard>\n ))}\n </Align.Space>\n );\n};\n"],"names":["Status","props","listen","useContext","trigger","setTrigger","useState","useEffect","jsx","Text.Text","useDrag","onDrag","triggers","bound","loose","triggerRef","useRef","startLoc","xy","onMove","useCallback","e","cursor","box","handleTrigger","event","stage","use","Text","className","style","CUSTOM_TEXT","Core.Symbols","Icon","Align.Space","t","Core.Keyboard"],"mappings":"oQAiBaA,EAAUC,GAAqC,CACpD,KAAA,CAAE,OAAAC,GAAWC,EAAAA,eACb,CAACC,EAASC,CAAU,EAAIC,EAAA,SAAkB,CAAE,CAAA,EAElDC,OAAAA,EAAA,UACE,IAAML,EAAO,CAAC,CAAE,KAAM,CAACE,CAAO,CAAA,IAAQC,EAAWD,GAAW,CAAA,CAAE,CAAC,EAC/D,CAACF,EAAQG,CAAU,CAAA,EAGdG,EAAA,kBAAA,IAACC,OAAA,CAAW,GAAGR,EAAQ,SAAAG,EAAQ,KAAK,GAAG,CAAE,CAAA,CAClD,ECKaM,EAAU,CAAC,CACtB,OAAAC,EACA,SAAAC,EAAW,CAAC,CAAC,WAAW,EAAG,CAAC,YAAY,CAAC,EACzC,MAAAC,EACA,MAAAC,EAAQ,EACV,IAA0B,CAClB,MAAAC,EAAaC,SAAwB,IAAI,EACzCC,EAAWD,EAAAA,OAAcE,EAAA,GAAG,IAAI,EAChCC,EAASC,EAAA,YACZC,GAAuC,CAChC,MAAAC,EAASJ,EAAAA,GAAG,UAAUG,CAAC,EAC7B,GAAIN,EAAW,UAAY,KAAM,OACjC,KAAM,CAAE,SAAAH,GAAaG,EAAW,QACzBJ,EAAA,CACL,IAAKY,EAAAA,MAAI,UAAUN,EAAS,QAASK,CAAM,EAC3C,OAAAA,EACA,SAAAV,EACA,MAAO,QAAA,CACR,CACH,EACA,CAACD,CAAM,CAAA,EAEHa,EAAgBJ,EAAA,YACnBK,GAA0B,CACnB,KAAA,CAAE,MAAAC,EAAO,OAAAJ,CAAW,EAAAG,EACtBC,IAAU,SACLf,EAAA,CAAE,IAAKY,QAAI,UAAUD,CAAM,EAAG,GAAGG,EAAO,EACxC,OAAA,iBAAiB,YAAaN,CAAM,EAC3CJ,EAAW,QAAUU,EACrBR,EAAS,QAAUK,GACVI,IAAU,OAASX,EAAW,SAAW,OAC3CJ,EAAA,CAAE,IAAKY,EAAA,MAAI,UAAUN,EAAS,QAASK,CAAM,EAAG,GAAGG,CAAA,CAAO,EAC1D,OAAA,oBAAoB,YAAaN,CAAM,EAC9CJ,EAAW,QAAU,KACrBE,EAAS,QAAUC,EAAG,GAAA,KAE1B,EACA,CAACP,CAAM,CAAA,EAETgB,QAAI,CAAE,SAAAf,EAAU,SAAUY,EAAe,OAAQX,EAAO,MAAAC,EAAO,CACjE,ECnDac,EAAO,CAAuB,CACzC,UAAAC,EACA,MAAAC,EACA,QAAA1B,EACA,GAAGH,CACL,IAAkC,CAChC,MAAM8B,EAA2D,CAC/D,QAASvB,EAAA,kBAAA,IAACwB,UAAa,KAAb,CAAA,CAAkB,EAC5B,IAAKxB,EAAA,kBAAA,IAACwB,UAAa,IAAb,CAAA,CAAiB,EACvB,MAAOxB,EAAAA,kBAAAA,IAACyB,EAAAA,GAAK,SAAS,MAAd,CAAA,CAAoB,EAC5B,UAAW,aACX,WAAY,cACZ,YAAa,cAAA,EAGb,OAAAzB,wBAAC0B,EAAAA,MAAA,CAAY,UAAAL,EAAsB,MAAAC,EAAc,UAAU,IACxD,SAAQ1B,EAAA,IAAK+B,GAEZ3B,wBAAC4B,EAAAA,SAAA,CAA0B,GAAGnC,EAC3B,SAAY8B,EAAAI,CAAC,GAAKA,CAAA,EADEA,CAEvB,CACD,CACH,CAAA,CAEJ"}
@@ -1,6 +1,6 @@
1
1
  import { j as o } from "./jsx-runtime-NmMXPjeo.js";
2
2
  import { createContext as S, useState as W, useCallback as C, useContext as k } from "react";
3
- import { I as N, g as T, W as w, e as I, E as M } from "./Toggle-3mGeA8rE.js";
3
+ import { I as N, g as T, W as w, e as I, E as M } from "./Toggle-zmqGwWeq.js";
4
4
  import { S as v, P as L } from "./Center-iTyfvHz5.js";
5
5
  import { C as a, d as O } from "./css-rizsElAK.js";
6
6
  import { C as A } from "./aggregator-Q_onjsH5.js";
@@ -250,4 +250,4 @@ export {
250
250
  $ as r,
251
251
  z as u
252
252
  };
253
- //# sourceMappingURL=external-f3-E2t1n.js.map
253
+ //# sourceMappingURL=external-luTLo-w7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-f3-E2t1n.js","sources":["../src/tabs/Tabs.tsx","../src/tabs/Selector.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport React, {\n createContext,\n type ReactElement,\n type ReactNode,\n useContext,\n useState,\n useCallback,\n} from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { type TabSpec, Selector } from \"@/tabs/Selector\";\nimport { type ComponentSize } from \"@/util/component\";\nimport { type RenderProp } from \"@/util/renderProp\";\n\nexport interface Tab extends TabSpec {\n content?: ReactNode;\n}\n\nexport type TabRenderProp = RenderProp<Tab>;\n\nexport interface UseStaticTabsProps {\n tabs: Tab[];\n content?: TabRenderProp;\n onSelect?: (key: string) => void;\n}\n\nexport const resetSelection = (selected = \"\", tabs: Tab[] = []): string | undefined => {\n if (tabs.length === 0) return undefined;\n return tabs.find((t) => t.tabKey === selected) != null\n ? selected\n : tabs[tabs.length - 1]?.tabKey;\n};\n\nexport const rename = (key: string, title: string, tabs: Tab[]): Tab[] => {\n title = title.trim();\n if (title.length === 0) return tabs;\n const t = tabs.find((t) => t.tabKey === key);\n if (t == null || t.name === title) return tabs;\n return tabs.map((t) => (t.tabKey === key ? { ...t, name: title } : t));\n};\n\nexport const useStatic = ({\n tabs,\n content,\n onSelect,\n}: UseStaticTabsProps): TabsContextValue => {\n const [selected, setSelected] = useState(tabs[0]?.tabKey ?? \"\");\n\n const handleSelect = useCallback(\n (key: string): void => {\n setSelected(key);\n onSelect?.(key);\n },\n [setSelected, onSelect],\n );\n\n return {\n tabs,\n selected,\n content,\n onSelect: handleSelect,\n };\n};\n\nexport interface TabsContextValue {\n tabs: Tab[];\n emptyContent?: ReactElement | null;\n closable?: boolean;\n selected?: string;\n onSelect?: (key: string) => void;\n content?: TabRenderProp;\n onClose?: (key: string) => void;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;\n onRename?: (key: string, title: string) => void;\n onCreate?: () => void;\n}\n\nexport interface TabsProps\n extends Omit<\n Align.SpaceProps,\n \"children\" | \"onSelect\" | \"size\" | \"onDragStart\" | \"onDragEnd\" | \"content\"\n >,\n TabsContextValue {\n children?: TabRenderProp;\n size?: ComponentSize;\n}\n\nexport const TabsContext = createContext<TabsContextValue>({ tabs: [] });\n\nexport const useTabsContext = (): TabsContextValue => useContext(TabsContext);\n\nexport const Tabs = ({\n content,\n children,\n onSelect,\n selected,\n closable,\n tabs,\n onClose,\n onDragStart,\n onDragEnd,\n onCreate,\n onRename,\n emptyContent,\n className,\n onDragOver,\n onDrop,\n size = \"medium\",\n direction: dir = \"y\",\n ...props\n}: TabsProps): ReactElement => (\n <Align.Space\n empty\n className={CSS(CSS.B(\"tabs\"), className)}\n onDragOver={onDragOver}\n onDrop={onDrop}\n direction={dir}\n {...props}\n >\n <TabsContext.Provider\n value={{\n tabs,\n emptyContent,\n selected,\n closable,\n content: children ?? content,\n onSelect,\n onClose,\n onDragStart,\n onDragEnd,\n onRename,\n onCreate,\n onDrop,\n }}\n >\n <Selector size={size} direction={direction.swap(dir)} />\n <Content />\n </TabsContext.Provider>\n </Align.Space>\n);\n\nexport const Provider = TabsContext.Provider;\n\nexport const Content = (): ReactElement | null => {\n const {\n tabs,\n selected,\n content: renderProp,\n emptyContent,\n onSelect,\n } = useTabsContext();\n let content: ReactNode = null;\n const selectedTab = tabs.find((tab) => tab.tabKey === selected);\n if (selected == null || selectedTab == null) return emptyContent ?? null;\n if (renderProp != null) content = renderProp(selectedTab);\n else if (selectedTab.content != null) content = selectedTab.content;\n return (\n <div\n className={CSS.B(\"tabs-content\")}\n onClick={() => onSelect?.(selected)}\n style={{\n width: \"100%\",\n height: \"100%\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {content}\n </div>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n type DragEventHandler,\n type MouseEventHandler,\n type ReactElement,\n useCallback,\n} from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\n\nimport { Align } from \"@/align\";\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { useTabsContext } from \"@/tabs/Tabs\";\nimport { Text } from \"@/text\";\nimport { type ComponentSize } from \"@/util/component\";\n\nimport \"@/tabs/Selector.css\";\n\nexport interface TabSpec {\n tabKey: string;\n name: string;\n closable?: boolean;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nexport interface SelectorProps extends Omit<Align.SpaceProps, \"children\" | \"size\"> {\n size: ComponentSize;\n}\n\nconst CLS = \"tabs-selector\";\n\nexport const Selector = ({\n className,\n size = \"medium\",\n direction = \"x\",\n ...props\n}: SelectorProps): ReactElement | null => {\n const {\n tabs,\n selected,\n onSelect,\n onClose,\n closable,\n onDragEnd,\n onDragStart,\n onDrop,\n onRename,\n onCreate,\n } = useTabsContext();\n return (\n <Align.Space\n className={CSS(CSS.B(CLS), CSS.size(size), className)}\n align=\"center\"\n justify=\"spaceBetween\"\n onDrop={onDrop}\n empty\n direction={direction}\n {...props}\n >\n <Align.Space direction={direction} className={CSS.BE(CLS, \"tabs\")} empty>\n {tabs.map((tab) => (\n <SelectorButton\n key={tab.tabKey}\n selected={selected}\n onSelect={onSelect}\n onClose={onClose}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onRename={onRename}\n closable={tab.closable ?? closable}\n size={size}\n {...tab}\n />\n ))}\n </Align.Space>\n <Align.Space className={CSS.BE(CLS, \"actions\")}>\n {onCreate != null && (\n <Button.Icon size={size} sharp onClick={onCreate}>\n <Icon.Add />\n </Button.Icon>\n )}\n </Align.Space>\n </Align.Space>\n );\n};\n\nconst SelectorButton = ({\n selected,\n onSelect,\n onClose,\n tabKey,\n name,\n onDragStart,\n onDragEnd,\n onRename,\n closable = true,\n icon,\n size,\n editable = true,\n}: SelectorButtonProps): ReactElement => {\n const handleDragStart: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragStart?.(e, { tabKey, name }),\n [onDragStart, tabKey, name],\n );\n\n const handleDragEnd: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragEnd?.(e, { tabKey, name }),\n [onDragEnd, tabKey, name],\n );\n\n const handleClose: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n e.stopPropagation();\n onClose?.(tabKey);\n },\n [onClose, tabKey],\n );\n\n const _onSelect = useCallback(() => onSelect?.(tabKey), [onSelect, tabKey]);\n\n return (\n <Align.Pack\n size={size}\n className={CSS(\n CSS.BE(CLS, \"btn\"),\n onRename == null && CSS.BEM(CLS, \"btn\", \"uneditable\"),\n CSS.selected(selected === tabKey),\n closable && onClose != null && CSS.BEM(CLS, \"btn\", \"closable\"),\n )}\n draggable\n direction=\"x\"\n justify=\"center\"\n align=\"center\"\n onClick={_onSelect}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n bordered={false}\n rounded={false}\n >\n <Name\n name={name}\n tabKey={tabKey}\n onRename={onRename}\n icon={icon}\n editable={editable}\n level={Text.ComponentSizeLevels[size]}\n />\n {closable && onClose != null && (\n <Button.Icon onClick={handleClose}>\n <Icon.Close aria-label=\"pluto-tabs__close\" />\n </Button.Icon>\n )}\n </Align.Pack>\n );\n};\n\nexport interface SelectorButtonProps extends TabSpec {\n selected?: string;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onSelect?: (key: string) => void;\n onClose?: (key: string) => void;\n onRename?: (key: string, name: string) => void;\n size: ComponentSize;\n}\n\ninterface NameProps extends Text.CoreProps<Text.Level> {\n onRename?: (key: string, name: string) => void;\n name: string;\n tabKey: string;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nconst Name = ({\n onRename,\n name,\n tabKey,\n icon,\n editable = true,\n ...props\n}: NameProps): ReactElement => {\n if (onRename == null || !editable) {\n if (icon != null)\n return (\n <Text.WithIcon startIcon={icon} noWrap {...props}>\n {name}\n </Text.WithIcon>\n );\n return (\n <Text.Text noWrap {...props}>\n {name}\n </Text.Text>\n );\n }\n return (\n <Text.Editable<Text.Level>\n onChange={(newText: string) => onRename(tabKey, newText)}\n value={name}\n noWrap\n {...props}\n />\n );\n};\n"],"names":["resetSelection","selected","tabs","t","_a","rename","key","title","useStatic","content","onSelect","setSelected","useState","handleSelect","useCallback","TabsContext","createContext","useTabsContext","useContext","Tabs","children","closable","onClose","onDragStart","onDragEnd","onCreate","onRename","emptyContent","className","onDragOver","onDrop","size","dir","props","jsx","Align.Space","CSS","jsxs","Selector","direction","Content","Provider","renderProp","selectedTab","tab","CLS","SelectorButton","Button.Icon","Icon","tabKey","name","icon","editable","handleDragStart","e","handleDragEnd","handleClose","_onSelect","Align.Pack","Name","Text.ComponentSizeLevels","Text.WithIcon","Text.Text","Text.Editable","newText"],"mappings":"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"}
1
+ {"version":3,"file":"external-luTLo-w7.js","sources":["../src/tabs/Tabs.tsx","../src/tabs/Selector.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport React, {\n createContext,\n type ReactElement,\n type ReactNode,\n useContext,\n useState,\n useCallback,\n} from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { type TabSpec, Selector } from \"@/tabs/Selector\";\nimport { type ComponentSize } from \"@/util/component\";\nimport { type RenderProp } from \"@/util/renderProp\";\n\nexport interface Tab extends TabSpec {\n content?: ReactNode;\n}\n\nexport type TabRenderProp = RenderProp<Tab>;\n\nexport interface UseStaticTabsProps {\n tabs: Tab[];\n content?: TabRenderProp;\n onSelect?: (key: string) => void;\n}\n\nexport const resetSelection = (selected = \"\", tabs: Tab[] = []): string | undefined => {\n if (tabs.length === 0) return undefined;\n return tabs.find((t) => t.tabKey === selected) != null\n ? selected\n : tabs[tabs.length - 1]?.tabKey;\n};\n\nexport const rename = (key: string, title: string, tabs: Tab[]): Tab[] => {\n title = title.trim();\n if (title.length === 0) return tabs;\n const t = tabs.find((t) => t.tabKey === key);\n if (t == null || t.name === title) return tabs;\n return tabs.map((t) => (t.tabKey === key ? { ...t, name: title } : t));\n};\n\nexport const useStatic = ({\n tabs,\n content,\n onSelect,\n}: UseStaticTabsProps): TabsContextValue => {\n const [selected, setSelected] = useState(tabs[0]?.tabKey ?? \"\");\n\n const handleSelect = useCallback(\n (key: string): void => {\n setSelected(key);\n onSelect?.(key);\n },\n [setSelected, onSelect],\n );\n\n return {\n tabs,\n selected,\n content,\n onSelect: handleSelect,\n };\n};\n\nexport interface TabsContextValue {\n tabs: Tab[];\n emptyContent?: ReactElement | null;\n closable?: boolean;\n selected?: string;\n onSelect?: (key: string) => void;\n content?: TabRenderProp;\n onClose?: (key: string) => void;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;\n onRename?: (key: string, title: string) => void;\n onCreate?: () => void;\n}\n\nexport interface TabsProps\n extends Omit<\n Align.SpaceProps,\n \"children\" | \"onSelect\" | \"size\" | \"onDragStart\" | \"onDragEnd\" | \"content\"\n >,\n TabsContextValue {\n children?: TabRenderProp;\n size?: ComponentSize;\n}\n\nexport const TabsContext = createContext<TabsContextValue>({ tabs: [] });\n\nexport const useTabsContext = (): TabsContextValue => useContext(TabsContext);\n\nexport const Tabs = ({\n content,\n children,\n onSelect,\n selected,\n closable,\n tabs,\n onClose,\n onDragStart,\n onDragEnd,\n onCreate,\n onRename,\n emptyContent,\n className,\n onDragOver,\n onDrop,\n size = \"medium\",\n direction: dir = \"y\",\n ...props\n}: TabsProps): ReactElement => (\n <Align.Space\n empty\n className={CSS(CSS.B(\"tabs\"), className)}\n onDragOver={onDragOver}\n onDrop={onDrop}\n direction={dir}\n {...props}\n >\n <TabsContext.Provider\n value={{\n tabs,\n emptyContent,\n selected,\n closable,\n content: children ?? content,\n onSelect,\n onClose,\n onDragStart,\n onDragEnd,\n onRename,\n onCreate,\n onDrop,\n }}\n >\n <Selector size={size} direction={direction.swap(dir)} />\n <Content />\n </TabsContext.Provider>\n </Align.Space>\n);\n\nexport const Provider = TabsContext.Provider;\n\nexport const Content = (): ReactElement | null => {\n const {\n tabs,\n selected,\n content: renderProp,\n emptyContent,\n onSelect,\n } = useTabsContext();\n let content: ReactNode = null;\n const selectedTab = tabs.find((tab) => tab.tabKey === selected);\n if (selected == null || selectedTab == null) return emptyContent ?? null;\n if (renderProp != null) content = renderProp(selectedTab);\n else if (selectedTab.content != null) content = selectedTab.content;\n return (\n <div\n className={CSS.B(\"tabs-content\")}\n onClick={() => onSelect?.(selected)}\n style={{\n width: \"100%\",\n height: \"100%\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {content}\n </div>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n type DragEventHandler,\n type MouseEventHandler,\n type ReactElement,\n useCallback,\n} from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\n\nimport { Align } from \"@/align\";\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { useTabsContext } from \"@/tabs/Tabs\";\nimport { Text } from \"@/text\";\nimport { type ComponentSize } from \"@/util/component\";\n\nimport \"@/tabs/Selector.css\";\n\nexport interface TabSpec {\n tabKey: string;\n name: string;\n closable?: boolean;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nexport interface SelectorProps extends Omit<Align.SpaceProps, \"children\" | \"size\"> {\n size: ComponentSize;\n}\n\nconst CLS = \"tabs-selector\";\n\nexport const Selector = ({\n className,\n size = \"medium\",\n direction = \"x\",\n ...props\n}: SelectorProps): ReactElement | null => {\n const {\n tabs,\n selected,\n onSelect,\n onClose,\n closable,\n onDragEnd,\n onDragStart,\n onDrop,\n onRename,\n onCreate,\n } = useTabsContext();\n return (\n <Align.Space\n className={CSS(CSS.B(CLS), CSS.size(size), className)}\n align=\"center\"\n justify=\"spaceBetween\"\n onDrop={onDrop}\n empty\n direction={direction}\n {...props}\n >\n <Align.Space direction={direction} className={CSS.BE(CLS, \"tabs\")} empty>\n {tabs.map((tab) => (\n <SelectorButton\n key={tab.tabKey}\n selected={selected}\n onSelect={onSelect}\n onClose={onClose}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onRename={onRename}\n closable={tab.closable ?? closable}\n size={size}\n {...tab}\n />\n ))}\n </Align.Space>\n <Align.Space className={CSS.BE(CLS, \"actions\")}>\n {onCreate != null && (\n <Button.Icon size={size} sharp onClick={onCreate}>\n <Icon.Add />\n </Button.Icon>\n )}\n </Align.Space>\n </Align.Space>\n );\n};\n\nconst SelectorButton = ({\n selected,\n onSelect,\n onClose,\n tabKey,\n name,\n onDragStart,\n onDragEnd,\n onRename,\n closable = true,\n icon,\n size,\n editable = true,\n}: SelectorButtonProps): ReactElement => {\n const handleDragStart: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragStart?.(e, { tabKey, name }),\n [onDragStart, tabKey, name],\n );\n\n const handleDragEnd: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragEnd?.(e, { tabKey, name }),\n [onDragEnd, tabKey, name],\n );\n\n const handleClose: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n e.stopPropagation();\n onClose?.(tabKey);\n },\n [onClose, tabKey],\n );\n\n const _onSelect = useCallback(() => onSelect?.(tabKey), [onSelect, tabKey]);\n\n return (\n <Align.Pack\n size={size}\n className={CSS(\n CSS.BE(CLS, \"btn\"),\n onRename == null && CSS.BEM(CLS, \"btn\", \"uneditable\"),\n CSS.selected(selected === tabKey),\n closable && onClose != null && CSS.BEM(CLS, \"btn\", \"closable\"),\n )}\n draggable\n direction=\"x\"\n justify=\"center\"\n align=\"center\"\n onClick={_onSelect}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n bordered={false}\n rounded={false}\n >\n <Name\n name={name}\n tabKey={tabKey}\n onRename={onRename}\n icon={icon}\n editable={editable}\n level={Text.ComponentSizeLevels[size]}\n />\n {closable && onClose != null && (\n <Button.Icon onClick={handleClose}>\n <Icon.Close aria-label=\"pluto-tabs__close\" />\n </Button.Icon>\n )}\n </Align.Pack>\n );\n};\n\nexport interface SelectorButtonProps extends TabSpec {\n selected?: string;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onSelect?: (key: string) => void;\n onClose?: (key: string) => void;\n onRename?: (key: string, name: string) => void;\n size: ComponentSize;\n}\n\ninterface NameProps extends Text.CoreProps<Text.Level> {\n onRename?: (key: string, name: string) => void;\n name: string;\n tabKey: string;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nconst Name = ({\n onRename,\n name,\n tabKey,\n icon,\n editable = true,\n ...props\n}: NameProps): ReactElement => {\n if (onRename == null || !editable) {\n if (icon != null)\n return (\n <Text.WithIcon startIcon={icon} noWrap {...props}>\n {name}\n </Text.WithIcon>\n );\n return (\n <Text.Text noWrap {...props}>\n {name}\n </Text.Text>\n );\n }\n return (\n <Text.Editable<Text.Level>\n onChange={(newText: string) => onRename(tabKey, newText)}\n value={name}\n noWrap\n {...props}\n />\n );\n};\n"],"names":["resetSelection","selected","tabs","t","_a","rename","key","title","useStatic","content","onSelect","setSelected","useState","handleSelect","useCallback","TabsContext","createContext","useTabsContext","useContext","Tabs","children","closable","onClose","onDragStart","onDragEnd","onCreate","onRename","emptyContent","className","onDragOver","onDrop","size","dir","props","jsx","Align.Space","CSS","jsxs","Selector","direction","Content","Provider","renderProp","selectedTab","tab","CLS","SelectorButton","Button.Icon","Icon","tabKey","name","icon","editable","handleDragStart","e","handleDragEnd","handleClose","_onSelect","Align.Pack","Name","Text.ComponentSizeLevels","Text.WithIcon","Text.Text","Text.Editable","newText"],"mappings":";;;;;;AAsCO,MAAMA,IAAiB,CAACC,IAAW,IAAIC,IAAc,CAAA,MAA2B;;AACrF,MAAIA,EAAK,WAAW;AACpB,WAAOA,EAAK,KAAK,CAACC,MAAMA,EAAE,WAAWF,CAAQ,KAAK,OAC9CA,KACAG,IAAAF,EAAKA,EAAK,SAAS,CAAC,MAApB,gBAAAE,EAAuB;AAC7B,GAEaC,IAAS,CAACC,GAAaC,GAAeL,MAAuB;AAExE,MADAK,IAAQA,EAAM,QACVA,EAAM,WAAW;AAAU,WAAAL;AAC/B,QAAMC,IAAID,EAAK,KAAK,CAACC,MAAMA,EAAE,WAAWG,CAAG;AACvC,SAAAH,KAAK,QAAQA,EAAE,SAASI,IAAcL,IACnCA,EAAK,IAAI,CAACC,MAAOA,EAAE,WAAWG,IAAM,EAAE,GAAGH,GAAG,MAAMI,MAAUJ,CAAE;AACvE,GAEaK,IAAY,CAAC;AAAA,EACxB,MAAAN;AAAA,EACA,SAAAO;AAAA,EACA,UAAAC;AACF,MAA4C;;AACpC,QAAA,CAACT,GAAUU,CAAW,IAAIC,IAASR,IAAAF,EAAK,CAAC,MAAN,gBAAAE,EAAS,WAAU,EAAE,GAExDS,IAAeC;AAAA,IACnB,CAACR,MAAsB;AACrB,MAAAK,EAAYL,CAAG,GACfI,KAAA,QAAAA,EAAWJ;AAAA,IACb;AAAA,IACA,CAACK,GAAaD,CAAQ;AAAA,EAAA;AAGjB,SAAA;AAAA,IACL,MAAAR;AAAA,IACA,UAAAD;AAAA,IACA,SAAAQ;AAAA,IACA,UAAUI;AAAA,EAAA;AAEd,GA2BaE,IAAcC,EAAgC,EAAE,MAAM,CAAA,EAAI,CAAA,GAE1DC,IAAiB,MAAwBC,EAAWH,CAAW,GAE/DI,IAAO,CAAC;AAAA,EACnB,SAAAV;AAAA,EACA,UAAAW;AAAA,EACA,UAAAV;AAAA,EACA,UAAAT;AAAA,EACA,UAAAoB;AAAA,EACA,MAAAnB;AAAA,EACA,SAAAoB;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,WAAWC,IAAM;AAAA,EACjB,GAAGC;AACL,MACEC,gBAAAA,EAAA;AAAA,EAACC;AAAAA,EAAA;AAAA,IACC,OAAK;AAAA,IACL,WAAWC,EAAIA,EAAI,EAAE,MAAM,GAAGR,CAAS;AAAA,IACvC,YAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAWE;AAAA,IACV,GAAGC;AAAA,IAEJ,UAAAI,gBAAAA,EAAA;AAAA,MAACtB,EAAY;AAAA,MAAZ;AAAA,QACC,OAAO;AAAA,UACL,MAAAb;AAAA,UACA,cAAAyB;AAAA,UACA,UAAA1B;AAAA,UACA,UAAAoB;AAAA,UACA,SAASD,KAAYX;AAAA,UACrB,UAAAC;AAAA,UACA,SAAAY;AAAA,UACA,aAAAC;AAAA,UACA,WAAAC;AAAA,UACA,UAAAE;AAAA,UACA,UAAAD;AAAA,UACA,QAAAK;AAAA,QACF;AAAA,QAEA,UAAA;AAAA,UAAAI,gBAAAA,MAACI,KAAS,MAAAP,GAAY,WAAWQ,EAAU,KAAKP,CAAG,GAAG;AAAA,gCACrDQ,GAAQ,EAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACX;AAAA,EAAA;AACF,GAGWC,IAAW1B,EAAY,UAEvByB,IAAU,MAA2B;AAC1C,QAAA;AAAA,IACJ,MAAAtC;AAAA,IACA,UAAAD;AAAA,IACA,SAASyC;AAAA,IACT,cAAAf;AAAA,IACA,UAAAjB;AAAA,MACEO,EAAe;AACnB,MAAIR,IAAqB;AACzB,QAAMkC,IAAczC,EAAK,KAAK,CAAC0C,MAAQA,EAAI,WAAW3C,CAAQ;AAC1D,SAAAA,KAAY,QAAQ0C,KAAe,OAAahB,KAAgB,QAChEe,KAAc,OAAMjC,IAAUiC,EAAWC,CAAW,IAC/CA,EAAY,WAAW,SAAMlC,IAAUkC,EAAY,UAE1DT,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWE,EAAI,EAAE,cAAc;AAAA,MAC/B,SAAS,MAAM1B,KAAA,gBAAAA,EAAWT;AAAA,MAC1B,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,UAAU;AAAA,MACZ;AAAA,MAEC,UAAAQ;AAAA,IAAA;AAAA,EAAA;AAGP,GCjJMoC,IAAM,iBAECP,IAAW,CAAC;AAAA,EACvB,WAAAV;AAAA,EACA,MAAAG,IAAO;AAAA,EACP,WAAAQ,IAAY;AAAA,EACZ,GAAGN;AACL,MAA0C;AAClC,QAAA;AAAA,IACJ,MAAA/B;AAAA,IACA,UAAAD;AAAA,IACA,UAAAS;AAAA,IACA,SAAAY;AAAA,IACA,UAAAD;AAAA,IACA,WAAAG;AAAA,IACA,aAAAD;AAAA,IACA,QAAAO;AAAA,IACA,UAAAJ;AAAA,IACA,UAAAD;AAAA,MACER,EAAe;AAEjB,SAAAoB,gBAAAA,EAAA;AAAA,IAACF;AAAAA,IAAA;AAAA,MACC,WAAWC,EAAIA,EAAI,EAAES,CAAG,GAAGT,EAAI,KAAKL,CAAI,GAAGH,CAAS;AAAA,MACpD,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,QAAAE;AAAA,MACA,OAAK;AAAA,MACL,WAAAS;AAAA,MACC,GAAGN;AAAA,MAEJ,UAAA;AAAA,QAAAC,gBAAAA,EAAA,IAACC,GAAA,EAAY,WAAAI,GAAsB,WAAWH,EAAI,GAAGS,GAAK,MAAM,GAAG,OAAK,IACrE,UAAK3C,EAAA,IAAI,CAAC0C,MACTV,gBAAAA,EAAA;AAAA,UAACY;AAAA,UAAA;AAAA,YAEC,UAAA7C;AAAA,YACA,UAAAS;AAAA,YACA,SAAAY;AAAA,YACA,aAAAC;AAAA,YACA,WAAAC;AAAA,YACA,UAAAE;AAAA,YACA,UAAUkB,EAAI,YAAYvB;AAAA,YAC1B,MAAAU;AAAA,YACC,GAAGa;AAAA,UAAA;AAAA,UATCA,EAAI;AAAA,QAWZ,CAAA,GACH;AAAA,QACAV,gBAAAA,EAAAA,IAACC,GAAA,EAAY,WAAWC,EAAI,GAAGS,GAAK,SAAS,GAC1C,UAAApB,KAAY,QACXS,gBAAAA,EAAAA,IAACa,GAAA,EAAY,MAAAhB,GAAY,OAAK,IAAC,SAASN,GACtC,UAAAS,gBAAAA,EAAA,IAACc,EAAK,KAAL,EAAS,EAAA,CACZ,EAEJ,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAEMF,IAAiB,CAAC;AAAA,EACtB,UAAA7C;AAAA,EACA,UAAAS;AAAA,EACA,SAAAY;AAAA,EACA,QAAA2B;AAAA,EACA,MAAAC;AAAA,EACA,aAAA3B;AAAA,EACA,WAAAC;AAAA,EACA,UAAAE;AAAA,EACA,UAAAL,IAAW;AAAA,EACX,MAAA8B;AAAA,EACA,MAAApB;AAAA,EACA,UAAAqB,IAAW;AACb,MAAyC;AACvC,QAAMC,IAAoDvC;AAAA,IACxD,CAACwC,MAAM/B,KAAA,gBAAAA,EAAc+B,GAAG,EAAE,QAAAL,GAAQ,MAAAC;IAClC,CAAC3B,GAAa0B,GAAQC,CAAI;AAAA,EAAA,GAGtBK,IAAkDzC;AAAA,IACtD,CAACwC,MAAM9B,KAAA,gBAAAA,EAAY8B,GAAG,EAAE,QAAAL,GAAQ,MAAAC;IAChC,CAAC1B,GAAWyB,GAAQC,CAAI;AAAA,EAAA,GAGpBM,IAAoD1C;AAAA,IACxD,CAACwC,MAAM;AACL,MAAAA,EAAE,gBAAgB,GAClBhC,KAAA,QAAAA,EAAU2B;AAAA,IACZ;AAAA,IACA,CAAC3B,GAAS2B,CAAM;AAAA,EAAA,GAGZQ,IAAY3C,EAAY,MAAMJ,KAAA,gBAAAA,EAAWuC,IAAS,CAACvC,GAAUuC,CAAM,CAAC;AAGxE,SAAAZ,gBAAAA,EAAA;AAAA,IAACqB;AAAAA,IAAA;AAAA,MACC,MAAA3B;AAAA,MACA,WAAWK;AAAA,QACTA,EAAI,GAAGS,GAAK,KAAK;AAAA,QACjBnB,KAAY,QAAQU,EAAI,IAAIS,GAAK,OAAO,YAAY;AAAA,QACpDT,EAAI,SAASnC,MAAagD,CAAM;AAAA,QAChC5B,KAAYC,KAAW,QAAQc,EAAI,IAAIS,GAAK,OAAO,UAAU;AAAA,MAC/D;AAAA,MACA,WAAS;AAAA,MACT,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,SAASY;AAAA,MACT,aAAaJ;AAAA,MACb,WAAWE;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MAET,UAAA;AAAA,QAAArB,gBAAAA,EAAA;AAAA,UAACyB;AAAA,UAAA;AAAA,YACC,MAAAT;AAAA,YACA,QAAAD;AAAA,YACA,UAAAvB;AAAA,YACA,MAAAyB;AAAA,YACA,UAAAC;AAAA,YACA,OAAOQ,EAAyB7B,CAAI;AAAA,UAAA;AAAA,QACtC;AAAA,QACCV,KAAYC,KAAW,QACtBY,gBAAAA,EAAA,IAACa,GAAA,EAAY,SAASS,GACpB,gCAACR,EAAK,OAAL,EAAW,cAAW,oBAAoB,CAAA,GAC7C;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,GAoBMW,IAAO,CAAC;AAAA,EACZ,UAAAjC;AAAA,EACA,MAAAwB;AAAA,EACA,QAAAD;AAAA,EACA,MAAAE;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,GAAGnB;AACL,MACMP,KAAY,QAAQ,CAAC0B,IACnBD,KAAQ,OAERjB,gBAAAA,MAAC2B,GAAA,EAAc,WAAWV,GAAM,QAAM,IAAE,GAAGlB,GACxC,UACHiB,EAAA,CAAA,IAGFhB,gBAAAA,EAAA,IAAC4B,GAAA,EAAU,QAAM,IAAE,GAAG7B,GACnB,UACHiB,EAAA,CAAA,IAIFhB,gBAAAA,EAAA;AAAA,EAAC6B;AAAAA,EAAA;AAAA,IACC,UAAU,CAACC,MAAoBtC,EAASuB,GAAQe,CAAO;AAAA,IACvD,OAAOd;AAAA,IACP,QAAM;AAAA,IACL,GAAGjB;AAAA,EAAA;AAAA;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("./Toggle-wVZJoVtX.cjs"),c=require("./aggregator-6_J8kSSO.cjs"),g=require("./Keyboard-79lsaV0f.cjs"),r=require("./jsx-runtime-evvPGacs.cjs"),p=require("react"),R=require("./Center-Q-fgAb96.cjs"),S=require("./css-JWFtNl10.cjs"),k=({children:e=T,value:n,onChange:o,entryRenderKey:l="key",allowNone:a=!1,allowMultiple:m=!1,data:i,replaceOnSingle:x,...y})=>{const{onSelect:d}=t.useSelect({allowMultiple:m,allowNone:a,replaceOnSingle:x,data:i,value:n,onChange:o});return r.jsxRuntimeExports.jsx(R.Pack,{...y,children:i.map(s=>e({key:s.key,onClick:()=>d(s.key),selected:s.key===n,entry:s,title:s[l]}))})},T=({key:e,onClick:n,selected:o,title:l})=>r.jsxRuntimeExports.jsx(t.Button,{onClick:n,variant:o?"filled":"outlined",children:l}),f=({selected:e,renderKey:n,toggle:o,visible:l,children:a,...m})=>r.jsxRuntimeExports.jsx(t.Button,{className:S.CSS.B("select-button"),onClick:o,variant:"outlined",endIcon:r.jsxRuntimeExports.jsx(t.u0.Caret.Up,{className:S.CSS.BE("select-button","indicator")}),...m,children:a??(e==null?void 0:e[n])}),j=t.componentRenderProp(f),v=({data:e,value:n,columns:o=[],children:l=j,tagKey:a="key",allowNone:m=!1,onChange:i,disabled:x,hideColumnHeader:y=!0})=>{const{close:d,visible:s,toggle:E}=t.use$1(),[C,b]=p.useState((e==null?void 0:e.find(u=>u.key===n))??null);p.useEffect(()=>{b((e==null?void 0:e.find(u=>u.key===n))??null)},[e,n]);const h=p.useCallback((u,L)=>{if(d(),u==null)return b(null),i(n);b(L.entries[0]),i(u)},[i,n,d,b]);return r.jsxRuntimeExports.jsx(t.Core,{close:d,matchTriggerWidth:!0,data:e,visible:s,value:[n],onChange:h,allowMultiple:!1,allowNone:m,columns:o,hideColumnHeader:y,children:l({selected:C,renderKey:a,toggle:E,visible:s,disabled:x})})},D=[{key:"h2",label:"XL"},{key:"h3",label:"L"},{key:"h4",label:"M"},{key:"p",label:"S"},{key:"small",label:"XS"}],q=({key:e,entry:n,onClick:o,selected:l})=>r.jsxRuntimeExports.jsx(t.Button,{variant:l?"filled":"outlined",onClick:o,children:n.label},e),B=({children:e=q,...n})=>r.jsxRuntimeExports.jsx(k,{...n,data:D,children:e}),z=Object.freeze(Object.defineProperty({__proto__:null,ComponentSizeLevels:c.ComponentSizeLevels,CoreDateTime:t.CoreDateTime,DateTime:t.DateTime,Editable:t.Editable,Keyboard:g.Keyboard,LEVELS:c.LEVELS,LevelComponentSizes:c.LevelComponentSizes,Link:t.Link,MaybeEditable:t.MaybeEditable,SelectLevel:B,Symbols:t.Symbols,Text:t.Text,WithIcon:t.WithIcon,dimensions:c.dimensions,edit:t.edit,formatChildren:t.formatChildren,levelZ:c.levelZ,specZ:c.specZ},Symbol.toStringTag,{value:"Module"}));exports.BaseButton=f;exports.Button=k;exports.DropdownButton=v;exports.SelectLevel=B;exports.defaultButton=j;exports.external=z;
2
- //# sourceMappingURL=external-ogG2kUq2.cjs.map
1
+ "use strict";const t=require("./Toggle-qW_TcIDh.cjs"),c=require("./aggregator-6_J8kSSO.cjs"),g=require("./Keyboard-Jopa0ImN.cjs"),r=require("./jsx-runtime-evvPGacs.cjs"),p=require("react"),R=require("./Center-Q-fgAb96.cjs"),S=require("./css-JWFtNl10.cjs"),k=({children:e=T,value:n,onChange:o,entryRenderKey:l="key",allowNone:a=!1,allowMultiple:m=!1,data:i,replaceOnSingle:x,...y})=>{const{onSelect:d}=t.useSelect({allowMultiple:m,allowNone:a,replaceOnSingle:x,data:i,value:n,onChange:o});return r.jsxRuntimeExports.jsx(R.Pack,{...y,children:i.map(s=>e({key:s.key,onClick:()=>d(s.key),selected:s.key===n,entry:s,title:s[l]}))})},T=({key:e,onClick:n,selected:o,title:l})=>r.jsxRuntimeExports.jsx(t.Button,{onClick:n,variant:o?"filled":"outlined",children:l}),f=({selected:e,renderKey:n,toggle:o,visible:l,children:a,...m})=>r.jsxRuntimeExports.jsx(t.Button,{className:S.CSS.B("select-button"),onClick:o,variant:"outlined",endIcon:r.jsxRuntimeExports.jsx(t.u0.Caret.Up,{className:S.CSS.BE("select-button","indicator")}),...m,children:a??(e==null?void 0:e[n])}),j=t.componentRenderProp(f),v=({data:e,value:n,columns:o=[],children:l=j,tagKey:a="key",allowNone:m=!1,onChange:i,disabled:x,hideColumnHeader:y=!0})=>{const{close:d,visible:s,toggle:E}=t.use$1(),[C,b]=p.useState((e==null?void 0:e.find(u=>u.key===n))??null);p.useEffect(()=>{b((e==null?void 0:e.find(u=>u.key===n))??null)},[e,n]);const h=p.useCallback((u,L)=>{if(d(),u==null)return b(null),i(n);b(L.entries[0]),i(u)},[i,n,d,b]);return r.jsxRuntimeExports.jsx(t.Core,{close:d,matchTriggerWidth:!0,data:e,visible:s,value:[n],onChange:h,allowMultiple:!1,allowNone:m,columns:o,hideColumnHeader:y,children:l({selected:C,renderKey:a,toggle:E,visible:s,disabled:x})})},D=[{key:"h2",label:"XL"},{key:"h3",label:"L"},{key:"h4",label:"M"},{key:"p",label:"S"},{key:"small",label:"XS"}],q=({key:e,entry:n,onClick:o,selected:l})=>r.jsxRuntimeExports.jsx(t.Button,{variant:l?"filled":"outlined",onClick:o,children:n.label},e),B=({children:e=q,...n})=>r.jsxRuntimeExports.jsx(k,{...n,data:D,children:e}),z=Object.freeze(Object.defineProperty({__proto__:null,ComponentSizeLevels:c.ComponentSizeLevels,CoreDateTime:t.CoreDateTime,DateTime:t.DateTime,Editable:t.Editable,Keyboard:g.Keyboard,LEVELS:c.LEVELS,LevelComponentSizes:c.LevelComponentSizes,Link:t.Link,MaybeEditable:t.MaybeEditable,SelectLevel:B,Symbols:t.Symbols,Text:t.Text,WithIcon:t.WithIcon,dimensions:c.dimensions,edit:t.edit,formatChildren:t.formatChildren,levelZ:c.levelZ,specZ:c.specZ},Symbol.toStringTag,{value:"Module"}));exports.BaseButton=f;exports.Button=k;exports.DropdownButton=v;exports.SelectLevel=B;exports.defaultButton=j;exports.external=z;
2
+ //# sourceMappingURL=external-n4UdyJ7i.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-ogG2kUq2.cjs","sources":["../src/select/Button.tsx","../src/text/SelectLevel.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { useCallback, type ReactElement, useState, useEffect } from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\nimport { type Key, type KeyedRenderableRecord } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { Button as CoreButton } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { Dropdown } from \"@/dropdown\";\nimport {\n type UseSelectProps,\n useSelect,\n type UseSelectOnChangeExtra,\n} from \"@/list/useSelect\";\nimport { type Input } from \"@/input\";\nimport { type List as CoreList } from \"@/list\";\nimport { Core } from \"@/select/List\";\nimport { componentRenderProp, type RenderProp } from \"@/util/renderProp\";\n\nimport \"@/select/Button.css\";\n\nexport interface ButtonOptionProps<\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n> extends Pick<CoreButton.ButtonProps, \"onClick\"> {\n key: K;\n selected: boolean;\n entry: E;\n title: E[keyof E];\n}\n\nexport type ButtonProps<\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n> = UseSelectProps<K, E> &\n Omit<Align.PackProps, \"children\" | \"onChange\"> & {\n children?: RenderProp<ButtonOptionProps<K, E>>;\n entryRenderKey?: keyof E;\n };\n\nexport const Button = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n children = defaultSelectButtonOption,\n value,\n onChange,\n entryRenderKey = \"key\",\n allowNone = false,\n allowMultiple = false,\n data,\n replaceOnSingle,\n ...props\n}: ButtonProps<K, E>): JSX.Element => {\n const { onSelect } = useSelect<K, E>({\n allowMultiple,\n allowNone,\n replaceOnSingle,\n data,\n value,\n onChange,\n } as const as UseSelectProps<K, E>);\n\n return (\n <Align.Pack {...props}>\n {data.map((e) => {\n return children({\n key: e.key,\n onClick: () => onSelect(e.key),\n selected: e.key === value,\n entry: e,\n title: e[entryRenderKey],\n });\n })}\n </Align.Pack>\n );\n};\n\nconst defaultSelectButtonOption = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n key,\n onClick,\n selected,\n title,\n}: ButtonOptionProps<K, E>): JSX.Element => (\n <CoreButton.Button onClick={onClick} variant={selected ? \"filled\" : \"outlined\"}>\n {title}\n </CoreButton.Button>\n);\n\nexport interface DropdownButtonButtonProps<\n K extends Key,\n E extends KeyedRenderableRecord<K, E>,\n> extends CoreButton.ButtonProps {\n selected: E | null;\n renderKey: keyof E;\n toggle: () => void;\n visible: boolean;\n}\n\nexport interface DropdownButtonProps<\n K extends Key,\n E extends KeyedRenderableRecord<K, E>,\n> extends Omit<Dropdown.DialogProps, \"onChange\" | \"visible\" | \"children\">,\n Input.Control<K>,\n Omit<CoreList.ListProps<K, E>, \"children\">,\n Pick<CoreButton.ButtonProps, \"disabled\"> {\n columns?: Array<CoreList.ColumnSpec<K, E>>;\n children?: RenderProp<DropdownButtonButtonProps<K, E>>;\n tagKey?: keyof E;\n allowNone?: boolean;\n hideColumnHeader?: boolean;\n disabled?: boolean;\n}\n\nexport const BaseButton = ({\n selected,\n renderKey,\n toggle,\n visible,\n children,\n ...props\n}: DropdownButtonButtonProps<any, any>): ReactElement => (\n <CoreButton.Button\n className={CSS.B(\"select-button\")}\n onClick={toggle}\n variant=\"outlined\"\n endIcon={<Icon.Caret.Up className={CSS.BE(\"select-button\", \"indicator\")} />}\n {...props}\n >\n {children ?? selected?.[renderKey]}\n </CoreButton.Button>\n);\n\nexport const defaultButton: RenderProp<DropdownButtonButtonProps<any, any>> =\n componentRenderProp(BaseButton);\n\nexport const DropdownButton = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n data,\n value,\n columns = [],\n children = defaultButton,\n tagKey = \"key\",\n allowNone = false,\n onChange,\n disabled,\n hideColumnHeader = true,\n}: DropdownButtonProps<K, E>): ReactElement => {\n const { close, visible, toggle } = Dropdown.use();\n const [selected, setSelected] = useState<E | null>(\n data?.find((e) => e.key === value) ?? null,\n );\n\n useEffect(() => {\n setSelected(data?.find((e) => e.key === value) ?? null);\n }, [data, value]);\n\n const handleChange: UseSelectProps<K, E>[\"onChange\"] = useCallback(\n (next: K, e: UseSelectOnChangeExtra<K, E>): void => {\n close();\n if (next == null) {\n setSelected(null);\n return onChange(value);\n }\n setSelected(e.entries[0]);\n onChange(next);\n },\n [onChange, value, close, setSelected],\n );\n\n return (\n <Core<K, E>\n close={close}\n matchTriggerWidth\n data={data}\n visible={visible}\n value={[value]}\n onChange={handleChange}\n allowMultiple={false}\n allowNone={allowNone}\n columns={columns}\n hideColumnHeader={hideColumnHeader}\n >\n {children({\n selected,\n renderKey: tagKey,\n toggle,\n visible,\n disabled,\n })}\n </Core>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { Button as CoreButton } from \"@/button\";\nimport { Button, type ButtonOptionProps, type ButtonProps } from \"@/select/Button\";\nimport { type text } from \"@/text/core\";\n\ninterface Entry {\n key: text.Level;\n label: string;\n}\n\nexport interface SelectLevelProps\n extends Omit<ButtonProps<text.Level, Entry>, \"data\" | \"entryRenderKey\"> {}\n\nconst DATA: Entry[] = [\n {\n key: \"h2\",\n label: \"XL\",\n },\n {\n key: \"h3\",\n label: \"L\",\n },\n {\n key: \"h4\",\n label: \"M\",\n },\n {\n key: \"p\",\n label: \"S\",\n },\n {\n key: \"small\",\n label: \"XS\",\n },\n];\n\nconst defaultSelectDirectionButton = ({\n key,\n entry,\n onClick,\n selected,\n}: ButtonOptionProps<text.Level, Entry>): ReactElement => {\n return (\n <CoreButton.Button\n key={key}\n variant={selected ? \"filled\" : \"outlined\"}\n onClick={onClick}\n >\n {entry.label}\n </CoreButton.Button>\n );\n};\n\nexport const SelectLevel = ({\n children = defaultSelectDirectionButton,\n ...props\n}: SelectLevelProps): ReactElement => {\n return (\n <Button {...props} data={DATA}>\n {children}\n </Button>\n );\n};\n"],"names":["Button","children","defaultSelectButtonOption","value","onChange","entryRenderKey","allowNone","allowMultiple","data","replaceOnSingle","props","onSelect","useSelect","jsx","Align.Pack","e","key","onClick","selected","title","CoreButton.Button","BaseButton","renderKey","toggle","visible","CSS","Icon","defaultButton","componentRenderProp","DropdownButton","columns","tagKey","disabled","hideColumnHeader","close","Dropdown.use","setSelected","useState","useEffect","handleChange","useCallback","next","Core","DATA","defaultSelectDirectionButton","entry","SelectLevel"],"mappings":"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"}
1
+ {"version":3,"file":"external-n4UdyJ7i.cjs","sources":["../src/select/Button.tsx","../src/text/SelectLevel.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { useCallback, type ReactElement, useState, useEffect } from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\nimport { type Key, type KeyedRenderableRecord } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { Button as CoreButton } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { Dropdown } from \"@/dropdown\";\nimport {\n type UseSelectProps,\n useSelect,\n type UseSelectOnChangeExtra,\n} from \"@/list/useSelect\";\nimport { type Input } from \"@/input\";\nimport { type List as CoreList } from \"@/list\";\nimport { Core } from \"@/select/List\";\nimport { componentRenderProp, type RenderProp } from \"@/util/renderProp\";\n\nimport \"@/select/Button.css\";\n\nexport interface ButtonOptionProps<\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n> extends Pick<CoreButton.ButtonProps, \"onClick\"> {\n key: K;\n selected: boolean;\n entry: E;\n title: E[keyof E];\n}\n\nexport type ButtonProps<\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n> = UseSelectProps<K, E> &\n Omit<Align.PackProps, \"children\" | \"onChange\"> & {\n children?: RenderProp<ButtonOptionProps<K, E>>;\n entryRenderKey?: keyof E;\n };\n\nexport const Button = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n children = defaultSelectButtonOption,\n value,\n onChange,\n entryRenderKey = \"key\",\n allowNone = false,\n allowMultiple = false,\n data,\n replaceOnSingle,\n ...props\n}: ButtonProps<K, E>): JSX.Element => {\n const { onSelect } = useSelect<K, E>({\n allowMultiple,\n allowNone,\n replaceOnSingle,\n data,\n value,\n onChange,\n } as const as UseSelectProps<K, E>);\n\n return (\n <Align.Pack {...props}>\n {data.map((e) => {\n return children({\n key: e.key,\n onClick: () => onSelect(e.key),\n selected: e.key === value,\n entry: e,\n title: e[entryRenderKey],\n });\n })}\n </Align.Pack>\n );\n};\n\nconst defaultSelectButtonOption = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n key,\n onClick,\n selected,\n title,\n}: ButtonOptionProps<K, E>): JSX.Element => (\n <CoreButton.Button onClick={onClick} variant={selected ? \"filled\" : \"outlined\"}>\n {title}\n </CoreButton.Button>\n);\n\nexport interface DropdownButtonButtonProps<\n K extends Key,\n E extends KeyedRenderableRecord<K, E>,\n> extends CoreButton.ButtonProps {\n selected: E | null;\n renderKey: keyof E;\n toggle: () => void;\n visible: boolean;\n}\n\nexport interface DropdownButtonProps<\n K extends Key,\n E extends KeyedRenderableRecord<K, E>,\n> extends Omit<Dropdown.DialogProps, \"onChange\" | \"visible\" | \"children\">,\n Input.Control<K>,\n Omit<CoreList.ListProps<K, E>, \"children\">,\n Pick<CoreButton.ButtonProps, \"disabled\"> {\n columns?: Array<CoreList.ColumnSpec<K, E>>;\n children?: RenderProp<DropdownButtonButtonProps<K, E>>;\n tagKey?: keyof E;\n allowNone?: boolean;\n hideColumnHeader?: boolean;\n disabled?: boolean;\n}\n\nexport const BaseButton = ({\n selected,\n renderKey,\n toggle,\n visible,\n children,\n ...props\n}: DropdownButtonButtonProps<any, any>): ReactElement => (\n <CoreButton.Button\n className={CSS.B(\"select-button\")}\n onClick={toggle}\n variant=\"outlined\"\n endIcon={<Icon.Caret.Up className={CSS.BE(\"select-button\", \"indicator\")} />}\n {...props}\n >\n {children ?? selected?.[renderKey]}\n </CoreButton.Button>\n);\n\nexport const defaultButton: RenderProp<DropdownButtonButtonProps<any, any>> =\n componentRenderProp(BaseButton);\n\nexport const DropdownButton = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n data,\n value,\n columns = [],\n children = defaultButton,\n tagKey = \"key\",\n allowNone = false,\n onChange,\n disabled,\n hideColumnHeader = true,\n}: DropdownButtonProps<K, E>): ReactElement => {\n const { close, visible, toggle } = Dropdown.use();\n const [selected, setSelected] = useState<E | null>(\n data?.find((e) => e.key === value) ?? null,\n );\n\n useEffect(() => {\n setSelected(data?.find((e) => e.key === value) ?? null);\n }, [data, value]);\n\n const handleChange: UseSelectProps<K, E>[\"onChange\"] = useCallback(\n (next: K, e: UseSelectOnChangeExtra<K, E>): void => {\n close();\n if (next == null) {\n setSelected(null);\n return onChange(value);\n }\n setSelected(e.entries[0]);\n onChange(next);\n },\n [onChange, value, close, setSelected],\n );\n\n return (\n <Core<K, E>\n close={close}\n matchTriggerWidth\n data={data}\n visible={visible}\n value={[value]}\n onChange={handleChange}\n allowMultiple={false}\n allowNone={allowNone}\n columns={columns}\n hideColumnHeader={hideColumnHeader}\n >\n {children({\n selected,\n renderKey: tagKey,\n toggle,\n visible,\n disabled,\n })}\n </Core>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { Button as CoreButton } from \"@/button\";\nimport { Button, type ButtonOptionProps, type ButtonProps } from \"@/select/Button\";\nimport { type text } from \"@/text/core\";\n\ninterface Entry {\n key: text.Level;\n label: string;\n}\n\nexport interface SelectLevelProps\n extends Omit<ButtonProps<text.Level, Entry>, \"data\" | \"entryRenderKey\"> {}\n\nconst DATA: Entry[] = [\n {\n key: \"h2\",\n label: \"XL\",\n },\n {\n key: \"h3\",\n label: \"L\",\n },\n {\n key: \"h4\",\n label: \"M\",\n },\n {\n key: \"p\",\n label: \"S\",\n },\n {\n key: \"small\",\n label: \"XS\",\n },\n];\n\nconst defaultSelectDirectionButton = ({\n key,\n entry,\n onClick,\n selected,\n}: ButtonOptionProps<text.Level, Entry>): ReactElement => {\n return (\n <CoreButton.Button\n key={key}\n variant={selected ? \"filled\" : \"outlined\"}\n onClick={onClick}\n >\n {entry.label}\n </CoreButton.Button>\n );\n};\n\nexport const SelectLevel = ({\n children = defaultSelectDirectionButton,\n ...props\n}: SelectLevelProps): ReactElement => {\n return (\n <Button {...props} data={DATA}>\n {children}\n </Button>\n );\n};\n"],"names":["Button","children","defaultSelectButtonOption","value","onChange","entryRenderKey","allowNone","allowMultiple","data","replaceOnSingle","props","onSelect","useSelect","jsx","Align.Pack","e","key","onClick","selected","title","CoreButton.Button","BaseButton","renderKey","toggle","visible","CSS","Icon","defaultButton","componentRenderProp","DropdownButton","columns","tagKey","disabled","hideColumnHeader","close","Dropdown.use","setSelected","useState","useEffect","handleChange","useCallback","next","Core","DATA","defaultSelectDirectionButton","entry","SelectLevel"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { C as r, a as l, Z as g, c as f, f as E, t as T } from "./css-rizsElAK.js";
2
2
  import { j as c } from "./jsx-runtime-NmMXPjeo.js";
3
- import { o as v, i as A, u as C, p as H, q as x, r as M, B as N, e as O, s as R } from "./Toggle-3mGeA8rE.js";
3
+ import { o as v, i as A, u as C, p as H, q as x, r as M, B as N, e as O, s as R } from "./Toggle-zmqGwWeq.js";
4
4
  import { useCallback as L } from "react";
5
5
  import "./Center-iTyfvHz5.js";
6
6
  import "./aggregator-Q_onjsH5.js";
@@ -89,4 +89,4 @@ export {
89
89
  Z as S,
90
90
  G as e
91
91
  };
92
- //# sourceMappingURL=external-mgTxEe4K.js.map
92
+ //# sourceMappingURL=external-rZ3m5Z0a.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-mgTxEe4K.js","sources":["../src/color/Picker/Picker.tsx","../src/color/Swatch/Swatch.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n useCallback,\n type ComponentPropsWithoutRef,\n type ReactElement,\n useId,\n} from \"react\";\n\nimport { SketchPicker, type ColorResult } from \"react-color\";\n\nimport { color } from \"@/color/core\";\nimport { CSS } from \"@/css\";\nimport { type Input } from \"@/input\";\n\nimport \"@/color/Picker/Picker.css\";\n\nexport interface PickerProps\n extends Input.Control<color.Crude, color.Color>,\n Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {}\n\nexport const Picker = ({ value, onChange, ...props }: PickerProps): ReactElement => {\n const handleChange = (res: ColorResult): void => {\n if (res.hex === \"transparent\") onChange(color.ZERO);\n onChange(new color.Color(res.hex, res.rgb.a));\n };\n\n return (\n <SketchPicker\n className={CSS.B(\"color-picker\")}\n color={new color.Color(value).hex}\n onChange={handleChange}\n presetColors={[]}\n {...props}\n />\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement, useCallback } from \"react\";\n\nimport { Button } from \"@/button\";\nimport { color } from \"@/color/core\";\nimport { type Crude, type Color } from \"@/color/core/color\";\nimport { Picker } from \"@/color/Picker\";\nimport { CSS } from \"@/css\";\nimport { Dropdown } from \"@/dropdown\";\nimport { type UseProps } from \"@/dropdown/Dropdown\";\nimport { Haul } from \"@/haul\";\nimport { type Input } from \"@/input\";\nimport { Text } from \"@/text\";\nimport { Theming } from \"@/theming\";\n\nimport \"@/color/Swatch/Swatch.css\";\n\nexport interface SwatchProps\n extends Input.Control<Crude, Color>,\n Omit<Button.ButtonProps, \"onChange\" | \"value\">,\n UseProps {}\n\nconst HAUL_TYPE = \"color\";\n\nexport const Swatch = ({\n value,\n onChange,\n className,\n size = \"medium\",\n onVisibleChange,\n initialVisible,\n draggable = true,\n ...props\n}: SwatchProps): ReactElement => {\n const { visible, open, close } = Dropdown.use({ onVisibleChange, initialVisible });\n\n const bg = Theming.use().colors.gray.l0;\n\n const d = new color.Color(value);\n\n const dragging = Haul.useDraggingState();\n\n const canDrop: Haul.CanDrop = useCallback(\n ({ items }) => {\n const [k] = Haul.filterByType(HAUL_TYPE, items);\n return k != null && k.key !== d.hex;\n },\n [d.hex],\n );\n\n const { startDrag, ...haulProps } = Haul.useDragAndDrop({\n type: \"Color.Swatch\",\n onDrop: ({ items }) => {\n const dropped = Haul.filterByType(HAUL_TYPE, items);\n if (items.length > 0) onChange?.(new color.Color(dropped[0].key as string));\n return dropped;\n },\n canDrop,\n });\n\n const swatch = (\n <Button.Button\n className={CSS(\n CSS.B(\"color-swatch\"),\n CSS.size(size),\n d.contrast(bg) > 1.5 && d.a > 0.5 && CSS.M(\"no-border\"),\n CSS.dropRegion(canDrop(dragging)),\n className,\n )}\n draggable={draggable}\n onDragStart={() => startDrag([{ type: HAUL_TYPE, key: d.hex }])}\n style={{ backgroundColor: color.cssString(value) }}\n variant=\"text\"\n onClick={open}\n size={size}\n tooltip={\n onChange != null ? (\n <Text.Text level=\"small\">Click to change color</Text.Text>\n ) : undefined\n }\n {...haulProps}\n {...props}\n />\n );\n\n if (onChange == null) return swatch;\n\n return (\n <Dropdown.Dialog\n close={close}\n visible={visible}\n className={CSS.BE(\"color-swatch\", \"dropdown\")}\n keepMounted={false}\n >\n {swatch}\n <Picker value={value} onChange={onChange} />\n </Dropdown.Dialog>\n );\n};\n"],"names":["Picker","value","onChange","props","handleChange","res","color.ZERO","color.Color","jsx","SketchPicker","CSS","HAUL_TYPE","Swatch","className","size","onVisibleChange","initialVisible","draggable","visible","open","close","Dropdown.use","bg","Theming.use","d","dragging","Haul.useDraggingState","canDrop","useCallback","items","k","Haul.filterByType","startDrag","haulProps","Haul.useDragAndDrop","dropped","swatch","Button.Button","color.cssString","Text.Text","jsxs","Dropdown.Dialog"],"mappings":"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"}
1
+ {"version":3,"file":"external-rZ3m5Z0a.js","sources":["../src/color/Picker/Picker.tsx","../src/color/Swatch/Swatch.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n useCallback,\n type ComponentPropsWithoutRef,\n type ReactElement,\n useId,\n} from \"react\";\n\nimport { SketchPicker, type ColorResult } from \"react-color\";\n\nimport { color } from \"@/color/core\";\nimport { CSS } from \"@/css\";\nimport { type Input } from \"@/input\";\n\nimport \"@/color/Picker/Picker.css\";\n\nexport interface PickerProps\n extends Input.Control<color.Crude, color.Color>,\n Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {}\n\nexport const Picker = ({ value, onChange, ...props }: PickerProps): ReactElement => {\n const handleChange = (res: ColorResult): void => {\n if (res.hex === \"transparent\") onChange(color.ZERO);\n onChange(new color.Color(res.hex, res.rgb.a));\n };\n\n return (\n <SketchPicker\n className={CSS.B(\"color-picker\")}\n color={new color.Color(value).hex}\n onChange={handleChange}\n presetColors={[]}\n {...props}\n />\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement, useCallback } from \"react\";\n\nimport { Button } from \"@/button\";\nimport { color } from \"@/color/core\";\nimport { type Crude, type Color } from \"@/color/core/color\";\nimport { Picker } from \"@/color/Picker\";\nimport { CSS } from \"@/css\";\nimport { Dropdown } from \"@/dropdown\";\nimport { type UseProps } from \"@/dropdown/Dropdown\";\nimport { Haul } from \"@/haul\";\nimport { type Input } from \"@/input\";\nimport { Text } from \"@/text\";\nimport { Theming } from \"@/theming\";\n\nimport \"@/color/Swatch/Swatch.css\";\n\nexport interface SwatchProps\n extends Input.Control<Crude, Color>,\n Omit<Button.ButtonProps, \"onChange\" | \"value\">,\n UseProps {}\n\nconst HAUL_TYPE = \"color\";\n\nexport const Swatch = ({\n value,\n onChange,\n className,\n size = \"medium\",\n onVisibleChange,\n initialVisible,\n draggable = true,\n ...props\n}: SwatchProps): ReactElement => {\n const { visible, open, close } = Dropdown.use({ onVisibleChange, initialVisible });\n\n const bg = Theming.use().colors.gray.l0;\n\n const d = new color.Color(value);\n\n const dragging = Haul.useDraggingState();\n\n const canDrop: Haul.CanDrop = useCallback(\n ({ items }) => {\n const [k] = Haul.filterByType(HAUL_TYPE, items);\n return k != null && k.key !== d.hex;\n },\n [d.hex],\n );\n\n const { startDrag, ...haulProps } = Haul.useDragAndDrop({\n type: \"Color.Swatch\",\n onDrop: ({ items }) => {\n const dropped = Haul.filterByType(HAUL_TYPE, items);\n if (items.length > 0) onChange?.(new color.Color(dropped[0].key as string));\n return dropped;\n },\n canDrop,\n });\n\n const swatch = (\n <Button.Button\n className={CSS(\n CSS.B(\"color-swatch\"),\n CSS.size(size),\n d.contrast(bg) > 1.5 && d.a > 0.5 && CSS.M(\"no-border\"),\n CSS.dropRegion(canDrop(dragging)),\n className,\n )}\n draggable={draggable}\n onDragStart={() => startDrag([{ type: HAUL_TYPE, key: d.hex }])}\n style={{ backgroundColor: color.cssString(value) }}\n variant=\"text\"\n onClick={open}\n size={size}\n tooltip={\n onChange != null ? (\n <Text.Text level=\"small\">Click to change color</Text.Text>\n ) : undefined\n }\n {...haulProps}\n {...props}\n />\n );\n\n if (onChange == null) return swatch;\n\n return (\n <Dropdown.Dialog\n close={close}\n visible={visible}\n className={CSS.BE(\"color-swatch\", \"dropdown\")}\n keepMounted={false}\n >\n {swatch}\n <Picker value={value} onChange={onChange} />\n </Dropdown.Dialog>\n );\n};\n"],"names":["Picker","value","onChange","props","handleChange","res","color.ZERO","color.Color","jsx","SketchPicker","CSS","HAUL_TYPE","Swatch","className","size","onVisibleChange","initialVisible","draggable","visible","open","close","Dropdown.use","bg","Theming.use","d","dragging","Haul.useDraggingState","canDrop","useCallback","items","k","Haul.filterByType","startDrag","haulProps","Haul.useDragAndDrop","dropped","swatch","Button.Button","color.cssString","Text.Text","jsxs","Dropdown.Dialog"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("./Toggle-qW_TcIDh.cjs"),o=require("./Link-5t5MufKE.cjs"),n=Object.freeze(Object.defineProperty({__proto__:null,Button:e.Button,Icon:e.Icon,Link:o.Link,Toggle:e.Toggle,ToggleIcon:e.ToggleIcon},Symbol.toStringTag,{value:"Module"}));exports.external=n;
2
+ //# sourceMappingURL=external-vjJtYX9R.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-vjJtYX9R.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,6 +1,6 @@
1
- import { f as C, B as y, g as j, h as B, i as x, C as L, j as E, k as g, E as D, L as T, M as v, l as M, e as P, W as _, m as z, n as K } from "./Toggle-3mGeA8rE.js";
1
+ import { f as C, B as y, g as j, h as B, i as x, C as L, j as E, k as g, E as D, L as T, M as v, l as M, e as P, W as _, m as z, n as K } from "./Toggle-zmqGwWeq.js";
2
2
  import { C as O, L as W, c as w, d as A, l as I, e as N } from "./aggregator-Q_onjsH5.js";
3
- import { K as R } from "./Keyboard-SVZgM51r.js";
3
+ import { K as R } from "./Keyboard-kcohZ0JP.js";
4
4
  import { j as o } from "./jsx-runtime-NmMXPjeo.js";
5
5
  import { useState as X, useEffect as Z, useCallback as U } from "react";
6
6
  import { P as V } from "./Center-iTyfvHz5.js";
@@ -166,4 +166,4 @@ export {
166
166
  G as d,
167
167
  ie as e
168
168
  };
169
- //# sourceMappingURL=external-194aFdnj.js.map
169
+ //# sourceMappingURL=external-wMjPMnSO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-194aFdnj.js","sources":["../src/select/Button.tsx","../src/text/SelectLevel.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { useCallback, type ReactElement, useState, useEffect } from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\nimport { type Key, type KeyedRenderableRecord } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { Button as CoreButton } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { Dropdown } from \"@/dropdown\";\nimport {\n type UseSelectProps,\n useSelect,\n type UseSelectOnChangeExtra,\n} from \"@/list/useSelect\";\nimport { type Input } from \"@/input\";\nimport { type List as CoreList } from \"@/list\";\nimport { Core } from \"@/select/List\";\nimport { componentRenderProp, type RenderProp } from \"@/util/renderProp\";\n\nimport \"@/select/Button.css\";\n\nexport interface ButtonOptionProps<\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n> extends Pick<CoreButton.ButtonProps, \"onClick\"> {\n key: K;\n selected: boolean;\n entry: E;\n title: E[keyof E];\n}\n\nexport type ButtonProps<\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n> = UseSelectProps<K, E> &\n Omit<Align.PackProps, \"children\" | \"onChange\"> & {\n children?: RenderProp<ButtonOptionProps<K, E>>;\n entryRenderKey?: keyof E;\n };\n\nexport const Button = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n children = defaultSelectButtonOption,\n value,\n onChange,\n entryRenderKey = \"key\",\n allowNone = false,\n allowMultiple = false,\n data,\n replaceOnSingle,\n ...props\n}: ButtonProps<K, E>): JSX.Element => {\n const { onSelect } = useSelect<K, E>({\n allowMultiple,\n allowNone,\n replaceOnSingle,\n data,\n value,\n onChange,\n } as const as UseSelectProps<K, E>);\n\n return (\n <Align.Pack {...props}>\n {data.map((e) => {\n return children({\n key: e.key,\n onClick: () => onSelect(e.key),\n selected: e.key === value,\n entry: e,\n title: e[entryRenderKey],\n });\n })}\n </Align.Pack>\n );\n};\n\nconst defaultSelectButtonOption = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n key,\n onClick,\n selected,\n title,\n}: ButtonOptionProps<K, E>): JSX.Element => (\n <CoreButton.Button onClick={onClick} variant={selected ? \"filled\" : \"outlined\"}>\n {title}\n </CoreButton.Button>\n);\n\nexport interface DropdownButtonButtonProps<\n K extends Key,\n E extends KeyedRenderableRecord<K, E>,\n> extends CoreButton.ButtonProps {\n selected: E | null;\n renderKey: keyof E;\n toggle: () => void;\n visible: boolean;\n}\n\nexport interface DropdownButtonProps<\n K extends Key,\n E extends KeyedRenderableRecord<K, E>,\n> extends Omit<Dropdown.DialogProps, \"onChange\" | \"visible\" | \"children\">,\n Input.Control<K>,\n Omit<CoreList.ListProps<K, E>, \"children\">,\n Pick<CoreButton.ButtonProps, \"disabled\"> {\n columns?: Array<CoreList.ColumnSpec<K, E>>;\n children?: RenderProp<DropdownButtonButtonProps<K, E>>;\n tagKey?: keyof E;\n allowNone?: boolean;\n hideColumnHeader?: boolean;\n disabled?: boolean;\n}\n\nexport const BaseButton = ({\n selected,\n renderKey,\n toggle,\n visible,\n children,\n ...props\n}: DropdownButtonButtonProps<any, any>): ReactElement => (\n <CoreButton.Button\n className={CSS.B(\"select-button\")}\n onClick={toggle}\n variant=\"outlined\"\n endIcon={<Icon.Caret.Up className={CSS.BE(\"select-button\", \"indicator\")} />}\n {...props}\n >\n {children ?? selected?.[renderKey]}\n </CoreButton.Button>\n);\n\nexport const defaultButton: RenderProp<DropdownButtonButtonProps<any, any>> =\n componentRenderProp(BaseButton);\n\nexport const DropdownButton = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n data,\n value,\n columns = [],\n children = defaultButton,\n tagKey = \"key\",\n allowNone = false,\n onChange,\n disabled,\n hideColumnHeader = true,\n}: DropdownButtonProps<K, E>): ReactElement => {\n const { close, visible, toggle } = Dropdown.use();\n const [selected, setSelected] = useState<E | null>(\n data?.find((e) => e.key === value) ?? null,\n );\n\n useEffect(() => {\n setSelected(data?.find((e) => e.key === value) ?? null);\n }, [data, value]);\n\n const handleChange: UseSelectProps<K, E>[\"onChange\"] = useCallback(\n (next: K, e: UseSelectOnChangeExtra<K, E>): void => {\n close();\n if (next == null) {\n setSelected(null);\n return onChange(value);\n }\n setSelected(e.entries[0]);\n onChange(next);\n },\n [onChange, value, close, setSelected],\n );\n\n return (\n <Core<K, E>\n close={close}\n matchTriggerWidth\n data={data}\n visible={visible}\n value={[value]}\n onChange={handleChange}\n allowMultiple={false}\n allowNone={allowNone}\n columns={columns}\n hideColumnHeader={hideColumnHeader}\n >\n {children({\n selected,\n renderKey: tagKey,\n toggle,\n visible,\n disabled,\n })}\n </Core>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { Button as CoreButton } from \"@/button\";\nimport { Button, type ButtonOptionProps, type ButtonProps } from \"@/select/Button\";\nimport { type text } from \"@/text/core\";\n\ninterface Entry {\n key: text.Level;\n label: string;\n}\n\nexport interface SelectLevelProps\n extends Omit<ButtonProps<text.Level, Entry>, \"data\" | \"entryRenderKey\"> {}\n\nconst DATA: Entry[] = [\n {\n key: \"h2\",\n label: \"XL\",\n },\n {\n key: \"h3\",\n label: \"L\",\n },\n {\n key: \"h4\",\n label: \"M\",\n },\n {\n key: \"p\",\n label: \"S\",\n },\n {\n key: \"small\",\n label: \"XS\",\n },\n];\n\nconst defaultSelectDirectionButton = ({\n key,\n entry,\n onClick,\n selected,\n}: ButtonOptionProps<text.Level, Entry>): ReactElement => {\n return (\n <CoreButton.Button\n key={key}\n variant={selected ? \"filled\" : \"outlined\"}\n onClick={onClick}\n >\n {entry.label}\n </CoreButton.Button>\n );\n};\n\nexport const SelectLevel = ({\n children = defaultSelectDirectionButton,\n ...props\n}: SelectLevelProps): ReactElement => {\n return (\n <Button {...props} data={DATA}>\n {children}\n </Button>\n );\n};\n"],"names":["Button","children","defaultSelectButtonOption","value","onChange","entryRenderKey","allowNone","allowMultiple","data","replaceOnSingle","props","onSelect","useSelect","jsx","Align.Pack","e","key","onClick","selected","title","CoreButton.Button","BaseButton","renderKey","toggle","visible","CSS","Icon","defaultButton","componentRenderProp","DropdownButton","columns","tagKey","disabled","hideColumnHeader","close","Dropdown.use","setSelected","useState","useEffect","handleChange","useCallback","next","Core","DATA","defaultSelectDirectionButton","entry","SelectLevel"],"mappings":"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"}
1
+ {"version":3,"file":"external-wMjPMnSO.js","sources":["../src/select/Button.tsx","../src/text/SelectLevel.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { useCallback, type ReactElement, useState, useEffect } from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\nimport { type Key, type KeyedRenderableRecord } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { Button as CoreButton } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { Dropdown } from \"@/dropdown\";\nimport {\n type UseSelectProps,\n useSelect,\n type UseSelectOnChangeExtra,\n} from \"@/list/useSelect\";\nimport { type Input } from \"@/input\";\nimport { type List as CoreList } from \"@/list\";\nimport { Core } from \"@/select/List\";\nimport { componentRenderProp, type RenderProp } from \"@/util/renderProp\";\n\nimport \"@/select/Button.css\";\n\nexport interface ButtonOptionProps<\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n> extends Pick<CoreButton.ButtonProps, \"onClick\"> {\n key: K;\n selected: boolean;\n entry: E;\n title: E[keyof E];\n}\n\nexport type ButtonProps<\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n> = UseSelectProps<K, E> &\n Omit<Align.PackProps, \"children\" | \"onChange\"> & {\n children?: RenderProp<ButtonOptionProps<K, E>>;\n entryRenderKey?: keyof E;\n };\n\nexport const Button = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n children = defaultSelectButtonOption,\n value,\n onChange,\n entryRenderKey = \"key\",\n allowNone = false,\n allowMultiple = false,\n data,\n replaceOnSingle,\n ...props\n}: ButtonProps<K, E>): JSX.Element => {\n const { onSelect } = useSelect<K, E>({\n allowMultiple,\n allowNone,\n replaceOnSingle,\n data,\n value,\n onChange,\n } as const as UseSelectProps<K, E>);\n\n return (\n <Align.Pack {...props}>\n {data.map((e) => {\n return children({\n key: e.key,\n onClick: () => onSelect(e.key),\n selected: e.key === value,\n entry: e,\n title: e[entryRenderKey],\n });\n })}\n </Align.Pack>\n );\n};\n\nconst defaultSelectButtonOption = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n key,\n onClick,\n selected,\n title,\n}: ButtonOptionProps<K, E>): JSX.Element => (\n <CoreButton.Button onClick={onClick} variant={selected ? \"filled\" : \"outlined\"}>\n {title}\n </CoreButton.Button>\n);\n\nexport interface DropdownButtonButtonProps<\n K extends Key,\n E extends KeyedRenderableRecord<K, E>,\n> extends CoreButton.ButtonProps {\n selected: E | null;\n renderKey: keyof E;\n toggle: () => void;\n visible: boolean;\n}\n\nexport interface DropdownButtonProps<\n K extends Key,\n E extends KeyedRenderableRecord<K, E>,\n> extends Omit<Dropdown.DialogProps, \"onChange\" | \"visible\" | \"children\">,\n Input.Control<K>,\n Omit<CoreList.ListProps<K, E>, \"children\">,\n Pick<CoreButton.ButtonProps, \"disabled\"> {\n columns?: Array<CoreList.ColumnSpec<K, E>>;\n children?: RenderProp<DropdownButtonButtonProps<K, E>>;\n tagKey?: keyof E;\n allowNone?: boolean;\n hideColumnHeader?: boolean;\n disabled?: boolean;\n}\n\nexport const BaseButton = ({\n selected,\n renderKey,\n toggle,\n visible,\n children,\n ...props\n}: DropdownButtonButtonProps<any, any>): ReactElement => (\n <CoreButton.Button\n className={CSS.B(\"select-button\")}\n onClick={toggle}\n variant=\"outlined\"\n endIcon={<Icon.Caret.Up className={CSS.BE(\"select-button\", \"indicator\")} />}\n {...props}\n >\n {children ?? selected?.[renderKey]}\n </CoreButton.Button>\n);\n\nexport const defaultButton: RenderProp<DropdownButtonButtonProps<any, any>> =\n componentRenderProp(BaseButton);\n\nexport const DropdownButton = <\n K extends Key = Key,\n E extends KeyedRenderableRecord<K, E> = KeyedRenderableRecord<K>,\n>({\n data,\n value,\n columns = [],\n children = defaultButton,\n tagKey = \"key\",\n allowNone = false,\n onChange,\n disabled,\n hideColumnHeader = true,\n}: DropdownButtonProps<K, E>): ReactElement => {\n const { close, visible, toggle } = Dropdown.use();\n const [selected, setSelected] = useState<E | null>(\n data?.find((e) => e.key === value) ?? null,\n );\n\n useEffect(() => {\n setSelected(data?.find((e) => e.key === value) ?? null);\n }, [data, value]);\n\n const handleChange: UseSelectProps<K, E>[\"onChange\"] = useCallback(\n (next: K, e: UseSelectOnChangeExtra<K, E>): void => {\n close();\n if (next == null) {\n setSelected(null);\n return onChange(value);\n }\n setSelected(e.entries[0]);\n onChange(next);\n },\n [onChange, value, close, setSelected],\n );\n\n return (\n <Core<K, E>\n close={close}\n matchTriggerWidth\n data={data}\n visible={visible}\n value={[value]}\n onChange={handleChange}\n allowMultiple={false}\n allowNone={allowNone}\n columns={columns}\n hideColumnHeader={hideColumnHeader}\n >\n {children({\n selected,\n renderKey: tagKey,\n toggle,\n visible,\n disabled,\n })}\n </Core>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { Button as CoreButton } from \"@/button\";\nimport { Button, type ButtonOptionProps, type ButtonProps } from \"@/select/Button\";\nimport { type text } from \"@/text/core\";\n\ninterface Entry {\n key: text.Level;\n label: string;\n}\n\nexport interface SelectLevelProps\n extends Omit<ButtonProps<text.Level, Entry>, \"data\" | \"entryRenderKey\"> {}\n\nconst DATA: Entry[] = [\n {\n key: \"h2\",\n label: \"XL\",\n },\n {\n key: \"h3\",\n label: \"L\",\n },\n {\n key: \"h4\",\n label: \"M\",\n },\n {\n key: \"p\",\n label: \"S\",\n },\n {\n key: \"small\",\n label: \"XS\",\n },\n];\n\nconst defaultSelectDirectionButton = ({\n key,\n entry,\n onClick,\n selected,\n}: ButtonOptionProps<text.Level, Entry>): ReactElement => {\n return (\n <CoreButton.Button\n key={key}\n variant={selected ? \"filled\" : \"outlined\"}\n onClick={onClick}\n >\n {entry.label}\n </CoreButton.Button>\n );\n};\n\nexport const SelectLevel = ({\n children = defaultSelectDirectionButton,\n ...props\n}: SelectLevelProps): ReactElement => {\n return (\n <Button {...props} data={DATA}>\n {children}\n </Button>\n );\n};\n"],"names":["Button","children","defaultSelectButtonOption","value","onChange","entryRenderKey","allowNone","allowMultiple","data","replaceOnSingle","props","onSelect","useSelect","jsx","Align.Pack","e","key","onClick","selected","title","CoreButton.Button","BaseButton","renderKey","toggle","visible","CSS","Icon","defaultButton","componentRenderProp","DropdownButton","columns","tagKey","disabled","hideColumnHeader","close","Dropdown.use","setSelected","useState","useEffect","handleChange","useCallback","next","Core","DATA","defaultSelectDirectionButton","entry","SelectLevel"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const m=require("./Toggle-wVZJoVtX.cjs"),Re=require("./jsx-runtime-evvPGacs.cjs"),ke=require("react"),Le=require("./css-JWFtNl10.cjs"),$e=require("./aggregator-6_J8kSSO.cjs");require("./Center-Q-fgAb96.cjs");require("react-hook-form");function w(t){return Array.isArray?Array.isArray(t):fe(t)==="[object Array]"}const ve=1/0;function je(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-ve?"-0":e}function Te(t){return t==null?"":je(t)}function _(t){return typeof t=="string"}function he(t){return typeof t=="number"}function Ne(t){return t===!0||t===!1||Fe(t)&&fe(t)=="[object Boolean]"}function ue(t){return typeof t=="object"}function Fe(t){return ue(t)&&t!==null}function x(t){return t!=null}function K(t){return!t.trim().length}function fe(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const De="Incorrect 'index' type",Pe=t=>`Invalid value for key ${t}`,Ke=t=>`Pattern length exceeds max of ${t}.`,We=t=>`Missing ${t} property in key`,ze=t=>`Property 'weight' in key '${t}' must be a positive integer`,se=Object.prototype.hasOwnProperty;class He{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(r=>{let n=de(r);this._keys.push(n),this._keyMap[n.id]=n,s+=n.weight}),this._keys.forEach(r=>{r.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function de(t){let e=null,s=null,r=null,n=1,i=null;if(_(t)||w(t))r=t,e=re(t),s=W(t);else{if(!se.call(t,"name"))throw new Error(We("name"));const c=t.name;if(r=c,se.call(t,"weight")&&(n=t.weight,n<=0))throw new Error(ze(c));e=re(c),s=W(c),i=t.getFn}return{path:e,id:s,weight:n,src:r,getFn:i}}function re(t){return w(t)?t:t.split(".")}function W(t){return w(t)?t.join("."):t}function Ue(t,e){let s=[],r=!1;const n=(i,c,o)=>{if(x(i))if(!c[o])s.push(i);else{let a=c[o];const h=i[a];if(!x(h))return;if(o===c.length-1&&(_(h)||he(h)||Ne(h)))s.push(Te(h));else if(w(h)){r=!0;for(let l=0,u=h.length;l<u;l+=1)n(h[l],c,o+1)}else c.length&&n(h,c,o+1)}};return n(t,_(e)?e.split("."):e,0),r?s:s[0]}const Be={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},Ve={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(t,e)=>t.score===e.score?t.idx<e.idx?-1:1:t.score<e.score?-1:1},Ge={location:0,threshold:.6,distance:100},Ye={useExtendedSearch:!1,getFn:Ue,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1};var f={...Ve,...Be,...Ge,...Ye};const Qe=/[^ ]+/g;function Xe(t=1,e=3){const s=new Map,r=Math.pow(10,e);return{get(n){const i=n.match(Qe).length;if(s.has(i))return s.get(i);const c=1/Math.pow(i,.5*t),o=parseFloat(Math.round(c*r)/r);return s.set(i,o),o},clear(){s.clear()}}}class X{constructor({getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){this.norm=Xe(s,3),this.getFn=e,this.isCreated=!1,this.setIndexRecords()}setSources(e=[]){this.docs=e}setIndexRecords(e=[]){this.records=e}setKeys(e=[]){this.keys=e,this._keysMap={},e.forEach((s,r)=>{this._keysMap[s.id]=r})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,_(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();_(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,r=this.size();s<r;s+=1)this.records[s].i-=1}getValueForItemAtKeyId(e,s){return e[this._keysMap[s]]}size(){return this.records.length}_addString(e,s){if(!x(e)||K(e))return;let r={v:e,i:s,n:this.norm.get(e)};this.records.push(r)}_addObject(e,s){let r={i:s,$:{}};this.keys.forEach((n,i)=>{let c=n.getFn?n.getFn(e):this.getFn(e,n.path);if(x(c)){if(w(c)){let o=[];const a=[{nestedArrIndex:-1,value:c}];for(;a.length;){const{nestedArrIndex:h,value:l}=a.pop();if(x(l))if(_(l)&&!K(l)){let u={v:l,i:h,n:this.norm.get(l)};o.push(u)}else w(l)&&l.forEach((u,d)=>{a.push({nestedArrIndex:d,value:u})})}r.$[i]=o}else if(_(c)&&!K(c)){let o={v:c,n:this.norm.get(c)};r.$[i]=o}}}),this.records.push(r)}toJSON(){return{keys:this.keys,records:this.records}}}function ge(t,e,{getFn:s=f.getFn,fieldNormWeight:r=f.fieldNormWeight}={}){const n=new X({getFn:s,fieldNormWeight:r});return n.setKeys(t.map(de)),n.setSources(e),n.create(),n}function Je(t,{getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){const{keys:r,records:n}=t,i=new X({getFn:e,fieldNormWeight:s});return i.setKeys(r),i.setIndexRecords(n),i}function T(t,{errors:e=0,currentLocation:s=0,expectedLocation:r=0,distance:n=f.distance,ignoreLocation:i=f.ignoreLocation}={}){const c=e/t.length;if(i)return c;const o=Math.abs(r-s);return n?c+o/n:o?1:c}function Ze(t=[],e=f.minMatchCharLength){let s=[],r=-1,n=-1,i=0;for(let c=t.length;i<c;i+=1){let o=t[i];o&&r===-1?r=i:!o&&r!==-1&&(n=i-1,n-r+1>=e&&s.push([r,n]),r=-1)}return t[i-1]&&i-r>=e&&s.push([r,i-1]),s}const R=32;function qe(t,e,s,{location:r=f.location,distance:n=f.distance,threshold:i=f.threshold,findAllMatches:c=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,includeMatches:a=f.includeMatches,ignoreLocation:h=f.ignoreLocation}={}){if(e.length>R)throw new Error(Ke(R));const l=e.length,u=t.length,d=Math.max(0,Math.min(r,u));let g=i,p=d;const M=o>1||a,y=M?Array(u):[];let b;for(;(b=t.indexOf(e,p))>-1;){let S=T(e,{currentLocation:b,expectedLocation:d,distance:n,ignoreLocation:h});if(g=Math.min(S,g),p=b+l,M){let I=0;for(;I<l;)y[b+I]=1,I+=1}}p=-1;let k=[],C=1,v=l+u;const Ce=1<<l-1;for(let S=0;S<l;S+=1){let I=0,A=v;for(;I<A;)T(e,{errors:S,currentLocation:d+A,expectedLocation:d,distance:n,ignoreLocation:h})<=g?I=A:v=A,A=Math.floor((v-I)/2+I);v=A;let ee=Math.max(1,d-A+1),P=c?u:Math.min(d+A,u)+l,L=Array(P+2);L[P+1]=(1<<S)-1;for(let E=P;E>=ee;E-=1){let j=E-1,te=s[t.charAt(j)];if(M&&(y[j]=+!!te),L[E]=(L[E+1]<<1|1)&te,S&&(L[E]|=(k[E+1]|k[E])<<1|1|k[E+1]),L[E]&Ce&&(C=T(e,{errors:S,currentLocation:j,expectedLocation:d,distance:n,ignoreLocation:h}),C<=g)){if(g=C,p=j,p<=d)break;ee=Math.max(1,2*d-p)}}if(T(e,{errors:S+1,currentLocation:d,expectedLocation:d,distance:n,ignoreLocation:h})>g)break;k=L}const D={isMatch:p>=0,score:Math.max(.001,C)};if(M){const S=Ze(y,o);S.length?a&&(D.indices=S):D.isMatch=!1}return D}function et(t){let e={};for(let s=0,r=t.length;s<r;s+=1){const n=t.charAt(s);e[n]=(e[n]||0)|1<<r-s-1}return e}class pe{constructor(e,{location:s=f.location,threshold:r=f.threshold,distance:n=f.distance,includeMatches:i=f.includeMatches,findAllMatches:c=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,isCaseSensitive:a=f.isCaseSensitive,ignoreLocation:h=f.ignoreLocation}={}){if(this.options={location:s,threshold:r,distance:n,includeMatches:i,findAllMatches:c,minMatchCharLength:o,isCaseSensitive:a,ignoreLocation:h},this.pattern=a?e:e.toLowerCase(),this.chunks=[],!this.pattern.length)return;const l=(d,g)=>{this.chunks.push({pattern:d,alphabet:et(d),startIndex:g})},u=this.pattern.length;if(u>R){let d=0;const g=u%R,p=u-g;for(;d<p;)l(this.pattern.substr(d,R),d),d+=R;if(g){const M=u-R;l(this.pattern.substr(M),M)}}else l(this.pattern,0)}searchIn(e){const{isCaseSensitive:s,includeMatches:r}=this.options;if(s||(e=e.toLowerCase()),this.pattern===e){let p={isMatch:!0,score:0};return r&&(p.indices=[[0,e.length-1]]),p}const{location:n,distance:i,threshold:c,findAllMatches:o,minMatchCharLength:a,ignoreLocation:h}=this.options;let l=[],u=0,d=!1;this.chunks.forEach(({pattern:p,alphabet:M,startIndex:y})=>{const{isMatch:b,score:k,indices:C}=qe(e,p,M,{location:n+y,distance:i,threshold:c,findAllMatches:o,minMatchCharLength:a,includeMatches:r,ignoreLocation:h});b&&(d=!0),u+=k,b&&C&&(l=[...l,...C])});let g={isMatch:d,score:d?u/this.chunks.length:1};return d&&r&&(g.indices=l),g}}class O{constructor(e){this.pattern=e}static isMultiMatch(e){return ne(e,this.multiRegex)}static isSingleMatch(e){return ne(e,this.singleRegex)}search(){}}function ne(t,e){const s=t.match(e);return s?s[1]:null}class tt extends O{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class st extends O{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const r=e.indexOf(this.pattern)===-1;return{isMatch:r,score:r?0:1,indices:[0,e.length-1]}}}class rt extends O{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class nt extends O{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class it extends O{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class ct extends O{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class me extends O{constructor(e,{location:s=f.location,threshold:r=f.threshold,distance:n=f.distance,includeMatches:i=f.includeMatches,findAllMatches:c=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,isCaseSensitive:a=f.isCaseSensitive,ignoreLocation:h=f.ignoreLocation}={}){super(e),this._bitapSearch=new pe(e,{location:s,threshold:r,distance:n,includeMatches:i,findAllMatches:c,minMatchCharLength:o,isCaseSensitive:a,ignoreLocation:h})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class Me extends O{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,r;const n=[],i=this.pattern.length;for(;(r=e.indexOf(this.pattern,s))>-1;)s=r+i,n.push([r,s-1]);const c=!!n.length;return{isMatch:c,score:c?0:1,indices:n}}}const z=[tt,Me,rt,nt,ct,it,st,me],ie=z.length,ot=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,at="|";function lt(t,e={}){return t.split(at).map(s=>{let r=s.trim().split(ot).filter(i=>i&&!!i.trim()),n=[];for(let i=0,c=r.length;i<c;i+=1){const o=r[i];let a=!1,h=-1;for(;!a&&++h<ie;){const l=z[h];let u=l.isMultiMatch(o);u&&(n.push(new l(u,e)),a=!0)}if(!a)for(h=-1;++h<ie;){const l=z[h];let u=l.isSingleMatch(o);if(u){n.push(new l(u,e));break}}}return n})}const ht=new Set([me.type,Me.type]);class ut{constructor(e,{isCaseSensitive:s=f.isCaseSensitive,includeMatches:r=f.includeMatches,minMatchCharLength:n=f.minMatchCharLength,ignoreLocation:i=f.ignoreLocation,findAllMatches:c=f.findAllMatches,location:o=f.location,threshold:a=f.threshold,distance:h=f.distance}={}){this.query=null,this.options={isCaseSensitive:s,includeMatches:r,minMatchCharLength:n,findAllMatches:c,ignoreLocation:i,location:o,threshold:a,distance:h},this.pattern=s?e:e.toLowerCase(),this.query=lt(this.pattern,this.options)}static condition(e,s){return s.useExtendedSearch}searchIn(e){const s=this.query;if(!s)return{isMatch:!1,score:1};const{includeMatches:r,isCaseSensitive:n}=this.options;e=n?e:e.toLowerCase();let i=0,c=[],o=0;for(let a=0,h=s.length;a<h;a+=1){const l=s[a];c.length=0,i=0;for(let u=0,d=l.length;u<d;u+=1){const g=l[u],{isMatch:p,indices:M,score:y}=g.search(e);if(p){if(i+=1,o+=y,r){const b=g.constructor.type;ht.has(b)?c=[...c,...M]:c.push(M)}}else{o=0,i=0,c.length=0;break}}if(i){let u={isMatch:!0,score:o/i};return r&&(u.indices=c),u}}return{isMatch:!1,score:1}}}const H=[];function ft(...t){H.push(...t)}function U(t,e){for(let s=0,r=H.length;s<r;s+=1){let n=H[s];if(n.condition(t,e))return new n(t,e)}return new pe(t,e)}const F={AND:"$and",OR:"$or"},B={PATH:"$path",PATTERN:"$val"},V=t=>!!(t[F.AND]||t[F.OR]),dt=t=>!!t[B.PATH],gt=t=>!w(t)&&ue(t)&&!V(t),ce=t=>({[F.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function ye(t,e,{auto:s=!0}={}){const r=n=>{let i=Object.keys(n);const c=dt(n);if(!c&&i.length>1&&!V(n))return r(ce(n));if(gt(n)){const a=c?n[B.PATH]:i[0],h=c?n[B.PATTERN]:n[a];if(!_(h))throw new Error(Pe(a));const l={keyId:W(a),pattern:h};return s&&(l.searcher=U(h,e)),l}let o={children:[],operator:i[0]};return i.forEach(a=>{const h=n[a];w(h)&&h.forEach(l=>{o.children.push(r(l))})}),o};return V(t)||(t=ce(t)),r(t)}function pt(t,{ignoreFieldNorm:e=f.ignoreFieldNorm}){t.forEach(s=>{let r=1;s.matches.forEach(({key:n,norm:i,score:c})=>{const o=n?n.weight:null;r*=Math.pow(c===0&&o?Number.EPSILON:c,(o||1)*(e?1:i))}),s.score=r})}function mt(t,e){const s=t.matches;e.matches=[],x(s)&&s.forEach(r=>{if(!x(r.indices)||!r.indices.length)return;const{indices:n,value:i}=r;let c={indices:n,value:i};r.key&&(c.key=r.key.src),r.idx>-1&&(c.refIndex=r.idx),e.matches.push(c)})}function Mt(t,e){e.score=t.score}function yt(t,e,{includeMatches:s=f.includeMatches,includeScore:r=f.includeScore}={}){const n=[];return s&&n.push(mt),r&&n.push(Mt),t.map(i=>{const{idx:c}=i,o={item:e[c],refIndex:c};return n.length&&n.forEach(a=>{a(i,o)}),o})}class ${constructor(e,s={},r){this.options={...f,...s},this.options.useExtendedSearch,this._keyStore=new He(this.options.keys),this.setCollection(e,r)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof X))throw new Error(De);this._myIndex=s||ge(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let r=0,n=this._docs.length;r<n;r+=1){const i=this._docs[r];e(i,r)&&(this.removeAt(r),r-=1,n-=1,s.push(i))}return s}removeAt(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}getIndex(){return this._myIndex}search(e,{limit:s=-1}={}){const{includeMatches:r,includeScore:n,shouldSort:i,sortFn:c,ignoreFieldNorm:o}=this.options;let a=_(e)?_(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return pt(a,{ignoreFieldNorm:o}),i&&a.sort(c),he(s)&&s>-1&&(a=a.slice(0,s)),yt(a,this._docs,{includeMatches:r,includeScore:n})}_searchStringList(e){const s=U(e,this.options),{records:r}=this._myIndex,n=[];return r.forEach(({v:i,i:c,n:o})=>{if(!x(i))return;const{isMatch:a,score:h,indices:l}=s.searchIn(i);a&&n.push({item:i,idx:c,matches:[{score:h,value:i,norm:o,indices:l}]})}),n}_searchLogical(e){const s=ye(e,this.options),r=(o,a,h)=>{if(!o.children){const{keyId:u,searcher:d}=o,g=this._findMatches({key:this._keyStore.get(u),value:this._myIndex.getValueForItemAtKeyId(a,u),searcher:d});return g&&g.length?[{idx:h,item:a,matches:g}]:[]}const l=[];for(let u=0,d=o.children.length;u<d;u+=1){const g=o.children[u],p=r(g,a,h);if(p.length)l.push(...p);else if(o.operator===F.AND)return[]}return l},n=this._myIndex.records,i={},c=[];return n.forEach(({$:o,i:a})=>{if(x(o)){let h=r(s,o,a);h.length&&(i[a]||(i[a]={idx:a,item:o,matches:[]},c.push(i[a])),h.forEach(({matches:l})=>{i[a].matches.push(...l)}))}}),c}_searchObjectList(e){const s=U(e,this.options),{keys:r,records:n}=this._myIndex,i=[];return n.forEach(({$:c,i:o})=>{if(!x(c))return;let a=[];r.forEach((h,l)=>{a.push(...this._findMatches({key:h,value:c[l],searcher:s}))}),a.length&&i.push({idx:o,item:c,matches:a})}),i}_findMatches({key:e,value:s,searcher:r}){if(!x(s))return[];let n=[];if(w(s))s.forEach(({v:i,i:c,n:o})=>{if(!x(i))return;const{isMatch:a,score:h,indices:l}=r.searchIn(i);a&&n.push({score:h,key:e,value:i,idx:c,norm:o,indices:l})});else{const{v:i,n:c}=s,{isMatch:o,score:a,indices:h}=r.searchIn(i);o&&n.push({score:a,key:e,value:i,norm:c,indices:h})}return n}}$.version="7.0.0";$.createIndex=ge;$.parseIndex=Je;$.config=f;$.parseQuery=ye;ft(ut);const G=Symbol(),xe=Symbol(),J=Symbol();let xt=(t,e)=>new Proxy(t,e);const Y=Object.getPrototypeOf,oe=new WeakMap,Z=t=>t&&(oe.has(t)?oe.get(t):Y(t)===Object.prototype||Y(t)===Array.prototype),ae=t=>typeof t=="object"&&t!==null,le=new WeakMap,Se=t=>t[J]||t,Ee=(t,e,s)=>{if(!Z(t))return t;const r=Se(t),n=(c=>Object.isFrozen(c)||Object.values(Object.getOwnPropertyDescriptors(c)).some(o=>!o.writable))(r);let i=s&&s.get(r);return i&&i[1].f===n||(i=((c,o)=>{const a={f:o};let h=!1;const l=(d,g)=>{if(!h){let p=a.a.get(c);p||(p=new Set,a.a.set(c,p)),g&&p.has(G)||p.add(d)}},u={get:(d,g)=>g===J?c:(l(g),Ee(d[g],a.a,a.c)),has:(d,g)=>g===xe?(h=!0,a.a.delete(c),!0):(l(g),g in d),getOwnPropertyDescriptor:(d,g)=>(l(g,!0),Object.getOwnPropertyDescriptor(d,g)),ownKeys:d=>(l(G),Reflect.ownKeys(d))};return o&&(u.set=u.deleteProperty=()=>!1),[u,a]})(r,n),i[1].p=xt(n?(c=>{let o=le.get(c);if(!o){if(Array.isArray(c))o=Array.from(c);else{const a=Object.getOwnPropertyDescriptors(c);Object.values(a).forEach(h=>{h.configurable=!0}),o=Object.create(Y(c),a)}le.set(c,o)}return o})(r):r,i[0]),s&&s.set(r,i)),i[1].a=e,i[1].c=s,i[1].p},St=(t,e)=>{const s=Reflect.ownKeys(t),r=Reflect.ownKeys(e);return s.length!==r.length||s.some((n,i)=>n!==r[i])},_e=(t,e,s,r)=>{if(Object.is(t,e))return!1;if(!ae(t)||!ae(e))return!0;const n=s.get(Se(t));if(!n)return!0;if(r){const c=r.get(t);if(c&&c.n===e)return c.g;r.set(t,{n:e,g:!1})}let i=null;for(const c of n){const o=c===G?St(t,e):_e(t[c],e[c],s,r);if(o!==!0&&o!==!1||(i=o),i)break}return i===null&&(i=!0),r&&r.set(t,{n:e,g:i}),i},Et=t=>!!Z(t)&&xe in t,q=t=>Z(t)&&t[J]||null,Q=t=>typeof t=="object"&&t!==null,be=(t,e)=>{if(!Q(t))return t;const s=q(t);return s!==null?(Et(t),s):(e.has(t)||(e.add(t),Object.entries(t).forEach(([r,n])=>{const i=be(n,e);Object.is(i,n)||(t[r]=i)})),t)},N=(t,e,s)=>{if(!Q(t)||!Q(e))return;const r=s.get(q(e)||e);r&&r.forEach(n=>{N(t[n],e[n],s)})},_t=(t,e)=>{var s;let r=0;const n=(s=e==null?void 0:e.size)!=null?s:1,i=[],c=new WeakMap,o=new WeakMap;return a=>{const h=q(a)||a,l=c.get(h);if(l)return N(a,l.o,l.a),l.r;for(let M=0;M<n;M+=1){const y=i[(r+M)%n];if(!y)break;if(!_e(y.o,a,y.a,new WeakMap))return c.set(h,y),N(a,y.o,y.a),y.r}const u=new WeakMap,d=Ee(a,u,o),g=be(t(d),new Set);N(a,a,u);const p={o:a,r:g,a:u};return r=(r-1+n)%n,i[r]=p,c.set(h,p),g}},we=(t,e)=>Le.external$1.RUNTIME==="browser"?_t(t,e):t,bt={threshold:.3},Ie=t=>e=>{const s=new $(e,{keys:Object.keys(e[0]),...bt,...t});return{page:(r,n)=>e.slice(r*n,(r+1)*n),search:r=>s.search(r).map(({item:n})=>n),retrieve:r=>e.filter(n=>r.includes(n.key))}},wt=Ie(),Ae=({term:t,searcher:e=wt})=>we(s=>typeof e=="function"?t.length===0||(s==null?void 0:s.length)===0?s:e(s).search(t):e.search(t)),Oe=({children:t=n=>Re.jsxRuntimeExports.jsx(m.Text$1,{...n}),debounce:e=250,onChange:s,value:r})=>{const[n,i]=$e.usePurePassthrough({onChange:s,value:r,initial:""}),{setTransform:c,deleteTransform:o}=m.useDataUtilContext(),a=m.useDebouncedCallback(c,e,[]),h=ke.useCallback(l=>{i(l),l.length===0?o("filter"):a("filter",Ae({term:l}))},[i]);return t({value:n,onChange:h})},It=Object.freeze(Object.defineProperty({__proto__:null,Column:m.Column,ColumnContext:m.ColumnContext,Core:m.Core$1,DataProvider:m.DataProvider,Filter:Oe,Hover:m.Hover,ItemFrame:m.ItemFrame,List:m.List,Search:m.Search,Selector:m.Selector,useDataContext:m.useDataContext,useDataUtilContext:m.useDataUtilContext,useGetTransformedData:m.useGetTransformedData,useHoverContext:m.useHoverContext,useSelection:m.useSelection,useSelectionContext:m.useSelectionContext,useSelectionUtils:m.useSelectionUtils,useSetSourceData:m.useSetSourceData,useSourceData:m.useSourceData,useTransformedData:m.useTransformedData},Symbol.toStringTag,{value:"Module"}));exports.Filter=Oe;exports.createFilterTransform=Ae;exports.external=It;exports.fuseFilter=Ie;exports.proxyMemo=we;
2
- //# sourceMappingURL=external-jcvqdb1Z.cjs.map
1
+ "use strict";const m=require("./Toggle-qW_TcIDh.cjs"),Re=require("./jsx-runtime-evvPGacs.cjs"),ke=require("react"),Le=require("./css-JWFtNl10.cjs"),$e=require("./aggregator-6_J8kSSO.cjs");require("./Center-Q-fgAb96.cjs");require("react-hook-form");function w(t){return Array.isArray?Array.isArray(t):fe(t)==="[object Array]"}const ve=1/0;function je(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-ve?"-0":e}function Te(t){return t==null?"":je(t)}function _(t){return typeof t=="string"}function he(t){return typeof t=="number"}function Ne(t){return t===!0||t===!1||Fe(t)&&fe(t)=="[object Boolean]"}function ue(t){return typeof t=="object"}function Fe(t){return ue(t)&&t!==null}function x(t){return t!=null}function K(t){return!t.trim().length}function fe(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const De="Incorrect 'index' type",Pe=t=>`Invalid value for key ${t}`,Ke=t=>`Pattern length exceeds max of ${t}.`,We=t=>`Missing ${t} property in key`,ze=t=>`Property 'weight' in key '${t}' must be a positive integer`,se=Object.prototype.hasOwnProperty;class He{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(r=>{let n=de(r);this._keys.push(n),this._keyMap[n.id]=n,s+=n.weight}),this._keys.forEach(r=>{r.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function de(t){let e=null,s=null,r=null,n=1,i=null;if(_(t)||w(t))r=t,e=re(t),s=W(t);else{if(!se.call(t,"name"))throw new Error(We("name"));const c=t.name;if(r=c,se.call(t,"weight")&&(n=t.weight,n<=0))throw new Error(ze(c));e=re(c),s=W(c),i=t.getFn}return{path:e,id:s,weight:n,src:r,getFn:i}}function re(t){return w(t)?t:t.split(".")}function W(t){return w(t)?t.join("."):t}function Ue(t,e){let s=[],r=!1;const n=(i,c,o)=>{if(x(i))if(!c[o])s.push(i);else{let a=c[o];const h=i[a];if(!x(h))return;if(o===c.length-1&&(_(h)||he(h)||Ne(h)))s.push(Te(h));else if(w(h)){r=!0;for(let l=0,u=h.length;l<u;l+=1)n(h[l],c,o+1)}else c.length&&n(h,c,o+1)}};return n(t,_(e)?e.split("."):e,0),r?s:s[0]}const Be={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},Ve={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(t,e)=>t.score===e.score?t.idx<e.idx?-1:1:t.score<e.score?-1:1},Ge={location:0,threshold:.6,distance:100},Ye={useExtendedSearch:!1,getFn:Ue,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1};var f={...Ve,...Be,...Ge,...Ye};const Qe=/[^ ]+/g;function Xe(t=1,e=3){const s=new Map,r=Math.pow(10,e);return{get(n){const i=n.match(Qe).length;if(s.has(i))return s.get(i);const c=1/Math.pow(i,.5*t),o=parseFloat(Math.round(c*r)/r);return s.set(i,o),o},clear(){s.clear()}}}class X{constructor({getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){this.norm=Xe(s,3),this.getFn=e,this.isCreated=!1,this.setIndexRecords()}setSources(e=[]){this.docs=e}setIndexRecords(e=[]){this.records=e}setKeys(e=[]){this.keys=e,this._keysMap={},e.forEach((s,r)=>{this._keysMap[s.id]=r})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,_(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();_(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,r=this.size();s<r;s+=1)this.records[s].i-=1}getValueForItemAtKeyId(e,s){return e[this._keysMap[s]]}size(){return this.records.length}_addString(e,s){if(!x(e)||K(e))return;let r={v:e,i:s,n:this.norm.get(e)};this.records.push(r)}_addObject(e,s){let r={i:s,$:{}};this.keys.forEach((n,i)=>{let c=n.getFn?n.getFn(e):this.getFn(e,n.path);if(x(c)){if(w(c)){let o=[];const a=[{nestedArrIndex:-1,value:c}];for(;a.length;){const{nestedArrIndex:h,value:l}=a.pop();if(x(l))if(_(l)&&!K(l)){let u={v:l,i:h,n:this.norm.get(l)};o.push(u)}else w(l)&&l.forEach((u,d)=>{a.push({nestedArrIndex:d,value:u})})}r.$[i]=o}else if(_(c)&&!K(c)){let o={v:c,n:this.norm.get(c)};r.$[i]=o}}}),this.records.push(r)}toJSON(){return{keys:this.keys,records:this.records}}}function ge(t,e,{getFn:s=f.getFn,fieldNormWeight:r=f.fieldNormWeight}={}){const n=new X({getFn:s,fieldNormWeight:r});return n.setKeys(t.map(de)),n.setSources(e),n.create(),n}function Je(t,{getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){const{keys:r,records:n}=t,i=new X({getFn:e,fieldNormWeight:s});return i.setKeys(r),i.setIndexRecords(n),i}function T(t,{errors:e=0,currentLocation:s=0,expectedLocation:r=0,distance:n=f.distance,ignoreLocation:i=f.ignoreLocation}={}){const c=e/t.length;if(i)return c;const o=Math.abs(r-s);return n?c+o/n:o?1:c}function Ze(t=[],e=f.minMatchCharLength){let s=[],r=-1,n=-1,i=0;for(let c=t.length;i<c;i+=1){let o=t[i];o&&r===-1?r=i:!o&&r!==-1&&(n=i-1,n-r+1>=e&&s.push([r,n]),r=-1)}return t[i-1]&&i-r>=e&&s.push([r,i-1]),s}const R=32;function qe(t,e,s,{location:r=f.location,distance:n=f.distance,threshold:i=f.threshold,findAllMatches:c=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,includeMatches:a=f.includeMatches,ignoreLocation:h=f.ignoreLocation}={}){if(e.length>R)throw new Error(Ke(R));const l=e.length,u=t.length,d=Math.max(0,Math.min(r,u));let g=i,p=d;const M=o>1||a,y=M?Array(u):[];let b;for(;(b=t.indexOf(e,p))>-1;){let S=T(e,{currentLocation:b,expectedLocation:d,distance:n,ignoreLocation:h});if(g=Math.min(S,g),p=b+l,M){let I=0;for(;I<l;)y[b+I]=1,I+=1}}p=-1;let k=[],C=1,v=l+u;const Ce=1<<l-1;for(let S=0;S<l;S+=1){let I=0,A=v;for(;I<A;)T(e,{errors:S,currentLocation:d+A,expectedLocation:d,distance:n,ignoreLocation:h})<=g?I=A:v=A,A=Math.floor((v-I)/2+I);v=A;let ee=Math.max(1,d-A+1),P=c?u:Math.min(d+A,u)+l,L=Array(P+2);L[P+1]=(1<<S)-1;for(let E=P;E>=ee;E-=1){let j=E-1,te=s[t.charAt(j)];if(M&&(y[j]=+!!te),L[E]=(L[E+1]<<1|1)&te,S&&(L[E]|=(k[E+1]|k[E])<<1|1|k[E+1]),L[E]&Ce&&(C=T(e,{errors:S,currentLocation:j,expectedLocation:d,distance:n,ignoreLocation:h}),C<=g)){if(g=C,p=j,p<=d)break;ee=Math.max(1,2*d-p)}}if(T(e,{errors:S+1,currentLocation:d,expectedLocation:d,distance:n,ignoreLocation:h})>g)break;k=L}const D={isMatch:p>=0,score:Math.max(.001,C)};if(M){const S=Ze(y,o);S.length?a&&(D.indices=S):D.isMatch=!1}return D}function et(t){let e={};for(let s=0,r=t.length;s<r;s+=1){const n=t.charAt(s);e[n]=(e[n]||0)|1<<r-s-1}return e}class pe{constructor(e,{location:s=f.location,threshold:r=f.threshold,distance:n=f.distance,includeMatches:i=f.includeMatches,findAllMatches:c=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,isCaseSensitive:a=f.isCaseSensitive,ignoreLocation:h=f.ignoreLocation}={}){if(this.options={location:s,threshold:r,distance:n,includeMatches:i,findAllMatches:c,minMatchCharLength:o,isCaseSensitive:a,ignoreLocation:h},this.pattern=a?e:e.toLowerCase(),this.chunks=[],!this.pattern.length)return;const l=(d,g)=>{this.chunks.push({pattern:d,alphabet:et(d),startIndex:g})},u=this.pattern.length;if(u>R){let d=0;const g=u%R,p=u-g;for(;d<p;)l(this.pattern.substr(d,R),d),d+=R;if(g){const M=u-R;l(this.pattern.substr(M),M)}}else l(this.pattern,0)}searchIn(e){const{isCaseSensitive:s,includeMatches:r}=this.options;if(s||(e=e.toLowerCase()),this.pattern===e){let p={isMatch:!0,score:0};return r&&(p.indices=[[0,e.length-1]]),p}const{location:n,distance:i,threshold:c,findAllMatches:o,minMatchCharLength:a,ignoreLocation:h}=this.options;let l=[],u=0,d=!1;this.chunks.forEach(({pattern:p,alphabet:M,startIndex:y})=>{const{isMatch:b,score:k,indices:C}=qe(e,p,M,{location:n+y,distance:i,threshold:c,findAllMatches:o,minMatchCharLength:a,includeMatches:r,ignoreLocation:h});b&&(d=!0),u+=k,b&&C&&(l=[...l,...C])});let g={isMatch:d,score:d?u/this.chunks.length:1};return d&&r&&(g.indices=l),g}}class O{constructor(e){this.pattern=e}static isMultiMatch(e){return ne(e,this.multiRegex)}static isSingleMatch(e){return ne(e,this.singleRegex)}search(){}}function ne(t,e){const s=t.match(e);return s?s[1]:null}class tt extends O{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class st extends O{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const r=e.indexOf(this.pattern)===-1;return{isMatch:r,score:r?0:1,indices:[0,e.length-1]}}}class rt extends O{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class nt extends O{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class it extends O{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class ct extends O{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class me extends O{constructor(e,{location:s=f.location,threshold:r=f.threshold,distance:n=f.distance,includeMatches:i=f.includeMatches,findAllMatches:c=f.findAllMatches,minMatchCharLength:o=f.minMatchCharLength,isCaseSensitive:a=f.isCaseSensitive,ignoreLocation:h=f.ignoreLocation}={}){super(e),this._bitapSearch=new pe(e,{location:s,threshold:r,distance:n,includeMatches:i,findAllMatches:c,minMatchCharLength:o,isCaseSensitive:a,ignoreLocation:h})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class Me extends O{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,r;const n=[],i=this.pattern.length;for(;(r=e.indexOf(this.pattern,s))>-1;)s=r+i,n.push([r,s-1]);const c=!!n.length;return{isMatch:c,score:c?0:1,indices:n}}}const z=[tt,Me,rt,nt,ct,it,st,me],ie=z.length,ot=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,at="|";function lt(t,e={}){return t.split(at).map(s=>{let r=s.trim().split(ot).filter(i=>i&&!!i.trim()),n=[];for(let i=0,c=r.length;i<c;i+=1){const o=r[i];let a=!1,h=-1;for(;!a&&++h<ie;){const l=z[h];let u=l.isMultiMatch(o);u&&(n.push(new l(u,e)),a=!0)}if(!a)for(h=-1;++h<ie;){const l=z[h];let u=l.isSingleMatch(o);if(u){n.push(new l(u,e));break}}}return n})}const ht=new Set([me.type,Me.type]);class ut{constructor(e,{isCaseSensitive:s=f.isCaseSensitive,includeMatches:r=f.includeMatches,minMatchCharLength:n=f.minMatchCharLength,ignoreLocation:i=f.ignoreLocation,findAllMatches:c=f.findAllMatches,location:o=f.location,threshold:a=f.threshold,distance:h=f.distance}={}){this.query=null,this.options={isCaseSensitive:s,includeMatches:r,minMatchCharLength:n,findAllMatches:c,ignoreLocation:i,location:o,threshold:a,distance:h},this.pattern=s?e:e.toLowerCase(),this.query=lt(this.pattern,this.options)}static condition(e,s){return s.useExtendedSearch}searchIn(e){const s=this.query;if(!s)return{isMatch:!1,score:1};const{includeMatches:r,isCaseSensitive:n}=this.options;e=n?e:e.toLowerCase();let i=0,c=[],o=0;for(let a=0,h=s.length;a<h;a+=1){const l=s[a];c.length=0,i=0;for(let u=0,d=l.length;u<d;u+=1){const g=l[u],{isMatch:p,indices:M,score:y}=g.search(e);if(p){if(i+=1,o+=y,r){const b=g.constructor.type;ht.has(b)?c=[...c,...M]:c.push(M)}}else{o=0,i=0,c.length=0;break}}if(i){let u={isMatch:!0,score:o/i};return r&&(u.indices=c),u}}return{isMatch:!1,score:1}}}const H=[];function ft(...t){H.push(...t)}function U(t,e){for(let s=0,r=H.length;s<r;s+=1){let n=H[s];if(n.condition(t,e))return new n(t,e)}return new pe(t,e)}const F={AND:"$and",OR:"$or"},B={PATH:"$path",PATTERN:"$val"},V=t=>!!(t[F.AND]||t[F.OR]),dt=t=>!!t[B.PATH],gt=t=>!w(t)&&ue(t)&&!V(t),ce=t=>({[F.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function ye(t,e,{auto:s=!0}={}){const r=n=>{let i=Object.keys(n);const c=dt(n);if(!c&&i.length>1&&!V(n))return r(ce(n));if(gt(n)){const a=c?n[B.PATH]:i[0],h=c?n[B.PATTERN]:n[a];if(!_(h))throw new Error(Pe(a));const l={keyId:W(a),pattern:h};return s&&(l.searcher=U(h,e)),l}let o={children:[],operator:i[0]};return i.forEach(a=>{const h=n[a];w(h)&&h.forEach(l=>{o.children.push(r(l))})}),o};return V(t)||(t=ce(t)),r(t)}function pt(t,{ignoreFieldNorm:e=f.ignoreFieldNorm}){t.forEach(s=>{let r=1;s.matches.forEach(({key:n,norm:i,score:c})=>{const o=n?n.weight:null;r*=Math.pow(c===0&&o?Number.EPSILON:c,(o||1)*(e?1:i))}),s.score=r})}function mt(t,e){const s=t.matches;e.matches=[],x(s)&&s.forEach(r=>{if(!x(r.indices)||!r.indices.length)return;const{indices:n,value:i}=r;let c={indices:n,value:i};r.key&&(c.key=r.key.src),r.idx>-1&&(c.refIndex=r.idx),e.matches.push(c)})}function Mt(t,e){e.score=t.score}function yt(t,e,{includeMatches:s=f.includeMatches,includeScore:r=f.includeScore}={}){const n=[];return s&&n.push(mt),r&&n.push(Mt),t.map(i=>{const{idx:c}=i,o={item:e[c],refIndex:c};return n.length&&n.forEach(a=>{a(i,o)}),o})}class ${constructor(e,s={},r){this.options={...f,...s},this.options.useExtendedSearch,this._keyStore=new He(this.options.keys),this.setCollection(e,r)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof X))throw new Error(De);this._myIndex=s||ge(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let r=0,n=this._docs.length;r<n;r+=1){const i=this._docs[r];e(i,r)&&(this.removeAt(r),r-=1,n-=1,s.push(i))}return s}removeAt(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}getIndex(){return this._myIndex}search(e,{limit:s=-1}={}){const{includeMatches:r,includeScore:n,shouldSort:i,sortFn:c,ignoreFieldNorm:o}=this.options;let a=_(e)?_(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return pt(a,{ignoreFieldNorm:o}),i&&a.sort(c),he(s)&&s>-1&&(a=a.slice(0,s)),yt(a,this._docs,{includeMatches:r,includeScore:n})}_searchStringList(e){const s=U(e,this.options),{records:r}=this._myIndex,n=[];return r.forEach(({v:i,i:c,n:o})=>{if(!x(i))return;const{isMatch:a,score:h,indices:l}=s.searchIn(i);a&&n.push({item:i,idx:c,matches:[{score:h,value:i,norm:o,indices:l}]})}),n}_searchLogical(e){const s=ye(e,this.options),r=(o,a,h)=>{if(!o.children){const{keyId:u,searcher:d}=o,g=this._findMatches({key:this._keyStore.get(u),value:this._myIndex.getValueForItemAtKeyId(a,u),searcher:d});return g&&g.length?[{idx:h,item:a,matches:g}]:[]}const l=[];for(let u=0,d=o.children.length;u<d;u+=1){const g=o.children[u],p=r(g,a,h);if(p.length)l.push(...p);else if(o.operator===F.AND)return[]}return l},n=this._myIndex.records,i={},c=[];return n.forEach(({$:o,i:a})=>{if(x(o)){let h=r(s,o,a);h.length&&(i[a]||(i[a]={idx:a,item:o,matches:[]},c.push(i[a])),h.forEach(({matches:l})=>{i[a].matches.push(...l)}))}}),c}_searchObjectList(e){const s=U(e,this.options),{keys:r,records:n}=this._myIndex,i=[];return n.forEach(({$:c,i:o})=>{if(!x(c))return;let a=[];r.forEach((h,l)=>{a.push(...this._findMatches({key:h,value:c[l],searcher:s}))}),a.length&&i.push({idx:o,item:c,matches:a})}),i}_findMatches({key:e,value:s,searcher:r}){if(!x(s))return[];let n=[];if(w(s))s.forEach(({v:i,i:c,n:o})=>{if(!x(i))return;const{isMatch:a,score:h,indices:l}=r.searchIn(i);a&&n.push({score:h,key:e,value:i,idx:c,norm:o,indices:l})});else{const{v:i,n:c}=s,{isMatch:o,score:a,indices:h}=r.searchIn(i);o&&n.push({score:a,key:e,value:i,norm:c,indices:h})}return n}}$.version="7.0.0";$.createIndex=ge;$.parseIndex=Je;$.config=f;$.parseQuery=ye;ft(ut);const G=Symbol(),xe=Symbol(),J=Symbol();let xt=(t,e)=>new Proxy(t,e);const Y=Object.getPrototypeOf,oe=new WeakMap,Z=t=>t&&(oe.has(t)?oe.get(t):Y(t)===Object.prototype||Y(t)===Array.prototype),ae=t=>typeof t=="object"&&t!==null,le=new WeakMap,Se=t=>t[J]||t,Ee=(t,e,s)=>{if(!Z(t))return t;const r=Se(t),n=(c=>Object.isFrozen(c)||Object.values(Object.getOwnPropertyDescriptors(c)).some(o=>!o.writable))(r);let i=s&&s.get(r);return i&&i[1].f===n||(i=((c,o)=>{const a={f:o};let h=!1;const l=(d,g)=>{if(!h){let p=a.a.get(c);p||(p=new Set,a.a.set(c,p)),g&&p.has(G)||p.add(d)}},u={get:(d,g)=>g===J?c:(l(g),Ee(d[g],a.a,a.c)),has:(d,g)=>g===xe?(h=!0,a.a.delete(c),!0):(l(g),g in d),getOwnPropertyDescriptor:(d,g)=>(l(g,!0),Object.getOwnPropertyDescriptor(d,g)),ownKeys:d=>(l(G),Reflect.ownKeys(d))};return o&&(u.set=u.deleteProperty=()=>!1),[u,a]})(r,n),i[1].p=xt(n?(c=>{let o=le.get(c);if(!o){if(Array.isArray(c))o=Array.from(c);else{const a=Object.getOwnPropertyDescriptors(c);Object.values(a).forEach(h=>{h.configurable=!0}),o=Object.create(Y(c),a)}le.set(c,o)}return o})(r):r,i[0]),s&&s.set(r,i)),i[1].a=e,i[1].c=s,i[1].p},St=(t,e)=>{const s=Reflect.ownKeys(t),r=Reflect.ownKeys(e);return s.length!==r.length||s.some((n,i)=>n!==r[i])},_e=(t,e,s,r)=>{if(Object.is(t,e))return!1;if(!ae(t)||!ae(e))return!0;const n=s.get(Se(t));if(!n)return!0;if(r){const c=r.get(t);if(c&&c.n===e)return c.g;r.set(t,{n:e,g:!1})}let i=null;for(const c of n){const o=c===G?St(t,e):_e(t[c],e[c],s,r);if(o!==!0&&o!==!1||(i=o),i)break}return i===null&&(i=!0),r&&r.set(t,{n:e,g:i}),i},Et=t=>!!Z(t)&&xe in t,q=t=>Z(t)&&t[J]||null,Q=t=>typeof t=="object"&&t!==null,be=(t,e)=>{if(!Q(t))return t;const s=q(t);return s!==null?(Et(t),s):(e.has(t)||(e.add(t),Object.entries(t).forEach(([r,n])=>{const i=be(n,e);Object.is(i,n)||(t[r]=i)})),t)},N=(t,e,s)=>{if(!Q(t)||!Q(e))return;const r=s.get(q(e)||e);r&&r.forEach(n=>{N(t[n],e[n],s)})},_t=(t,e)=>{var s;let r=0;const n=(s=e==null?void 0:e.size)!=null?s:1,i=[],c=new WeakMap,o=new WeakMap;return a=>{const h=q(a)||a,l=c.get(h);if(l)return N(a,l.o,l.a),l.r;for(let M=0;M<n;M+=1){const y=i[(r+M)%n];if(!y)break;if(!_e(y.o,a,y.a,new WeakMap))return c.set(h,y),N(a,y.o,y.a),y.r}const u=new WeakMap,d=Ee(a,u,o),g=be(t(d),new Set);N(a,a,u);const p={o:a,r:g,a:u};return r=(r-1+n)%n,i[r]=p,c.set(h,p),g}},we=(t,e)=>Le.external$1.RUNTIME==="browser"?_t(t,e):t,bt={threshold:.3},Ie=t=>e=>{const s=new $(e,{keys:Object.keys(e[0]),...bt,...t});return{page:(r,n)=>e.slice(r*n,(r+1)*n),search:r=>s.search(r).map(({item:n})=>n),retrieve:r=>e.filter(n=>r.includes(n.key))}},wt=Ie(),Ae=({term:t,searcher:e=wt})=>we(s=>typeof e=="function"?t.length===0||(s==null?void 0:s.length)===0?s:e(s).search(t):e.search(t)),Oe=({children:t=n=>Re.jsxRuntimeExports.jsx(m.Text$1,{...n}),debounce:e=250,onChange:s,value:r})=>{const[n,i]=$e.usePurePassthrough({onChange:s,value:r,initial:""}),{setTransform:c,deleteTransform:o}=m.useDataUtilContext(),a=m.useDebouncedCallback(c,e,[]),h=ke.useCallback(l=>{i(l),l.length===0?o("filter"):a("filter",Ae({term:l}))},[i]);return t({value:n,onChange:h})},It=Object.freeze(Object.defineProperty({__proto__:null,Column:m.Column,ColumnContext:m.ColumnContext,Core:m.Core$1,DataProvider:m.DataProvider,Filter:Oe,Hover:m.Hover,ItemFrame:m.ItemFrame,List:m.List,Search:m.Search,Selector:m.Selector,useDataContext:m.useDataContext,useDataUtilContext:m.useDataUtilContext,useGetTransformedData:m.useGetTransformedData,useHoverContext:m.useHoverContext,useSelection:m.useSelection,useSelectionContext:m.useSelectionContext,useSelectionUtils:m.useSelectionUtils,useSetSourceData:m.useSetSourceData,useSourceData:m.useSourceData,useTransformedData:m.useTransformedData},Symbol.toStringTag,{value:"Module"}));exports.Filter=Oe;exports.createFilterTransform=Ae;exports.external=It;exports.fuseFilter=Ie;exports.proxyMemo=we;
2
+ //# sourceMappingURL=external-y6ws_3c6.cjs.map