@gcsa/console-react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ConsoleHeader.d.ts +9 -0
- package/dist/ConsoleHeader.js +21 -0
- package/dist/ConsoleHeader.js.map +1 -0
- package/dist/ConsolePage.d.ts +8 -0
- package/dist/ConsolePage.js +14 -0
- package/dist/ConsolePage.js.map +1 -0
- package/dist/ConsoleShell.d.ts +23 -0
- package/dist/ConsoleShell.js +133 -0
- package/dist/ConsoleShell.js.map +1 -0
- package/dist/ConsoleSidebar.d.ts +11 -0
- package/dist/ConsoleSidebar.js +52 -0
- package/dist/ConsoleSidebar.js.map +1 -0
- package/dist/GcsaAlert.d.ts +9 -0
- package/dist/GcsaAlert.js +24 -0
- package/dist/GcsaAlert.js.map +1 -0
- package/dist/GcsaAutoComplete.d.ts +15 -0
- package/dist/GcsaAutoComplete.js +106 -0
- package/dist/GcsaAutoComplete.js.map +1 -0
- package/dist/GcsaAvatar.d.ts +8 -0
- package/dist/GcsaAvatar.js +13 -0
- package/dist/GcsaAvatar.js.map +1 -0
- package/dist/GcsaBadge.d.ts +7 -0
- package/dist/GcsaBadge.js +8 -0
- package/dist/GcsaBadge.js.map +1 -0
- package/dist/GcsaBrandMark.d.ts +4 -0
- package/dist/GcsaBrandMark.js +21 -0
- package/dist/GcsaBrandMark.js.map +1 -0
- package/dist/GcsaBreadcrumb.d.ts +9 -0
- package/dist/GcsaBreadcrumb.js +20 -0
- package/dist/GcsaBreadcrumb.js.map +1 -0
- package/dist/GcsaButton.d.ts +8 -0
- package/dist/GcsaButton.js +38 -0
- package/dist/GcsaButton.js.map +1 -0
- package/dist/GcsaCalendar.d.ts +11 -0
- package/dist/GcsaCalendar.js +35 -0
- package/dist/GcsaCalendar.js.map +1 -0
- package/dist/GcsaCard.d.ts +8 -0
- package/dist/GcsaCard.js +11 -0
- package/dist/GcsaCard.js.map +1 -0
- package/dist/GcsaCascader.d.ts +14 -0
- package/dist/GcsaCascader.js +91 -0
- package/dist/GcsaCascader.js.map +1 -0
- package/dist/GcsaChatPanel.d.ts +43 -0
- package/dist/GcsaChatPanel.js +180 -0
- package/dist/GcsaChatPanel.js.map +1 -0
- package/dist/GcsaCheckbox.d.ts +11 -0
- package/dist/GcsaCheckbox.js +45 -0
- package/dist/GcsaCheckbox.js.map +1 -0
- package/dist/GcsaCollapse.d.ts +16 -0
- package/dist/GcsaCollapse.js +20 -0
- package/dist/GcsaCollapse.js.map +1 -0
- package/dist/GcsaConfigProvider.d.ts +13 -0
- package/dist/GcsaConfigProvider.js +68 -0
- package/dist/GcsaConfigProvider.js.map +1 -0
- package/dist/GcsaDataTable.d.ts +119 -0
- package/dist/GcsaDataTable.js +508 -0
- package/dist/GcsaDataTable.js.map +1 -0
- package/dist/GcsaDatePicker.d.ts +16 -0
- package/dist/GcsaDatePicker.js +211 -0
- package/dist/GcsaDatePicker.js.map +1 -0
- package/dist/GcsaDateRangePicker.d.ts +17 -0
- package/dist/GcsaDateRangePicker.js +222 -0
- package/dist/GcsaDateRangePicker.js.map +1 -0
- package/dist/GcsaDateTimePicker.d.ts +13 -0
- package/dist/GcsaDateTimePicker.js +300 -0
- package/dist/GcsaDateTimePicker.js.map +1 -0
- package/dist/GcsaDescriptions.d.ts +9 -0
- package/dist/GcsaDescriptions.js +11 -0
- package/dist/GcsaDescriptions.js.map +1 -0
- package/dist/GcsaDivider.d.ts +4 -0
- package/dist/GcsaDivider.js +8 -0
- package/dist/GcsaDivider.js.map +1 -0
- package/dist/GcsaDrawer.d.ts +15 -0
- package/dist/GcsaDrawer.js +68 -0
- package/dist/GcsaDrawer.js.map +1 -0
- package/dist/GcsaDropdown.d.ts +20 -0
- package/dist/GcsaDropdown.js +46 -0
- package/dist/GcsaDropdown.js.map +1 -0
- package/dist/GcsaEmpty.d.ts +9 -0
- package/dist/GcsaEmpty.js +16 -0
- package/dist/GcsaEmpty.js.map +1 -0
- package/dist/GcsaField.d.ts +11 -0
- package/dist/GcsaField.js +26 -0
- package/dist/GcsaField.js.map +1 -0
- package/dist/GcsaForm.d.ts +13 -0
- package/dist/GcsaForm.js +60 -0
- package/dist/GcsaForm.js.map +1 -0
- package/dist/GcsaFormField.d.ts +16 -0
- package/dist/GcsaFormField.js +39 -0
- package/dist/GcsaFormField.js.map +1 -0
- package/dist/GcsaIcon.d.ts +7 -0
- package/dist/GcsaIcon.js +17 -0
- package/dist/GcsaIcon.js.map +1 -0
- package/dist/GcsaImagePreview.d.ts +8 -0
- package/dist/GcsaImagePreview.js +18 -0
- package/dist/GcsaImagePreview.js.map +1 -0
- package/dist/GcsaInput.d.ts +13 -0
- package/dist/GcsaInput.js +76 -0
- package/dist/GcsaInput.js.map +1 -0
- package/dist/GcsaInputGroup.d.ts +11 -0
- package/dist/GcsaInputGroup.js +27 -0
- package/dist/GcsaInputGroup.js.map +1 -0
- package/dist/GcsaInputNumber.d.ts +18 -0
- package/dist/GcsaInputNumber.js +108 -0
- package/dist/GcsaInputNumber.js.map +1 -0
- package/dist/GcsaLoading.d.ts +24 -0
- package/dist/GcsaLoading.js +101 -0
- package/dist/GcsaLoading.js.map +1 -0
- package/dist/GcsaLoadingMask.d.ts +8 -0
- package/dist/GcsaLoadingMask.js +39 -0
- package/dist/GcsaLoadingMask.js.map +1 -0
- package/dist/GcsaMarkdownRenderer.d.ts +6 -0
- package/dist/GcsaMarkdownRenderer.js +32 -0
- package/dist/GcsaMarkdownRenderer.js.map +1 -0
- package/dist/GcsaMenu.d.ts +16 -0
- package/dist/GcsaMenu.js +241 -0
- package/dist/GcsaMenu.js.map +1 -0
- package/dist/GcsaModal.d.ts +10 -0
- package/dist/GcsaModal.js +45 -0
- package/dist/GcsaModal.js.map +1 -0
- package/dist/GcsaMultiSelect.d.ts +23 -0
- package/dist/GcsaMultiSelect.js +149 -0
- package/dist/GcsaMultiSelect.js.map +1 -0
- package/dist/GcsaPagination.d.ts +17 -0
- package/dist/GcsaPagination.js +108 -0
- package/dist/GcsaPagination.js.map +1 -0
- package/dist/GcsaPopconfirm.d.ts +18 -0
- package/dist/GcsaPopconfirm.js +68 -0
- package/dist/GcsaPopconfirm.js.map +1 -0
- package/dist/GcsaPopover.d.ts +30 -0
- package/dist/GcsaPopover.js +65 -0
- package/dist/GcsaPopover.js.map +1 -0
- package/dist/GcsaPopoverClose.d.ts +6 -0
- package/dist/GcsaPopoverClose.js +9 -0
- package/dist/GcsaPopoverClose.js.map +1 -0
- package/dist/GcsaProgress.d.ts +5 -0
- package/dist/GcsaProgress.js +18 -0
- package/dist/GcsaProgress.js.map +1 -0
- package/dist/GcsaRadioGroup.d.ts +9 -0
- package/dist/GcsaRadioGroup.js +37 -0
- package/dist/GcsaRadioGroup.js.map +1 -0
- package/dist/GcsaResult.d.ts +9 -0
- package/dist/GcsaResult.js +14 -0
- package/dist/GcsaResult.js.map +1 -0
- package/dist/GcsaRow.d.ts +7 -0
- package/dist/GcsaRow.js +8 -0
- package/dist/GcsaRow.js.map +1 -0
- package/dist/GcsaSelect.d.ts +20 -0
- package/dist/GcsaSelect.js +117 -0
- package/dist/GcsaSelect.js.map +1 -0
- package/dist/GcsaSkeleton.d.ts +6 -0
- package/dist/GcsaSkeleton.js +19 -0
- package/dist/GcsaSkeleton.js.map +1 -0
- package/dist/GcsaSpace.d.ts +7 -0
- package/dist/GcsaSpace.js +14 -0
- package/dist/GcsaSpace.js.map +1 -0
- package/dist/GcsaSpin.d.ts +7 -0
- package/dist/GcsaSpin.js +16 -0
- package/dist/GcsaSpin.js.map +1 -0
- package/dist/GcsaStatistic.d.ts +8 -0
- package/dist/GcsaStatistic.js +11 -0
- package/dist/GcsaStatistic.js.map +1 -0
- package/dist/GcsaSteps.d.ts +10 -0
- package/dist/GcsaSteps.js +54 -0
- package/dist/GcsaSteps.js.map +1 -0
- package/dist/GcsaSwitch.d.ts +11 -0
- package/dist/GcsaSwitch.js +36 -0
- package/dist/GcsaSwitch.js.map +1 -0
- package/dist/GcsaTabs.d.ts +15 -0
- package/dist/GcsaTabs.js +39 -0
- package/dist/GcsaTabs.js.map +1 -0
- package/dist/GcsaTag.d.ts +7 -0
- package/dist/GcsaTag.js +9 -0
- package/dist/GcsaTag.js.map +1 -0
- package/dist/GcsaTextarea.d.ts +13 -0
- package/dist/GcsaTextarea.js +76 -0
- package/dist/GcsaTextarea.js.map +1 -0
- package/dist/GcsaTimePicker.d.ts +12 -0
- package/dist/GcsaTimePicker.js +221 -0
- package/dist/GcsaTimePicker.js.map +1 -0
- package/dist/GcsaTimeline.d.ts +5 -0
- package/dist/GcsaTimeline.js +19 -0
- package/dist/GcsaTimeline.js.map +1 -0
- package/dist/GcsaToastStack.d.ts +11 -0
- package/dist/GcsaToastStack.js +45 -0
- package/dist/GcsaToastStack.js.map +1 -0
- package/dist/GcsaTooltip.d.ts +17 -0
- package/dist/GcsaTooltip.js +43 -0
- package/dist/GcsaTooltip.js.map +1 -0
- package/dist/GcsaTransfer.d.ts +11 -0
- package/dist/GcsaTransfer.js +95 -0
- package/dist/GcsaTransfer.js.map +1 -0
- package/dist/GcsaTree.d.ts +17 -0
- package/dist/GcsaTree.js +38 -0
- package/dist/GcsaTree.js.map +1 -0
- package/dist/GcsaTypography.d.ts +8 -0
- package/dist/GcsaTypography.js +14 -0
- package/dist/GcsaTypography.js.map +1 -0
- package/dist/GcsaUpload.d.ts +24 -0
- package/dist/GcsaUpload.js +146 -0
- package/dist/GcsaUpload.js.map +1 -0
- package/dist/hooks/gcsaFormTypes.d.ts +7 -0
- package/dist/hooks/useDocumentThemeSync.d.ts +3 -0
- package/dist/hooks/useDocumentThemeSync.js +7 -0
- package/dist/hooks/useDocumentThemeSync.js.map +1 -0
- package/dist/hooks/useGcsaComponentSize.d.ts +5 -0
- package/dist/hooks/useGcsaComponentSize.js +21 -0
- package/dist/hooks/useGcsaComponentSize.js.map +1 -0
- package/dist/hooks/useGcsaFormField.d.ts +26 -0
- package/dist/hooks/useGcsaFormField.js +47 -0
- package/dist/hooks/useGcsaFormField.js.map +1 -0
- package/dist/hooks/useGcsaFormSchema.d.ts +7 -0
- package/dist/hooks/useGcsaFormSchema.js +6 -0
- package/dist/hooks/useGcsaFormSchema.js.map +1 -0
- package/dist/hooks/useGcsaLocale.d.ts +4 -0
- package/dist/hooks/useGcsaLocale.js +15 -0
- package/dist/hooks/useGcsaLocale.js.map +1 -0
- package/dist/hooks/useGcsaPopupZIndex.d.ts +6 -0
- package/dist/hooks/useGcsaPopupZIndex.js +18 -0
- package/dist/hooks/useGcsaPopupZIndex.js.map +1 -0
- package/dist/hooks/useGcsaTextCount.d.ts +16 -0
- package/dist/hooks/useGcsaTextCount.js +16 -0
- package/dist/hooks/useGcsaTextCount.js.map +1 -0
- package/dist/hooks/useGcsaTheme.d.ts +7 -0
- package/dist/hooks/useGcsaTheme.js +19 -0
- package/dist/hooks/useGcsaTheme.js.map +1 -0
- package/dist/hooks/useGcsaZIndex.d.ts +13 -0
- package/dist/hooks/useGcsaZIndex.js +37 -0
- package/dist/hooks/useGcsaZIndex.js.map +1 -0
- package/dist/hooks/useMessage.d.ts +6 -0
- package/dist/hooks/useOverlayZIndex.d.ts +8 -0
- package/dist/hooks/useOverlayZIndex.js +14 -0
- package/dist/hooks/useOverlayZIndex.js.map +1 -0
- package/dist/hooks/usePreventHiddenInputScroll.d.ts +13 -0
- package/dist/hooks/usePreventHiddenInputScroll.js +124 -0
- package/dist/hooks/usePreventHiddenInputScroll.js.map +1 -0
- package/dist/icons/iconNames.d.ts +7 -0
- package/dist/icons/iconNames.js +24 -0
- package/dist/icons/iconNames.js.map +1 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/icons/registry.d.ts +3 -0
- package/dist/icons/registry.js +58 -0
- package/dist/icons/registry.js.map +1 -0
- package/dist/icons/svg/alert.svg.js +9 -0
- package/dist/icons/svg/alert.svg.js.map +1 -0
- package/dist/icons/svg/assets.svg.js +9 -0
- package/dist/icons/svg/assets.svg.js.map +1 -0
- package/dist/icons/svg/chat.svg.js +8 -0
- package/dist/icons/svg/chat.svg.js.map +1 -0
- package/dist/icons/svg/check.svg.js +8 -0
- package/dist/icons/svg/check.svg.js.map +1 -0
- package/dist/icons/svg/chevron-down.svg.js +8 -0
- package/dist/icons/svg/chevron-down.svg.js.map +1 -0
- package/dist/icons/svg/chevron-left.svg.js +8 -0
- package/dist/icons/svg/chevron-left.svg.js.map +1 -0
- package/dist/icons/svg/chevron-right.svg.js +8 -0
- package/dist/icons/svg/chevron-right.svg.js.map +1 -0
- package/dist/icons/svg/chevron-up.svg.js +8 -0
- package/dist/icons/svg/chevron-up.svg.js.map +1 -0
- package/dist/icons/svg/close.svg.js +6 -0
- package/dist/icons/svg/close.svg.js.map +1 -0
- package/dist/icons/svg/dashboard.svg.js +8 -0
- package/dist/icons/svg/dashboard.svg.js.map +1 -0
- package/dist/icons/svg/menu.svg.js +8 -0
- package/dist/icons/svg/menu.svg.js.map +1 -0
- package/dist/icons/svg/plus.svg.js +6 -0
- package/dist/icons/svg/plus.svg.js.map +1 -0
- package/dist/icons/svg/result-empty.svg.js +6 -0
- package/dist/icons/svg/result-empty.svg.js.map +1 -0
- package/dist/icons/svg/settings.svg.js +8 -0
- package/dist/icons/svg/settings.svg.js.map +1 -0
- package/dist/icons/svg/users.svg.js +11 -0
- package/dist/icons/svg/users.svg.js.map +1 -0
- package/dist/index.d.ts +151 -0
- package/dist/index.js +166 -0
- package/dist/index.js.map +1 -0
- package/dist/style.css +8028 -0
- package/dist/utils/gcsaDateValue.d.ts +25 -0
- package/dist/utils/gcsaDateValue.js +60 -0
- package/dist/utils/gcsaDateValue.js.map +1 -0
- package/dist/utils/gcsaTableColumns.d.ts +19 -0
- package/dist/utils/gcsaTableColumns.js +43 -0
- package/dist/utils/gcsaTableColumns.js.map +1 -0
- package/dist/utils/preserveDrawerScroll.d.ts +2 -0
- package/dist/utils/preserveDrawerScroll.js +13 -0
- package/dist/utils/preserveDrawerScroll.js.map +1 -0
- package/dist/utils/zodValidators.d.ts +21 -0
- package/dist/utils/zodValidators.js +35 -0
- package/dist/utils/zodValidators.js.map +1 -0
- package/package.json +58 -0
- package/src/ConsoleHeader.tsx +24 -0
- package/src/ConsolePage.tsx +22 -0
- package/src/ConsoleShell.tsx +248 -0
- package/src/ConsoleSidebar.tsx +61 -0
- package/src/GcsaAlert.tsx +29 -0
- package/src/GcsaAutoComplete.tsx +163 -0
- package/src/GcsaAvatar.tsx +21 -0
- package/src/GcsaBadge.tsx +15 -0
- package/src/GcsaBrandMark.tsx +18 -0
- package/src/GcsaBreadcrumb.tsx +35 -0
- package/src/GcsaButton.tsx +44 -0
- package/src/GcsaCalendar.tsx +14 -0
- package/src/GcsaCard.tsx +21 -0
- package/src/GcsaCascader.tsx +121 -0
- package/src/GcsaChatPanel.tsx +320 -0
- package/src/GcsaCheckbox.tsx +55 -0
- package/src/GcsaCollapse.tsx +23 -0
- package/src/GcsaConfigProvider.tsx +121 -0
- package/src/GcsaDataTable.tsx +779 -0
- package/src/GcsaDatePicker.tsx +284 -0
- package/src/GcsaDateRangePicker.tsx +310 -0
- package/src/GcsaDateTimePicker.tsx +407 -0
- package/src/GcsaDescriptions.tsx +22 -0
- package/src/GcsaDivider.tsx +7 -0
- package/src/GcsaDrawer.tsx +87 -0
- package/src/GcsaDropdown.tsx +84 -0
- package/src/GcsaEmpty.tsx +27 -0
- package/src/GcsaField.tsx +50 -0
- package/src/GcsaForm.tsx +82 -0
- package/src/GcsaFormField.tsx +67 -0
- package/src/GcsaIcon.tsx +21 -0
- package/src/GcsaImagePreview.tsx +30 -0
- package/src/GcsaInput.tsx +87 -0
- package/src/GcsaInputGroup.tsx +32 -0
- package/src/GcsaInputNumber.tsx +155 -0
- package/src/GcsaLoading.ts +206 -0
- package/src/GcsaLoadingMask.tsx +53 -0
- package/src/GcsaMarkdownRenderer.tsx +40 -0
- package/src/GcsaMenu.tsx +340 -0
- package/src/GcsaModal.tsx +68 -0
- package/src/GcsaMultiSelect.tsx +246 -0
- package/src/GcsaPagination.tsx +194 -0
- package/src/GcsaPopconfirm.tsx +104 -0
- package/src/GcsaPopover.tsx +131 -0
- package/src/GcsaPopoverClose.tsx +11 -0
- package/src/GcsaProgress.tsx +18 -0
- package/src/GcsaRadioGroup.tsx +42 -0
- package/src/GcsaResult.tsx +23 -0
- package/src/GcsaRow.tsx +13 -0
- package/src/GcsaSelect.tsx +186 -0
- package/src/GcsaSkeleton.tsx +19 -0
- package/src/GcsaSpace.tsx +17 -0
- package/src/GcsaSpin.tsx +25 -0
- package/src/GcsaStatistic.tsx +17 -0
- package/src/GcsaSteps.tsx +73 -0
- package/src/GcsaSwitch.tsx +45 -0
- package/src/GcsaTabs.tsx +53 -0
- package/src/GcsaTag.tsx +16 -0
- package/src/GcsaTextarea.tsx +87 -0
- package/src/GcsaTimePicker.tsx +298 -0
- package/src/GcsaTimeline.tsx +27 -0
- package/src/GcsaToastStack.tsx +67 -0
- package/src/GcsaTooltip.tsx +75 -0
- package/src/GcsaTransfer.tsx +129 -0
- package/src/GcsaTree.tsx +43 -0
- package/src/GcsaTypography.tsx +24 -0
- package/src/GcsaUpload.tsx +206 -0
- package/src/hooks/gcsaFormTypes.ts +23 -0
- package/src/hooks/useDocumentThemeSync.ts +6 -0
- package/src/hooks/useGcsaComponentSize.ts +24 -0
- package/src/hooks/useGcsaFormField.ts +49 -0
- package/src/hooks/useGcsaFormSchema.ts +6 -0
- package/src/hooks/useGcsaLocale.ts +16 -0
- package/src/hooks/useGcsaPopupZIndex.ts +23 -0
- package/src/hooks/useGcsaTextCount.ts +44 -0
- package/src/hooks/useGcsaTheme.ts +19 -0
- package/src/hooks/useGcsaZIndex.ts +60 -0
- package/src/hooks/useMessage.ts +7 -0
- package/src/hooks/useOverlayZIndex.ts +23 -0
- package/src/hooks/usePreventHiddenInputScroll.ts +233 -0
- package/src/icons/iconNames.ts +27 -0
- package/src/icons/index.ts +8 -0
- package/src/icons/registry.ts +38 -0
- package/src/icons/svg/alert.svg +4 -0
- package/src/icons/svg/assets.svg +4 -0
- package/src/icons/svg/chat.svg +3 -0
- package/src/icons/svg/check.svg +3 -0
- package/src/icons/svg/chevron-down.svg +3 -0
- package/src/icons/svg/chevron-left.svg +3 -0
- package/src/icons/svg/chevron-right.svg +3 -0
- package/src/icons/svg/chevron-up.svg +3 -0
- package/src/icons/svg/close.svg +1 -0
- package/src/icons/svg/dashboard.svg +3 -0
- package/src/icons/svg/menu.svg +3 -0
- package/src/icons/svg/plus.svg +1 -0
- package/src/icons/svg/result-empty.svg +1 -0
- package/src/icons/svg/settings.svg +3 -0
- package/src/icons/svg/users.svg +6 -0
- package/src/index.ts +166 -0
- package/src/utils/gcsaDateValue.ts +99 -0
- package/src/utils/gcsaTableColumns.ts +97 -0
- package/src/utils/preserveDrawerScroll.ts +20 -0
- package/src/utils/zodValidators.ts +45 -0
- package/src/vite-env.d.ts +6 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GcsaTree.js","sources":["../src/GcsaTree.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { GcsaIcon } from './GcsaIcon';\nimport { useGcsaLocaleMessages } from './hooks/useGcsaLocale';\n\nexport type GcsaTreeNode = { key: string; label: ReactNode; disabled?: boolean; children?: GcsaTreeNode[] };\nexport type GcsaTreeProps = { nodes?: GcsaTreeNode[]; expandedKeys?: string[]; selectedKeys?: string[]; multiple?: boolean; onExpandedKeysChange?: (keys: string[]) => void; onSelectedKeysChange?: (keys: string[]) => void; onSelect?: (node: GcsaTreeNode) => void };\n\nexport function GcsaTree({ nodes = [], expandedKeys, selectedKeys, multiple = false, onExpandedKeysChange, onSelectedKeysChange, onSelect }: GcsaTreeProps) {\n const messages = useGcsaLocaleMessages();\n const [internalExpandedKeys, setInternalExpandedKeys] = useState<string[]>(() => expandedKeys ?? []);\n const [internalSelectedKeys, setInternalSelectedKeys] = useState<string[]>(() => selectedKeys ?? []);\n const resolvedExpandedKeys = expandedKeys ?? internalExpandedKeys;\n const resolvedSelectedKeys = selectedKeys ?? internalSelectedKeys;\n\n useEffect(() => {\n if (expandedKeys) setInternalExpandedKeys(expandedKeys);\n }, [expandedKeys]);\n useEffect(() => {\n if (selectedKeys) setInternalSelectedKeys(selectedKeys);\n }, [selectedKeys]);\n\n function renderNode(node: GcsaTreeNode, depth: number, position: number, setSize: number): ReactNode {\n const expanded = resolvedExpandedKeys.includes(node.key);\n const selected = resolvedSelectedKeys.includes(node.key);\n const hasChildren = Boolean(node.children?.length);\n const updateExpanded = () => {\n const next = expanded ? resolvedExpandedKeys.filter(key => key !== node.key) : [...resolvedExpandedKeys, node.key];\n if (expandedKeys === undefined) setInternalExpandedKeys(next);\n onExpandedKeysChange?.(next);\n };\n const childrenId = `gcsa-tree-children-${node.key}`;\n return <div key={node.key} className=\"gcsa-tree__branch\" role=\"treeitem\" aria-level={depth + 1} aria-posinset={position} aria-setsize={setSize} aria-expanded={hasChildren ? expanded : undefined}>\n <div className=\"gcsa-tree__node\" style={{ paddingInlineStart: depth * 20 + 8 } as CSSProperties} data-selected={selected || undefined} data-expanded={hasChildren ? expanded : undefined} data-leaf={!hasChildren || undefined}>\n {hasChildren ? <button type=\"button\" className=\"gcsa-tree__toggle gcsa-focus-ring\" aria-label={expanded ? 'Collapse' : 'Expand'} aria-expanded={expanded} aria-controls={childrenId} onClick={updateExpanded}><GcsaIcon name=\"chevronDown\" size=\"sm\" className={`gcsa-tree__caret${expanded ? ' gcsa-tree__caret--expanded' : ''}`} /></button> : <span className=\"gcsa-tree__spacer\" />}\n <button type=\"button\" className=\"gcsa-tree__label gcsa-focus-ring\" disabled={node.disabled} onClick={() => { const next = multiple ? selected ? resolvedSelectedKeys.filter(key => key !== node.key) : [...resolvedSelectedKeys, node.key] : [node.key]; if (selectedKeys === undefined) setInternalSelectedKeys(next); onSelectedKeysChange?.(next); onSelect?.(node); }}>{node.label}</button>\n {hasChildren && !expanded ? <span className=\"gcsa-tree__summary\" aria-label={`${node.children!.length} 项`}>{node.children!.length} 项</span> : null}\n </div>\n {hasChildren && expanded ? <div id={childrenId} className=\"gcsa-tree__children\" role=\"group\">{node.children!.map((child, index) => renderNode(child, depth + 1, index + 1, node.children!.length))}</div> : null}\n </div>;\n }\n return <div className=\"gcsa-tree\" role=\"tree\" aria-multiselectable={multiple}>{nodes.length ? nodes.map((node, index) => renderNode(node, 0, index + 1, nodes.length)) : <div className=\"gcsa-tree__empty\" role=\"status\">{messages.emptyDefault}</div>}</div>;\n}\n"],"names":["GcsaTree","nodes","expandedKeys","selectedKeys","multiple","onExpandedKeysChange","onSelectedKeysChange","onSelect","messages","useGcsaLocaleMessages","internalExpandedKeys","setInternalExpandedKeys","useState","internalSelectedKeys","setInternalSelectedKeys","resolvedExpandedKeys","resolvedSelectedKeys","useEffect","renderNode","node","depth","position","setSize","expanded","selected","hasChildren","_a","updateExpanded","next","key","childrenId","jsxs","jsx","GcsaIcon","child","index"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type GcsaTypographyProps = {
|
|
3
|
+
variant?: 'title' | 'text';
|
|
4
|
+
level?: 1 | 2 | 3 | 4 | 5;
|
|
5
|
+
className?: string;
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
export declare function GcsaTypography({ variant, level, className, children }: GcsaTypographyProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
function c({
|
|
3
|
+
variant: a = "text",
|
|
4
|
+
level: p = 3,
|
|
5
|
+
className: t,
|
|
6
|
+
children: s
|
|
7
|
+
}) {
|
|
8
|
+
const g = a === "title" ? `gcsa-typography gcsa-typography-title gcsa-typography-title--l${p}` : "gcsa-typography gcsa-typography-text";
|
|
9
|
+
return /* @__PURE__ */ r("div", { className: `gcsa-ui-surface ${g}${t ? ` ${t}` : ""}`, children: s });
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
c as GcsaTypography
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=GcsaTypography.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GcsaTypography.js","sources":["../src/GcsaTypography.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport type GcsaTypographyProps = {\n variant?: 'title' | 'text';\n level?: 1 | 2 | 3 | 4 | 5;\n className?: string;\n children?: ReactNode;\n};\n\nexport function GcsaTypography({\n variant = 'text',\n level = 3,\n className,\n children\n}: GcsaTypographyProps) {\n const classes =\n variant === 'title'\n ? `gcsa-typography gcsa-typography-title gcsa-typography-title--l${level}`\n : 'gcsa-typography gcsa-typography-text';\n\n return (\n <div className={`gcsa-ui-surface ${classes}${className ? ` ${className}` : ''}`}>{children}</div>\n );\n}\n"],"names":["GcsaTypography","variant","level","className","children","classes","jsx"],"mappings":";AASO,SAASA,EAAe;AAAA,EAC7B,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,WAAAC;AAAA,EACA,UAAAC;AACF,GAAwB;AACtB,QAAMC,IACJJ,MAAY,UACR,iEAAiEC,CAAK,KACtE;AAEN,SACE,gBAAAI,EAAC,OAAA,EAAI,WAAW,mBAAmBD,CAAO,GAAGF,IAAY,IAAIA,CAAS,KAAK,EAAE,IAAK,UAAAC,GAAS;AAE/F;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type GcsaUploadProps = {
|
|
2
|
+
files?: File[];
|
|
3
|
+
accept?: string;
|
|
4
|
+
multiple?: boolean;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
buttonLabel?: string;
|
|
7
|
+
hint?: string;
|
|
8
|
+
maxCount?: number;
|
|
9
|
+
maxSize?: number;
|
|
10
|
+
drag?: boolean;
|
|
11
|
+
directory?: boolean;
|
|
12
|
+
dragLabel?: string;
|
|
13
|
+
uploadingLabel?: string;
|
|
14
|
+
uploadErrorLabel?: string;
|
|
15
|
+
upload?: (file: File, onProgress?: (percent: number) => void) => Promise<void> | void;
|
|
16
|
+
retryLabel?: string;
|
|
17
|
+
onProgress?: (file: File, percent: number) => void;
|
|
18
|
+
onUploadStart?: (file: File) => void;
|
|
19
|
+
onUploadSuccess?: (file: File) => void;
|
|
20
|
+
onUploadError?: (file: File, error: unknown) => void;
|
|
21
|
+
className?: string;
|
|
22
|
+
onFilesChange?: (files: File[]) => void;
|
|
23
|
+
};
|
|
24
|
+
export declare function GcsaUpload({ files, accept, multiple, disabled, buttonLabel, hint, maxCount, className, onFilesChange, maxSize, drag, directory, dragLabel, uploadingLabel, uploadErrorLabel, upload, retryLabel, onProgress, onUploadStart, onUploadSuccess, onUploadError }: GcsaUploadProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { jsxs as i, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as P, useState as M } from "react";
|
|
3
|
+
import { GcsaIcon as C } from "./GcsaIcon.js";
|
|
4
|
+
import { useGcsaLocaleMessages as S } from "./hooks/useGcsaLocale.js";
|
|
5
|
+
function sa({
|
|
6
|
+
files: u = [],
|
|
7
|
+
accept: A,
|
|
8
|
+
multiple: w = !1,
|
|
9
|
+
disabled: n,
|
|
10
|
+
buttonLabel: G,
|
|
11
|
+
hint: j,
|
|
12
|
+
maxCount: y,
|
|
13
|
+
className: D,
|
|
14
|
+
onFilesChange: c,
|
|
15
|
+
maxSize: $,
|
|
16
|
+
drag: p = !1,
|
|
17
|
+
directory: H = !1,
|
|
18
|
+
dragLabel: I,
|
|
19
|
+
uploadingLabel: K,
|
|
20
|
+
uploadErrorLabel: O,
|
|
21
|
+
upload: d,
|
|
22
|
+
retryLabel: T,
|
|
23
|
+
onProgress: g,
|
|
24
|
+
onUploadStart: m,
|
|
25
|
+
onUploadSuccess: _,
|
|
26
|
+
onUploadError: f
|
|
27
|
+
}) {
|
|
28
|
+
const r = S(), q = G ?? r.uploadSelectFile, E = I ?? r.uploadDragHint, J = K ?? r.uploadUploading, Q = O ?? r.uploadFailed, V = T ?? r.uploadRetry, k = j || (p ? E : void 0), L = P(null), [W, v] = M(!1), [o, h] = M(/* @__PURE__ */ new Map()), [x, N] = M(/* @__PURE__ */ new Map());
|
|
29
|
+
function b() {
|
|
30
|
+
var a;
|
|
31
|
+
(a = L.current) == null || a.click();
|
|
32
|
+
}
|
|
33
|
+
function X(a) {
|
|
34
|
+
const e = Array.from(a.target.files ?? []);
|
|
35
|
+
a.target.value = "", e.length && R(e);
|
|
36
|
+
}
|
|
37
|
+
function R(a) {
|
|
38
|
+
const e = $ == null ? a : a.filter((l) => l.size <= $);
|
|
39
|
+
let s = w ? [...u, ...e] : e.slice(0, 1);
|
|
40
|
+
y != null && (s = s.slice(0, y)), c == null || c(s), d && s.filter((l) => e.includes(l)).forEach(B);
|
|
41
|
+
}
|
|
42
|
+
function z(a) {
|
|
43
|
+
a.preventDefault(), !(!p || n) && v(!0);
|
|
44
|
+
}
|
|
45
|
+
function Y(a) {
|
|
46
|
+
a.preventDefault(), v(!1), !(!p || n) && R(Array.from(a.dataTransfer.files));
|
|
47
|
+
}
|
|
48
|
+
async function B(a) {
|
|
49
|
+
if (d) {
|
|
50
|
+
h((e) => new Map(e).set(a, "uploading")), N((e) => new Map(e).set(a, 0)), m == null || m(a);
|
|
51
|
+
try {
|
|
52
|
+
await d(a, (e) => {
|
|
53
|
+
const s = Math.max(0, Math.min(100, Math.round(e)));
|
|
54
|
+
N((l) => new Map(l).set(a, s)), g == null || g(a, s);
|
|
55
|
+
}), h((e) => new Map(e).set(a, "success")), N((e) => new Map(e).set(a, 100)), _ == null || _(a);
|
|
56
|
+
} catch (e) {
|
|
57
|
+
h((s) => new Map(s).set(a, "error")), f == null || f(a, e);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function Z(a) {
|
|
62
|
+
c == null || c(u.filter((e, s) => s !== a));
|
|
63
|
+
}
|
|
64
|
+
function F(a) {
|
|
65
|
+
return a < 1024 ? `${a} B` : a < 1024 * 1024 ? `${(a / 1024).toFixed(1)} KB` : `${(a / (1024 * 1024)).toFixed(1)} MB`;
|
|
66
|
+
}
|
|
67
|
+
return /* @__PURE__ */ i(
|
|
68
|
+
"div",
|
|
69
|
+
{
|
|
70
|
+
className: `gcsa-upload${n ? " gcsa-upload--disabled" : ""}${W ? " gcsa-upload--dragging" : ""}${D ? ` ${D}` : ""}`,
|
|
71
|
+
children: [
|
|
72
|
+
/* @__PURE__ */ t(
|
|
73
|
+
"input",
|
|
74
|
+
{
|
|
75
|
+
ref: L,
|
|
76
|
+
type: "file",
|
|
77
|
+
className: "gcsa-upload__native",
|
|
78
|
+
accept: A,
|
|
79
|
+
multiple: w,
|
|
80
|
+
...H ? { webkitdirectory: "" } : {},
|
|
81
|
+
disabled: n,
|
|
82
|
+
onChange: X
|
|
83
|
+
}
|
|
84
|
+
),
|
|
85
|
+
/* @__PURE__ */ i(
|
|
86
|
+
"div",
|
|
87
|
+
{
|
|
88
|
+
className: "gcsa-upload__dropzone",
|
|
89
|
+
role: "button",
|
|
90
|
+
tabIndex: 0,
|
|
91
|
+
onClick: b,
|
|
92
|
+
onKeyDown: (a) => {
|
|
93
|
+
(a.key === "Enter" || a.key === " ") && b();
|
|
94
|
+
},
|
|
95
|
+
onDragEnter: z,
|
|
96
|
+
onDragOver: z,
|
|
97
|
+
onDragLeave: () => v(!1),
|
|
98
|
+
onDrop: Y,
|
|
99
|
+
children: [
|
|
100
|
+
/* @__PURE__ */ t("span", { className: "gcsa-upload__icon", "aria-hidden": "true", children: /* @__PURE__ */ t(C, { name: "plus" }) }),
|
|
101
|
+
/* @__PURE__ */ t("span", { className: "gcsa-upload__title", children: q }),
|
|
102
|
+
k ? /* @__PURE__ */ t("p", { className: "gcsa-upload__hint", children: k }) : null
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
),
|
|
106
|
+
u.length > 0 ? /* @__PURE__ */ t("ul", { className: "gcsa-upload__list", children: u.map((a, e) => /* @__PURE__ */ i("li", { className: "gcsa-upload__item", children: [
|
|
107
|
+
/* @__PURE__ */ t("span", { className: "gcsa-upload__name", children: a.name }),
|
|
108
|
+
/* @__PURE__ */ t("span", { className: "gcsa-upload__size", children: F(a.size) }),
|
|
109
|
+
o.get(a) === "uploading" ? /* @__PURE__ */ i("span", { className: "gcsa-upload__status", role: "status", children: [
|
|
110
|
+
J,
|
|
111
|
+
" ",
|
|
112
|
+
x.get(a) ?? 0,
|
|
113
|
+
"%"
|
|
114
|
+
] }) : null,
|
|
115
|
+
o.get(a) === "error" ? /* @__PURE__ */ t("span", { className: "gcsa-upload__status gcsa-upload__status--error", role: "alert", children: Q }) : null,
|
|
116
|
+
o.get(a) === "uploading" ? /* @__PURE__ */ t("div", { className: "gcsa-upload__progress", "aria-hidden": "true", children: /* @__PURE__ */ t("span", { style: { width: `${x.get(a) ?? 0}%` } }) }) : null,
|
|
117
|
+
o.get(a) === "error" ? /* @__PURE__ */ t(
|
|
118
|
+
"button",
|
|
119
|
+
{
|
|
120
|
+
type: "button",
|
|
121
|
+
className: "gcsa-upload__retry gcsa-focus-ring",
|
|
122
|
+
disabled: n,
|
|
123
|
+
onClick: () => B(a),
|
|
124
|
+
children: V
|
|
125
|
+
}
|
|
126
|
+
) : null,
|
|
127
|
+
/* @__PURE__ */ t(
|
|
128
|
+
"button",
|
|
129
|
+
{
|
|
130
|
+
type: "button",
|
|
131
|
+
className: "gcsa-upload__remove gcsa-focus-ring",
|
|
132
|
+
disabled: n,
|
|
133
|
+
"aria-label": r.uploadRemoveFile,
|
|
134
|
+
onClick: () => Z(e),
|
|
135
|
+
children: r.remove
|
|
136
|
+
}
|
|
137
|
+
)
|
|
138
|
+
] }, `${a.name}-${e}`)) }) : null
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
export {
|
|
144
|
+
sa as GcsaUpload
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=GcsaUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GcsaUpload.js","sources":["../src/GcsaUpload.tsx"],"sourcesContent":["import { useRef, useState } from 'react';\nimport { GcsaIcon } from './GcsaIcon';\nimport { useGcsaLocaleMessages } from './hooks/useGcsaLocale';\n\nexport type GcsaUploadProps = {\n files?: File[];\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n buttonLabel?: string;\n hint?: string;\n maxCount?: number;\n maxSize?: number;\n drag?: boolean;\n directory?: boolean;\n dragLabel?: string;\n uploadingLabel?: string;\n uploadErrorLabel?: string;\n upload?: (file: File, onProgress?: (percent: number) => void) => Promise<void> | void;\n retryLabel?: string;\n onProgress?: (file: File, percent: number) => void;\n onUploadStart?: (file: File) => void;\n onUploadSuccess?: (file: File) => void;\n onUploadError?: (file: File, error: unknown) => void;\n className?: string;\n onFilesChange?: (files: File[]) => void;\n};\n\nexport function GcsaUpload({\n files = [],\n accept,\n multiple = false,\n disabled,\n buttonLabel,\n hint,\n maxCount,\n className,\n onFilesChange,\n maxSize,\n drag = false,\n directory = false,\n dragLabel,\n uploadingLabel,\n uploadErrorLabel,\n upload,\n retryLabel,\n onProgress,\n onUploadStart,\n onUploadSuccess,\n onUploadError\n}: GcsaUploadProps) {\n const messages = useGcsaLocaleMessages();\n const resolvedButtonLabel = buttonLabel ?? messages.uploadSelectFile;\n const resolvedDragLabel = dragLabel ?? messages.uploadDragHint;\n const resolvedUploadingLabel = uploadingLabel ?? messages.uploadUploading;\n const resolvedUploadErrorLabel = uploadErrorLabel ?? messages.uploadFailed;\n const resolvedRetryLabel = retryLabel ?? messages.uploadRetry;\n const resolvedHint = hint || (drag ? resolvedDragLabel : undefined);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [dragging, setDragging] = useState(false);\n const [statuses, setStatuses] = useState<Map<File, 'uploading' | 'success' | 'error'>>(new Map());\n const [progress, setProgress] = useState<Map<File, number>>(new Map());\n\n function openPicker() {\n inputRef.current?.click();\n }\n\n function onNativeChange(event: React.ChangeEvent<HTMLInputElement>) {\n const picked = Array.from(event.target.files ?? []);\n event.target.value = '';\n if (!picked.length) return;\n\n acceptFiles(picked);\n }\n\n function acceptFiles(picked: File[]) {\n const valid = maxSize == null ? picked : picked.filter(file => file.size <= maxSize);\n let next = multiple ? [...files, ...valid] : valid.slice(0, 1);\n if (maxCount != null) next = next.slice(0, maxCount);\n onFilesChange?.(next);\n if (upload) next.filter(file => valid.includes(file)).forEach(uploadFile);\n }\n\n function onDragEnter(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n if (!drag || disabled) return;\n setDragging(true);\n }\n\n function onDrop(event: React.DragEvent<HTMLDivElement>) {\n event.preventDefault();\n setDragging(false);\n if (!drag || disabled) return;\n acceptFiles(Array.from(event.dataTransfer.files));\n }\n\n async function uploadFile(file: File) {\n if (!upload) return;\n setStatuses(current => new Map(current).set(file, 'uploading'));\n setProgress(current => new Map(current).set(file, 0));\n onUploadStart?.(file);\n try {\n await upload(file, percent => {\n const next = Math.max(0, Math.min(100, Math.round(percent)));\n setProgress(current => new Map(current).set(file, next));\n onProgress?.(file, next);\n });\n setStatuses(current => new Map(current).set(file, 'success'));\n setProgress(current => new Map(current).set(file, 100));\n onUploadSuccess?.(file);\n } catch (error) {\n setStatuses(current => new Map(current).set(file, 'error'));\n onUploadError?.(file, error);\n }\n }\n\n function removeAt(index: number) {\n onFilesChange?.(files.filter((_, i) => i !== index));\n }\n\n function formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n\n return (\n <div\n className={`gcsa-upload${disabled ? ' gcsa-upload--disabled' : ''}${dragging ? ' gcsa-upload--dragging' : ''}${className ? ` ${className}` : ''}`}\n >\n <input\n ref={inputRef}\n type=\"file\"\n className=\"gcsa-upload__native\"\n accept={accept}\n multiple={multiple}\n {...(directory ? { webkitdirectory: '' } : {})}\n disabled={disabled}\n onChange={onNativeChange}\n />\n <div\n className=\"gcsa-upload__dropzone\"\n role=\"button\"\n tabIndex={0}\n onClick={openPicker}\n onKeyDown={event => {\n if (event.key === 'Enter' || event.key === ' ') openPicker();\n }}\n onDragEnter={onDragEnter}\n onDragOver={onDragEnter}\n onDragLeave={() => setDragging(false)}\n onDrop={onDrop}\n >\n <span className=\"gcsa-upload__icon\" aria-hidden=\"true\">\n <GcsaIcon name=\"plus\" />\n </span>\n <span className=\"gcsa-upload__title\">{resolvedButtonLabel}</span>\n {resolvedHint ? <p className=\"gcsa-upload__hint\">{resolvedHint}</p> : null}\n </div>\n {files.length > 0 ? (\n <ul className=\"gcsa-upload__list\">\n {files.map((file, index) => (\n <li key={`${file.name}-${index}`} className=\"gcsa-upload__item\">\n <span className=\"gcsa-upload__name\">{file.name}</span>\n <span className=\"gcsa-upload__size\">{formatSize(file.size)}</span>\n {statuses.get(file) === 'uploading' ? (\n <span className=\"gcsa-upload__status\" role=\"status\">\n {resolvedUploadingLabel} {progress.get(file) ?? 0}%\n </span>\n ) : null}\n {statuses.get(file) === 'error' ? (\n <span className=\"gcsa-upload__status gcsa-upload__status--error\" role=\"alert\">\n {resolvedUploadErrorLabel}\n </span>\n ) : null}\n {statuses.get(file) === 'uploading' ? (\n <div className=\"gcsa-upload__progress\" aria-hidden=\"true\">\n <span style={{ width: `${progress.get(file) ?? 0}%` }} />\n </div>\n ) : null}\n {statuses.get(file) === 'error' ? (\n <button\n type=\"button\"\n className=\"gcsa-upload__retry gcsa-focus-ring\"\n disabled={disabled}\n onClick={() => uploadFile(file)}\n >\n {resolvedRetryLabel}\n </button>\n ) : null}\n <button\n type=\"button\"\n className=\"gcsa-upload__remove gcsa-focus-ring\"\n disabled={disabled}\n aria-label={messages.uploadRemoveFile}\n onClick={() => removeAt(index)}\n >\n {messages.remove}\n </button>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n"],"names":["GcsaUpload","files","accept","multiple","disabled","buttonLabel","hint","maxCount","className","onFilesChange","maxSize","drag","directory","dragLabel","uploadingLabel","uploadErrorLabel","upload","retryLabel","onProgress","onUploadStart","onUploadSuccess","onUploadError","messages","useGcsaLocaleMessages","resolvedButtonLabel","resolvedDragLabel","resolvedUploadingLabel","resolvedUploadErrorLabel","resolvedRetryLabel","resolvedHint","inputRef","useRef","dragging","setDragging","useState","statuses","setStatuses","progress","setProgress","openPicker","_a","onNativeChange","event","picked","acceptFiles","valid","file","next","uploadFile","onDragEnter","onDrop","current","percent","error","removeAt","index","_","i","formatSize","bytes","jsxs","jsx","GcsaIcon"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ReactFormExtendedApi } from '@tanstack/react-form';
|
|
2
|
+
export type GcsaFormValues = Record<string, unknown>;
|
|
3
|
+
/**
|
|
4
|
+
* Form instance used by GcsaForm / GcsaFormField.
|
|
5
|
+
* Validator generics are relaxed so schema-backed forms remain assignable.
|
|
6
|
+
*/
|
|
7
|
+
export type GcsaFormApi = ReactFormExtendedApi<GcsaFormValues, any, any, any, any, any, any, any, any, any, any, any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDocumentThemeSync.js","sources":["../../src/hooks/useDocumentThemeSync.ts"],"sourcesContent":["import { createContext } from 'react';\n\n/** Docs / app may provide this to restore document theme after ConfigProvider unmounts. */\nexport const GcsaRestoreDocumentThemeContext = createContext<(() => void) | null>(null);\n\nexport const GCSA_RESTORE_DOCUMENT_THEME_KEY = Symbol('gcsa-restore-document-theme');\n"],"names":["GcsaRestoreDocumentThemeContext","createContext","GCSA_RESTORE_DOCUMENT_THEME_KEY"],"mappings":";AAGO,MAAMA,IAAkCC,EAAmC,IAAI,GAEzEC,IAAkC,OAAO,6BAA6B;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { GcsaButtonSize, GcsaComponentSize } from '@gcsa/console-core';
|
|
2
|
+
export declare const GcsaComponentSizeContext: import('react').Context<GcsaComponentSize>;
|
|
3
|
+
export declare function useGcsaComponentSizeConfig(): GcsaComponentSize;
|
|
4
|
+
export declare function useGcsaComponentSize(propSize?: GcsaComponentSize): GcsaComponentSize;
|
|
5
|
+
export declare function useGcsaButtonSize(propSize?: GcsaButtonSize): GcsaButtonSize;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useContext as t, createContext as i } from "react";
|
|
2
|
+
import { resolveGcsaButtonSize as c, resolveGcsaComponentSize as s, GCSA_DEFAULT_COMPONENT_SIZE as r } from "@gcsa/console-core";
|
|
3
|
+
const u = i(r);
|
|
4
|
+
function n() {
|
|
5
|
+
return t(u);
|
|
6
|
+
}
|
|
7
|
+
function f(e) {
|
|
8
|
+
const o = n();
|
|
9
|
+
return s(e, o);
|
|
10
|
+
}
|
|
11
|
+
function m(e) {
|
|
12
|
+
const o = n();
|
|
13
|
+
return c(e, o);
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
u as GcsaComponentSizeContext,
|
|
17
|
+
m as useGcsaButtonSize,
|
|
18
|
+
f as useGcsaComponentSize,
|
|
19
|
+
n as useGcsaComponentSizeConfig
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=useGcsaComponentSize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGcsaComponentSize.js","sources":["../../src/hooks/useGcsaComponentSize.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport {\n GCSA_DEFAULT_COMPONENT_SIZE,\n resolveGcsaButtonSize,\n resolveGcsaComponentSize,\n type GcsaButtonSize,\n type GcsaComponentSize\n} from '@gcsa/console-core';\n\nexport const GcsaComponentSizeContext = createContext<GcsaComponentSize>(GCSA_DEFAULT_COMPONENT_SIZE);\n\nexport function useGcsaComponentSizeConfig(): GcsaComponentSize {\n return useContext(GcsaComponentSizeContext);\n}\n\nexport function useGcsaComponentSize(propSize?: GcsaComponentSize): GcsaComponentSize {\n const configSize = useGcsaComponentSizeConfig();\n return resolveGcsaComponentSize(propSize, configSize);\n}\n\nexport function useGcsaButtonSize(propSize?: GcsaButtonSize): GcsaButtonSize {\n const configSize = useGcsaComponentSizeConfig();\n return resolveGcsaButtonSize(propSize, configSize);\n}\n"],"names":["GcsaComponentSizeContext","createContext","GCSA_DEFAULT_COMPONENT_SIZE","useGcsaComponentSizeConfig","useContext","useGcsaComponentSize","propSize","configSize","resolveGcsaComponentSize","useGcsaButtonSize","resolveGcsaButtonSize"],"mappings":";;AASO,MAAMA,IAA2BC,EAAiCC,CAA2B;AAE7F,SAASC,IAAgD;AAC9D,SAAOC,EAAWJ,CAAwB;AAC5C;AAEO,SAASK,EAAqBC,GAAiD;AACpF,QAAMC,IAAaJ,EAAA;AACnB,SAAOK,EAAyBF,GAAUC,CAAU;AACtD;AAEO,SAASE,EAAkBH,GAA2C;AAC3E,QAAMC,IAAaJ,EAAA;AACnB,SAAOO,EAAsBJ,GAAUC,CAAU;AACnD;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FieldApi } from '@tanstack/react-form';
|
|
2
|
+
/** TanStack FieldApi with relaxed generics for field binding helpers. */
|
|
3
|
+
export type GcsaAnyFieldApi = FieldApi<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
4
|
+
export declare function gcsaTextFieldBindings(field: GcsaAnyFieldApi): {
|
|
5
|
+
value: string;
|
|
6
|
+
invalid: boolean;
|
|
7
|
+
onBlur: () => void;
|
|
8
|
+
onChange: (value: string) => void;
|
|
9
|
+
};
|
|
10
|
+
export declare function gcsaBooleanFieldBindings(field: GcsaAnyFieldApi): {
|
|
11
|
+
checked: boolean;
|
|
12
|
+
onCheckedChange: (value: boolean) => void;
|
|
13
|
+
};
|
|
14
|
+
export declare function gcsaRadioFieldBindings(field: GcsaAnyFieldApi): {
|
|
15
|
+
value: string;
|
|
16
|
+
invalid: boolean;
|
|
17
|
+
onValueChange: (value: string) => void;
|
|
18
|
+
};
|
|
19
|
+
export declare function gcsaNumberFieldBindings(field: GcsaAnyFieldApi): {
|
|
20
|
+
value: number | null;
|
|
21
|
+
invalid: boolean;
|
|
22
|
+
onBlur: () => void;
|
|
23
|
+
onValueChange: (value: number | null) => void;
|
|
24
|
+
};
|
|
25
|
+
export declare function gcsaFieldError(field: GcsaAnyFieldApi): string | undefined;
|
|
26
|
+
export declare function gcsaFieldInvalid(field: GcsaAnyFieldApi): boolean;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
function r(e) {
|
|
2
|
+
const n = e.state.meta.errors[0];
|
|
3
|
+
return {
|
|
4
|
+
value: e.state.value ?? "",
|
|
5
|
+
invalid: !!n,
|
|
6
|
+
onBlur: () => e.handleBlur(),
|
|
7
|
+
onChange: (a) => e.handleChange(a)
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function t(e) {
|
|
11
|
+
return {
|
|
12
|
+
checked: !!e.state.value,
|
|
13
|
+
onCheckedChange: (n) => e.handleChange(n)
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function o(e) {
|
|
17
|
+
const n = e.state.meta.errors[0];
|
|
18
|
+
return {
|
|
19
|
+
value: e.state.value ?? "",
|
|
20
|
+
invalid: !!n,
|
|
21
|
+
onValueChange: (a) => e.handleChange(a)
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function s(e) {
|
|
25
|
+
const n = e.state.meta.errors[0];
|
|
26
|
+
return {
|
|
27
|
+
value: e.state.value,
|
|
28
|
+
invalid: !!n,
|
|
29
|
+
onBlur: () => e.handleBlur(),
|
|
30
|
+
onValueChange: (a) => e.handleChange(a)
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function l(e) {
|
|
34
|
+
return e.state.meta.errors[0];
|
|
35
|
+
}
|
|
36
|
+
function u(e) {
|
|
37
|
+
return e.state.meta.errors.length > 0;
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
t as gcsaBooleanFieldBindings,
|
|
41
|
+
l as gcsaFieldError,
|
|
42
|
+
u as gcsaFieldInvalid,
|
|
43
|
+
s as gcsaNumberFieldBindings,
|
|
44
|
+
o as gcsaRadioFieldBindings,
|
|
45
|
+
r as gcsaTextFieldBindings
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=useGcsaFormField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGcsaFormField.js","sources":["../../src/hooks/useGcsaFormField.ts"],"sourcesContent":["import type { FieldApi } from '@tanstack/react-form';\n\n/** TanStack FieldApi with relaxed generics for field binding helpers. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type GcsaAnyFieldApi = FieldApi<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;\n\nexport function gcsaTextFieldBindings(field: GcsaAnyFieldApi) {\n const error = field.state.meta.errors[0];\n return {\n value: (field.state.value as string) ?? '',\n invalid: Boolean(error),\n onBlur: () => field.handleBlur(),\n onChange: (value: string) => field.handleChange(value)\n };\n}\n\nexport function gcsaBooleanFieldBindings(field: GcsaAnyFieldApi) {\n return {\n checked: Boolean(field.state.value),\n onCheckedChange: (value: boolean) => field.handleChange(value)\n };\n}\n\nexport function gcsaRadioFieldBindings(field: GcsaAnyFieldApi) {\n const error = field.state.meta.errors[0];\n return {\n value: (field.state.value as string) ?? '',\n invalid: Boolean(error),\n onValueChange: (value: string) => field.handleChange(value)\n };\n}\n\nexport function gcsaNumberFieldBindings(field: GcsaAnyFieldApi) {\n const error = field.state.meta.errors[0];\n return {\n value: field.state.value as number | null,\n invalid: Boolean(error),\n onBlur: () => field.handleBlur(),\n onValueChange: (value: number | null) => field.handleChange(value)\n };\n}\n\nexport function gcsaFieldError(field: GcsaAnyFieldApi) {\n return field.state.meta.errors[0] as string | undefined;\n}\n\nexport function gcsaFieldInvalid(field: GcsaAnyFieldApi) {\n return field.state.meta.errors.length > 0;\n}\n"],"names":["gcsaTextFieldBindings","field","error","value","gcsaBooleanFieldBindings","gcsaRadioFieldBindings","gcsaNumberFieldBindings","gcsaFieldError","gcsaFieldInvalid"],"mappings":"AAMO,SAASA,EAAsBC,GAAwB;AAC5D,QAAMC,IAAQD,EAAM,MAAM,KAAK,OAAO,CAAC;AACvC,SAAO;AAAA,IACL,OAAQA,EAAM,MAAM,SAAoB;AAAA,IACxC,SAAS,EAAQC;AAAA,IACjB,QAAQ,MAAMD,EAAM,WAAA;AAAA,IACpB,UAAU,CAACE,MAAkBF,EAAM,aAAaE,CAAK;AAAA,EAAA;AAEzD;AAEO,SAASC,EAAyBH,GAAwB;AAC/D,SAAO;AAAA,IACL,SAAS,EAAQA,EAAM,MAAM;AAAA,IAC7B,iBAAiB,CAACE,MAAmBF,EAAM,aAAaE,CAAK;AAAA,EAAA;AAEjE;AAEO,SAASE,EAAuBJ,GAAwB;AAC7D,QAAMC,IAAQD,EAAM,MAAM,KAAK,OAAO,CAAC;AACvC,SAAO;AAAA,IACL,OAAQA,EAAM,MAAM,SAAoB;AAAA,IACxC,SAAS,EAAQC;AAAA,IACjB,eAAe,CAACC,MAAkBF,EAAM,aAAaE,CAAK;AAAA,EAAA;AAE9D;AAEO,SAASG,EAAwBL,GAAwB;AAC9D,QAAMC,IAAQD,EAAM,MAAM,KAAK,OAAO,CAAC;AACvC,SAAO;AAAA,IACL,OAAOA,EAAM,MAAM;AAAA,IACnB,SAAS,EAAQC;AAAA,IACjB,QAAQ,MAAMD,EAAM,WAAA;AAAA,IACpB,eAAe,CAACE,MAAyBF,EAAM,aAAaE,CAAK;AAAA,EAAA;AAErE;AAEO,SAASI,EAAeN,GAAwB;AACrD,SAAOA,EAAM,MAAM,KAAK,OAAO,CAAC;AAClC;AAEO,SAASO,EAAiBP,GAAwB;AACvD,SAAOA,EAAM,MAAM,KAAK,OAAO,SAAS;AAC1C;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ZodObject, ZodTypeAny } from 'zod';
|
|
2
|
+
export declare const GcsaFormSchemaContext: import('react').Context<ZodObject<Record<string, ZodTypeAny>, import('zod').UnknownKeysParam, ZodTypeAny, {
|
|
3
|
+
[x: string]: any;
|
|
4
|
+
}, {
|
|
5
|
+
[x: string]: any;
|
|
6
|
+
}> | null>;
|
|
7
|
+
export declare const GCSA_FORM_SCHEMA_KEY: unique symbol;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGcsaFormSchema.js","sources":["../../src/hooks/useGcsaFormSchema.ts"],"sourcesContent":["import { createContext } from 'react';\nimport type { ZodObject, ZodTypeAny } from 'zod';\n\nexport const GcsaFormSchemaContext = createContext<ZodObject<Record<string, ZodTypeAny>> | null>(null);\n\nexport const GCSA_FORM_SCHEMA_KEY = Symbol('gcsa-form-schema');\n"],"names":["GcsaFormSchemaContext","createContext"],"mappings":";AAGO,MAAMA,IAAwBC,EAA4D,IAAI;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { GcsaConsoleLocale } from '@gcsa/console-core';
|
|
2
|
+
export declare const GcsaLocaleContext: import('react').Context<GcsaConsoleLocale>;
|
|
3
|
+
export declare function useGcsaLocale(): GcsaConsoleLocale;
|
|
4
|
+
export declare function useGcsaLocaleMessages(): import('@gcsa/console-core').GcsaConsoleLocaleMessages;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useContext as e, createContext as t } from "react";
|
|
2
|
+
import { getGcsaLocaleMessages as o, GCSA_DEFAULT_LOCALE as s } from "@gcsa/console-core";
|
|
3
|
+
const c = t(s);
|
|
4
|
+
function a() {
|
|
5
|
+
return e(c);
|
|
6
|
+
}
|
|
7
|
+
function u() {
|
|
8
|
+
return o(a());
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
c as GcsaLocaleContext,
|
|
12
|
+
a as useGcsaLocale,
|
|
13
|
+
u as useGcsaLocaleMessages
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useGcsaLocale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGcsaLocale.js","sources":["../../src/hooks/useGcsaLocale.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport {\n GCSA_DEFAULT_LOCALE,\n getGcsaLocaleMessages,\n type GcsaConsoleLocale\n} from '@gcsa/console-core';\n\nexport const GcsaLocaleContext = createContext<GcsaConsoleLocale>(GCSA_DEFAULT_LOCALE);\n\nexport function useGcsaLocale(): GcsaConsoleLocale {\n return useContext(GcsaLocaleContext);\n}\n\nexport function useGcsaLocaleMessages() {\n return getGcsaLocaleMessages(useGcsaLocale());\n}\n"],"names":["GcsaLocaleContext","createContext","GCSA_DEFAULT_LOCALE","useGcsaLocale","useContext","useGcsaLocaleMessages","getGcsaLocaleMessages"],"mappings":";;AAOO,MAAMA,IAAoBC,EAAiCC,CAAmB;AAE9E,SAASC,IAAmC;AACjD,SAAOC,EAAWJ,CAAiB;AACrC;AAEO,SAASK,IAAwB;AACtC,SAAOC,EAAsBH,GAAe;AAC9C;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useState as x, useCallback as o } from "react";
|
|
2
|
+
import { useGcsaZIndex as u } from "./useGcsaZIndex.js";
|
|
3
|
+
function p() {
|
|
4
|
+
const { nextZIndex: t } = u(), [s, c] = x(), e = o(() => {
|
|
5
|
+
const n = t();
|
|
6
|
+
return c(n), n;
|
|
7
|
+
}, [t]), r = o(
|
|
8
|
+
(n) => {
|
|
9
|
+
n && e();
|
|
10
|
+
},
|
|
11
|
+
[e]
|
|
12
|
+
);
|
|
13
|
+
return { zIndex: s, claimZIndex: e, onOpenChange: r };
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
p as useGcsaPopupZIndex
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=useGcsaPopupZIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGcsaPopupZIndex.js","sources":["../../src/hooks/useGcsaPopupZIndex.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { useGcsaZIndex } from './useGcsaZIndex';\n\n/** Select / Dropdown / Popover 等:打开时领取高于当前 overlay 的 z-index */\nexport function useGcsaPopupZIndex() {\n const { nextZIndex } = useGcsaZIndex();\n const [zIndex, setZIndex] = useState<number>();\n\n const claimZIndex = useCallback(() => {\n const next = nextZIndex();\n setZIndex(next);\n return next;\n }, [nextZIndex]);\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n if (open) claimZIndex();\n },\n [claimZIndex]\n );\n\n return { zIndex, claimZIndex, onOpenChange };\n}\n"],"names":["useGcsaPopupZIndex","nextZIndex","useGcsaZIndex","zIndex","setZIndex","useState","claimZIndex","useCallback","next","onOpenChange","open"],"mappings":";;AAIO,SAASA,IAAqB;AACnC,QAAM,EAAE,YAAAC,EAAA,IAAeC,EAAA,GACjB,CAACC,GAAQC,CAAS,IAAIC,EAAA,GAEtBC,IAAcC,EAAY,MAAM;AACpC,UAAMC,IAAOP,EAAA;AACb,WAAAG,EAAUI,CAAI,GACPA;AAAA,EACT,GAAG,CAACP,CAAU,CAAC,GAETQ,IAAeF;AAAA,IACnB,CAACG,MAAkB;AACjB,MAAIA,KAAMJ,EAAA;AAAA,IACZ;AAAA,IACA,CAACA,CAAW;AAAA,EAAA;AAGd,SAAO,EAAE,QAAAH,GAAQ,aAAAG,GAAa,cAAAG,EAAA;AAChC;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type GcsaTextCountFormatter = (info: {
|
|
2
|
+
value: string;
|
|
3
|
+
count: number;
|
|
4
|
+
maxLength?: number;
|
|
5
|
+
}) => string;
|
|
6
|
+
export declare function useGcsaTextCount(options: {
|
|
7
|
+
modelValue: string;
|
|
8
|
+
maxLength?: number;
|
|
9
|
+
showCount?: boolean;
|
|
10
|
+
formatter?: GcsaTextCountFormatter;
|
|
11
|
+
}): {
|
|
12
|
+
showCounter: boolean;
|
|
13
|
+
count: number;
|
|
14
|
+
countText: string;
|
|
15
|
+
isNearLimit: boolean;
|
|
16
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useMemo as a } from "react";
|
|
2
|
+
function f(e) {
|
|
3
|
+
var n;
|
|
4
|
+
const m = a(() => {
|
|
5
|
+
const u = e.maxLength, r = e.showCount;
|
|
6
|
+
return r === !0 ? !0 : r === !1 ? !1 : u != null;
|
|
7
|
+
}, [e.maxLength, e.showCount]), t = ((n = e.modelValue) == null ? void 0 : n.length) ?? 0, l = a(() => {
|
|
8
|
+
const u = e.modelValue ?? "", r = e.maxLength;
|
|
9
|
+
return e.formatter ? e.formatter({ value: u, count: t, maxLength: r }) : r != null ? `${t}/${r}` : String(t);
|
|
10
|
+
}, [e.modelValue, e.formatter, e.maxLength, t]), c = e.maxLength != null && t >= e.maxLength * 0.9;
|
|
11
|
+
return { showCounter: m, count: t, countText: l, isNearLimit: c };
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
f as useGcsaTextCount
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=useGcsaTextCount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGcsaTextCount.js","sources":["../../src/hooks/useGcsaTextCount.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nexport type GcsaTextCountFormatter = (info: {\n value: string;\n count: number;\n maxLength?: number;\n}) => string;\n\nexport function useGcsaTextCount(options: {\n modelValue: string;\n maxLength?: number;\n showCount?: boolean;\n formatter?: GcsaTextCountFormatter;\n}) {\n const showCounter = useMemo(() => {\n const max = options.maxLength;\n const explicit = options.showCount;\n\n if (explicit === true) return true;\n if (explicit === false) return false;\n return max != null;\n }, [options.maxLength, options.showCount]);\n\n const count = options.modelValue?.length ?? 0;\n\n const countText = useMemo(() => {\n const value = options.modelValue ?? '';\n const max = options.maxLength;\n\n if (options.formatter) {\n return options.formatter({ value, count, maxLength: max });\n }\n\n if (max != null) {\n return `${count}/${max}`;\n }\n\n return String(count);\n }, [options.modelValue, options.formatter, options.maxLength, count]);\n\n const isNearLimit = options.maxLength != null && count >= options.maxLength * 0.9;\n\n return { showCounter, count, countText, isNearLimit };\n}\n"],"names":["useGcsaTextCount","options","showCounter","useMemo","max","explicit","count","_a","countText","value","isNearLimit"],"mappings":";AAQO,SAASA,EAAiBC,GAK9B;;AACD,QAAMC,IAAcC,EAAQ,MAAM;AAChC,UAAMC,IAAMH,EAAQ,WACdI,IAAWJ,EAAQ;AAEzB,WAAII,MAAa,KAAa,KAC1BA,MAAa,KAAc,KACxBD,KAAO;AAAA,EAChB,GAAG,CAACH,EAAQ,WAAWA,EAAQ,SAAS,CAAC,GAEnCK,MAAQC,IAAAN,EAAQ,eAAR,gBAAAM,EAAoB,WAAU,GAEtCC,IAAYL,EAAQ,MAAM;AAC9B,UAAMM,IAAQR,EAAQ,cAAc,IAC9BG,IAAMH,EAAQ;AAEpB,WAAIA,EAAQ,YACHA,EAAQ,UAAU,EAAE,OAAAQ,GAAO,OAAAH,GAAO,WAAWF,GAAK,IAGvDA,KAAO,OACF,GAAGE,CAAK,IAAIF,CAAG,KAGjB,OAAOE,CAAK;AAAA,EACrB,GAAG,CAACL,EAAQ,YAAYA,EAAQ,WAAWA,EAAQ,WAAWK,CAAK,CAAC,GAE9DI,IAAcT,EAAQ,aAAa,QAAQK,KAASL,EAAQ,YAAY;AAE9E,SAAO,EAAE,aAAAC,GAAa,OAAAI,GAAO,WAAAE,GAAW,aAAAE,EAAA;AAC1C;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { GcsaConsoleTheme } from '@gcsa/console-core';
|
|
2
|
+
import { GcsaMessageApi } from './useMessage';
|
|
3
|
+
export declare const GcsaMessageContext: import('react').Context<GcsaMessageApi | null>;
|
|
4
|
+
export declare const GcsaThemeContext: import('react').Context<GcsaConsoleTheme>;
|
|
5
|
+
export declare const GcsaConfigProviderContext: import('react').Context<boolean>;
|
|
6
|
+
export declare function useGcsaMessage(): GcsaMessageApi;
|
|
7
|
+
export declare function useGcsaTheme(): GcsaConsoleTheme;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createContext as e, useContext as t } from "react";
|
|
2
|
+
const n = e(null), o = e("dark"), a = e(!1);
|
|
3
|
+
function c() {
|
|
4
|
+
const s = t(n);
|
|
5
|
+
if (!s)
|
|
6
|
+
throw new Error("useGcsaMessage must be used within GcsaConfigProvider");
|
|
7
|
+
return s;
|
|
8
|
+
}
|
|
9
|
+
function i() {
|
|
10
|
+
return t(o);
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
a as GcsaConfigProviderContext,
|
|
14
|
+
n as GcsaMessageContext,
|
|
15
|
+
o as GcsaThemeContext,
|
|
16
|
+
c as useGcsaMessage,
|
|
17
|
+
i as useGcsaTheme
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=useGcsaTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGcsaTheme.js","sources":["../../src/hooks/useGcsaTheme.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { GcsaConsoleTheme } from '@gcsa/console-core';\nimport type { GcsaMessageApi } from './useMessage';\n\nexport const GcsaMessageContext = createContext<GcsaMessageApi | null>(null);\nexport const GcsaThemeContext = createContext<GcsaConsoleTheme>('dark');\nexport const GcsaConfigProviderContext = createContext(false);\n\nexport function useGcsaMessage(): GcsaMessageApi {\n const api = useContext(GcsaMessageContext);\n if (!api) {\n throw new Error('useGcsaMessage must be used within GcsaConfigProvider');\n }\n return api;\n}\n\nexport function useGcsaTheme(): GcsaConsoleTheme {\n return useContext(GcsaThemeContext);\n}\n"],"names":["GcsaMessageContext","createContext","GcsaThemeContext","GcsaConfigProviderContext","useGcsaMessage","api","useContext","useGcsaTheme"],"mappings":";AAIO,MAAMA,IAAqBC,EAAqC,IAAI,GAC9DC,IAAmBD,EAAgC,MAAM,GACzDE,IAA4BF,EAAc,EAAK;AAErD,SAASG,IAAiC;AAC/C,QAAMC,IAAMC,EAAWN,CAAkB;AACzC,MAAI,CAACK;AACH,UAAM,IAAI,MAAM,uDAAuD;AAEzE,SAAOA;AACT;AAEO,SAASE,IAAiC;AAC/C,SAAOD,EAAWJ,CAAgB;AACpC;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type GcsaZIndexApi = {
|
|
2
|
+
next: () => number;
|
|
3
|
+
};
|
|
4
|
+
export declare const GcsaZIndexContext: import('react').Context<GcsaZIndexApi | null>;
|
|
5
|
+
export declare function readToastZIndex(): number;
|
|
6
|
+
export declare function createGcsaZIndexApi(initial?: number): GcsaZIndexApi;
|
|
7
|
+
/**
|
|
8
|
+
* 与 Vue `useGcsaZIndex` 同职责:从 ConfigProvider 的共享计数器领取下一层 z-index。
|
|
9
|
+
* `nextZIndex` 引用稳定,避免 overlay 在每次父级重渲染时重复抢占层级。
|
|
10
|
+
*/
|
|
11
|
+
export declare function useGcsaZIndex(): {
|
|
12
|
+
nextZIndex: () => number;
|
|
13
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useContext as i, useCallback as c, createContext as d } from "react";
|
|
2
|
+
const m = d(null), o = 2e3, l = 1300, a = 2;
|
|
3
|
+
function s(e, t) {
|
|
4
|
+
if (typeof document > "u") return t;
|
|
5
|
+
const n = getComputedStyle(document.documentElement).getPropertyValue(e).trim(), r = Number.parseInt(n, 10);
|
|
6
|
+
return Number.isFinite(r) ? r : t;
|
|
7
|
+
}
|
|
8
|
+
function p() {
|
|
9
|
+
const e = s("--gcsa-z-toast", Number.NaN), t = s("--z-overlay-toast", Number.NaN), n = [e, t, l].filter((r) => Number.isFinite(r));
|
|
10
|
+
return Math.max(...n);
|
|
11
|
+
}
|
|
12
|
+
function x() {
|
|
13
|
+
if (typeof document > "u") return o;
|
|
14
|
+
const e = document.documentElement, t = getComputedStyle(e).getPropertyValue("--gcsa-z-index-initial").trim(), n = Number.parseInt(t, 10);
|
|
15
|
+
if (Number.isFinite(n)) return n;
|
|
16
|
+
const r = getComputedStyle(e).getPropertyValue("--gcsa-z-modal").trim(), u = Number.parseInt(r, 10);
|
|
17
|
+
return Number.isFinite(u) ? u : o;
|
|
18
|
+
}
|
|
19
|
+
function N(e) {
|
|
20
|
+
let t = e ?? x();
|
|
21
|
+
return {
|
|
22
|
+
next() {
|
|
23
|
+
return t += a, t;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function f() {
|
|
28
|
+
const e = i(m);
|
|
29
|
+
return { nextZIndex: c(() => (e == null ? void 0 : e.next()) ?? o + a, [e]) };
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
m as GcsaZIndexContext,
|
|
33
|
+
N as createGcsaZIndexApi,
|
|
34
|
+
p as readToastZIndex,
|
|
35
|
+
f as useGcsaZIndex
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=useGcsaZIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGcsaZIndex.js","sources":["../../src/hooks/useGcsaZIndex.ts"],"sourcesContent":["import { createContext, useCallback, useContext } from 'react';\n\nexport type GcsaZIndexApi = {\n next: () => number;\n};\n\nexport const GcsaZIndexContext = createContext<GcsaZIndexApi | null>(null);\n\nconst FALLBACK_INITIAL = 2000;\nconst FALLBACK_TOAST = 1300;\nconst Z_INDEX_STEP = 2;\n\nfunction readCssZIndex(token: string, fallback: number): number {\n if (typeof document === 'undefined') return fallback;\n const raw = getComputedStyle(document.documentElement).getPropertyValue(token).trim();\n const parsed = Number.parseInt(raw, 10);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nexport function readToastZIndex(): number {\n const toast = readCssZIndex('--gcsa-z-toast', Number.NaN);\n const overlay = readCssZIndex('--z-overlay-toast', Number.NaN);\n const candidates = [toast, overlay, FALLBACK_TOAST].filter(value => Number.isFinite(value));\n return Math.max(...candidates);\n}\n\nfunction readInitialZIndex(): number {\n if (typeof document === 'undefined') return FALLBACK_INITIAL;\n const root = document.documentElement;\n const initial = getComputedStyle(root).getPropertyValue('--gcsa-z-index-initial').trim();\n const parsedInitial = Number.parseInt(initial, 10);\n if (Number.isFinite(parsedInitial)) return parsedInitial;\n const modal = getComputedStyle(root).getPropertyValue('--gcsa-z-modal').trim();\n const parsedModal = Number.parseInt(modal, 10);\n return Number.isFinite(parsedModal) ? parsedModal : FALLBACK_INITIAL;\n}\n\nexport function createGcsaZIndexApi(initial?: number): GcsaZIndexApi {\n let current = initial ?? readInitialZIndex();\n return {\n next() {\n current += Z_INDEX_STEP;\n return current;\n }\n };\n}\n\n/**\n * 与 Vue `useGcsaZIndex` 同职责:从 ConfigProvider 的共享计数器领取下一层 z-index。\n * `nextZIndex` 引用稳定,避免 overlay 在每次父级重渲染时重复抢占层级。\n */\nexport function useGcsaZIndex() {\n const api = useContext(GcsaZIndexContext);\n\n const nextZIndex = useCallback(() => {\n return api?.next() ?? FALLBACK_INITIAL + Z_INDEX_STEP;\n }, [api]);\n\n return { nextZIndex };\n}\n"],"names":["GcsaZIndexContext","createContext","FALLBACK_INITIAL","FALLBACK_TOAST","Z_INDEX_STEP","readCssZIndex","token","fallback","raw","parsed","readToastZIndex","toast","overlay","candidates","value","readInitialZIndex","root","initial","parsedInitial","modal","parsedModal","createGcsaZIndexApi","current","useGcsaZIndex","api","useContext","useCallback"],"mappings":";AAMO,MAAMA,IAAoBC,EAAoC,IAAI,GAEnEC,IAAmB,KACnBC,IAAiB,MACjBC,IAAe;AAErB,SAASC,EAAcC,GAAeC,GAA0B;AAC9D,MAAI,OAAO,WAAa,IAAa,QAAOA;AAC5C,QAAMC,IAAM,iBAAiB,SAAS,eAAe,EAAE,iBAAiBF,CAAK,EAAE,KAAA,GACzEG,IAAS,OAAO,SAASD,GAAK,EAAE;AACtC,SAAO,OAAO,SAASC,CAAM,IAAIA,IAASF;AAC5C;AAEO,SAASG,IAA0B;AACxC,QAAMC,IAAQN,EAAc,kBAAkB,OAAO,GAAG,GAClDO,IAAUP,EAAc,qBAAqB,OAAO,GAAG,GACvDQ,IAAa,CAACF,GAAOC,GAAST,CAAc,EAAE,OAAO,CAAAW,MAAS,OAAO,SAASA,CAAK,CAAC;AAC1F,SAAO,KAAK,IAAI,GAAGD,CAAU;AAC/B;AAEA,SAASE,IAA4B;AACnC,MAAI,OAAO,WAAa,IAAa,QAAOb;AAC5C,QAAMc,IAAO,SAAS,iBAChBC,IAAU,iBAAiBD,CAAI,EAAE,iBAAiB,wBAAwB,EAAE,KAAA,GAC5EE,IAAgB,OAAO,SAASD,GAAS,EAAE;AACjD,MAAI,OAAO,SAASC,CAAa,EAAG,QAAOA;AAC3C,QAAMC,IAAQ,iBAAiBH,CAAI,EAAE,iBAAiB,gBAAgB,EAAE,KAAA,GAClEI,IAAc,OAAO,SAASD,GAAO,EAAE;AAC7C,SAAO,OAAO,SAASC,CAAW,IAAIA,IAAclB;AACtD;AAEO,SAASmB,EAAoBJ,GAAiC;AACnE,MAAIK,IAAUL,KAAWF,EAAA;AACzB,SAAO;AAAA,IACL,OAAO;AACL,aAAAO,KAAWlB,GACJkB;AAAA,IACT;AAAA,EAAA;AAEJ;AAMO,SAASC,IAAgB;AAC9B,QAAMC,IAAMC,EAAWzB,CAAiB;AAMxC,SAAO,EAAE,YAJU0B,EAAY,OACtBF,KAAA,gBAAAA,EAAK,WAAUtB,IAAmBE,GACxC,CAACoB,CAAG,CAAC,EAEC;AACX;"}
|