@ahoo-wang/fetcher-viewer 3.8.0 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/table/cell/AvatarCell.d.ts +1 -1
- package/dist/table/cell/AvatarCell.d.ts.map +1 -1
- package/dist/table/cell/CurrencyCell.d.ts +1 -1
- package/dist/table/cell/CurrencyCell.d.ts.map +1 -1
- package/dist/table/cell/DateTimeCell.d.ts +1 -1
- package/dist/table/cell/DateTimeCell.d.ts.map +1 -1
- package/dist/table/cell/ImageGroupCell.d.ts +1 -1
- package/dist/table/cell/ImageGroupCell.d.ts.map +1 -1
- package/dist/table/cell/LinkCell.d.ts +1 -1
- package/dist/table/cell/LinkCell.d.ts.map +1 -1
- package/dist/table/cell/TagCell.d.ts +1 -1
- package/dist/table/cell/TagCell.d.ts.map +1 -1
- package/dist/table/cell/TagsCell.d.ts +1 -1
- package/dist/table/cell/TagsCell.d.ts.map +1 -1
- package/dist/table/cell/TextCell.d.ts +1 -1
- package/dist/table/cell/TextCell.d.ts.map +1 -1
- package/dist/table/cell/TypedCell.d.ts +0 -3
- package/dist/table/cell/TypedCell.d.ts.map +1 -1
- package/dist/table/types.d.ts +0 -2
- package/dist/table/types.d.ts.map +1 -1
- package/dist/topbar/ColumnHeightBarItem.d.ts +1 -3
- package/dist/topbar/ColumnHeightBarItem.d.ts.map +1 -1
- package/dist/topbar/FilterBarItem.d.ts +1 -3
- package/dist/topbar/FilterBarItem.d.ts.map +1 -1
- package/dist/topbar/RefreshDataBarItem.d.ts +1 -3
- package/dist/topbar/RefreshDataBarItem.d.ts.map +1 -1
- package/dist/topbar/ShareLinkBarItem.d.ts +1 -3
- package/dist/topbar/ShareLinkBarItem.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/filter/operator/locale/operator.zh_CN.ts","../src/filter/operator/types.ts","../src/filter/panel/AvailableFilterSelect.tsx","../src/filter/panel/AvailableFilterSelectModal.tsx","../src/components/TagInput.tsx","../src/components/NumberRange.tsx","../src/components/RemoteSelect.tsx","../src/components/fullscreen/Fullscreen.tsx","../src/filter/utils.ts","../src/filter/useFilterState.ts","../src/filter/AssemblyFilter.tsx","../src/filter/TextFilter.tsx","../src/filter/IdFilter.tsx","../src/filter/NumberFilter.tsx","../src/filter/SelectFilter.tsx","../src/filter/BoolFilter.tsx","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js","../src/filter/DateTimeFilter.tsx","../src/registry/componentRegistry.ts","../src/filter/filterRegistry.ts","../src/filter/FallbackFilter.tsx","../src/filter/TypedFilter.tsx","../src/filter/panel/RemovableTypedFilter.tsx","../src/filter/panel/FilterPanel.tsx","../src/filter/panel/EditableFilterPanel.tsx","../src/table/cell/ActionCell.tsx","../src/table/cell/ActionsCell.tsx","../src/table/cell/utils.ts","../src/table/cell/AvatarCell.tsx","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/calendar.js","../src/table/cell/DateTimeCell.tsx","../src/table/cell/CalendarTime.tsx","../src/table/cell/TextCell.tsx","../src/table/cell/TagCell.tsx","../src/table/cell/TagsCell.tsx","../src/table/cell/ImageCell.tsx","../src/table/cell/ImageGroupCell.tsx","../src/table/cell/LinkCell.tsx","../src/table/cell/currencyFormatter.ts","../src/table/cell/CurrencyCell.tsx","../src/table/cell/cellRegistry.ts","../src/table/cell/TypedCell.tsx","../src/table/setting/TableFieldItem.tsx","../src/viewer/ViewerSharedValueContext.tsx","../src/topbar/BarItem.tsx","../src/topbar/FilterBarItem.tsx","../src/topbar/RefreshDataBarItem.tsx","../src/topbar/ColumnHeightBarItem.tsx","../src/topbar/ShareLinkBarItem.tsx","../src/topbar/barItemRegistry.ts","../src/topbar/TypedBarItem.tsx","../src/topbar/TopBar.tsx","../src/viewer/Viewer.tsx","../src/table/setting/TableSettingPanel.tsx","../src/table/ViewTable.tsx"],"sourcesContent":["/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SelectOperatorLocale } from '../types';\n\nexport const OPERATOR_zh_CN: SelectOperatorLocale = {\n AND: '与',\n OR: '或',\n NOR: '非或',\n ID: '等于',\n IDS: '包含任一',\n AGGREGATE_ID: '等于',\n AGGREGATE_IDS: '包含任一',\n TENANT_ID: '等于',\n OWNER_ID: '等于',\n DELETED: '已删除',\n ALL: '全部',\n EQ: '等于',\n NE: '不等于',\n GT: '大于',\n LT: '小于',\n GTE: '大于等于',\n LTE: '小于等于',\n CONTAINS: '包含',\n IN: '包含任一',\n NOT_IN: '不包含任一',\n BETWEEN: '介于',\n ALL_IN: '全部包含',\n STARTS_WITH: '以...开头',\n ENDS_WITH: '以...结尾',\n ELEM_MATCH: '元素匹配',\n NULL: '为空',\n NOT_NULL: '不为空',\n TRUE: '是',\n FALSE: '否',\n EXISTS: '存在',\n TODAY: '今天',\n BEFORE_TODAY: '今天之前',\n TOMORROW: '明天',\n THIS_WEEK: '本周',\n NEXT_WEEK: '下周',\n LAST_WEEK: '上周',\n THIS_MONTH: '本月',\n LAST_MONTH: '上月',\n RECENT_DAYS: '最近几天',\n EARLIER_DAYS: '几天前',\n RAW: '原始查询',\n UNDEFINED: '未设置',\n};\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Operator } from '@ahoo-wang/fetcher-wow';\n\nexport enum ExtendedOperator {\n UNDEFINED = 'UNDEFINED',\n}\n\nexport type SelectOperator = ExtendedOperator | Operator;\n\nexport type SelectOperatorLocale = {\n [K in Operator]: string;\n} & {\n [K in ExtendedOperator]: string;\n};\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterField, FilterOperatorProps, FilterValueProps } from '../types';\nimport { FilterType } from '../TypedFilter';\nimport { Checkbox, Flex, Typography } from 'antd';\nimport { StyleCapable } from '../../types';\nimport {\n RefAttributes,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\nimport { ActiveFilter } from './FilterPanel';\n\nexport interface AvailableFilter {\n field: FilterField;\n component: FilterType;\n value?: FilterValueProps;\n operator?: FilterOperatorProps;\n}\n\nexport interface AvailableFilterGroup {\n label: string;\n filters: AvailableFilter[];\n}\n\nexport interface AvailableFilterSelectRef {\n getValue(): AvailableFilter[];\n}\n\nexport interface AvailableFilterSelectProps\n extends StyleCapable,\n RefAttributes<AvailableFilterSelectRef> {\n filters: AvailableFilterGroup[];\n activeFilters?: ActiveFilter[];\n}\n\nconst EMPTY_ACTIVE_FILTERS: ActiveFilter[] = [];\n\nexport function AvailableFilterSelect(props: AvailableFilterSelectProps) {\n const { filters, activeFilters = EMPTY_ACTIVE_FILTERS, ref } = props;\n const activeFilterFieldNames = useMemo(() => {\n return activeFilters?.map(activeFilter => activeFilter.field.name).sort();\n }, [activeFilters]);\n const [selectedFilters, setSelectedFilters] = useState<string[]>(\n activeFilterFieldNames,\n );\n useImperativeHandle(ref, () => ({\n getValue(): AvailableFilter[] {\n return props.filters.flatMap(group =>\n group.filters.filter(\n filter =>\n selectedFilters.includes(filter.field.name) &&\n !activeFilters.some(\n activeFilter => activeFilter.field.name === filter.field.name,\n ),\n ),\n );\n },\n }));\n const handleCheck = (filter: AvailableFilter, checked: boolean) => {\n if (checked) {\n setSelectedFilters([...selectedFilters, filter.field.name]);\n } else {\n setSelectedFilters(\n selectedFilters.filter(name => name !== filter.field.name),\n );\n }\n };\n\n useEffect(() => {\n setSelectedFilters(activeFilterFieldNames);\n }, [activeFilterFieldNames]);\n return (\n <>\n {filters.map(group => (\n <div key={group.label}>\n <Typography.Title level={5}>{group.label}</Typography.Title>\n <Flex gap=\"middle\" wrap>\n {group.filters.map(filter => (\n <Checkbox\n key={filter.field.name}\n checked={selectedFilters.includes(filter.field.name)}\n onChange={e => {\n handleCheck(filter, e.target.checked);\n }}\n disabled={activeFilters.some(\n activeFilter => activeFilter.field.name === filter.field.name,\n )}\n >\n {filter.field.label}\n </Checkbox>\n ))}\n </Flex>\n </div>\n ))}\n </>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Modal, ModalProps } from 'antd';\nimport {\n AvailableFilter,\n AvailableFilterSelect,\n AvailableFilterSelectProps,\n AvailableFilterSelectRef,\n} from './AvailableFilterSelect';\nimport React, { useRef } from 'react';\n\nexport interface AvailableFiltersModalProps extends Omit<ModalProps, 'onOk'> {\n availableFilters: Omit<AvailableFilterSelectProps, 'ref'>;\n onSave?: (filters: AvailableFilter[]) => void;\n}\n\nexport function AvailableFilterSelectModal(props: AvailableFiltersModalProps) {\n const availableFilterSelectRef = useRef<AvailableFilterSelectRef>(null);\n const handleOk = () => {\n props?.onSave?.(availableFilterSelectRef.current?.getValue() ?? []);\n };\n return (\n <Modal {...props} onOk={handleOk}>\n <AvailableFilterSelect\n {...props.availableFilters}\n ref={availableFilterSelectRef}\n />\n </Modal>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RefSelectProps, Select, SelectProps } from 'antd';\nimport { RefObject } from 'react';\nimport { Optional } from '../types';\n\nexport interface TagValueItemSerializer<ValueItemType = string> {\n serialize(value: ValueItemType[]): string[];\n\n deserialize(value: string[]): ValueItemType[];\n}\n\nexport const StringTagValueItemSerializer: TagValueItemSerializer = {\n serialize(value: string[]): string[] {\n return value;\n },\n deserialize(value: string[]): string[] {\n return value;\n },\n};\n\nexport const NumberTagValueItemSerializer: TagValueItemSerializer<number> = {\n serialize(value: number[]): string[] {\n return value.map(item => item.toString());\n },\n deserialize(value: string[]): number[] {\n return value.map(item => parseFloat(item));\n },\n};\n\n/**\n * Props for the TagInput component.\n * Extends SelectProps from Antd, excluding 'mode', 'open', and 'suffixIcon' as they are fixed.\n */\nexport interface TagInputProps<ValueItemType = string>\n extends Omit<\n SelectProps,\n 'mode' | 'open' | 'suffixIcon' | 'onChange' | 'value'\n > {\n ref?: RefObject<RefSelectProps>;\n serializer?: TagValueItemSerializer<ValueItemType>;\n onChange?: (value: ValueItemType[]) => void;\n value?: Optional<ValueItemType | ValueItemType[]>;\n}\n\n/**\n * Default token separators for splitting input into tags.\n * Includes common separators like comma, semicolon, and space.\n */\nconst DEFAULT_TOKEN_SEPARATORS = [',', ',', ';', ';', ' '];\n\n/**\n * A tag input component based on Antd's Select in tags mode.\n * Allows users to input multiple tags separated by specified token separators.\n * @param props - The props for the TagInput component.\n * @returns The rendered TagInput component.\n */\nexport function TagInput<ValueItemType = string[]>(\n props: TagInputProps<ValueItemType>,\n) {\n const {\n tokenSeparators = DEFAULT_TOKEN_SEPARATORS,\n allowClear = true,\n serializer = StringTagValueItemSerializer as TagValueItemSerializer<ValueItemType>,\n value,\n onChange,\n ...restProps\n } = props;\n const handleChange = (value: string[]) => {\n if (!onChange) {\n return;\n }\n const parsedValue = serializer.deserialize(value);\n onChange(parsedValue);\n };\n let serializedValue: string[] | null = null;\n if (value) {\n if (Array.isArray(value)) {\n serializedValue = serializer.serialize(value);\n } else {\n serializedValue = serializer.serialize([value]);\n }\n }\n return (\n <Select\n {...restProps}\n mode={'tags'}\n open={false}\n suffixIcon={null}\n allowClear={allowClear}\n tokenSeparators={tokenSeparators}\n value={serializedValue}\n onChange={handleChange}\n />\n );\n}\n\nTagInput.displayName = 'TagInput';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input, InputNumber, Space } from 'antd';\nimport { useState } from 'react';\n\ntype NumberRangeValue = (number | undefined)[];\n\nexport interface NumberRangeProps {\n value?: number | NumberRangeValue;\n defaultValue?: number | NumberRangeValue;\n min?: number;\n max?: number;\n precision?: number;\n placeholder?: string[];\n onChange?: (value: NumberRangeValue) => void;\n}\n\nconst convertToRangeValue = (\n value: number | NumberRangeValue | undefined,\n): NumberRangeValue => {\n if (Array.isArray(value)) {\n return value;\n }\n return [value, undefined];\n};\n\nconst DEFAULT_PLACEHOLDER = ['最小值', '最大值'];\n\nexport function NumberRange(props: NumberRangeProps) {\n const isControlled = props.value !== undefined;\n const [internalValue, setInternalValue] = useState<NumberRangeValue>(\n convertToRangeValue(props.defaultValue),\n );\n const value = isControlled ? convertToRangeValue(props.value) : internalValue;\n const [start, end] = value;\n const handleValueChange = (newValue: NumberRangeValue) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n props.onChange?.(newValue);\n };\n\n const handleStartChange = (newStart: number | null) => {\n const startVal = newStart ?? undefined;\n handleValueChange([startVal, end]);\n };\n\n const handleEndChange = (newEnd: number | null) => {\n const endVal = newEnd ?? undefined;\n handleValueChange([start, endVal]);\n };\n\n const startMax = end !== undefined ? end : props.max;\n const endMin = start !== undefined ? start : props.min;\n const placeholder = props.placeholder\n ? [\n props.placeholder[0] || DEFAULT_PLACEHOLDER[0],\n props.placeholder[1] || DEFAULT_PLACEHOLDER[1],\n ]\n : DEFAULT_PLACEHOLDER;\n return (\n <Space.Compact block>\n <InputNumber\n value={start}\n min={props.min}\n max={startMax}\n precision={props.precision}\n placeholder={placeholder[0]}\n onChange={handleStartChange}\n />\n <Input\n style={{\n width: 30,\n borderInlineStart: 0,\n borderInlineEnd: 0,\n pointerEvents: 'none',\n }}\n placeholder=\"~\"\n disabled\n />\n <InputNumber\n value={end}\n min={endMin}\n max={props.max}\n precision={props.precision}\n placeholder={placeholder[1]}\n onChange={handleEndChange}\n />\n </Space.Compact>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Select, SelectProps, RefSelectProps } from 'antd';\nimport {\n UseDebouncedCallbackOptions,\n useDebouncedExecutePromise,\n} from '@ahoo-wang/fetcher-react';\nimport { StyleCapable } from '../types';\nimport { RefAttributes } from 'react';\nimport { BaseOptionType, DefaultOptionType } from 'antd/lib/select';\n\nexport interface RemoteSelectProps<\n ValueType = any,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType,\n> extends Omit<SelectProps<ValueType, OptionType>, 'loading' | 'onSearch'>,\n RefAttributes<RefSelectProps>,\n StyleCapable {\n debounce?: UseDebouncedCallbackOptions;\n search: (search: string) => Promise<OptionType[]>;\n}\n\nconst DEFAULT_DEBOUNCE = {\n delay: 300,\n leading: false,\n trailing: true,\n};\n\n/**\n * A Select component that loads options from a remote API.\n * Supports automatic fetching, loading states, and error handling.\n */\nexport function RemoteSelect<\n ValueType = any,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType,\n>(props: RemoteSelectProps<ValueType, OptionType>) {\n const {\n debounce = DEFAULT_DEBOUNCE,\n search,\n options,\n ...selectProps\n } = props;\n const { loading, result, run } = useDebouncedExecutePromise<OptionType[]>({\n debounce: debounce,\n });\n const handleSearch = (value: string) => {\n if (value.trim() === '' && result) {\n return;\n }\n run(() => {\n return search(value);\n });\n };\n return (\n <Select<ValueType, OptionType>\n filterOption={false}\n showSearch={true}\n loading={loading}\n onSearch={handleSearch}\n options={result ?? options}\n {...selectProps}\n />\n );\n}\n\nRemoteSelect.displayName = 'RemoteSelect';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button, ButtonProps } from 'antd';\nimport { FullscreenOutlined, FullscreenExitOutlined } from '@ant-design/icons';\nimport { RefObject, ReactNode } from 'react';\nimport { useFullscreen } from '@ahoo-wang/fetcher-react';\n\nexport interface FullScreenProps extends Omit<\n ButtonProps,\n 'icon' | 'onClick' | 'onChange' | 'target'\n> {\n /**\n * Target element to make fullscreen. If not provided, uses the document root element.\n */\n target?: RefObject<HTMLElement | null>;\n /**\n * Callback when fullscreen state changes\n */\n onChange?: (isFullscreen: boolean) => void;\n /**\n * Custom icon for entering fullscreen\n */\n enterIcon?: ReactNode;\n /**\n * Custom icon for exiting fullscreen\n */\n exitIcon?: ReactNode;\n}\n\n/**\n * A button component that toggles fullscreen mode.\n * Follows the existing component patterns in the viewer package.\n */\nexport function Fullscreen(props: FullScreenProps) {\n const {\n target,\n onChange,\n enterIcon = <FullscreenOutlined />,\n exitIcon = <FullscreenExitOutlined />,\n ...buttonProps\n } = props;\n\n const { isFullscreen, toggle } = useFullscreen({\n target,\n onChange,\n });\n\n return (\n <Button\n {...buttonProps}\n icon={isFullscreen ? exitIcon : enterIcon}\n onClick={toggle}\n />\n );\n}\n\nFullscreen.displayName = 'FullScreen';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Validates if a value is a valid \"between\" value, which is an array containing exactly two valid values.\n * This function is typically used in filtering contexts where a range is specified as [min, max].\n *\n * @param value - The value to validate. Should be an array of exactly two elements.\n * @returns {boolean} Returns true if the value is an array of exactly two valid (non-null, non-undefined) values, otherwise false.\n *\n * @example\n * ```typescript\n * isValidBetweenValue([1, 10]); // true - valid range\n * isValidBetweenValue([null, 10]); // false - first value is invalid\n * isValidBetweenValue([1]); // false - not exactly two elements\n * isValidBetweenValue(\"not an array\"); // false - not an array\n * ```\n */\nexport function isValidBetweenValue(value: any): boolean {\n if (!Array.isArray(value)) {\n return false;\n }\n if (value.length !== 2) {\n return false;\n }\n return isValidValue(value[0]) && isValidValue(value[1]);\n}\n\n/**\n * Checks if a value is valid by ensuring it is neither null nor undefined.\n * This is a basic validation function used throughout the filtering system to determine\n * if a value can be considered meaningful for operations.\n *\n * @param value - The value to check for validity. Can be of any type.\n * @returns {boolean} Returns true if the value is not null and not undefined, otherwise false.\n *\n * @example\n * ```typescript\n * isValidValue(42); // true\n * isValidValue(\"hello\"); // true\n * isValidValue(null); // false\n * isValidValue(undefined); // false\n * isValidValue(0); // true - zero is valid\n * isValidValue(\"\"); // true - empty string is valid\n * ```\n */\nexport function isValidValue(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\n/**\n * Retrieves the current timezone of the user's environment.\n * This function uses the Intl.DateTimeFormat API to determine the system's timezone setting.\n *\n * @returns {string} The timezone identifier as a string (e.g., \"America/New_York\", \"Europe/London\").\n *\n * @throws {Error} May throw if the Intl API is not available in the environment.\n *\n * @example\n * ```typescript\n * const tz = currentTimeZone();\n * console.log(tz); // \"America/New_York\" (depending on system settings)\n * ```\n *\n * @note This function relies on the browser's or Node.js environment's Intl support.\n * In environments without Intl support, this may not work as expected.\n */\nexport function currentTimeZone(): string {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Condition,\n ConditionOptions,\n EMPTY_VALUE_OPERATORS,\n Operator,\n} from '@ahoo-wang/fetcher-wow';\nimport { RefAttributes, useImperativeHandle, useState } from 'react';\nimport { FilterRef, FilterValue } from './types';\nimport { Optional } from '../types';\nimport { ExtendedOperator, SelectOperator } from './operator';\nimport { isValidBetweenValue } from './utils';\n\nexport type OnOperatorChangeValueConverter = (\n beforeOperator: SelectOperator,\n afterOperator: SelectOperator,\n value: Optional,\n) => Optional;\nexport type OnChange = (condition: Optional<FilterValue>) => void;\nexport type ValidateValue = (operator: Operator, value: Optional) => boolean;\nexport type ConditionValueParser = (\n operator: Operator,\n value: Optional,\n) => Optional;\nexport type FilterValueConverter = (\n filterValue: FilterValue,\n) => Optional<FilterValue>;\nexport const TrueValidateValue: ValidateValue = (): boolean => {\n return true;\n};\n\nexport interface UseFilterStateOptions extends RefAttributes<FilterRef> {\n field?: string;\n operator: SelectOperator;\n value: Optional;\n conditionOptions?: ConditionOptions;\n onOperatorChangeValueConverter?: OnOperatorChangeValueConverter;\n validate?: ValidateValue;\n conditionValueParser?: ConditionValueParser;\n filterValueConverter?: FilterValueConverter;\n onChange?: OnChange;\n}\n\nexport interface UseFilterStateReturn {\n operator: SelectOperator;\n value: Optional;\n setOperator: (operator: SelectOperator) => void;\n setValue: (value: Optional) => void;\n reset: () => void;\n}\n\nconst defaultValidateValue: ValidateValue = (\n operator: Operator,\n value: any,\n): boolean => {\n if (!operator) return false;\n if (EMPTY_VALUE_OPERATORS.has(operator)) {\n return true;\n }\n if (value === undefined || value === null || value === '') return false;\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n if (operator === Operator.BETWEEN) {\n return isValidBetweenValue(value);\n }\n return true;\n};\n\nconst defaultConditionValueParser: ConditionValueParser = (\n operator: Operator,\n value: any,\n): any => {\n return value;\n};\n\nconst defaultValueConverter: OnOperatorChangeValueConverter = (\n beforeOperator: SelectOperator,\n afterOperator: SelectOperator,\n value: any,\n) => {\n return value;\n};\n\nconst defaultFilterValueConverter: FilterValueConverter = (\n filterValue: FilterValue,\n): Optional<FilterValue> => {\n return filterValue;\n};\n\nexport function useFilterState(\n options: UseFilterStateOptions,\n): UseFilterStateReturn {\n const [operator, setOperator] = useState<SelectOperator>(options.operator);\n const [value, setValue] = useState<Optional>(options.value);\n const validate = options.validate ?? defaultValidateValue;\n const valueParser =\n options.conditionValueParser ?? defaultConditionValueParser;\n const valueConverter =\n options.onOperatorChangeValueConverter ?? defaultValueConverter;\n const filterValueConverter =\n options.filterValueConverter ?? defaultFilterValueConverter;\n const resolveFilterValue = (\n currentOperator: SelectOperator,\n currentValue: Optional,\n ): Optional<FilterValue> => {\n if (currentOperator === ExtendedOperator.UNDEFINED) {\n return undefined;\n }\n if (!validate(currentOperator, currentValue)) {\n return undefined;\n }\n const conditionValue = valueParser(currentOperator, currentValue);\n const condition: Condition = {\n field: options.field,\n operator: currentOperator,\n value: conditionValue,\n options: options.conditionOptions,\n };\n const filterValue: FilterValue = {\n condition,\n };\n return filterValueConverter(filterValue);\n };\n const setOperatorFn = (newOperator: SelectOperator) => {\n const afterValue = valueConverter(operator, newOperator, value);\n setOperator(newOperator);\n setValue(afterValue);\n const filterValue = resolveFilterValue(newOperator, afterValue);\n options.onChange?.(filterValue);\n };\n const setValueFn = (newValue: Optional) => {\n setValue(newValue);\n const filterValue = resolveFilterValue(operator, newValue);\n options.onChange?.(filterValue);\n };\n const resetFn = () => {\n setOperator(options.operator);\n setValue(options.value);\n const filterValue = resolveFilterValue(options.operator, options.value);\n options.onChange?.(filterValue);\n };\n useImperativeHandle<FilterRef, FilterRef>(options.ref, () => ({\n getValue(): FilterValue | undefined {\n return resolveFilterValue(operator, value);\n },\n reset: resetFn,\n }));\n\n return {\n operator,\n value,\n setOperator: setOperatorFn,\n setValue: setValueFn,\n reset: resetFn,\n };\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps, FilterValueProps } from './types';\nimport { OPERATOR_zh_CN } from './operator';\nimport {\n ConditionValueParser,\n FilterValueConverter,\n OnOperatorChangeValueConverter,\n useFilterState,\n UseFilterStateReturn,\n ValidateValue,\n} from './useFilterState';\nimport { Button, Select, Space } from 'antd';\nimport { ReactNode } from 'react';\nimport { SelectOperator } from './operator';\n\nexport type ValueInputRender = (\n filterState: UseFilterStateReturn,\n) => ReactNode | null;\n\nexport interface AssemblyFilterProps<\n ValuePropsType extends FilterValueProps = FilterValueProps,\n> extends FilterProps<ValuePropsType> {\n supportedOperators: SelectOperator[];\n onOperatorChangeValueConverter?: OnOperatorChangeValueConverter;\n validate?: ValidateValue;\n conditionValueParser?: ConditionValueParser;\n filterValueConverter?: FilterValueConverter;\n valueInputRender?: ValueInputRender;\n}\n\nexport function AssemblyFilter({ ref, ...props }: AssemblyFilterProps) {\n const supportedOperators =\n props.operator?.supportedOperators ?? props.supportedOperators;\n // Validate that supportedOperators is not empty\n if (!supportedOperators || supportedOperators.length === 0) {\n throw new Error('supportedOperators must be a non-empty array');\n }\n\n const operatorLocale = props.operator?.locale ?? OPERATOR_zh_CN;\n\n // Determine the initial operator\n let initialOperator = props.operator?.defaultValue;\n\n // If no operator is provided or it's not in supported operators, use the first supported operator\n if (!initialOperator || !supportedOperators.includes(initialOperator)) {\n initialOperator = supportedOperators[0];\n }\n const filterState = useFilterState({\n field: props.field.name,\n operator: initialOperator,\n value: props.value?.defaultValue,\n ref: ref,\n onOperatorChangeValueConverter: props.onOperatorChangeValueConverter,\n validate: props.validate,\n conditionValueParser: props.conditionValueParser,\n filterValueConverter: props.filterValueConverter,\n onChange: props.onChange,\n });\n const valueInput = props.valueInputRender?.(filterState);\n const options = supportedOperators.map(supportedOperator => ({\n value: supportedOperator,\n label: operatorLocale[supportedOperator],\n }));\n return (\n <Space.Compact block style={props.style} className={props.className}>\n <Button {...props.label}>{props.field.label}</Button>\n <Select\n style={{ minWidth: 120 }}\n onChange={filterState.setOperator}\n {...props.operator}\n value={filterState.operator}\n options={options}\n ></Select>\n {valueInput}\n </Space.Compact>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { Input } from 'antd';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport { TagInput } from '../components';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\nimport { UseFilterStateReturn } from './useFilterState';\n\nexport const TEXT_FILTER = 'text';\n\nexport function TextFilter(props: FilterProps) {\n const assemblyFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [\n Operator.EQ,\n Operator.NE,\n Operator.CONTAINS,\n Operator.STARTS_WITH,\n Operator.ENDS_WITH,\n Operator.IN,\n Operator.NOT_IN,\n ],\n valueInputRender: (filterState: UseFilterStateReturn) => {\n switch (filterState.operator) {\n case Operator.IN:\n case Operator.NOT_IN: {\n return (\n <TagInput\n value={filterState.value}\n onChange={filterState.setValue}\n {...props.value}\n />\n );\n }\n default: {\n return (\n <Input\n value={filterState.value}\n onChange={e => filterState.setValue(e.target.value)}\n allowClear\n {...props.value}\n />\n );\n }\n }\n },\n };\n return <AssemblyFilter {...assemblyFilterProps}></AssemblyFilter>;\n}\n\nTextFilter.displayName = 'TextFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { Input } from 'antd';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport { TagInput } from '../components';\nimport {\n OnOperatorChangeValueConverter,\n UseFilterStateReturn,\n} from './useFilterState';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\n\nexport const ID_FILTER = 'id';\n\nexport const IdOnOperatorChangeValueConverter: OnOperatorChangeValueConverter =\n (beforeOperator, afterOperator, value) => {\n if (value === undefined || value === null) {\n return value;\n }\n if (afterOperator === Operator.ID) {\n if (Array.isArray(value)) {\n return value[0];\n }\n return value;\n }\n if (Array.isArray(value)) {\n return value;\n }\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return [];\n }\n return [trimmedValue];\n };\n\nexport function IdFilter(props: FilterProps) {\n const assemblyFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [Operator.ID, Operator.IDS],\n onOperatorChangeValueConverter: IdOnOperatorChangeValueConverter,\n valueInputRender: (filterState: UseFilterStateReturn) => {\n return filterState.operator === Operator.ID ? (\n <Input\n value={filterState.value}\n onChange={e => filterState.setValue(e.target.value)}\n allowClear\n {...props.value}\n />\n ) : (\n <TagInput\n value={filterState.value}\n onChange={filterState.setValue}\n {...props.value}\n />\n );\n },\n };\n return <AssemblyFilter {...assemblyFilterProps}></AssemblyFilter>;\n}\n\nIdFilter.displayName = 'IdConditionFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { InputNumber } from 'antd';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport { NumberTagValueItemSerializer, TagInput } from '../components';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\nimport { UseFilterStateReturn } from './useFilterState';\nimport { NumberRange } from '../components';\n\nexport const NUMBER_FILTER = 'number';\n\nexport function NumberFilter(props: FilterProps) {\n const assemblyFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [\n Operator.EQ,\n Operator.NE,\n Operator.GT,\n Operator.LT,\n Operator.GTE,\n Operator.LTE,\n Operator.BETWEEN,\n Operator.IN,\n Operator.NOT_IN,\n ],\n validate: (operator, value) => {\n if (operator === Operator.BETWEEN) {\n if (!Array.isArray(value)) {\n return false;\n }\n return value[0] !== undefined && value[1] !== undefined;\n }\n return value != undefined;\n },\n valueInputRender: (filterState: UseFilterStateReturn) => {\n switch (filterState.operator) {\n case Operator.IN:\n case Operator.NOT_IN: {\n return (\n <TagInput\n value={filterState.value}\n serializer={NumberTagValueItemSerializer}\n onChange={e => filterState.setValue(e)}\n {...props.value}\n />\n );\n }\n case Operator.BETWEEN: {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { placeholder, ...restValue } = props.value ?? {};\n return (\n <NumberRange\n value={filterState.value}\n onChange={filterState.setValue}\n {...restValue}\n ></NumberRange>\n );\n }\n default: {\n const { defaultValue, ...restValue } = props.value ?? {};\n const defaultInputNumber = Array.isArray(defaultValue)\n ? defaultValue[0]\n : defaultValue;\n const value = Array.isArray(filterState.value)\n ? filterState.value[0]\n : filterState.value;\n return (\n <InputNumber<number>\n value={value}\n defaultValue={defaultInputNumber}\n onChange={v => {\n filterState.setValue(v ?? undefined);\n }}\n {...restValue}\n ></InputNumber>\n );\n }\n }\n },\n };\n return <AssemblyFilter {...assemblyFilterProps}></AssemblyFilter>;\n}\n\nNumberFilter.displayName = 'NumberFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps, FilterValueProps } from './types';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport { UseFilterStateReturn } from './useFilterState';\nimport { Select, SelectProps } from 'antd';\n\nexport const SELECT_FILTER = 'select';\n\nexport interface SelectFilterValueProps\n extends FilterValueProps,\n Omit<\n SelectProps,\n | 'defaultValue'\n | 'mode'\n | 'value'\n | 'allowClear'\n | 'onChange'\n | 'placeholder'\n > {}\n\nexport function SelectFilter(props: FilterProps<SelectFilterValueProps>) {\n const assemblyFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [Operator.IN, Operator.NOT_IN],\n valueInputRender: (filterState: UseFilterStateReturn) => {\n return (\n <Select\n mode={'multiple'}\n value={filterState.value}\n onChange={filterState.setValue}\n allowClear\n {...props.value}\n />\n );\n },\n };\n return <AssemblyFilter {...assemblyFilterProps}></AssemblyFilter>;\n}\n\nSelectFilter.displayName = 'SelectFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport { ExtendedOperator } from './operator';\nimport { TrueValidateValue } from './useFilterState';\n\nexport const BOOL_FILTER = 'bool';\n\nexport function BoolFilter(props: FilterProps) {\n const assemblyFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [\n ExtendedOperator.UNDEFINED,\n Operator.TRUE,\n Operator.FALSE,\n ],\n validate: TrueValidateValue,\n };\n return <AssemblyFilter {...assemblyFilterProps}></AssemblyFilter>;\n}\n\nBoolFilter.displayName = 'BoolFilter';\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport {\n ConditionValueParser,\n OnOperatorChangeValueConverter,\n UseFilterStateReturn,\n} from './useFilterState';\nimport { DatePicker, InputNumber } from 'antd';\nimport { Optional } from '../types';\nimport { Dayjs, isDayjs } from 'dayjs';\nimport { ExtendedOperator, SelectOperator } from './operator';\n\nexport const DATE_TIME_FILTER_NAME = 'datetime';\nconst TIME_FORMAT = 'HH:mm:ss';\nconst DateTimeNumberValueOperators = new Set([\n Operator.RECENT_DAYS,\n Operator.EARLIER_DAYS,\n]);\n\nconst DateTimeDayjsValueOperators = new Set([\n Operator.GT,\n Operator.LT,\n Operator.GTE,\n Operator.LTE,\n]);\n\nexport const DateTimeOnOperatorChangeValueConverter: OnOperatorChangeValueConverter =\n (\n beforeOperator: SelectOperator,\n afterOperator: SelectOperator,\n value: Optional<number | Dayjs | Dayjs[]>,\n ) => {\n if (\n beforeOperator === ExtendedOperator.UNDEFINED ||\n afterOperator === ExtendedOperator.UNDEFINED\n ) {\n return value;\n }\n if (\n DateTimeNumberValueOperators.has(beforeOperator) &&\n DateTimeNumberValueOperators.has(afterOperator)\n ) {\n return value;\n }\n if (DateTimeDayjsValueOperators.has(beforeOperator)) {\n if (DateTimeDayjsValueOperators.has(afterOperator)) {\n return value;\n }\n if (afterOperator === Operator.BETWEEN) {\n return [value, undefined];\n }\n }\n return undefined;\n };\nexport const TimestampConditionValueParser: ConditionValueParser = (\n operator: Operator,\n value: Optional<number | Dayjs | Dayjs[]>,\n) => {\n if (!value) {\n return undefined;\n }\n\n if (operator === Operator.BETWEEN) {\n if (!Array.isArray(value) || value.length !== 2) {\n return undefined;\n }\n return [value[0]?.valueOf(), value[1]?.valueOf()];\n }\n if (DateTimeNumberValueOperators.has(operator)) {\n return value;\n }\n if (operator === Operator.BEFORE_TODAY) {\n if (isDayjs(value)) {\n return value.format(TIME_FORMAT);\n }\n return undefined;\n }\n if (isDayjs(value)) {\n return value.valueOf();\n }\n return undefined;\n};\n\nexport function DateTimeFilter(props: FilterProps) {\n const assemblyConditionFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [\n Operator.GT,\n Operator.LT,\n Operator.GTE,\n Operator.LTE,\n Operator.BETWEEN,\n Operator.TODAY,\n Operator.BEFORE_TODAY,\n Operator.TOMORROW,\n Operator.THIS_WEEK,\n Operator.NEXT_WEEK,\n Operator.LAST_WEEK,\n Operator.THIS_MONTH,\n Operator.LAST_MONTH,\n Operator.RECENT_DAYS,\n Operator.EARLIER_DAYS,\n ],\n onOperatorChangeValueConverter: DateTimeOnOperatorChangeValueConverter,\n conditionValueParser: TimestampConditionValueParser,\n valueInputRender: (filterState: UseFilterStateReturn) => {\n switch (filterState.operator) {\n case Operator.BETWEEN: {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { placeholder, ...rangResetProps } = props.value || {};\n return (\n <DatePicker.RangePicker\n value={filterState.value}\n onChange={filterState.setValue}\n {...rangResetProps}\n />\n );\n }\n case Operator.TODAY:\n case Operator.TOMORROW:\n case Operator.THIS_WEEK:\n case Operator.NEXT_WEEK:\n case Operator.LAST_WEEK:\n case Operator.THIS_MONTH:\n case Operator.LAST_MONTH: {\n return null;\n }\n case Operator.RECENT_DAYS:\n case Operator.EARLIER_DAYS: {\n return (\n <InputNumber\n value={filterState.value}\n min={1}\n onChange={filterState.setValue}\n {...props.value}\n />\n );\n }\n case Operator.BEFORE_TODAY: {\n return (\n <DatePicker\n picker={'time'}\n value={filterState.value}\n onChange={filterState.setValue}\n {...props.value}\n />\n );\n }\n default: {\n return (\n <DatePicker\n value={filterState.value}\n picker={'date'}\n showNow={false}\n onChange={filterState.setValue}\n {...props.value}\n />\n );\n }\n }\n },\n };\n return <AssemblyFilter {...assemblyConditionFilterProps}></AssemblyFilter>;\n}\n\nDateTimeFilter.displayName = 'DateTimeFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FunctionComponent } from 'react';\n\n/**\n * Interface for objects that have a type property.\n * This is used to identify components or other typed entities in the registry.\n *\n * @template Type - The type of the type property, defaults to string.\n */\nexport interface TypeCapable<Type = string> {\n /**\n * The type identifier for this object.\n */\n type: Type;\n}\n\n/**\n * A registry class for storing and retrieving React components by type.\n * This allows dynamic component resolution based on type identifiers, useful for\n * rendering different components based on data types or configurations.\n *\n * @template Type - The type used as keys in the registry (e.g., string, number).\n * @template Props - The props type that all registered components must accept.\n */\nexport class TypedComponentRegistry<Type, Props> {\n private readonly registry: Map<Type, FunctionComponent<Props>> = new Map();\n\n /**\n * Gets an array of all registered types in the registry.\n *\n * @returns An array containing all type keys currently registered.\n */\n get types(): Type[] {\n return Array.from(this.registry.keys());\n }\n\n /**\n * Gets an array of all type-component pairs in the registry.\n *\n * @returns An array of tuples containing [type, component] pairs.\n */\n get entries(): [Type, FunctionComponent<Props>][] {\n return Array.from(this.registry.entries());\n }\n\n /**\n * Gets the number of registered components in the registry.\n *\n * @returns The total count of registered components.\n */\n get size(): number {\n return this.registry.size;\n }\n\n /**\n * Checks if a component is registered for the given type.\n *\n * @param {Type} type - The type to check for registration.\n * @returns {boolean} True if a component is registered for the type, false otherwise.\n */\n has(type: Type): boolean {\n return this.registry.has(type);\n }\n\n /**\n * Removes all registered components from the registry.\n */\n clear(): void {\n this.registry.clear();\n }\n\n /**\n * Registers a React component for a specific type.\n * Each type can only have one component registered.\n *\n * @param {Type} type - The type identifier for the component.\n * @param {FunctionComponent<Props>} component - The React functional component to register.\n * @throws {Error} If a component is already registered for the given type.\n *\n * @example\n * ```typescript\n * const registry = new TypedComponentRegistry<string, { value: string }>();\n * registry.register('text', ({ value }) => <span>{value}</span>);\n * ```\n */\n register(type: Type, component: FunctionComponent<Props>): void {\n if (this.registry.has(type)) {\n throw new Error(`Component for type ${type} already registered.`);\n }\n this.registry.set(type, component);\n }\n\n /**\n * Unregisters the component for the given type.\n * If no component is registered for the type, this operation does nothing.\n *\n * @param {Type} type - The type identifier to unregister.\n */\n unregister(type: Type): void {\n this.registry.delete(type);\n }\n\n /**\n * Retrieves the component registered for the given type.\n *\n * @param {Type} type - The type identifier to look up.\n * @returns {FunctionComponent<Props> | undefined} The registered React component, or undefined if not found.\n */\n get(type: Type): FunctionComponent<Props> | undefined {\n return this.registry.get(type);\n }\n\n /**\n * Creates a new TypedComponentRegistry instance and optionally registers initial components.\n *\n * @template Type - The type used as keys.\n * @template Props - The props type for components.\n * @param {Array<[Type, FunctionComponent<Props>]>} [components=[]] - An optional array of [type, component] pairs to register initially.\n * @returns {TypedComponentRegistry<Type, Props>} A new TypedComponentRegistry instance with the specified components registered.\n *\n * @example\n * ```typescript\n * const registry = TypedComponentRegistry.create([\n * ['text', ({ value }) => <span>{value}</span>],\n * ['number', ({ value }) => <strong>{value}</strong>]\n * ]);\n * ```\n */\n static create<Type, Props>(\n components: [Type, FunctionComponent<Props>][] = [],\n ): TypedComponentRegistry<Type, Props> {\n const registry = new TypedComponentRegistry<Type, Props>();\n components.forEach(([type, component]) =>\n registry.register(type, component),\n );\n return registry;\n }\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { TEXT_FILTER, TextFilter } from './TextFilter';\nimport { ID_FILTER, IdFilter } from './IdFilter';\nimport { NUMBER_FILTER, NumberFilter } from './NumberFilter';\nimport { FilterType } from './TypedFilter';\nimport { SELECT_FILTER, SelectFilter } from './SelectFilter';\nimport { BOOL_FILTER, BoolFilter } from './BoolFilter';\nimport { DATE_TIME_FILTER_NAME, DateTimeFilter } from './DateTimeFilter';\nimport { TypedComponentRegistry } from '../registry';\n\n/**\n * A centralized registry containing all available filter components for the viewer package.\n *\n * This registry provides a mapping from filter type identifiers to their corresponding React components,\n * enabling dynamic filter component resolution based on filter types. It includes all standard filter\n * types supported by the viewer: ID, text, number, select, boolean, and date-time filters.\n *\n * The registry is pre-populated with all built-in filter components and can be used to retrieve\n * filter components by their type names for rendering in filter interfaces.\n *\n * @example\n * ```typescript\n * import { filterRegistry } from './filterRegistry';\n *\n * // Get a text filter component\n * const TextFilterComponent = filterRegistry.get('text');\n *\n * // Check if a filter type is available\n * if (filterRegistry.has('number')) {\n * const NumberFilterComponent = filterRegistry.get('number');\n * // Render the component\n * }\n *\n * // Get all available filter types\n * const availableTypes = filterRegistry.types; // ['id', 'text', 'number', 'select', 'bool', 'dateTime']\n * ```\n *\n * @example\n * ```typescript\n * // Using in a React component\n * import React from 'react';\n * import { filterRegistry } from './filterRegistry';\n *\n * interface FilterRendererProps {\n * filterType: string;\n * filterProps: FilterProps;\n * }\n *\n * const FilterRenderer: React.FC<FilterRendererProps> = ({ filterType, filterProps }) => {\n * const FilterComponent = filterRegistry.get(filterType);\n *\n * if (!FilterComponent) {\n * return <div>Unknown filter type: {filterType}</div>;\n * }\n *\n * return <FilterComponent {...filterProps} />;\n * };\n * ```\n */\nexport const filterRegistry = TypedComponentRegistry.create<\n FilterType,\n FilterProps\n>([\n [ID_FILTER, IdFilter],\n [TEXT_FILTER, TextFilter],\n [NUMBER_FILTER, NumberFilter],\n [SELECT_FILTER, SelectFilter],\n [BOOL_FILTER, BoolFilter],\n [DATE_TIME_FILTER_NAME, DateTimeFilter],\n]);\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Alert } from 'antd';\nimport React, { useImperativeHandle } from 'react';\nimport { TypedFilterProps } from './TypedFilter';\nimport { FilterValue } from './types';\n\nexport function FallbackFilter({ type, ref }: TypedFilterProps) {\n useImperativeHandle(ref, () => ({\n getValue(): FilterValue | undefined {\n return undefined;\n },\n reset(): void {\n // No-op for fallback filter\n },\n }));\n return (\n <Alert\n title={`Unsupported filter type:[${type}]`}\n type=\"warning\"\n showIcon\n />\n );\n}\n\nFallbackFilter.displayName = 'FallbackFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo } from 'react';\nimport { FilterProps } from './types';\nimport { filterRegistry } from './filterRegistry';\nimport { FallbackFilter } from './FallbackFilter';\nimport { TypeCapable } from '../registry';\n\nexport type FilterType = string;\n\nexport interface TypedFilterProps\n extends FilterProps,\n TypeCapable<FilterType> {\n}\n\nconst DEFAULT_VALUE_STYLE: React.CSSProperties = {\n flex: 'auto',\n};\n\nexport function TypedFilter(props: TypedFilterProps) {\n const FilterComponent = useMemo(() => {\n return filterRegistry.get(props.type) || FallbackFilter;\n }, [props.type]);\n const valueProps = {\n style: DEFAULT_VALUE_STYLE,\n ...props.value,\n };\n const filterProps = {\n ...props,\n value: valueProps,\n };\n return React.createElement(FilterComponent, filterProps);\n}\n\nTypedFilter.displayName = 'TypedFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TypedFilter, TypedFilterProps } from '../TypedFilter';\nimport { MinusOutlined } from '@ant-design/icons';\nimport { Button, Space } from 'antd';\nimport React, { useState } from 'react';\n\nexport interface RemovableTypedFilterProps extends TypedFilterProps {\n onRemove?: () => void;\n}\n\nexport function RemovableTypedFilter(props: RemovableTypedFilterProps) {\n const { onRemove, ...rest } = props;\n const [showRemove, setShowRemove] = useState(false);\n if (!onRemove) {\n return <TypedFilter {...rest} />;\n }\n return (\n <Space\n onMouseOver={() => setShowRemove(true)}\n onMouseOut={() => setShowRemove(false)}\n >\n <TypedFilter {...rest} />\n {showRemove && (\n <Button\n type=\"dashed\"\n shape=\"circle\"\n size={'small'}\n onClick={onRemove}\n icon={<MinusOutlined />}\n ></Button>\n )}\n </Space>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { Key, RefAttributes, useImperativeHandle } from 'react';\nimport { TypedFilterProps } from '../TypedFilter';\nimport { FilterRef } from '../types';\nimport { and, Condition } from '@ahoo-wang/fetcher-wow';\nimport { Button, Col, Row, Space, ColProps, ButtonProps } from 'antd';\nimport { ClearOutlined, SearchOutlined } from '@ant-design/icons';\nimport { useRefs } from '@ahoo-wang/fetcher-react';\nimport { RemovableTypedFilter } from './RemovableTypedFilter';\nimport { RowProps } from 'antd/es/grid/row';\n\nexport interface ActiveFilter\n extends Omit<TypedFilterProps, 'onChange' | 'ref'> {\n key: Key;\n onRemove?: () => void;\n}\n\nexport interface FilterPanelRef {\n /**\n * Triggers the search action using the current filter values.\n * Typically calls the `onSearch` callback with the composed filter condition.\n */\n search(): void;\n\n /**\n * Resets all filter values to their initial state.\n * Typically clears the filters and triggers any associated reset logic.\n */\n reset(): void;\n}\n\nexport interface FilterPanelProps extends RefAttributes<FilterPanelRef> {\n row?: RowProps;\n col?: ColProps;\n actionsCol?: ColProps;\n filters: ActiveFilter[];\n actions?: React.ReactNode;\n onSearch?: (condition: Condition) => void;\n resetButton?: boolean | Omit<ButtonProps, 'onClick'>;\n searchButton?: Omit<ButtonProps, 'onClick'>;\n}\n\nconst DEFAULT_ROW_PROPS: RowProps = {\n gutter: [8, 8],\n wrap: true,\n};\n\nconst DEFAULT_COL_PROPS: ColProps = {\n xxl: 6,\n xl: 8,\n lg: 12,\n md: 12,\n sm: 24,\n xs: 24,\n};\n\nconst DEFAULT_ACTIONS_COL_PROPS: ColProps = DEFAULT_COL_PROPS;\n\nexport function FilterPanel(props: FilterPanelProps) {\n const {\n ref,\n row = DEFAULT_ROW_PROPS,\n col = DEFAULT_COL_PROPS,\n actionsCol = DEFAULT_ACTIONS_COL_PROPS,\n filters,\n onSearch,\n actions,\n resetButton,\n searchButton,\n } = props;\n const filterRefs = useRefs<FilterRef>();\n const handleSearch = () => {\n if (!onSearch) {\n return;\n }\n const conditions = Array.from(filterRefs.values())\n .map(ref => ref?.getValue()?.condition)\n .filter(Boolean);\n const finalCondition: Condition = and(...conditions);\n onSearch(finalCondition);\n };\n const handleReset = () => {\n for (const filterRef of filterRefs.values()) {\n filterRef.reset();\n }\n };\n useImperativeHandle<FilterPanelRef, FilterPanelRef>(ref, () => ({\n search: handleSearch,\n reset: handleReset,\n }));\n const showResetButton = resetButton !== false;\n const resetButtonProps = typeof resetButton === 'object' ? resetButton : {};\n return (\n <>\n <Row {...row}>\n {filters.map(filter => {\n return (\n <Col {...col} key={filter.key}>\n <RemovableTypedFilter\n key={filter.key}\n type={filter.type}\n field={filter.field}\n operator={filter.operator}\n value={filter.value}\n onRemove={filter.onRemove}\n ref={filterRefs.register(filter.key)}\n ></RemovableTypedFilter>\n </Col>\n );\n })}\n <Col {...actionsCol}>\n <Space.Compact>\n {actions}\n {showResetButton && (\n <Button\n icon={<ClearOutlined />}\n onClick={handleReset}\n {...resetButtonProps}\n >\n {resetButtonProps?.children || 'Reset'}\n </Button>\n )}\n <Button\n type=\"primary\"\n icon={<SearchOutlined />}\n onClick={handleSearch}\n {...searchButton}\n >\n {searchButton?.children || 'Search'}\n </Button>\n </Space.Compact>\n </Col>\n </Row>\n </>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useState, Key } from 'react';\nimport { Button } from 'antd';\nimport { AvailableFilterGroup, AvailableFilter } from './AvailableFilterSelect';\nimport { AvailableFilterSelectModal } from './AvailableFilterSelectModal';\nimport { useRequestId } from '@ahoo-wang/fetcher-react';\nimport {\n ActiveFilter,\n FilterPanelProps,\n FilterPanel,\n} from './FilterPanel';\n\nexport interface EditableFilterPanelProps extends Omit<\n FilterPanelProps,\n 'actions'\n> {\n availableFilters: AvailableFilterGroup[];\n}\n\nexport function EditableFilterPanel(props: EditableFilterPanelProps) {\n const { ref, row, col, availableFilters, filters, onSearch } = props;\n const [activeFilters, setActiveFilters] = useState(filters);\n const [modalOpen, setModalOpen] = useState(false);\n const generator = useRequestId();\n\n const handleAddFilter = (selectedAvailableFilters: AvailableFilter[]) => {\n if (selectedAvailableFilters.length === 0) {\n setModalOpen(false);\n return;\n }\n const newFilters = selectedAvailableFilters.map(\n available =>\n ({\n key: generator.generate(),\n type: available.component,\n field: available.field,\n value: available.value,\n operator: available.operator,\n }) as ActiveFilter,\n );\n setActiveFilters([...activeFilters, ...newFilters]);\n setModalOpen(false);\n };\n\n const removeFilter = (key: Key) => {\n const newFilters = activeFilters.filter(f => f.key !== key);\n setActiveFilters(newFilters);\n };\n\n const editableFilters = activeFilters.map(filter => ({\n ...filter,\n onRemove: () => removeFilter(filter.key),\n }));\n\n return (\n <>\n <FilterPanel\n ref={ref}\n filters={editableFilters}\n onSearch={onSearch}\n actions={<Button onClick={() => setModalOpen(true)}>Add Filter</Button>}\n row={row}\n col={col}\n />\n <AvailableFilterSelectModal\n title={'Add Filter'}\n open={modalOpen}\n onCancel={() => setModalOpen(false)}\n onSave={handleAddFilter}\n availableFilters={{\n filters: availableFilters,\n activeFilters: activeFilters,\n }}\n />\n </>\n );\n}\n","import { CellProps } from './types';\nimport { Button, ButtonProps } from 'antd';\n\n/**\n * Constant representing the type identifier for action cells.\n *\n * This constant is used to register and identify action cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for action-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'action'\n *\n * @example\n * ```tsx\n * import { typedCellRender, ACTION_CELL_TYPE } from './table/cell';\n *\n * const actionRenderer = typedCellRender(ACTION_CELL_TYPE, { onClick: () => {} });\n * ```\n */\nexport const ACTION_CELL_TYPE: string = 'action';\n\n/**\n * Props for the ActionCell component, extending CellProps with string value type and ButtonProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface ActionCellProps\n * @extends CellProps<string, RecordType, Omit<ButtonProps, 'onClick'> & { onClick?: (record: RecordType) => void; }>\n *\n * @example\n * ```tsx\n * interface User {\n * id: number;\n * name: string;\n * email: string;\n * }\n *\n * const props: ActionCellProps<User> = {\n * data: {\n * value: \"Edit\",\n * record: { id: 1, name: \"John Doe\", email: \"john@example.com\" },\n * index: 0\n * },\n * attributes: { onClick: (record) => console.log('Edit user:', record) }\n * };\n * ```\n */\nexport interface ActionCellProps<RecordType = any> extends CellProps<\n string,\n RecordType,\n Omit<ButtonProps, 'onClick'> & {\n onClick?: (record: RecordType) => void;\n }\n> {}\n\nexport function isActionCellProps(obj: any): obj is ActionCellProps {\n return (\n typeof obj.data === 'object' &&\n typeof obj.data.value === 'string' &&\n typeof obj.data.record === 'object' &&\n typeof obj.data.index === 'number' &&\n (obj.attributes === undefined || typeof obj.attributes === 'object')\n );\n}\n\n/**\n * Renders an action button cell using Ant Design's Button component.\n *\n * This component displays clickable action buttons in table cells with support for\n * various button styling options provided by Ant Design's Button. It handles\n * the rendering of action buttons while allowing customization through attributes\n * like disabled, loading, size, and other ButtonProps.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the action cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The string value to display as the button text.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes to pass to Button component.\n * @returns A React element representing the action button cell, or null if no value is provided.\n *\n * @example\n * ```tsx\n * <ActionCell\n * data={{\n * value: \"Delete\",\n * record: { id: 1, name: \"Item Name\", status: \"active\" },\n * index: 0\n * }}\n * attributes={{\n * onClick: (record) => handleDelete(record.id),\n * danger: true\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface ActionItem {\n * id: number;\n * label: string;\n * action: string;\n * }\n *\n * <ActionCell<ActionItem>\n * data={{\n * value: \"View Details\",\n * record: { id: 1, label: \"Item 1\", action: \"view\" },\n * index: 0\n * }}\n * attributes={{\n * onClick: (record) => navigateToDetails(record.id),\n * type: \"primary\"\n * }}\n * />\n * ```\n */\nexport function ActionCell<RecordType = any>(\n props: ActionCellProps<RecordType>,\n) {\n // Extract data and attributes from props for easier access\n const { data, attributes } = props;\n\n // Early return if no value is provided - prevents rendering empty or meaningless buttons\n if (!data.value) {\n return null;\n }\n\n // Render the action button with link styling for a clean, unobtrusive appearance\n return (\n <Button\n type=\"link\" // Ant Design link button provides subtle styling without heavy borders\n {...attributes} // Spread additional button props (e.g., disabled, loading, size)\n onClick={() => attributes?.onClick?.(data.record)} // Invoke handler with action key and full record context\n style={{ padding: 0 }}\n >\n {data.value}\n </Button>\n );\n}\n","import { CellProps } from './types';\nimport { Button, MenuProps } from 'antd';\nimport { Dropdown, Space } from 'antd';\nimport { DownOutlined } from '@ant-design/icons';\nimport { ActionCell, ActionCellProps, isActionCellProps } from './ActionCell';\nimport type * as React from 'react';\n\n/**\n * Constant representing the type identifier for actions cells.\n *\n * This constant is used to register and identify actions cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for actions-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'actions'\n *\n * @example\n * ```tsx\n * import { typedCellRender, ACTIONS_CELL_TYPE } from './table/cell';\n *\n * const actionsRenderer = typedCellRender(ACTIONS_CELL_TYPE, { onClick: () => {} });\n * ```\n */\nexport const ACTIONS_CELL_TYPE: string = 'actions';\n\n/**\n * Data structure for actions cell configuration.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface ActionsData\n *\n * @example\n * ```tsx\n * interface User {\n * id: number;\n * name: string;\n * email: string;\n * }\n *\n * const actionsData: ActionsData<User> = {\n * primaryAction: {\n * data: { value: \"Edit\", record: user, index: 0 },\n * attributes: { onClick: (record) => editUser(record) }\n * },\n * moreActionTitle: \"More Actions\",\n * secondaryActions: [\n * {\n * data: { value: \"Delete\", record: user, index: 0 },\n * attributes: { onClick: (record) => deleteUser(record), danger: true }\n * }\n * ]\n * };\n * ```\n */\nexport interface ActionsData<RecordType = any> {\n primaryAction:\n | ActionCellProps<RecordType>\n | ((record: RecordType) => React.ReactNode);\n moreActionTitle?: string;\n secondaryActions:\n | ActionCellProps<RecordType>[]\n | ((record: RecordType) => React.ReactNode[]);\n}\n\n/**\n * Props for the ActionsCell component, extending CellProps with ActionsData value type and click handler attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface ActionsCellProps\n * @extends CellProps<ActionsData, RecordType, { onClick: (actionKey: string, value: RecordType) => void; }>\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * price: number;\n * }\n *\n * const props: ActionsCellProps<Product> = {\n * data: {\n * value: {\n * primaryAction: { data: { value: \"Edit\", record: product, index: 0 }, attributes: { onClick: editProduct } },\n * secondaryActions: [{ data: { value: \"Delete\", record: product, index: 0 }, attributes: { onClick: deleteProduct } }]\n * },\n * record: product,\n * index: 0\n * },\n * attributes: { onClick: (actionKey, record) => handleAction(actionKey, record) }\n * };\n * ```\n */\nexport interface ActionsCellProps<RecordType = any> extends CellProps<\n ActionsData<RecordType>,\n RecordType,\n { onClick: (actionKey: string, value: RecordType) => void }\n> {}\n\n/**\n * Renders an actions cell with primary and secondary action buttons using Ant Design components.\n *\n * This component displays multiple action buttons in table cells, with a primary action\n * button and optional secondary actions in a dropdown menu. It uses ActionCell components\n * for individual buttons and provides a clean interface for handling multiple actions.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the actions cell component.\n * @param props.data - The cell data containing ActionsData value, record, and index.\n * @param props.data.value - The actions configuration with primary and secondary actions.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes including click handler.\n * @returns A React element representing the actions cell with buttons and dropdown.\n *\n * @example\n * ```tsx\n * <ActionsCell\n * data={{\n * value: {\n * primaryAction: {\n * data: { value: \"Edit\", record: item, index: 0 },\n * attributes: { onClick: () => editItem(item.id) }\n * },\n * moreActionTitle: \"Options\",\n * secondaryActions: [\n * {\n * data: { value: \"Delete\", record: item, index: 0 },\n * attributes: { onClick: () => deleteItem(item.id), danger: true }\n * }\n * ]\n * },\n * record: item,\n * index: 0\n * }}\n * attributes={{\n * onClick: (actionKey, record) => console.log(actionKey, record)\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface Task {\n * id: number;\n * title: string;\n * status: string;\n * }\n *\n * <ActionsCell<Task>\n * data={{\n * value: {\n * primaryAction: {\n * data: { value: \"Complete\", record: task, index: 0 },\n * attributes: { onClick: (record) => completeTask(record.id) }\n * },\n * secondaryActions: [\n * {\n * data: { value: \"Archive\", record: task, index: 0 },\n * attributes: { onClick: (record) => archiveTask(record.id) }\n * }\n * ]\n * },\n * record: task,\n * index: 0\n * }}\n * />\n * ```\n */\nfunction renderActions(props: ActionsCellProps) {\n const { data } = props;\n\n let secondaryButtons: MenuProps['items'] = [];\n if (\n Array.isArray(data.value.secondaryActions) &&\n data.value.secondaryActions.length > 0\n ) {\n const actions: ActionCellProps[] = data.value.secondaryActions;\n secondaryButtons = actions.map(action => {\n return {\n key: action.data.index,\n label: <ActionCell {...action} />,\n };\n });\n }\n\n if (typeof data.value.secondaryActions === 'function') {\n secondaryButtons = data.value\n .secondaryActions(data.record)\n .map((action, index) => {\n return {\n key: index,\n label: <>{action}</>,\n };\n });\n }\n\n if (secondaryButtons.length > 0) {\n return (\n <Space>\n {isActionCellProps(data.value.primaryAction) ? (\n <ActionCell {...data.value.primaryAction} />\n ) : (\n <>{data.value.primaryAction(data.record)}</>\n )}\n\n <Dropdown menu={{ items: secondaryButtons }}>\n <Button type=\"link\" style={{ padding: 0 }}>\n <Space>\n {data.value.moreActionTitle || 'More'}\n <DownOutlined />\n </Space>\n </Button>\n </Dropdown>\n </Space>\n );\n }\n\n return (\n <>\n {isActionCellProps(data.value.primaryAction) ? (\n <ActionCell {...data.value.primaryAction} />\n ) : (\n <>{data.value.primaryAction(data.record)}</>\n )}\n </>\n );\n}\n\n/**\n * ActionsCell component for rendering multiple action buttons in table cells.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the ActionsCell component.\n * @returns A React element representing the actions cell.\n */\nexport function ActionsCell<RecordType = any>(\n props: ActionsCellProps<RecordType>,\n) {\n return renderActions(props);\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport dayjs, { Dayjs } from 'dayjs';\n\nexport function parseDayjs(value: string | number | Date | Dayjs): Dayjs {\n if (dayjs.isDayjs(value)) {\n return value;\n }\n return dayjs(value);\n}\n\nexport function isNullOrUndefined(value: any): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Checks if a value is a valid image source URL.\n *\n * This function determines whether a given value can be used as an image source\n * by checking if it's a string that represents a valid image URL. It supports\n * absolute URLs (http/https), relative URLs (/), and data URLs (data:image/).\n *\n * @param value - The value to check\n * @returns true if the value is a valid image source, false otherwise\n *\n * @example\n * ```typescript\n * isValidImageSrc('https://example.com/image.jpg') // true\n * isValidImageSrc('/images/avatar.png') // true\n * isValidImageSrc('data:image/png;base64,iVBORw0KGgo...') // true\n * isValidImageSrc('John Doe') // false\n * isValidImageSrc(null) // false\n * ```\n */\nexport function isValidImageSrc(value: any): value is string {\n if (typeof value !== 'string' || value.trim() === '') {\n return false;\n }\n\n const trimmedValue = value.trim().toLowerCase();\n\n // Check for absolute URLs (http/https) - case insensitive\n if (\n trimmedValue.startsWith('http://') ||\n trimmedValue.startsWith('https://')\n ) {\n return true;\n }\n\n // Check for relative URLs starting with /\n if (value.trim().startsWith('/')) {\n return true;\n }\n\n // Check for valid data URLs (data:image/...;...)\n if (trimmedValue.startsWith('data:image/')) {\n // Ensure it has the proper format: data:image/type;base64,data\n const dataUrlPattern = /^data:image\\/[a-z]+(;[a-z0-9]+)?,/i;\n return dataUrlPattern.test(value.trim());\n }\n\n return false;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Avatar } from 'antd';\nimport { AvatarProps } from 'antd/es/avatar';\nimport { isValidImageSrc } from './utils';\n\n/**\n * Constant representing the type identifier for avatar cells.\n *\n * This constant is used to register and identify avatar cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for avatar-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'avatar'\n *\n * @example\n * ```tsx\n * import { typedCellRender, AVATAR_CELL_TYPE } from './table/cell';\n *\n * const avatarRenderer = typedCellRender(AVATAR_CELL_TYPE, {\n * size: 32\n * });\n * ```\n */\nexport const AVATAR_CELL_TYPE = 'avatar';\n\n/**\n * Props for the AvatarCell component, extending CellProps with string value type and AvatarProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface AvatarCellProps\n * @extends CellProps<string, RecordType, AvatarProps>\n *\n * @example\n * ```tsx\n * interface User {\n * id: number;\n * name: string;\n * avatarUrl: string;\n * }\n *\n * const props: AvatarCellProps<User> = {\n * data: {\n * value: \"https://example.com/avatar.jpg\",\n * record: { id: 1, name: \"John\", avatarUrl: \"https://example.com/avatar.jpg\" },\n * index: 0\n * },\n * attributes: {\n * size: 40,\n * alt: \"User avatar\"\n * }\n * };\n * ```\n */\nexport interface AvatarCellProps<RecordType = any>\n extends CellProps<string, RecordType, AvatarProps> {}\n\n/**\n * Renders an avatar cell using Ant Design's Avatar component.\n *\n * This component displays user avatars in table cells with support for\n * images, fallback text, and all Avatar component features. It handles\n * null/undefined values gracefully by showing initials from the record name.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the avatar cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The avatar URL string or name to display.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes for the Avatar component.\n * @returns A React element representing the avatar cell.\n *\n * @example\n * ```tsx\n * <AvatarCell\n * data={{\n * value: \"https://example.com/avatar.jpg\",\n * record: { id: 1, name: \"John\", avatar: \"https://example.com/avatar.jpg\" },\n * index: 0\n * }}\n * attributes={{\n * size: 32\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With fallback to initials\n * <AvatarCell\n * data={{\n * value: \"John Doe\",\n * record: { id: 1, name: \"John Doe\" },\n * index: 0\n * }}\n * attributes={{\n * size: 40,\n * style: { backgroundColor: '#1890ff' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface User {\n * id: number;\n * name: string;\n * avatar?: string;\n * }\n *\n * <AvatarCell<User>\n * data={{\n * value: user.avatar || user.name,\n * record: user,\n * index: 0\n * }}\n * attributes={{\n * size: 24\n * }}\n * />\n * ```\n */\nexport function AvatarCell<RecordType = any>(\n props: AvatarCellProps<RecordType>,\n) {\n const { data, attributes = {} } = props;\n\n if (!data.value) {\n return <Avatar {...attributes} />;\n }\n\n // If value is a valid image source, use it as src\n if (isValidImageSrc(data.value)) {\n return <Avatar src={data.value} {...attributes} />;\n }\n\n // Otherwise, use as text (initials or name)\n return <Avatar {...attributes}>{data.value}</Avatar>;\n}\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_calendar=t()}(this,(function(){\"use strict\";return function(e,t,a){var n=\"h:mm A\",d={lastDay:\"[Yesterday at] \"+n,sameDay:\"[Today at] \"+n,nextDay:\"[Tomorrow at] \"+n,nextWeek:\"dddd [at] \"+n,lastWeek:\"[Last] dddd [at] \"+n,sameElse:\"MM/DD/YYYY\"};t.prototype.calendar=function(e,t){var n=t||this.$locale().calendar||d,o=a(e||void 0).startOf(\"d\"),s=this.diff(o,\"d\",!0),i=\"sameElse\",f=s<-6?i:s<-1?\"lastWeek\":s<0?\"lastDay\":s<1?\"sameDay\":s<2?\"nextDay\":s<7?\"nextWeek\":i,l=n[f]||d[f];return\"function\"==typeof l?l.call(this,a()):this.format(l)}}}));","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Typography } from 'antd';\nimport { TextProps } from 'antd/es/typography/Text';\nimport { Dayjs } from 'dayjs';\nimport { parseDayjs } from './utils';\n\nconst { Text } = Typography;\n\n/**\n * Constant representing the type identifier for datetime cells.\n *\n * This constant is used to register and identify datetime cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for datetime-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'datetime'\n *\n * @example\n * ```tsx\n * import { typedCellRender, DATETIME_CELL_TYPE } from './table/cell';\n *\n * const datetimeRenderer = typedCellRender(DATETIME_CELL_TYPE, {\n * format: 'YYYY-MM-DD HH:mm:ss'\n * });\n * ```\n */\nexport const DATETIME_CELL_TYPE = 'datetime';\n\n/**\n * Props for the DateTimeCell component, extending CellProps with datetime value type and TextProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface DateTimeCellProps\n * @extends CellProps<string | number | Date | Dayjs, RecordType, TextProps & { format?: string }>\n *\n * @example\n * ```tsx\n * interface Event {\n * id: number;\n * title: string;\n * createdAt: string;\n * updatedAt: number;\n * }\n *\n * const props: DateTimeCellProps<Event> = {\n * data: {\n * value: \"2024-01-15T10:30:00Z\",\n * record: { id: 1, title: \"Meeting\", createdAt: \"2024-01-15T10:30:00Z\", updatedAt: 1705312200000 },\n * index: 0\n * },\n * attributes: {\n * format: \"YYYY-MM-DD HH:mm:ss\"\n * }\n * };\n * ```\n */\nexport interface DateTimeCellProps<RecordType = any>\n extends CellProps<\n string | number | Date | Dayjs,\n RecordType,\n TextProps & { format?: string | ((dayjs: Dayjs) => string) }\n > {\n}\n\nexport const DEFAULT_DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';\n\n/**\n * Renders a datetime cell using Ant Design's Typography.Text component with dayjs formatting.\n *\n * This component displays datetime values in table cells, supporting various input formats\n * (string, number timestamp, Date object, or Dayjs object) and customizable formatting\n * through the dayjs library. It provides consistent datetime display with fallback handling\n * for invalid dates.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the datetime cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The datetime value to display (string, number, Date, or Dayjs).\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes including format string and TextProps.\n * @param props.attributes.format - Optional dayjs format string (default: 'YYYY-MM-DD HH:mm:ss').\n * @returns A React element representing the formatted datetime cell.\n *\n * @example\n * ```tsx\n * <DateTimeCell\n * data={{\n * value: \"2024-01-15T10:30:00Z\",\n * record: { id: 1, title: \"Event\", createdAt: \"2024-01-15T10:30:00Z\" },\n * index: 0\n * }}\n * attributes={{\n * format: \"YYYY-MM-DD HH:mm:ss\"\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript and timestamp\n * interface Log {\n * id: number;\n * message: string;\n * timestamp: number;\n * }\n *\n * <DateTimeCell<Log>\n * data={{\n * value: 1705312200000,\n * record: { id: 1, message: \"User login\", timestamp: 1705312200000 },\n * index: 0\n * }}\n * attributes={{\n * format: \"MMM DD, YYYY hh:mm A\",\n * style: { color: '#666' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With Date object\n * <DateTimeCell\n * data={{\n * value: new Date(),\n * record: { id: 1, title: \"Current time\" },\n * index: 0\n * }}\n * />\n * ```\n */\nexport function DateTimeCell<RecordType = any>(\n props: DateTimeCellProps<RecordType>,\n) {\n const { data, attributes = {} } = props;\n const { format = DEFAULT_DATE_TIME_FORMAT, ...textProps } = attributes;\n if (!data.value) {\n return <Text {...textProps}>-</Text>;\n }\n const date = parseDayjs(data.value);\n if (!date.isValid()) {\n return <Text {...textProps}>-</Text>;\n }\n if (typeof format === 'function') {\n return <Text {...textProps}>{format(date)}</Text>;\n }\n return <Text {...textProps}>{date.format(format)}</Text>;\n}","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport calendar from 'dayjs/plugin/calendar';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { CellProps } from './types';\nimport { TextProps } from 'antd/es/typography/Text';\nimport { DateTimeCell, DEFAULT_DATE_TIME_FORMAT } from './DateTimeCell';\n\ndayjs.extend(calendar);\n\n/**\n * Calendar format configuration for relative time display.\n *\n * Defines the format strings used by dayjs calendar plugin to display\n * dates relative to the current time (e.g., \"今天\", \"昨天\", etc.).\n *\n * @interface CalendarFormats\n *\n * @example\n * ```typescript\n * const customFormats: CalendarFormats = {\n * sameDay: '[今天] HH:mm',\n * lastDay: '[昨天] HH:mm',\n * sameElse: 'YYYY-MM-DD HH:mm:ss'\n * };\n * ```\n */\nexport interface CalendarFormats {\n /** Format for dates that are today */\n sameDay?: string;\n /** Format for dates that are tomorrow */\n nextDay?: string;\n /** Format for dates in the next week */\n nextWeek?: string;\n /** Format for dates that were yesterday */\n lastDay?: string;\n /** Format for dates in the last week */\n lastWeek?: string;\n /** Format for all other dates */\n sameElse?: string;\n}\n\n/**\n * Constant representing the type identifier for calendar time cells.\n *\n * This constant is used to register and identify calendar time cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for calendar-based datetime table cells.\n *\n * @constant\n * @type {string}\n * @default 'calendar-time'\n *\n * @example\n * ```tsx\n * import { typedCellRender, CALENDAR_CELL_TYPE } from './table/cell';\n *\n * const calendarRenderer = typedCellRender(CALENDAR_CELL_TYPE, {\n * formats: {\n * sameDay: '[今天] HH:mm',\n * lastDay: '[昨天] HH:mm'\n * }\n * });\n * ```\n */\nexport const CALENDAR_CELL_TYPE = 'calendar-time';\n\n/**\n * Default calendar formats for Chinese locale.\n *\n * Provides sensible defaults for displaying relative dates in Chinese,\n * falling back to standard datetime format for older dates.\n *\n * @constant\n * @type {CalendarFormats}\n */\nexport const DEFAULT_CALENDAR_FORMATS: CalendarFormats = {\n sameDay: '[今天] HH:mm',\n nextDay: '[明天] HH:mm',\n lastDay: '[昨天] HH:mm',\n nextWeek: DEFAULT_DATE_TIME_FORMAT,\n lastWeek: DEFAULT_DATE_TIME_FORMAT,\n sameElse: DEFAULT_DATE_TIME_FORMAT,\n};\n\n/**\n * Props for the CalendarTimeCell component, extending CellProps with datetime value type and TextProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface CalendarTimeProps\n * @extends CellProps<string | number | Date | Dayjs, RecordType, TextProps & { formats?: CalendarFormats }>\n *\n * @example\n * ```tsx\n * interface Event {\n * id: number;\n * title: string;\n * createdAt: string;\n * updatedAt: number;\n * }\n *\n * const props: CalendarTimeProps<Event> = {\n * data: {\n * value: \"2024-01-15T10:30:45Z\",\n * record: { id: 1, title: \"Meeting\", createdAt: \"2024-01-15T10:30:45Z\", updatedAt: 1705312200000 },\n * index: 0\n * },\n * attributes: {\n * formats: {\n * sameDay: \"[今天] HH:mm\",\n * lastDay: \"[昨天] HH:mm\"\n * }\n * }\n * };\n * ```\n */\nexport interface CalendarTimeProps<RecordType = any>\n extends CellProps<\n string | number | Date | Dayjs,\n RecordType,\n TextProps & { formats?: CalendarFormats }\n > {\n}\n\n/**\n * Renders a calendar time cell using Ant Design's Typography.Text component with dayjs calendar formatting.\n *\n * This component displays datetime values in table cells using relative time formats\n * (e.g., \"今天 10:30\", \"昨天 15:45\") based on the current date. It supports various input formats\n * (string, number timestamp, Date object, or Dayjs object) and customizable calendar formats\n * through the dayjs calendar plugin. It provides consistent relative time display with fallback handling\n * for invalid dates.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the calendar time cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The datetime value to display (string, number, Date, or Dayjs).\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes including calendar formats and TextProps.\n * @param props.attributes.formats - Optional calendar format configuration (default: DEFAULT_CALENDAR_FORMATS).\n * @returns A React element representing the formatted calendar time cell.\n *\n * @example\n * ```tsx\n * <CalendarTimeCell\n * data={{\n * value: \"2024-01-15T10:30:45Z\",\n * record: { id: 1, title: \"Event\", createdAt: \"2024-01-15T10:30:45Z\" },\n * index: 0\n * }}\n * attributes={{\n * formats: {\n * sameDay: \"[今天] HH:mm\",\n * lastDay: \"[昨天] HH:mm\"\n * }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript and timestamp\n * interface Log {\n * id: number;\n * message: string;\n * timestamp: number;\n * }\n *\n * <CalendarTimeCell<Log>\n * data={{\n * value: 1705312200000,\n * record: { id: 1, message: \"User login\", timestamp: 1705312200000 },\n * index: 0\n * }}\n * attributes={{\n * formats: {\n * sameDay: \"[今天] HH:mm\",\n * lastDay: \"[昨天] HH:mm\"\n * },\n * style: { color: '#666' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With Date object\n * <CalendarTimeCell\n * data={{\n * value: new Date(),\n * record: { id: 1, title: \"Current time\" },\n * index: 0\n * }}\n * />\n * ```\n */\nexport function CalendarTimeCell<RecordType = any>(\n props: CalendarTimeProps<RecordType>,\n) {\n const { data, attributes = {} } = props;\n const { formats = DEFAULT_CALENDAR_FORMATS, ...textProps } = attributes;\n const format = (dayjs: Dayjs) => {\n return dayjs.calendar(null, formats);\n };\n return (<DateTimeCell data={data} attributes={{ format, ...textProps }} />);\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Typography } from 'antd';\nimport { TextProps } from 'antd/es/typography/Text';\n\nconst { Text } = Typography;\n\n/**\n * Constant representing the type identifier for text cells.\n *\n * This constant is used to register and identify text cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for text-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'text'\n *\n * @example\n * ```tsx\n * import { typedCellRender, TEXT_CELL_TYPE } from './table/cell';\n *\n * const textRenderer = typedCellRender(TEXT_CELL_TYPE, { ellipsis: true });\n * ```\n */\nexport const TEXT_CELL_TYPE = 'text';\n\n/**\n * Props for the TextCell component, extending CellProps with string value type and TextProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface TextCellProps\n * @extends CellProps<string, RecordType, TextProps>\n *\n * @example\n * ```tsx\n * interface User {\n * id: number;\n * name: string;\n * }\n *\n * const props: TextCellProps<User> = {\n * data: {\n * value: \"John Doe\",\n * record: { id: 1, name: \"John Doe\" },\n * index: 0\n * },\n * attributes: { ellipsis: true }\n * };\n * ```\n */\nexport interface TextCellProps<RecordType = any>\n extends CellProps<string, RecordType, TextProps> {\n}\n\n/**\n * Renders a text cell using Ant Design's Typography.Text component.\n *\n * This component displays string values in table cells with support for\n * various text formatting options provided by Ant Design's Typography.Text.\n * It handles the rendering of text content while allowing customization\n * through attributes like ellipsis, styling, and other TextProps.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the text cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The string value to display in the cell.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes to pass to Typography.Text component.\n * @returns A React element representing the text cell.\n *\n * @throws {Error} If the value cannot be rendered as React children (e.g., objects).\n *\n * @example\n * ```tsx\n * <TextCell\n * data={{\n * value: \"Hello World\",\n * record: { id: 1, name: \"John\" },\n * index: 0\n * }}\n * attributes={{\n * ellipsis: true,\n * style: { color: 'blue' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface User {\n * id: number;\n * name: string;\n * }\n *\n * <TextCell<User>\n * data={{\n * value: \"John Doe\",\n * record: { id: 1, name: \"John Doe\" },\n * index: 0\n * }}\n * attributes={{ ellipsis: { tooltip: true } }}\n * />\n * ```\n */\nexport function TextCell<RecordType = any>(props: TextCellProps<RecordType>) {\n return <Text {...props.attributes}>{props.attributes?.children ?? props.data.value}</Text>;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Tag, TagProps } from 'antd';\nimport { CellProps } from './types';\n\n\n/**\n * Constant representing the type identifier for tag cells.\n *\n * This constant is used to register and identify tag cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for tag-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'tag'\n *\n * @example\n * ```tsx\n * import { typedCellRender, TAG_CELL_TYPE } from './table/cell';\n *\n * const tagRenderer = typedCellRender(TAG_CELL_TYPE, { color: 'blue' });\n * ```\n */\nexport const TAG_CELL_TYPE = 'tag';\n\n/**\n * Props for the TagCell component, extending CellProps with string value type and TagProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface TagCellProps\n * @extends CellProps<string, RecordType, TagProps>\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * category: string;\n * }\n *\n * const props: TagCellProps<Product> = {\n * data: {\n * value: \"electronics\",\n * record: { id: 1, name: \"Laptop\", category: \"electronics\" },\n * index: 0\n * },\n * attributes: { color: \"blue\" }\n * };\n * ```\n */\nexport interface TagCellProps<RecordType = any>\n extends CellProps<string, RecordType, TagProps> {\n}\n\n/**\n * Renders a tag cell using Ant Design's Tag component.\n *\n * This component displays a single string tag in table cells with support for\n * various tag formatting options provided by Ant Design's Tag. It allows\n * customization through attributes like color, closable, and other TagProps.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the tag cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The string tag to display in the cell.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes to pass to the Tag component.\n * @returns A React element representing the tag cell.\n *\n * @throws {Error} If the value is not a string.\n *\n * @example\n * ```tsx\n * <TagCell\n * data={{\n * value: \"urgent\",\n * record: { id: 1, title: \"Task\", priority: \"urgent\" },\n * index: 0\n * }}\n * attributes={{\n * color: \"red\"\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface Task {\n * id: number;\n * title: string;\n * priority: string;\n * }\n *\n * <TagCell<Task>\n * data={{\n * value: \"urgent\",\n * record: { id: 1, title: \"Task\", priority: \"urgent\" },\n * index: 0\n * }}\n * attributes={{ color: \"orange\", closable: true }}\n * />\n * ```\n */\nexport function TagCell<RecordType = any>(props: TagCellProps<RecordType>) {\n const { data, attributes } = props;\n if (!data.value?.trim()) {\n return null;\n }\n\n return <Tag {...attributes}>{attributes?.children ?? data.value}</Tag>;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Space, TagProps } from 'antd';\nimport { TagCell } from './TagCell';\nimport { SpaceProps } from 'antd/es/space';\n\n/**\n * Constant representing the type identifier for tags cells.\n *\n * This constant is used to register and identify tags cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for tags-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'tags'\n *\n * @example\n * ```tsx\n * import { typedCellRender, TAGS_CELL_TYPE } from './table/cell';\n *\n * const tagsRenderer = typedCellRender(TAGS_CELL_TYPE, {\n * 'urgent': { color: 'red' },\n * 'normal': { color: 'blue' }\n * });\n * ```\n */\nexport const TAGS_CELL_TYPE = 'tags';\n\n/**\n * Props for the TagsCell component, extending CellProps with string array value type and tag attributes mapping.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface TagsCellProps\n * @extends CellProps<string[], RecordType, Record<string, TagProps>>\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * tags: string[];\n * category: string;\n * }\n *\n * const props: TagsCellProps<Product> = {\n * data: {\n * value: [\"electronics\", \"bestseller\"],\n * record: { id: 1, name: \"Laptop\", tags: [\"electronics\", \"bestseller\"], category: \"computers\" },\n * index: 0\n * },\n * attributes: {\n * \"electronics\": { color: \"blue\" },\n * \"bestseller\": { color: \"gold\" }\n * }\n * };\n * ```\n */\nexport interface TagsCellProps<RecordType = any>\n extends CellProps<string[], RecordType, Record<string, TagProps>> {\n space?: SpaceProps;\n}\n\n/**\n * Renders a tags cell using Ant Design's Space and Tag components.\n *\n * This component displays multiple string tags in table cells, with each tag\n * rendered using the TagCell component. It supports individual tag styling\n * through attributes mapping and automatically filters out empty or whitespace-only tags.\n * Tags are displayed horizontally in a Space component for proper spacing.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the tags cell component.\n * @param props.data - The cell data containing value array, record, and index.\n * @param props.data.value - The array of string tags to display in the cell.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional mapping of tag names to TagProps for individual tag styling.\n * @returns A React element containing the tags wrapped in a Space component, or null if no valid tags.\n *\n * @example\n * ```tsx\n * <TagsCell\n * data={{\n * value: [\"urgent\", \"frontend\", \"bug\"],\n * record: { id: 1, title: \"Fix login issue\", tags: [\"urgent\", \"frontend\", \"bug\"] },\n * index: 0\n * }}\n * attributes={{\n * \"urgent\": { color: \"red\" },\n * \"frontend\": { color: \"blue\" },\n * \"bug\": { color: \"orange\" }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface Task {\n * id: number;\n * title: string;\n * tags: string[];\n * priority: string;\n * }\n *\n * <TagsCell<Task>\n * data={{\n * value: [\"urgent\", \"frontend\"],\n * record: { id: 1, title: \"Task\", tags: [\"urgent\", \"frontend\"], priority: \"high\" },\n * index: 0\n * }}\n * attributes={{\n * \"urgent\": { color: \"red\", closable: true },\n * \"frontend\": { color: \"geekblue\" }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Empty tags array - renders nothing\n * <TagsCell\n * data={{\n * value: [],\n * record: { id: 1, title: \"Task\" },\n * index: 0\n * }}\n * attributes={{}}\n * />\n * ```\n */\nexport function TagsCell<RecordType = any>(props: TagsCellProps<RecordType>) {\n const { space, data, attributes = {} } = props;\n if (!data.value?.length) {\n return null;\n }\n return (\n <Space {...space}>\n {data.value.map((tag, index) => {\n const tagAttributes = attributes[tag];\n return (\n <TagCell\n key={index}\n data={{ value: tag, record: data.record, index: data.index }}\n attributes={tagAttributes}\n ></TagCell>\n );\n })}\n </Space>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Empty, Image } from 'antd';\nimport { ImageProps } from 'antd/es/image';\n\n/**\n * Constant representing the type identifier for image cells.\n *\n * This constant is used to register and identify image cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for image-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'image'\n *\n * @example\n * ```tsx\n * import { typedCellRender, IMAGE_CELL_TYPE } from './table/cell';\n *\n * const imageRenderer = typedCellRender(IMAGE_CELL_TYPE, {\n * width: 50,\n * height: 50\n * });\n * ```\n */\nexport const IMAGE_CELL_TYPE: string = 'image';\n\n/**\n * Props for the ImageCell component, extending CellProps with string value type and ImageProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface ImageCellProps\n * @extends CellProps<string, RecordType, ImageProps>\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * imageUrl: string;\n * }\n *\n * const props: ImageCellProps<Product> = {\n * data: {\n * value: \"https://example.com/image.jpg\",\n * record: { id: 1, name: \"Product A\", imageUrl: \"https://example.com/image.jpg\" },\n * index: 0\n * },\n * attributes: {\n * width: 80,\n * height: 80,\n * alt: \"Product image\"\n * }\n * };\n * ```\n */\nexport interface ImageCellProps<RecordType = any>\n extends CellProps<string, RecordType, ImageProps> {\n}\n\n/**\n * Renders an image cell using Ant Design's Image component.\n *\n * This component displays image URLs in table cells with support for\n * preview, fallback images, and all Image component features. It handles\n * null/undefined values gracefully by showing a placeholder.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the image cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The image URL string to display.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes for the Image component.\n * @returns A React element representing the image cell.\n *\n * @example\n * ```tsx\n * <ImageCell\n * data={{\n * value: \"https://example.com/avatar.jpg\",\n * record: { id: 1, name: \"John\", avatar: \"https://example.com/avatar.jpg\" },\n * index: 0\n * }}\n * attributes={{\n * width: 40,\n * height: 40,\n * preview: true\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With fallback image\n * <ImageCell\n * data={{\n * value: \"https://example.com/image.jpg\",\n * record: { id: 1, title: \"Product\", imageUrl: \"https://example.com/image.jpg\" },\n * index: 0\n * }}\n * attributes={{\n * width: 100,\n * height: 100,\n * fallback: \"https://example.com/placeholder.jpg\"\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface User {\n * id: number;\n * name: string;\n * avatar: string;\n * }\n *\n * <ImageCell<User>\n * data={{\n * value: user.avatar,\n * record: user,\n * index: 0\n * }}\n * attributes={{\n * width: 32,\n * height: 32,\n * style: { borderRadius: '50%' }\n * }}\n * />\n * ```\n */\nexport function ImageCell<RecordType = any>(props: ImageCellProps<RecordType>) {\n const { data, attributes = {} } = props;\n\n if (!data.value) {\n return <Empty description={null} />;\n }\n\n return <Image src={data.value} {...attributes} />;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Empty, Image, Badge } from 'antd';\nimport { PreviewGroupProps } from 'antd/es/image/PreviewGroup';\n\n/**\n * Constant representing the type identifier for image group cells.\n *\n * This constant is used to register and identify image group cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for image group-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'image-group'\n *\n * @example\n * ```tsx\n * import { typedCellRender, IMAGE_GROUP_CELL_TYPE } from './table/cell';\n *\n * const imageGroupRenderer = typedCellRender(IMAGE_GROUP_CELL_TYPE, {\n * width: 50,\n * height: 50\n * });\n * ```\n */\nexport const IMAGE_GROUP_CELL_TYPE = 'image-group';\n\n/**\n * Props for the ImageGroupCell component, extending CellProps with string array value type and ImageProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface ImageGroupCellProps\n * @extends CellProps<string[], RecordType, ImageProps>\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * images: string[];\n * }\n *\n * const props: ImageGroupCellProps<Product> = {\n * data: {\n * value: [\"https://example.com/image1.jpg\", \"https://example.com/image2.jpg\"],\n * record: { id: 1, name: \"Product A\", images: [\"https://example.com/image1.jpg\", \"https://example.com/image2.jpg\"] },\n * index: 0\n * },\n * attributes: {\n * width: 80,\n * height: 80,\n * preview: true\n * }\n * };\n * ```\n */\nexport interface ImageGroupCellProps<RecordType = any>\n extends CellProps<string[], RecordType, PreviewGroupProps> {}\n\n/**\n * Renders an image group cell using Ant Design's Image.PreviewGroup component.\n *\n * This component displays multiple images in a group that can be previewed together,\n * allowing navigation between images. It handles null/undefined/empty arrays gracefully\n * by showing a placeholder.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the image group cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The array of image URLs to display.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes for the Image components.\n * @returns A React element representing the image group cell.\n *\n * @example\n * ```tsx\n * <ImageGroupCell\n * data={{\n * value: [\"https://example.com/avatar1.jpg\", \"https://example.com/avatar2.jpg\"],\n * record: { id: 1, name: \"John\", avatars: [\"https://example.com/avatar1.jpg\", \"https://example.com/avatar2.jpg\"] },\n * index: 0\n * }}\n * attributes={{\n * width: 40,\n * height: 40,\n * preview: true\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With fallback images\n * <ImageGroupCell\n * data={{\n * value: [\"https://example.com/image1.jpg\", \"https://example.com/image2.jpg\"],\n * record: { id: 1, title: \"Product\", images: [\"https://example.com/image1.jpg\", \"https://example.com/image2.jpg\"] },\n * index: 0\n * }}\n * attributes={{\n * width: 100,\n * height: 100,\n * fallback: \"https://example.com/placeholder.jpg\"\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface Gallery {\n * id: number;\n * name: string;\n * photos: string[];\n * }\n *\n * <ImageGroupCell<Gallery>\n * data={{\n * value: gallery.photos,\n * record: gallery,\n * index: 0\n * }}\n * attributes={{\n * width: 64,\n * height: 64,\n * style: { borderRadius: '4px' }\n * }}\n * />\n * ```\n */\nexport function ImageGroupCell<RecordType = any>(\n props: ImageGroupCellProps<RecordType>,\n) {\n const { data, attributes = {} } = props;\n\n if (!data.value || !Array.isArray(data.value) || data.value.length === 0) {\n return <Empty description={null} />;\n }\n const hasMultipleImages = data.value.length > 1;\n const mainImageElement = (\n <Image src={data.value[0]} {...(attributes as any)} />\n );\n\n return (\n <Image.PreviewGroup items={data.value} {...attributes}>\n {hasMultipleImages ? (\n <Badge count={data.value.length}>{mainImageElement}</Badge>\n ) : (\n mainImageElement\n )}\n </Image.PreviewGroup>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Typography } from 'antd';\nimport { LinkProps } from 'antd/es/typography/Link';\n\nconst { Link } = Typography;\n\n/**\n * Constant representing the type identifier for link cells.\n *\n * This constant is used to register and identify link cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for link-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'link'\n *\n * @example\n * ```tsx\n * import { typedCellRender, LINK_CELL_TYPE } from './table/cell';\n *\n * const linkRenderer = typedCellRender(LINK_CELL_TYPE, { href: '#' });\n * ```\n */\nexport const LINK_CELL_TYPE = 'link';\n\n/**\n * Props for the LinkCell component, extending CellProps with string value type and LinkProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface LinkCellProps\n * @extends CellProps<string, RecordType, LinkProps>\n *\n * @example\n * ```tsx\n * interface Article {\n * id: number;\n * title: string;\n * url: string;\n * }\n *\n * const props: LinkCellProps<Article> = {\n * data: {\n * value: \"Read More\",\n * record: { id: 1, title: \"Article Title\", url: \"https://example.com\" },\n * index: 0\n * },\n * attributes: { href: \"https://example.com\" }\n * };\n * ```\n */\nexport interface LinkCellProps<RecordType = any>\n extends CellProps<string, RecordType, LinkProps> {\n}\n\nconst EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\nconst EMAIL_PREFIX = 'mailto:';\n\n/**\n * Renders a link cell using Ant Design's Typography.Link component.\n *\n * This component displays clickable links in table cells with support for\n * various link formatting options provided by Ant Design's Typography.Link.\n * It handles the rendering of link content while allowing customization\n * through attributes like href, target, and other LinkProps.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the link cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The string value to display as the link text.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes to pass to Typography.Link component.\n * @returns A React element representing the link cell.\n *\n * @example\n * ```tsx\n * <LinkCell\n * data={{\n * value: \"Visit Website\",\n * record: { id: 1, name: \"Example\", url: \"https://example.com\" },\n * index: 0\n * }}\n * attributes={{\n * href: \"https://example.com\",\n * target: \"_blank\"\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface LinkItem {\n * id: number;\n * text: string;\n * href: string;\n * }\n *\n * <LinkCell<LinkItem>\n * data={{\n * value: \"Click Here\",\n * record: { id: 1, text: \"Click Here\", href: \"https://example.com\" },\n * index: 0\n * }}\n * attributes={{\n * href: \"https://example.com\",\n * style: { color: '#1890ff' }\n * }}\n * />\n * ```\n */\nexport function LinkCell<RecordType = any>(props: LinkCellProps<RecordType>) {\n const isEmail = props.data.value && EMAIL_REGEX.test(props.data.value);\n const href =\n props.attributes?.href ??\n (isEmail ? `${EMAIL_PREFIX}${props.data.value}` : props.data.value);\n const linkProps = isEmail\n ? props.attributes\n : {\n ...props.attributes,\n ...(props.attributes?.target === undefined ? { target: '_blank' } : {}),\n };\n return (\n <Link href={href} {...linkProps}>\n {props.attributes?.children ?? props.data.value}\n </Link>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isNullOrUndefined } from './utils';\n\n/**\n * Configuration options for currency formatting.\n *\n * This interface extends a subset of Intl.NumberFormatOptions with additional\n * currency-specific formatting controls. It provides a comprehensive set of\n * options for customizing how monetary values are displayed.\n *\n * @example\n * ```typescript\n * const options: CurrencyFormatOptions = {\n * currency: 'USD',\n * currencyDisplay: 'symbol',\n * decimals: 2,\n * locale: 'en-US',\n * useGrouping: true,\n * fallback: 'N/A'\n * };\n * ```\n */\nexport interface CurrencyFormatOptions {\n /**\n * The currency code to use for formatting (ISO 4217 currency codes).\n * Common values include 'USD', 'EUR', 'CNY', 'JPY', etc.\n *\n * @type {string}\n * @default 'CNY'\n * @example 'USD', 'EUR', 'CNY', 'JPY'\n */\n currency?: string;\n\n /**\n * How to display the currency in the formatted output.\n * - 'symbol': Use currency symbol (e.g., $, €, ¥)\n * - 'narrowSymbol': Use narrow currency symbol when available\n * - 'code': Use currency code (e.g., USD, EUR, CNY)\n * - 'name': Use currency name (e.g., US dollar, euro, Chinese yuan)\n *\n * @type {Intl.NumberFormatOptionsCurrencyDisplay}\n * @default 'symbol'\n */\n currencyDisplay?: Intl.NumberFormatOptionsCurrencyDisplay;\n\n /**\n * The number of decimal places to display.\n * This controls both minimum and maximum fraction digits.\n *\n * @type {number}\n * @default 2\n * @example 2, 3, 0\n */\n decimals?: number;\n\n /**\n * The locale to use for formatting (BCP 47 language tag).\n * This affects number formatting, currency symbols, and grouping separators.\n *\n * @type {string}\n * @default 'zh-CN'\n * @example 'en-US', 'zh-CN', 'ja-JP', 'de-DE'\n */\n locale?: string;\n\n /**\n * Whether to use grouping separators (thousands separators).\n * When true, large numbers will be formatted with separators (e.g., 1,234.56).\n *\n * @type {boolean}\n * @default true\n */\n useGrouping?: boolean;\n\n /**\n * The fallback string to return when the input value is invalid, null, undefined, or NaN.\n * This ensures consistent output for edge cases.\n *\n * @type {string}\n * @default '-'\n * @example '-', 'N/A', 'Invalid', ''\n */\n fallback?: string;\n}\n\n/**\n * Default configuration options for currency formatting.\n *\n * These defaults are used when no options are provided to formatCurrency().\n * They provide sensible defaults for Chinese Yuan (CNY) formatting with\n * standard decimal places and grouping separators.\n *\n * @constant\n * @type {CurrencyFormatOptions}\n *\n * @example\n * ```typescript\n * // Using defaults\n * formatCurrency(1234.56); // Uses DEFAULT_CURRENCY_FORMAT_OPTIONS\n *\n * // Overriding specific options\n * formatCurrency(1234.56, { currency: 'USD' }); // Merges with defaults\n * ```\n */\nexport const DEFAULT_CURRENCY_FORMAT_OPTIONS: CurrencyFormatOptions = {\n currency: 'CNY',\n currencyDisplay: 'symbol',\n decimals: 2,\n locale: 'zh-CN',\n useGrouping: true,\n fallback: '-',\n};\n\n/**\n * Internal constant defining the NumberFormat style for currency formatting.\n * This is used internally by the formatCurrency function.\n *\n * @private\n * @constant\n * @type {string}\n * @default 'currency'\n */\nconst NUMBER_FORMATE_STYLE = 'currency';\n\n/**\n * Formats a numeric amount as a localized currency string.\n *\n * This function provides comprehensive currency formatting using the browser's\n * Intl.NumberFormat API. It supports various currencies, locales, and formatting\n * options while providing robust error handling and fallback behavior.\n *\n * @param {number | string} amount - The monetary amount to format. Can be a number or a string representation of a number.\n * @param {CurrencyFormatOptions} [options=DEFAULT_CURRENCY_FORMAT_OPTIONS] - Formatting options to customize the output.\n * @returns {string} The formatted currency string, or the fallback value if formatting fails.\n *\n * @throws {Error} May throw if the Intl.NumberFormat constructor fails with invalid options, but this is handled internally with fallback.\n *\n * @example\n * ```typescript\n * // Basic usage with defaults (CNY, zh-CN locale)\n * formatCurrency(1234.56); // \"¥1,234.56\"\n * formatCurrency(0); // \"¥0.00\"\n * formatCurrency(null); // \"-\"\n *\n * // Using USD with US locale\n * formatCurrency(1234.56, {\n * currency: 'USD',\n * locale: 'en-US'\n * }); // \"$1,234.56\"\n *\n * // Formatting with custom decimal places\n * formatCurrency(1234.56789, {\n * currency: 'EUR',\n * decimals: 3,\n * locale: 'de-DE'\n * }); // \"1.234,568 €\"\n *\n * // Large numbers with grouping\n * formatCurrency(1234567.89, {\n * currency: 'CNY',\n * useGrouping: true\n * }); // \"¥1,234,567.89\"\n *\n * // Without grouping separators\n * formatCurrency(1234567.89, {\n * currency: 'CNY',\n * useGrouping: false\n * }); // \"¥1234567.89\"\n *\n * // Custom fallback for invalid values\n * formatCurrency(NaN, {\n * fallback: 'Invalid amount'\n * }); // \"Invalid amount\"\n *\n * // String input (automatically parsed)\n * formatCurrency('1234.56'); // \"¥1,234.56\"\n * formatCurrency('$1,234.56'); // \"¥1234.56\" (non-numeric characters removed)\n * ```\n *\n * @example\n * ```typescript\n * // Error handling - function gracefully handles edge cases\n * formatCurrency(Infinity); // \"-\"\n * formatCurrency(-Infinity); // \"-\"\n * formatCurrency('not-a-number'); // \"-\"\n * ```\n */\nexport function formatCurrency(\n amount: number | string | null,\n options: CurrencyFormatOptions = DEFAULT_CURRENCY_FORMAT_OPTIONS,\n): string {\n const {\n currency = DEFAULT_CURRENCY_FORMAT_OPTIONS.currency,\n currencyDisplay = DEFAULT_CURRENCY_FORMAT_OPTIONS.currencyDisplay,\n decimals = DEFAULT_CURRENCY_FORMAT_OPTIONS.decimals,\n locale = DEFAULT_CURRENCY_FORMAT_OPTIONS.locale,\n useGrouping = DEFAULT_CURRENCY_FORMAT_OPTIONS.useGrouping,\n fallback = DEFAULT_CURRENCY_FORMAT_OPTIONS.fallback,\n } = options;\n const numericAmount: number = parseAmount(amount);\n if (isNaN(numericAmount) || !isFinite(numericAmount)) {\n return fallback!;\n }\n\n const formatter = new Intl.NumberFormat(locale, {\n style: NUMBER_FORMATE_STYLE,\n currency,\n currencyDisplay,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n useGrouping,\n });\n\n return formatter.format(numericAmount);\n}\n\n/**\n * Parses and normalizes an amount input to a numeric value.\n *\n * This internal helper function converts string inputs to numbers by removing\n * non-numeric characters (except decimal points and minus signs). It's used\n * internally by formatCurrency to handle various input formats gracefully.\n *\n * @private\n * @param {number | string} amount - The amount to parse, either a number or string.\n * @returns {number} The parsed numeric value, or NaN if parsing fails.\n *\n * @example\n * ```typescript\n * parseAmount(123.45); // 123.45\n * parseAmount('123.45'); // 123.45\n * parseAmount('$123.45'); // 123.45 (removes currency symbol)\n * parseAmount('1,234.56'); // 1234.56 (removes comma)\n * parseAmount('not-a-number'); // NaN\n * ```\n */\nfunction parseAmount(amount: number | string | null | undefined): number {\n if (typeof amount === 'number') {\n return amount;\n }\n\n if (isNullOrUndefined(amount)) {\n return NaN;\n }\n const cleanedAmount = amount.replace(/[^\\d.-]/g, '');\n return parseFloat(cleanedAmount);\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Typography } from 'antd';\nimport { TextProps } from 'antd/es/typography/Text';\nimport { formatCurrency, CurrencyFormatOptions } from './currencyFormatter';\n\nconst { Text } = Typography;\n\n/**\n * Constant representing the type identifier for currency cells.\n *\n * This constant is used to register and identify currency cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for currency-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'currency'\n *\n * @example\n * ```tsx\n * import { typedCellRender, CURRENCY_CELL_TYPE } from './table/cell';\n *\n * const currencyRenderer = typedCellRender(CURRENCY_CELL_TYPE, {\n * format: {\n * currency: 'USD',\n * decimals: 2,\n * locale: 'en-US'\n * },\n * style: { fontWeight: 'bold' }\n * });\n * ```\n *\n * @example\n * ```tsx\n * // Using with cell registry\n * import { cellRegistry, CURRENCY_CELL_TYPE } from './table/cell';\n *\n * const CurrencyCellComponent = cellRegistry.get(CURRENCY_CELL_TYPE);\n * if (CurrencyCellComponent) {\n * // Use the component for rendering currency cells\n * }\n * ```\n */\nexport const CURRENCY_CELL_TYPE = 'currency';\n\n/**\n * Attributes for currency cell formatting, extending TextProps with currency-specific options.\n *\n * This interface combines Ant Design's TextProps for text styling with\n * a format property containing CurrencyFormatOptions for currency formatting configuration.\n * The format property is optional and allows customization of how currency values are displayed.\n *\n * @interface CurrencyAttributes\n * @extends TextProps\n *\n * @property {CurrencyFormatOptions} [format] - Optional currency formatting options.\n * When not provided, uses default currency formatting (CNY, zh-CN locale, 2 decimals).\n * @property {boolean} [ellipsis] - Whether to truncate text with ellipsis when it overflows.\n * @property {React.CSSProperties} [style] - Custom CSS styles to apply to the text element.\n * @property {string} [className] - Additional CSS class names to apply to the text element.\n * @property {React.ReactNode} [children] - Custom content to display instead of the formatted currency value.\n *\n * @example\n * ```tsx\n * const attributes: CurrencyAttributes = {\n * format: {\n * currency: 'USD',\n * currencyDisplay: 'symbol',\n * decimals: 2,\n * locale: 'en-US',\n * useGrouping: true\n * },\n * ellipsis: true,\n * style: { color: 'green', fontWeight: 'bold' },\n * className: 'currency-text'\n * };\n * ```\n *\n * @example\n * ```tsx\n * // Using only text styling without currency formatting\n * const attributes: CurrencyAttributes = {\n * style: { color: 'red' },\n * ellipsis: true\n * };\n * ```\n */\nexport interface CurrencyAttributes extends TextProps {\n format?: CurrencyFormatOptions;\n}\n\n/**\n * Props for the CurrencyCell component, extending CellProps with numeric value type and CurrencyAttributes.\n *\n * This interface defines the complete props structure for the CurrencyCell component,\n * combining cell data with optional formatting and styling attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface CurrencyCellProps\n * @extends CellProps<number | string, RecordType, CurrencyAttributes>\n *\n * @property {CellData<number | string, RecordType>} data - The cell data containing the value to format.\n * @property {CurrencyAttributes} [attributes] - Optional attributes for currency formatting and text styling.\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * price: number;\n * }\n *\n * const props: CurrencyCellProps<Product> = {\n * data: {\n * value: 1234.56,\n * record: { id: 1, name: \"Widget\", price: 1234.56 },\n * index: 0\n * },\n * attributes: {\n * format: {\n * currency: 'USD',\n * decimals: 2,\n * locale: 'en-US'\n * },\n * ellipsis: true,\n * style: { fontWeight: 'bold' }\n * }\n * };\n * ```\n *\n * @example\n * ```tsx\n * // With string values (automatically parsed)\n * const props: CurrencyCellProps = {\n * data: {\n * value: \"999.99\",\n * record: { id: 1, amount: \"999.99\" },\n * index: 0\n * },\n * attributes: {\n * format: {\n * currency: 'EUR',\n * currencyDisplay: 'code'\n * }\n * }\n * };\n * ```\n */\nexport interface CurrencyCellProps<RecordType = any>\n extends CellProps<number | string, RecordType, CurrencyAttributes> {}\n\n/**\n * Renders a currency cell using the formatCurrency function and Ant Design's Typography.Text component.\n *\n * This component displays numeric values formatted as localized currency strings in table cells.\n * It supports various currencies, locales, decimal precision, and formatting options while\n * providing text styling capabilities through Ant Design's Typography.Text component.\n *\n * The component automatically handles invalid values (null, undefined, NaN, Infinity) by\n * displaying a fallback string, and supports both numeric and string inputs that are\n * automatically parsed.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param {CurrencyCellProps<RecordType>} props - The props for the currency cell component.\n * @param {CellData<number | string, RecordType>} props.data - The cell data containing value, record, and index.\n * @param {number | string} props.data.value - The numeric or string value to format as currency.\n * String values are automatically parsed, removing non-numeric characters except decimal points and minus signs.\n * @param {RecordType} props.data.record - The full record object providing context for the cell.\n * @param {number} props.data.index - The zero-based index of the row in the table.\n * @param {CurrencyAttributes} [props.attributes] - Optional attributes for currency formatting and text styling.\n * @param {CurrencyFormatOptions} [props.attributes.format] - Currency formatting options including currency code, locale, decimals, etc.\n * @param {boolean} [props.attributes.ellipsis] - Whether to truncate text with ellipsis when it overflows.\n * @param {React.CSSProperties} [props.attributes.style] - Custom CSS styles to apply to the text element.\n * @param {string} [props.attributes.className] - Additional CSS class names to apply to the text element.\n * @param {React.ReactNode} [props.attributes.children] - Custom content to display instead of the formatted currency value.\n * @returns {React.ReactElement} A React element representing the formatted currency cell using Typography.Text.\n *\n * @throws {Error} This component does not throw errors directly, but may propagate errors from the formatCurrency function\n * if invalid currency codes or locales are provided in the format options.\n *\n * @example\n * ```tsx\n * // Basic usage with USD formatting\n * <CurrencyCell\n * data={{\n * value: 1234.56,\n * record: { id: 1, name: \"Product\", price: 1234.56 },\n * index: 0\n * }}\n * attributes={{\n * format: {\n * currency: 'USD',\n * decimals: 2,\n * locale: 'en-US'\n * },\n * ellipsis: true,\n * style: { fontWeight: 'bold' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript and EUR currency\n * interface Transaction {\n * id: string;\n * amount: number;\n * currency: string;\n * }\n *\n * <CurrencyCell<Transaction>\n * data={{\n * value: 999.99,\n * record: { id: \"tx-123\", amount: 999.99, currency: \"EUR\" },\n * index: 0\n * }}\n * attributes={{\n * format: {\n * currency: 'EUR',\n * currencyDisplay: 'code',\n * decimals: 2,\n * locale: 'de-DE'\n * },\n * style: { color: 'green' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Using string values (automatically parsed)\n * <CurrencyCell\n * data={{\n * value: \"1,234.56\",\n * record: { id: 1, amount: \"1,234.56\" },\n * index: 0\n * }}\n * attributes={{\n * format: {\n * currency: 'CNY',\n * useGrouping: true\n * }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Handling invalid values (displays fallback)\n * <CurrencyCell\n * data={{\n * value: NaN,\n * record: { id: 1, amount: NaN },\n * index: 0\n * }}\n * attributes={{\n * format: {\n * currency: 'USD',\n * fallback: 'N/A'\n * }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Custom content override\n * <CurrencyCell\n * data={{\n * value: 100,\n * record: { id: 1, amount: 100 },\n * index: 0\n * }}\n * attributes={{\n * format: { currency: 'USD' },\n * children: <span style={{ color: 'red' }}>Custom Content</span>\n * }}\n * />\n * ```\n */\nexport function CurrencyCell<RecordType = any>(\n props: CurrencyCellProps<RecordType>,\n) {\n const { data, attributes = {} } = props;\n const { format, ...textProps } = attributes;\n const formattedValue = formatCurrency(data.value, format);\n return <Text {...textProps}>{textProps.children ?? formattedValue}</Text>;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TypedComponentRegistry } from '../../registry';\nimport { CellType } from './TypedCell';\nimport { CellProps } from './types';\nimport { ACTION_CELL_TYPE, ActionCell } from './ActionCell';\nimport { ACTIONS_CELL_TYPE, ActionsCell } from './ActionsCell';\nimport { TEXT_CELL_TYPE, TextCell } from './TextCell';\nimport { TAG_CELL_TYPE, TagCell } from './TagCell';\nimport { TAGS_CELL_TYPE, TagsCell } from './TagsCell';\nimport { DATETIME_CELL_TYPE, DateTimeCell } from './DateTimeCell';\nimport { CALENDAR_CELL_TYPE, CalendarTimeCell } from './CalendarTime';\nimport { IMAGE_CELL_TYPE, ImageCell } from './ImageCell';\nimport { IMAGE_GROUP_CELL_TYPE, ImageGroupCell } from './ImageGroupCell';\nimport { LINK_CELL_TYPE, LinkCell } from './LinkCell';\nimport { CURRENCY_CELL_TYPE, CurrencyCell } from './CurrencyCell';\nimport { AVATAR_CELL_TYPE, AvatarCell } from './AvatarCell';\n\n/**\n * Registry for cell components, mapping cell types to their corresponding components.\n *\n * This registry instance manages the available cell component types for table rendering.\n * It is pre-initialized with the text cell component and can be extended with additional\n * cell types as needed. The registry provides type-safe component resolution for\n * dynamic cell rendering based on data types.\n *\n * @constant\n * @type {TypedComponentRegistry<CellType, CellProps>}\n *\n * @example\n * ```tsx\n * // Get a registered component\n * const TextCellComponent = cellRegistry.get('text');\n *\n * // Check if a type is registered\n * if (cellRegistry.has('number')) {\n * // Use number cell\n * }\n *\n * // Register a custom cell type\n * cellRegistry.register('custom', CustomCellComponent);\n * ```\n *\n * @example\n * ```tsx\n * // Using with typedCellRender\n * import { typedCellRender } from './TypedCell';\n *\n * const renderer = typedCellRender('text', { ellipsis: true });\n * if (renderer) {\n * const cell = renderer('Hello', { id: 1 }, 0);\n * }\n * ```\n */\nexport const cellRegistry: TypedComponentRegistry<CellType, CellProps> =\n TypedComponentRegistry.create<CellType, CellProps>([\n [ACTION_CELL_TYPE, ActionCell],\n [ACTIONS_CELL_TYPE, ActionsCell],\n [TEXT_CELL_TYPE, TextCell],\n [TAG_CELL_TYPE, TagCell],\n [TAGS_CELL_TYPE, TagsCell],\n [DATETIME_CELL_TYPE, DateTimeCell],\n [CALENDAR_CELL_TYPE, CalendarTimeCell],\n [IMAGE_CELL_TYPE, ImageCell],\n [IMAGE_GROUP_CELL_TYPE, ImageGroupCell],\n [LINK_CELL_TYPE, LinkCell],\n [CURRENCY_CELL_TYPE, CurrencyCell],\n [AVATAR_CELL_TYPE, AvatarCell],\n ]);\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cellRegistry } from './cellRegistry';\nimport type * as React from 'react';\nimport { CellData } from './types';\n\n/**\n * Represents the type identifier for different cell components.\n *\n * Cell types are string identifiers used to register and retrieve\n * specific cell rendering components from the cell registry.\n * Common types include 'text', 'number', 'date', etc.\n *\n * @typedef {string} CellType\n *\n * @example\n * ```tsx\n * const textType: CellType = 'text';\n * const customType: CellType = 'custom-cell';\n * ```\n */\nexport type CellType = string;\n\n/**\n * A function type for rendering typed cells, supporting both synchronous and asynchronous rendering.\n *\n * Cell renderers are functions that take cell data and return React nodes\n * for display in table cells. They can be synchronous for immediate rendering\n * or asynchronous for cases requiring data fetching or complex computations.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @typedef CellRenderer\n * @param value - The value to render in the cell. Can be any type depending on the cell implementation.\n * @param record - The full record object providing context for the cell rendering.\n * @param index - The zero-based index of the row in the table.\n * @returns A React node for synchronous rendering, or a Promise resolving to a React node for asynchronous rendering.\n *\n * @example\n * ```tsx\n * // Synchronous renderer\n * const textRenderer: CellRenderer<User> = (value, record, index) => {\n * return <span>{String(value)}</span>;\n * };\n *\n * // Asynchronous renderer\n * const asyncRenderer: CellRenderer<User> = async (value, record, index) => {\n * const formatted = await formatValue(value);\n * return <span>{formatted}</span>;\n * };\n * ```\n */\nexport type CellRenderer<RecordType = any> = (\n value: any,\n record: RecordType,\n index: number,\n) => React.ReactNode;\n\n/**\n * Creates a typed cell renderer function for a given cell type.\n *\n * This function retrieves a cell component from the registry based on the\n * provided type and returns a renderer function that can be used to render\n * cells of that type. The returned renderer encapsulates the component and\n * its attributes for repeated use.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @template Attributes - The type of additional attributes for the cell component.\n * @param type - The cell type identifier to look up in the registry (e.g., 'text', 'number').\n * @param attributes - Optional attributes object to pass to the cell component for customization.\n * @returns A renderer function for the specified cell type, or undefined if the type is not registered.\n *\n * @throws {Error} This function itself doesn't throw, but the returned renderer may throw\n * if the underlying component encounters rendering errors.\n *\n * @example\n * ```tsx\n * // Create a text renderer with ellipsis\n * const textRenderer = typedCellRender('text', { ellipsis: true });\n *\n * // Use the renderer to create cells\n * const cell1 = textRenderer('Hello World', { id: 1 }, 0);\n * const cell2 = textRenderer('Long text...', { id: 2 }, 1);\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript types\n * interface User {\n * id: number;\n * name: string;\n * }\n *\n * const userNameRenderer = typedCellRender<User>('text', {\n * style: { fontWeight: 'bold' }\n * });\n *\n * const cell = userNameRenderer('John Doe', { id: 1, name: 'John Doe' }, 0);\n * ```\n *\n * @example\n * ```tsx\n * // Handling unregistered types\n * const unknownRenderer = typedCellRender('unknown-type');\n * if (!unknownRenderer) {\n * console.warn('Unknown cell type');\n * }\n * ```\n */\nexport function typedCellRender<RecordType = any, Attributes = any>(\n type: CellType,\n attributes?: Attributes,\n): CellRenderer<RecordType> | undefined {\n const CellComponent = cellRegistry.get(type);\n if (!CellComponent) {\n return undefined;\n }\n return (value: any, record: RecordType, index: number) => {\n const data: CellData = {\n value,\n record,\n index,\n };\n return CellComponent({\n attributes,\n data,\n }) as React.ReactNode;\n };\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Checkbox } from 'antd';\nimport { DragOutlined } from '@ant-design/icons';\nimport { ViewColumnDefinition } from '../../viewer';\n\n/**\n * Table Field Item Component\n *\n * A component that represents a single column field in a table settings panel.\n * It displays a checkbox for toggling column visibility and a drag handle for reordering.\n *\n * @param props - The properties for the TableFieldItem component\n * @param props.columnDefinition - The column definition including title and primary key flag\n * @param props.fixed - Whether the column is fixed and cannot be hidden\n * @param props.visible - Whether the column is currently visible\n * @param props.onVisibleChange - Callback function triggered when visibility changes\n *\n * @returns A React element representing the table field item\n *\n * @example\n * ```tsx\n * <TableFieldItem\n * columnDefinition={{\n * title: 'Product Name',\n * dataIndex: 'name',\n * cell: { type: TEXT_CELL_TYPE },\n * primaryKey: false\n * }}\n * fixed={false}\n * visible={true}\n * onVisibleChange={(visible) => console.log('Visibility changed:', visible)}\n * />\n * ```\n */\nexport interface TableFieldItemProps {\n /** The column definition including title and primary key flag */\n columnDefinition: ViewColumnDefinition;\n /** Whether the column is fixed and cannot be hidden */\n fixed: boolean;\n /** Whether the column is currently visible */\n visible: boolean;\n /** Callback function triggered when visibility changes */\n onVisibleChange: (visible: boolean) => void;\n}\n\n/**\n * Table Field Item Component\n *\n * Renders a single column field in the table settings panel with:\n * - Checkbox for visibility toggle\n * - Drag handle for reordering\n * - Primary key disabled state\n *\n * @param props - The properties for the component\n * @returns A React element displaying the field item\n */\nexport function TableFieldItem(props: TableFieldItemProps) {\n return (\n <>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n }}\n >\n <Checkbox\n defaultChecked={props.visible}\n disabled={props.columnDefinition.primaryKey}\n onChange={e => props.onVisibleChange(e.target.checked)}\n >\n {props.columnDefinition.title}\n </Checkbox>\n <DragOutlined />\n </div>\n </>\n );\n}\n","import { createContext, ReactNode, useContext } from 'react';\nimport { ViewColumn } from './types';\nimport type { SizeType } from 'antd/es/config-provider/SizeContext';\n\nexport interface ViewerSharedValue {\n aggregateName: string;\n viewName: string;\n viewColumns: ViewColumn[];\n setViewColumns: (viewColumns: ViewColumn[]) => void;\n\n showFilterPanel: boolean;\n setShowFilterPanel: (showFilterPanel: boolean) => void;\n\n refreshData: () => void;\n\n tableSize: SizeType;\n setTableSize: (size: SizeType) => void;\n}\n\nexport type ViewerSharedValueContext = ViewerSharedValue;\n\nexport const ViewerSharedValueContext = createContext<\n ViewerSharedValueContext | undefined\n>(undefined);\n\nexport interface ViewerSharedValueOptions extends ViewerSharedValue {\n children: ReactNode;\n}\n\nexport function ViewerSharedValueProvider({\n children,\n ...options\n}: ViewerSharedValueOptions) {\n return (\n <ViewerSharedValueContext.Provider value={options}>\n {children}\n </ViewerSharedValueContext.Provider>\n );\n}\n\nexport function useViewerSharedValue(): ViewerSharedValueContext {\n const context = useContext(ViewerSharedValueContext);\n if (!context) {\n throw new Error('can not load ViewerSharedValueContext');\n }\n return context;\n}\n","import React from 'react';\nimport styles from './BarItem.module.css';\n\nexport interface BarItemProps {\n icon: React.ReactNode;\n active: boolean;\n}\n\nexport function BarItem(props: BarItemProps) {\n const { icon, active } = props;\n\n return (\n <div className={`${styles.item} ${active ? styles.active : ''}`}>\n {icon}\n </div>\n );\n}\n","import { TopBarItemProps } from './types';\nimport { RefAttributes, useState } from 'react';\nimport { BarItem, BarItemRef } from './BarItem';\nimport { FilterOutlined } from '@ant-design/icons';\nimport { useViewerSharedValue } from '../viewer';\n\nexport const FILTER_BAR_ITEM_TYPE: string = 'filter';\n\nexport interface FilterBarItemProps\n extends TopBarItemProps, RefAttributes<BarItemRef> {}\n\nexport function FilterBarItem(props: FilterBarItemProps) {\n const { style, className } = props;\n\n const { showFilterPanel, setShowFilterPanel } = useViewerSharedValue();\n\n const [active, setActive] = useState(showFilterPanel || false);\n\n const handleClick = () => {\n setActive(!active);\n setShowFilterPanel(!active);\n };\n\n return (\n <div className={className} style={style} onClick={handleClick}>\n <BarItem icon={<FilterOutlined />} active={active || false} />\n </div>\n );\n}\n","import { TopBarItemProps } from './types';\nimport { RefAttributes } from 'react';\nimport { BarItem, BarItemRef } from './BarItem';\nimport { ReloadOutlined } from '@ant-design/icons';\nimport { useViewerSharedValue } from '../viewer';\n\nexport const REFRESH_DATA_BAR_ITEM_TYPE: string = 'refresh_data';\n\nexport interface RefreshDataBarItemProps\n extends TopBarItemProps, RefAttributes<BarItemRef> {}\n\nexport function RefreshDataBarItem(props: RefreshDataBarItemProps) {\n const { style, className } = props;\n\n const { refreshData } = useViewerSharedValue();\n\n const handleClick = () => {\n refreshData();\n };\n\n return (\n <div className={className} style={style} onClick={handleClick}>\n <BarItem icon={<ReloadOutlined />} active={false} />\n </div>\n );\n}\n","import { TopBarItemProps } from './types';\nimport { RefAttributes } from 'react';\nimport { BarItem, BarItemRef } from './BarItem';\nimport { Dropdown, MenuProps } from 'antd';\nimport { ColumnHeightOutlined } from '@ant-design/icons';\nimport { useViewerSharedValue } from '../viewer';\nimport { SizeType } from 'antd/es/config-provider/SizeContext';\n\nexport const COLUMN_HEIGHT_BAR_ITEM_TYPE: string = 'column-height';\n\nexport interface ColumnHeightBarItemProps\n extends TopBarItemProps, RefAttributes<BarItemRef> {}\n\nexport function ColumnHeightBarItem(props: ColumnHeightBarItemProps) {\n const { className } = props;\n\n const { tableSize, setTableSize } = useViewerSharedValue();\n\n const items: MenuProps['items'] = [\n {\n key: 'middle',\n label: '标准',\n },\n {\n key: 'small',\n label: '紧凑',\n },\n ];\n\n const handleSelect = ({ key }: { key: string }) => {\n setTableSize(key as SizeType);\n };\n\n return (\n <Dropdown\n className={className}\n menu={{\n items,\n selectable: true,\n defaultSelectedKeys: [tableSize || 'middle'],\n onSelect: handleSelect,\n }}\n trigger={['click']}\n >\n <div onClick={e => e.preventDefault()}>\n <BarItem icon={<ColumnHeightOutlined />} active={false} />\n </div>\n </Dropdown>\n );\n}\n","import { RefAttributes } from 'react';\nimport { BarItem, BarItemRef } from './BarItem';\nimport { TopBarItemProps } from './types';\nimport { LinkOutlined } from '@ant-design/icons';\nimport { message } from 'antd';\n\nexport const SHARE_LINK_BAR_ITEM_TYPE: string = 'share-link';\n\nexport interface ShareLinkBarItemProps\n extends TopBarItemProps, RefAttributes<BarItemRef> {}\n\nexport function ShareLinkBarItem(props: ShareLinkBarItemProps) {\n const { className, style } = props;\n\n const [messageApi, contextHolder] = message.useMessage();\n\n const handleClick = async () => {\n const currentFullPath = window.location.href;\n try {\n await navigator.clipboard.writeText(currentFullPath);\n messageApi.success('链接复制成功');\n } catch (error) {\n console.error('Failed to copy: ', error);\n messageApi.error('链接复制失败');\n }\n };\n\n return (\n <>\n {contextHolder}\n <div className={className} style={style} onClick={handleClick}>\n <BarItem icon={<LinkOutlined />} active={false} />\n </div>\n </>\n );\n}\n","import { TypedComponentRegistry } from '../registry';\nimport { BarItemType } from './TypedBarItem';\nimport { TopBarItemProps } from './types';\nimport { FILTER_BAR_ITEM_TYPE, FilterBarItem } from './FilterBarItem';\nimport {\n REFRESH_DATA_BAR_ITEM_TYPE,\n RefreshDataBarItem,\n} from './RefreshDataBarItem';\nimport {\n COLUMN_HEIGHT_BAR_ITEM_TYPE,\n ColumnHeightBarItem,\n} from './ColumnHeightBarItem';\nimport { SHARE_LINK_BAR_ITEM_TYPE, ShareLinkBarItem } from './ShareLinkBarItem';\n\nexport const barItemRegistry = TypedComponentRegistry.create<\n BarItemType,\n TopBarItemProps\n>([\n [FILTER_BAR_ITEM_TYPE, FilterBarItem],\n [REFRESH_DATA_BAR_ITEM_TYPE, RefreshDataBarItem],\n [COLUMN_HEIGHT_BAR_ITEM_TYPE, ColumnHeightBarItem],\n [SHARE_LINK_BAR_ITEM_TYPE, ShareLinkBarItem],\n]);\n","import { TypeCapable } from '../registry';\nimport { barItemRegistry } from './barItemRegistry';\nimport React, { useMemo } from 'react';\nimport { TopBarItemProps } from './types';\n\nexport type BarItemType = string;\n\nexport interface TypedTopBarItemProps\n extends TopBarItemProps, TypeCapable<BarItemType> {}\n\nexport function TypedBarItem(props: TypedTopBarItemProps) {\n const TopBarItemComponent = useMemo(() => {\n return barItemRegistry.get(props.type);\n }, [props.type]);\n\n if (!TopBarItemComponent) {\n return undefined;\n }\n\n const topBarItemProps = {\n ...props,\n };\n\n return React.createElement(TopBarItemComponent, topBarItemProps);\n}\n\nTypedBarItem.displayName = 'TypedBarItem';\n","import { barItemRegistry } from './barItemRegistry';\nimport { BarItemType, TypedBarItem } from './TypedBarItem';\nimport { useViewerSharedValue } from '../viewer';\n\nimport { Space } from 'antd';\n\nexport interface TopBarProps {\n barItems: BarItemType[];\n}\n\nexport function TopBar(props: TopBarProps) {\n const { barItems } = props;\n\n const { aggregateName, viewName } = useViewerSharedValue();\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <div style={{ lineHeight: '32px' }}>\n {aggregateName} | {viewName}\n </div>\n <Space>\n {barItems.map((barItem, index) => {\n const BarItemComponent = barItemRegistry.get(barItem);\n if (!BarItemComponent) {\n return null;\n }\n return <TypedBarItem type={barItem} key={index} />;\n })}\n </Space>\n </div>\n );\n}\n","import { ViewTable, ViewTableActionColumn } from '../table';\nimport { Layout, Pagination, PaginationProps, Space } from 'antd';\nimport {\n EditableFilterPanel,\n EditableFilterPanelProps,\n FilterPanelRef,\n} from '../filter';\nimport { View, ViewColumn, ViewDefinition } from './';\nimport styles from './Viewer.module.css';\nimport { StyleCapable } from '../types';\nimport { ViewerSharedValueProvider } from './ViewerSharedValueContext';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { all, Condition, PagedList, PagedQuery } from '@ahoo-wang/fetcher-wow';\nimport { useDebouncedFetcherQuery } from '@ahoo-wang/fetcher-react';\nimport { FetcherError } from '@ahoo-wang/fetcher';\nimport {\n TopBar,\n COLUMN_HEIGHT_BAR_ITEM_TYPE,\n FILTER_BAR_ITEM_TYPE,\n REFRESH_DATA_BAR_ITEM_TYPE,\n} from '../topbar';\nimport { SizeType } from 'antd/es/config-provider/SizeContext';\n\nconst { Header, Footer, Sider, Content } = Layout;\n\nexport interface ViewerProps<RecordType> extends StyleCapable {\n name: string;\n view: View;\n definition: ViewDefinition;\n actionColumn: ViewTableActionColumn<RecordType>;\n\n paginationProps?: Omit<PaginationProps, 'total'>;\n}\n\nexport function Viewer<RecordType>(props: ViewerProps<RecordType>) {\n const { view, definition, actionColumn, paginationProps } = props;\n\n const { result, getQuery, setQuery, run } = useDebouncedFetcherQuery<\n PagedQuery,\n PagedList<RecordType>\n >({\n url: definition.dataSourceUrl,\n debounce: {\n delay: 300,\n leading: true,\n },\n onError: (error: FetcherError) => {\n console.log(error);\n },\n });\n\n const filterPanelRef = useRef<FilterPanelRef>(null);\n useEffect(() => {\n filterPanelRef?.current?.search();\n }, []);\n\n const [viewColumns, setViewColumns] = useState<ViewColumn[]>(view.columns);\n const updateViewColumns = (newColumns: ViewColumn[]) => {\n setViewColumns(newColumns);\n };\n\n const [showFilterPanel, setShowFilterPanel] = useState(true);\n const updateShowFilterPanel = (newShowFilterPanel: boolean) => {\n setShowFilterPanel(newShowFilterPanel);\n };\n\n const [viewTableSize, setViewTableSize] = useState<SizeType>(\n view.tableSize || 'middle',\n );\n const updateTableSize = (newTableSize: SizeType) => {\n setViewTableSize(newTableSize);\n };\n\n const editableFilterPanelProps: EditableFilterPanelProps = {\n filters: view.filters,\n availableFilters: definition.availableFilters,\n };\n\n const onSearch = useCallback(\n (condition: Condition) => {\n setQuery({\n ...getQuery(),\n condition: condition,\n pagination: { index: 1, size: definition.defaultPageSize },\n });\n run();\n },\n [getQuery, setQuery, run, definition],\n );\n\n const onPaginationChange = useCallback(\n (page: number, pageSize: number) => {\n setQuery({\n ...(getQuery() || { condition: all() }),\n pagination: { index: page, size: pageSize },\n });\n run();\n },\n [getQuery, setQuery, run],\n );\n\n const refreshData = useCallback(() => {\n run();\n }, [run]);\n\n return (\n <ViewerSharedValueProvider\n aggregateName={definition.name}\n viewName={view.name}\n viewColumns={viewColumns}\n setViewColumns={updateViewColumns}\n showFilterPanel={showFilterPanel}\n setShowFilterPanel={updateShowFilterPanel}\n refreshData={refreshData}\n tableSize={viewTableSize}\n setTableSize={updateTableSize}\n >\n <Layout className={props.className} style={props.style}>\n <Sider className={styles.personalViews}>\n Here is the personal view list.\n </Sider>\n <Layout className={styles.container}>\n <Content>\n <Space\n orientation=\"vertical\"\n style={{ display: 'flex' }}\n size=\"small\"\n >\n <Header className={styles.topBar}>\n <TopBar\n barItems={[\n FILTER_BAR_ITEM_TYPE,\n REFRESH_DATA_BAR_ITEM_TYPE,\n COLUMN_HEIGHT_BAR_ITEM_TYPE,\n ]}\n />\n </Header>\n {showFilterPanel && (\n <div className={styles.filterPanel}>\n <EditableFilterPanel\n ref={filterPanelRef}\n {...editableFilterPanelProps}\n onSearch={onSearch}\n />\n </div>\n )}\n <ViewTable\n dataSource={result?.list || []}\n viewDefinition={definition}\n actionColumn={actionColumn}\n attributes={{ pagination: false }}\n ></ViewTable>\n <Footer className={styles.pagination}>\n <span>已选择 n 条数据</span>\n <Pagination\n total={result?.total || 0}\n showTotal={total => `total ${total} items`}\n defaultPageSize={definition.defaultPageSize}\n defaultCurrent={1}\n pageSizeOptions={['10', '20', '50', '100', '200']}\n onChange={onPaginationChange}\n {...paginationProps}\n />\n </Footer>\n </Space>\n </Content>\n </Layout>\n </Layout>\n </ViewerSharedValueProvider>\n );\n}\n","import React, { useState, useCallback } from 'react';\nimport { TableFieldItem } from './TableFieldItem';\nimport styles from './TableSettingPanel.module.css';\nimport { Space } from 'antd';\nimport { ViewColumn, ViewDefinition } from '../../viewer';\nimport { useViewerSharedValue } from '../../viewer';\n\nexport interface TableSettingPanelProps {\n viewDefinition: ViewDefinition;\n className?: string;\n}\n\ninterface DragState {\n index: number;\n group: 'fixed' | 'visible';\n}\n\nexport function TableSettingPanel(props: TableSettingPanelProps) {\n const { viewDefinition } = props;\n const [dragState, setDragState] = useState<DragState | null>(null);\n\n const { viewColumns, setViewColumns } = useViewerSharedValue();\n\n const columns = viewColumns.map((col, index) => {\n return {\n ...col,\n index,\n };\n });\n\n const fixedColumns = columns.filter(col => col.fixed);\n const visibleColumns = columns.filter(col => col.visible && !col.fixed);\n const hiddenColumns = columns.filter(col => !col.visible);\n\n const handleVisibilityChange = (index: number, visible: boolean) => {\n const newColumns = columns.map((col, i) =>\n i === index ? { ...col, visible } : col,\n );\n setViewColumns(newColumns);\n };\n\n const handleDragStart = useCallback(\n (\n e: React.DragEvent<HTMLDivElement>,\n group: 'fixed' | 'visible',\n index: number,\n ) => {\n // Create custom drag image with desired styling\n const dragElement = e.currentTarget.cloneNode(true) as HTMLElement;\n dragElement.style.backgroundColor = '#F5F5F5';\n // dragElement.style.opacity = '0.9';\n dragElement.style.transform = 'scale(1.02)';\n dragElement.style.opacity = '1.0';\n dragElement.style.boxShadow = '0 2px 8px rgba(0, 0, 0, 0.15)';\n dragElement.style.position = 'absolute';\n dragElement.style.top = '-1000px'; // Hide off-screen\n dragElement.style.width = `${e.currentTarget.clientWidth}px`;\n dragElement.style.height = `${e.currentTarget.clientHeight}px`;\n\n document.body.appendChild(dragElement);\n e.dataTransfer.setDragImage(\n dragElement,\n e.nativeEvent.offsetX,\n e.nativeEvent.offsetY,\n );\n\n // Remove the temporary element after drag starts\n setTimeout(() => document.body.removeChild(dragElement), 0);\n\n e.dataTransfer.effectAllowed = 'move';\n setDragState({ index, group });\n },\n [setDragState],\n );\n\n const handleDragOver = useCallback((e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n }, []);\n\n const handleDragEnd = useCallback(() => {\n setDragState(null);\n }, [setDragState]);\n\n const handleDrop = (\n e: React.DragEvent<HTMLDivElement>,\n group: 'fixed' | 'visible',\n dragIndex: number,\n ) => {\n console.log('handleDrop', e.dataTransfer, group, dragIndex);\n if (!dragState) {\n return;\n }\n if (dragState.index === dragIndex) {\n return;\n }\n if (group === 'fixed' && fixedColumns.length >= 3) {\n return;\n }\n\n // const [draggedItem] = newColumns.splice(draggedIndex, 1);\n // newColumns.splice(dropIndex, 0, draggedItem);\n\n const targetIndex = group === 'fixed' ? dragIndex + 1 : dragIndex;\n const newColumns = [...columns];\n const [originItem] = newColumns.splice(dragState.index, 1);\n originItem.fixed = group === 'fixed';\n newColumns.splice(targetIndex, 0, originItem);\n newColumns.forEach((col, i) => (col.index = i));\n setViewColumns(newColumns);\n };\n\n const renderDraggableItem = (\n column: ViewColumn & { index: number },\n group: 'fixed' | 'visible',\n ) => {\n const columnDefinition = viewDefinition.columns.find(\n col => col.dataIndex === column.dataIndex,\n );\n if (!columnDefinition) {\n return <></>;\n }\n\n return (\n <div\n className={`${styles.item} ${dragState?.index === column.index ? styles.dragging : ''}`}\n key={columnDefinition.dataIndex}\n draggable={!columnDefinition.primaryKey}\n onDragStart={e => handleDragStart(e, group, column.index)}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n onDrop={e => handleDrop(e, group, column.index)}\n >\n <TableFieldItem\n columnDefinition={columnDefinition}\n fixed={column.fixed || false}\n visible={column.visible}\n onVisibleChange={visible =>\n handleVisibilityChange(column.index, visible)\n }\n />\n </div>\n );\n };\n\n const renderStaticItem = (column: ViewColumn & { index: number }) => {\n const columnDefinition = viewDefinition.columns.find(\n col => col.dataIndex === column.dataIndex,\n );\n if (!columnDefinition) {\n return <></>;\n }\n\n return (\n <div className={styles.item} key={columnDefinition.dataIndex}>\n <TableFieldItem\n columnDefinition={columnDefinition}\n fixed={column.fixed || false}\n visible={column.visible}\n onVisibleChange={visible =>\n handleVisibilityChange(column.index, visible)\n }\n />\n </div>\n );\n };\n\n return (\n <Space size={0} orientation=\"vertical\" style={{ display: 'flex' }}>\n <div className={styles.groupTitle}>已显示字段</div>\n {fixedColumns.map(column => renderDraggableItem(column, 'fixed'))}\n <div className={styles.tips}>\n 请将需要锁定的字段拖至上方(最多支持3列)\n </div>\n {visibleColumns.map(column => renderDraggableItem(column, 'visible'))}\n <div className={styles.groupTitle}>未显示字段</div>\n {hiddenColumns.map(column => renderStaticItem(column))}\n </Space>\n );\n}\n","import { Table, Popover } from 'antd';\nimport { ActionsCell, TextCell, typedCellRender } from './cell';\nimport { ViewTableProps } from './types';\nimport { SettingOutlined } from '@ant-design/icons';\nimport styles from './ViewTable.module.css';\nimport { TableSettingPanel } from './setting';\nimport { useViewerSharedValue } from '../viewer';\n\nimport type { TableColumnsType } from 'antd';\n\n/**\n * Renders a view table using Ant Design's Table component with typed cell rendering.\n *\n * This component provides a flexible table view that supports various cell types\n * through a typed cell rendering system. It automatically handles column configuration,\n * cell rendering based on type, and optional action columns with multiple actions.\n *\n * @template RecordType - The type of the records in the data source.\n * @param props - The props for the ViewTable component.\n * @param props.columns - Array of column definitions with cell type and attributes.\n * @param props.dataSource - Array of records to display in the table.\n * @param props.attributes - Optional attributes to pass to the underlying Table component.\n * @param props.actionColumn - Optional action column configuration with actions function.\n * @returns A React element representing the view table.\n *\n * @example\n * ```tsx\n * interface User {\n * id: number;\n * name: string;\n * email: string;\n * status: string;\n * }\n *\n * const columns: ViewColumnProps[] = [\n * {\n * title: 'Name',\n * dataIndex: 'name',\n * cell: { type: 'text' },\n * primaryKey: false\n * },\n * {\n * title: 'Email',\n * dataIndex: 'email',\n * cell: { type: 'link', attributes: { target: '_blank' } },\n * primaryKey: false\n * },\n * {\n * title: 'Status',\n * dataIndex: 'status',\n * cell: { type: 'badge' },\n * primaryKey: false\n * }\n * ];\n *\n * const dataSource: User[] = [\n * { id: 1, name: 'John Doe', email: 'john@example.com', status: 'active' }\n * ];\n *\n * <ViewTable\n * columns={columns}\n * dataSource={dataSource}\n * attributes={{ pagination: { pageSize: 10 } }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With action column\n * const actionColumn: ViewTableActionColumn<User> = {\n * title: 'Actions',\n * dataIndex: 'actions',\n * cell: { type: 'actions' },\n * primaryKey: false,\n * actions: (record) => ({\n * primaryAction: {\n * data: { value: 'Edit', record, index: 0 },\n * attributes: { onClick: () => editUser(record.id) }\n * },\n * secondaryActions: [\n * {\n * data: { value: 'Delete', record, index: 0 },\n * attributes: { onClick: () => deleteUser(record.id), danger: true }\n * }\n * ]\n * })\n * };\n *\n * <ViewTable\n * columns={columns}\n * dataSource={dataSource}\n * actionColumn={actionColumn}\n * />\n * ```\n */\nexport function ViewTable<RecordType = any>(props: ViewTableProps<RecordType>) {\n const { viewDefinition, dataSource, actionColumn, attributes } = props;\n\n const { viewColumns, tableSize } = useViewerSharedValue();\n const tableColumns: TableColumnsType<RecordType> = viewColumns\n .filter(it => it.visible)\n .map(it => {\n const columnDefinition = viewDefinition.columns.find(\n col => col.dataIndex === it.dataIndex,\n );\n\n return columnDefinition\n ? {\n title: columnDefinition.title,\n dataIndex: it.dataIndex.split('.'),\n fixed: columnDefinition.primaryKey\n ? 'start'\n : it.fixed\n ? 'start'\n : '',\n render: (value, record, index) => {\n const cellRender = typedCellRender(\n columnDefinition.type,\n columnDefinition.attributes || {},\n );\n if (cellRender) {\n return cellRender(value, record, index);\n } else {\n return (\n <TextCell data={{ value: String(value), record, index }} />\n );\n }\n },\n ...columnDefinition.attributes,\n width: it.width,\n }\n : {\n title: '未知',\n dataIndex: it.dataIndex,\n render: (value, record, index) => {\n return (\n <TextCell\n data={{ value: String(value) || 'ERROR', record, index }}\n />\n );\n },\n };\n });\n if (actionColumn) {\n const dataIndex =\n actionColumn.dataIndex ||\n viewDefinition.columns.find(x => x.primaryKey)?.dataIndex ||\n 'id';\n\n tableColumns.push({\n title: () => {\n if (actionColumn.configurable) {\n const settingPanel = (\n <TableSettingPanel viewDefinition={viewDefinition} />\n );\n\n return (\n <div className={styles.configurableColumnHeader}>\n <span>{actionColumn.title}</span>\n <Popover\n content={settingPanel}\n title={actionColumn.configurePanelTitle || 'Setting'}\n placement=\"bottomRight\"\n trigger=\"click\"\n >\n <SettingOutlined />\n </Popover>\n </div>\n );\n }\n return actionColumn.title;\n },\n dataIndex: dataIndex,\n key: 'action',\n fixed: 'end',\n width: '200px',\n render: (_, record) => {\n const actionsData = props.actionColumn!.actions(record);\n const data = {\n value: actionsData,\n record: record,\n index: viewColumns.length + 1,\n };\n return <ActionsCell data={data} />;\n },\n });\n }\n\n return (\n <Table<RecordType>\n dataSource={dataSource}\n columns={tableColumns}\n {...attributes}\n scroll={{ x: 'max-content' }}\n size={tableSize}\n />\n );\n}\n"],"names":["OPERATOR_zh_CN","AND","OR","NOR","ID","IDS","AGGREGATE_ID","AGGREGATE_IDS","TENANT_ID","OWNER_ID","DELETED","ALL","EQ","NE","GT","LT","GTE","LTE","CONTAINS","IN","NOT_IN","BETWEEN","ALL_IN","STARTS_WITH","ENDS_WITH","ELEM_MATCH","NULL","NOT_NULL","TRUE","FALSE","EXISTS","TODAY","BEFORE_TODAY","TOMORROW","THIS_WEEK","NEXT_WEEK","LAST_WEEK","THIS_MONTH","LAST_MONTH","RECENT_DAYS","EARLIER_DAYS","RAW","UNDEFINED","ExtendedOperator","EMPTY_ACTIVE_FILTERS","AvailableFilterSelect","props","$","_c","filters","activeFilters","t0","ref","undefined","t1","map","_temp","sort","activeFilterFieldNames","selectedFilters","setSelectedFilters","useState","t2","getValue","flatMap","group","filter","includes","field","name","some","activeFilter_0","activeFilter","useImperativeHandle","t3","filter_0","checked","handleCheck","t4","t5","useEffect","t6","t7","group_0","jsxs","jsx","Typography","label","Flex","filter_1","Checkbox","e","target","activeFilter_1","AvailableFilterSelectModal","availableFilterSelectRef","useRef","onSave","current","handleOk","availableFilters","Modal","StringTagValueItemSerializer","serialize","value","deserialize","NumberTagValueItemSerializer","item","toString","parseFloat","DEFAULT_TOKEN_SEPARATORS","TagInput","onChange","restProps","tokenSeparators","allowClear","serializer","value_0","parsedValue","handleChange","serializedValue","Array","isArray","Select","displayName","convertToRangeValue","DEFAULT_PLACEHOLDER","NumberRange","isControlled","defaultValue","internalValue","setInternalValue","start","end","newValue","handleValueChange","newStart","handleStartChange","newEnd","handleEndChange","startMax","max","endMin","min","placeholder","precision","InputNumber","Symbol","for","Input","width","borderInlineStart","borderInlineEnd","pointerEvents","t8","t9","Space","DEFAULT_DEBOUNCE","delay","leading","trailing","RemoteSelect","options","search","selectProps","debounce","loading","result","run","useDebouncedExecutePromise","trim","handleSearch","Fullscreen","enterIcon","FullscreenOutlined","exitIcon","FullscreenExitOutlined","buttonProps","isFullscreen","toggle","useFullscreen","Button","isValidBetweenValue","length","isValidValue","currentTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","TrueValidateValue","defaultValidateValue","operator","EMPTY_VALUE_OPERATORS","has","Operator","defaultConditionValueParser","defaultValueConverter","beforeOperator","afterOperator","defaultFilterValueConverter","filterValue","useFilterState","setOperator","setValue","validate","valueParser","conditionValueParser","valueConverter","onOperatorChangeValueConverter","filterValueConverter","conditionOptions","currentOperator","currentValue","conditionValue","condition","resolveFilterValue","newOperator","afterValue","filterValue_0","setOperatorFn","filterValue_1","setValueFn","filterValue_2","resetFn","reset","AssemblyFilter","supportedOperators","Error","operatorLocale","locale","initialOperator","filterState","valueInput","valueInputRender","supportedOperator","minWidth","className","style","TEXT_FILTER","TextFilter","assemblyFilterProps","ID_FILTER","IdOnOperatorChangeValueConverter","trimmedValue","IdFilter","NUMBER_FILTER","NumberFilter","restValue_0","restValue","defaultInputNumber","v","SELECT_FILTER","SelectFilter","BOOL_FILTER","BoolFilter","t","module","this","n","s","a","o","c","f","h","d","l","y","M","__name","m","r","i","u","g","D","p","S","_","w","O","k","DATE_TIME_FILTER_NAME","TIME_FORMAT","DateTimeNumberValueOperators","Set","DateTimeDayjsValueOperators","DateTimeOnOperatorChangeValueConverter","TimestampConditionValueParser","valueOf","isDayjs","format","DateTimeFilter","rangResetProps","DatePicker","assemblyConditionFilterProps","TypedComponentRegistry","registry","Map","types","from","keys","entries","size","type","clear","register","component","set","unregister","delete","get","create","components","forEach","_TypedComponentRegistry","filterRegistry","FallbackFilter","Alert","DEFAULT_VALUE_STYLE","flex","TypedFilter","FilterComponent","valueProps","filterProps","React","createElement","RemovableTypedFilter","onRemove","rest","showRemove","setShowRemove","MinusOutlined","DEFAULT_ROW_PROPS","gutter","wrap","DEFAULT_COL_PROPS","xxl","xl","lg","md","sm","xs","DEFAULT_ACTIONS_COL_PROPS","FilterPanel","row","col","actionsCol","onSearch","actions","resetButton","searchButton","filterRefs","useRefs","conditions","values","Boolean","finalCondition","and","filterRef","handleReset","showResetButton","resetButtonProps","Col","key","ClearOutlined","children","SearchOutlined","t10","t11","t12","t13","t14","Fragment","Row","ref_0","EditableFilterPanel","setActiveFilters","modalOpen","setModalOpen","generator","useRequestId","selectedAvailableFilters","newFilters","available","generate","handleAddFilter","newFilters_0","removeFilter","editableFilters","ACTION_CELL_TYPE","isActionCellProps","obj","data","record","index","attributes","ActionCell","onClick","padding","ACTIONS_CELL_TYPE","renderActions","secondaryButtons","secondaryActions","action","primaryAction","Dropdown","items","moreActionTitle","DownOutlined","ActionsCell","parseDayjs","dayjs","isNullOrUndefined","isValidImageSrc","toLowerCase","startsWith","test","AVATAR_CELL_TYPE","AvatarCell","Avatar","Text","DATETIME_CELL_TYPE","DEFAULT_DATE_TIME_FORMAT","DateTimeCell","T0","bb0","textProps","date","isValid","extend","calendar","CALENDAR_CELL_TYPE","DEFAULT_CALENDAR_FORMATS","sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse","CalendarTimeCell","formats","TEXT_CELL_TYPE","TextCell","TAG_CELL_TYPE","TagCell","Tag","TAGS_CELL_TYPE","TagsCell","space","tag","tagAttributes","IMAGE_CELL_TYPE","ImageCell","Empty","Image","IMAGE_GROUP_CELL_TYPE","ImageGroupCell","hasMultipleImages","mainImageElement","Badge","Link","LINK_CELL_TYPE","EMAIL_REGEX","EMAIL_PREFIX","LinkCell","isEmail","href","linkProps","DEFAULT_CURRENCY_FORMAT_OPTIONS","currency","currencyDisplay","decimals","useGrouping","fallback","NUMBER_FORMATE_STYLE","formatCurrency","amount","numericAmount","parseAmount","isNaN","isFinite","NumberFormat","minimumFractionDigits","maximumFractionDigits","NaN","cleanedAmount","replace","CURRENCY_CELL_TYPE","CurrencyCell","formattedValue","cellRegistry","typedCellRender","CellComponent","TableFieldItem","display","justifyContent","onVisibleChange","columnDefinition","primaryKey","title","visible","DragOutlined","ViewerSharedValueContext","createContext","ViewerSharedValueProvider","useViewerSharedValue","context","useContext","BarItem","icon","active","styles","FILTER_BAR_ITEM_TYPE","FilterBarItem","showFilterPanel","setShowFilterPanel","setActive","handleClick","FilterOutlined","REFRESH_DATA_BAR_ITEM_TYPE","RefreshDataBarItem","refreshData","ReloadOutlined","COLUMN_HEIGHT_BAR_ITEM_TYPE","ColumnHeightBarItem","tableSize","setTableSize","handleSelect","selectable","defaultSelectedKeys","onSelect","ColumnHeightOutlined","preventDefault","SHARE_LINK_BAR_ITEM_TYPE","ShareLinkBarItem","messageApi","contextHolder","message","useMessage","currentFullPath","window","location","navigator","clipboard","writeText","success","console","error","LinkOutlined","barItemRegistry","TypedBarItem","TopBarItemComponent","topBarItemProps","TopBar","barItems","aggregateName","viewName","alignItems","lineHeight","barItem","Header","Footer","Sider","Content","Layout","Viewer","view","definition","actionColumn","paginationProps","dataSourceUrl","url","onError","getQuery","setQuery","useDebouncedFetcherQuery","filterPanelRef","viewColumns","setViewColumns","columns","newColumns","updateViewColumns","newShowFilterPanel","updateShowFilterPanel","viewTableSize","setViewTableSize","newTableSize","updateTableSize","editableFilterPanelProps","defaultPageSize","pagination","page","pageSize","all","onPaginationChange","personalViews","topBar","filterPanel","t15","list","t16","t17","ViewTable","t18","t19","total","t20","t21","Pagination","_temp2","t22","container","t23","t24","log","TableSettingPanel","viewDefinition","dragState","setDragState","fixedColumns","visibleColumns","_temp3","hiddenColumns","_temp4","handleVisibilityChange","index_0","col_3","index_1","dragElement","currentTarget","cloneNode","backgroundColor","transform","opacity","boxShadow","position","top","clientWidth","height","clientHeight","document","body","appendChild","dataTransfer","setDragImage","nativeEvent","offsetX","offsetY","setTimeout","removeChild","effectAllowed","handleDragStart","handleDragOver","_temp5","handleDragEnd","handleDrop","e_1","dragIndex","targetIndex","newColumns_0","originItem","splice","fixed","_temp6","renderDraggableItem","column","group_1","find","dataIndex","dragging","e_2","e_3","visible_0","renderStaticItem","column_0","columnDefinition_0","visible_1","groupTitle","tips","column_1","column_2","column_3","col_4","i_0","e_0","dropEffect","col_2","col_1","col_0","dataSource","tableColumns","it_0","it","split","render","cellRender","String","configurable","configurePanelTitle","settingPanel","configurableColumnHeader","Popover","SettingOutlined","record_1","push","x","Table","record_0"],"mappings":"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","x_google_ignoreList":[16,29]}
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/filter/operator/locale/operator.zh_CN.ts","../src/filter/operator/types.ts","../src/filter/panel/AvailableFilterSelect.tsx","../src/filter/panel/AvailableFilterSelectModal.tsx","../src/components/TagInput.tsx","../src/components/NumberRange.tsx","../src/components/RemoteSelect.tsx","../src/components/fullscreen/Fullscreen.tsx","../src/filter/utils.ts","../src/filter/useFilterState.ts","../src/filter/AssemblyFilter.tsx","../src/filter/TextFilter.tsx","../src/filter/IdFilter.tsx","../src/filter/NumberFilter.tsx","../src/filter/SelectFilter.tsx","../src/filter/BoolFilter.tsx","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js","../src/filter/DateTimeFilter.tsx","../src/registry/componentRegistry.ts","../src/filter/filterRegistry.ts","../src/filter/FallbackFilter.tsx","../src/filter/TypedFilter.tsx","../src/filter/panel/RemovableTypedFilter.tsx","../src/filter/panel/FilterPanel.tsx","../src/filter/panel/EditableFilterPanel.tsx","../src/table/cell/ActionCell.tsx","../src/table/cell/ActionsCell.tsx","../src/table/cell/utils.ts","../src/table/cell/AvatarCell.tsx","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/calendar.js","../src/table/cell/DateTimeCell.tsx","../src/table/cell/CalendarTime.tsx","../src/table/cell/TextCell.tsx","../src/table/cell/TagCell.tsx","../src/table/cell/TagsCell.tsx","../src/table/cell/ImageCell.tsx","../src/table/cell/ImageGroupCell.tsx","../src/table/cell/LinkCell.tsx","../src/table/cell/currencyFormatter.ts","../src/table/cell/CurrencyCell.tsx","../src/table/cell/cellRegistry.ts","../src/table/cell/TypedCell.tsx","../src/table/setting/TableFieldItem.tsx","../src/viewer/ViewerSharedValueContext.tsx","../src/topbar/BarItem.tsx","../src/topbar/FilterBarItem.tsx","../src/topbar/RefreshDataBarItem.tsx","../src/topbar/ColumnHeightBarItem.tsx","../src/topbar/ShareLinkBarItem.tsx","../src/topbar/barItemRegistry.ts","../src/topbar/TypedBarItem.tsx","../src/topbar/TopBar.tsx","../src/viewer/Viewer.tsx","../src/table/setting/TableSettingPanel.tsx","../src/table/ViewTable.tsx"],"sourcesContent":["/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SelectOperatorLocale } from '../types';\n\nexport const OPERATOR_zh_CN: SelectOperatorLocale = {\n AND: '与',\n OR: '或',\n NOR: '非或',\n ID: '等于',\n IDS: '包含任一',\n AGGREGATE_ID: '等于',\n AGGREGATE_IDS: '包含任一',\n TENANT_ID: '等于',\n OWNER_ID: '等于',\n DELETED: '已删除',\n ALL: '全部',\n EQ: '等于',\n NE: '不等于',\n GT: '大于',\n LT: '小于',\n GTE: '大于等于',\n LTE: '小于等于',\n CONTAINS: '包含',\n IN: '包含任一',\n NOT_IN: '不包含任一',\n BETWEEN: '介于',\n ALL_IN: '全部包含',\n STARTS_WITH: '以...开头',\n ENDS_WITH: '以...结尾',\n ELEM_MATCH: '元素匹配',\n NULL: '为空',\n NOT_NULL: '不为空',\n TRUE: '是',\n FALSE: '否',\n EXISTS: '存在',\n TODAY: '今天',\n BEFORE_TODAY: '今天之前',\n TOMORROW: '明天',\n THIS_WEEK: '本周',\n NEXT_WEEK: '下周',\n LAST_WEEK: '上周',\n THIS_MONTH: '本月',\n LAST_MONTH: '上月',\n RECENT_DAYS: '最近几天',\n EARLIER_DAYS: '几天前',\n RAW: '原始查询',\n UNDEFINED: '未设置',\n};\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Operator } from '@ahoo-wang/fetcher-wow';\n\nexport enum ExtendedOperator {\n UNDEFINED = 'UNDEFINED',\n}\n\nexport type SelectOperator = ExtendedOperator | Operator;\n\nexport type SelectOperatorLocale = {\n [K in Operator]: string;\n} & {\n [K in ExtendedOperator]: string;\n};\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterField, FilterOperatorProps, FilterValueProps } from '../types';\nimport { FilterType } from '../TypedFilter';\nimport { Checkbox, Flex, Typography } from 'antd';\nimport { StyleCapable } from '../../types';\nimport {\n RefAttributes,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\nimport { ActiveFilter } from './FilterPanel';\n\nexport interface AvailableFilter {\n field: FilterField;\n component: FilterType;\n value?: FilterValueProps;\n operator?: FilterOperatorProps;\n}\n\nexport interface AvailableFilterGroup {\n label: string;\n filters: AvailableFilter[];\n}\n\nexport interface AvailableFilterSelectRef {\n getValue(): AvailableFilter[];\n}\n\nexport interface AvailableFilterSelectProps\n extends StyleCapable,\n RefAttributes<AvailableFilterSelectRef> {\n filters: AvailableFilterGroup[];\n activeFilters?: ActiveFilter[];\n}\n\nconst EMPTY_ACTIVE_FILTERS: ActiveFilter[] = [];\n\nexport function AvailableFilterSelect(props: AvailableFilterSelectProps) {\n const { filters, activeFilters = EMPTY_ACTIVE_FILTERS, ref } = props;\n const activeFilterFieldNames = useMemo(() => {\n return activeFilters?.map(activeFilter => activeFilter.field.name).sort();\n }, [activeFilters]);\n const [selectedFilters, setSelectedFilters] = useState<string[]>(\n activeFilterFieldNames,\n );\n useImperativeHandle(ref, () => ({\n getValue(): AvailableFilter[] {\n return props.filters.flatMap(group =>\n group.filters.filter(\n filter =>\n selectedFilters.includes(filter.field.name) &&\n !activeFilters.some(\n activeFilter => activeFilter.field.name === filter.field.name,\n ),\n ),\n );\n },\n }));\n const handleCheck = (filter: AvailableFilter, checked: boolean) => {\n if (checked) {\n setSelectedFilters([...selectedFilters, filter.field.name]);\n } else {\n setSelectedFilters(\n selectedFilters.filter(name => name !== filter.field.name),\n );\n }\n };\n\n useEffect(() => {\n setSelectedFilters(activeFilterFieldNames);\n }, [activeFilterFieldNames]);\n return (\n <>\n {filters.map(group => (\n <div key={group.label}>\n <Typography.Title level={5}>{group.label}</Typography.Title>\n <Flex gap=\"middle\" wrap>\n {group.filters.map(filter => (\n <Checkbox\n key={filter.field.name}\n checked={selectedFilters.includes(filter.field.name)}\n onChange={e => {\n handleCheck(filter, e.target.checked);\n }}\n disabled={activeFilters.some(\n activeFilter => activeFilter.field.name === filter.field.name,\n )}\n >\n {filter.field.label}\n </Checkbox>\n ))}\n </Flex>\n </div>\n ))}\n </>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Modal, ModalProps } from 'antd';\nimport {\n AvailableFilter,\n AvailableFilterSelect,\n AvailableFilterSelectProps,\n AvailableFilterSelectRef,\n} from './AvailableFilterSelect';\nimport React, { useRef } from 'react';\n\nexport interface AvailableFiltersModalProps extends Omit<ModalProps, 'onOk'> {\n availableFilters: Omit<AvailableFilterSelectProps, 'ref'>;\n onSave?: (filters: AvailableFilter[]) => void;\n}\n\nexport function AvailableFilterSelectModal(props: AvailableFiltersModalProps) {\n const availableFilterSelectRef = useRef<AvailableFilterSelectRef>(null);\n const handleOk = () => {\n props?.onSave?.(availableFilterSelectRef.current?.getValue() ?? []);\n };\n return (\n <Modal {...props} onOk={handleOk}>\n <AvailableFilterSelect\n {...props.availableFilters}\n ref={availableFilterSelectRef}\n />\n </Modal>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RefSelectProps, Select, SelectProps } from 'antd';\nimport { RefObject } from 'react';\nimport { Optional } from '../types';\n\nexport interface TagValueItemSerializer<ValueItemType = string> {\n serialize(value: ValueItemType[]): string[];\n\n deserialize(value: string[]): ValueItemType[];\n}\n\nexport const StringTagValueItemSerializer: TagValueItemSerializer = {\n serialize(value: string[]): string[] {\n return value;\n },\n deserialize(value: string[]): string[] {\n return value;\n },\n};\n\nexport const NumberTagValueItemSerializer: TagValueItemSerializer<number> = {\n serialize(value: number[]): string[] {\n return value.map(item => item.toString());\n },\n deserialize(value: string[]): number[] {\n return value.map(item => parseFloat(item));\n },\n};\n\n/**\n * Props for the TagInput component.\n * Extends SelectProps from Antd, excluding 'mode', 'open', and 'suffixIcon' as they are fixed.\n */\nexport interface TagInputProps<ValueItemType = string>\n extends Omit<\n SelectProps,\n 'mode' | 'open' | 'suffixIcon' | 'onChange' | 'value'\n > {\n ref?: RefObject<RefSelectProps>;\n serializer?: TagValueItemSerializer<ValueItemType>;\n onChange?: (value: ValueItemType[]) => void;\n value?: Optional<ValueItemType | ValueItemType[]>;\n}\n\n/**\n * Default token separators for splitting input into tags.\n * Includes common separators like comma, semicolon, and space.\n */\nconst DEFAULT_TOKEN_SEPARATORS = [',', ',', ';', ';', ' '];\n\n/**\n * A tag input component based on Antd's Select in tags mode.\n * Allows users to input multiple tags separated by specified token separators.\n * @param props - The props for the TagInput component.\n * @returns The rendered TagInput component.\n */\nexport function TagInput<ValueItemType = string[]>(\n props: TagInputProps<ValueItemType>,\n) {\n const {\n tokenSeparators = DEFAULT_TOKEN_SEPARATORS,\n allowClear = true,\n serializer = StringTagValueItemSerializer as TagValueItemSerializer<ValueItemType>,\n value,\n onChange,\n ...restProps\n } = props;\n const handleChange = (value: string[]) => {\n if (!onChange) {\n return;\n }\n const parsedValue = serializer.deserialize(value);\n onChange(parsedValue);\n };\n let serializedValue: string[] | null = null;\n if (value) {\n if (Array.isArray(value)) {\n serializedValue = serializer.serialize(value);\n } else {\n serializedValue = serializer.serialize([value]);\n }\n }\n return (\n <Select\n {...restProps}\n mode={'tags'}\n open={false}\n suffixIcon={null}\n allowClear={allowClear}\n tokenSeparators={tokenSeparators}\n value={serializedValue}\n onChange={handleChange}\n />\n );\n}\n\nTagInput.displayName = 'TagInput';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input, InputNumber, Space } from 'antd';\nimport { useState } from 'react';\n\ntype NumberRangeValue = (number | undefined)[];\n\nexport interface NumberRangeProps {\n value?: number | NumberRangeValue;\n defaultValue?: number | NumberRangeValue;\n min?: number;\n max?: number;\n precision?: number;\n placeholder?: string[];\n onChange?: (value: NumberRangeValue) => void;\n}\n\nconst convertToRangeValue = (\n value: number | NumberRangeValue | undefined,\n): NumberRangeValue => {\n if (Array.isArray(value)) {\n return value;\n }\n return [value, undefined];\n};\n\nconst DEFAULT_PLACEHOLDER = ['最小值', '最大值'];\n\nexport function NumberRange(props: NumberRangeProps) {\n const isControlled = props.value !== undefined;\n const [internalValue, setInternalValue] = useState<NumberRangeValue>(\n convertToRangeValue(props.defaultValue),\n );\n const value = isControlled ? convertToRangeValue(props.value) : internalValue;\n const [start, end] = value;\n const handleValueChange = (newValue: NumberRangeValue) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n props.onChange?.(newValue);\n };\n\n const handleStartChange = (newStart: number | null) => {\n const startVal = newStart ?? undefined;\n handleValueChange([startVal, end]);\n };\n\n const handleEndChange = (newEnd: number | null) => {\n const endVal = newEnd ?? undefined;\n handleValueChange([start, endVal]);\n };\n\n const startMax = end !== undefined ? end : props.max;\n const endMin = start !== undefined ? start : props.min;\n const placeholder = props.placeholder\n ? [\n props.placeholder[0] || DEFAULT_PLACEHOLDER[0],\n props.placeholder[1] || DEFAULT_PLACEHOLDER[1],\n ]\n : DEFAULT_PLACEHOLDER;\n return (\n <Space.Compact block>\n <InputNumber\n value={start}\n min={props.min}\n max={startMax}\n precision={props.precision}\n placeholder={placeholder[0]}\n onChange={handleStartChange}\n />\n <Input\n style={{\n width: 30,\n borderInlineStart: 0,\n borderInlineEnd: 0,\n pointerEvents: 'none',\n }}\n placeholder=\"~\"\n disabled\n />\n <InputNumber\n value={end}\n min={endMin}\n max={props.max}\n precision={props.precision}\n placeholder={placeholder[1]}\n onChange={handleEndChange}\n />\n </Space.Compact>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Select, SelectProps, RefSelectProps } from 'antd';\nimport {\n UseDebouncedCallbackOptions,\n useDebouncedExecutePromise,\n} from '@ahoo-wang/fetcher-react';\nimport { StyleCapable } from '../types';\nimport { RefAttributes } from 'react';\nimport { BaseOptionType, DefaultOptionType } from 'antd/lib/select';\n\nexport interface RemoteSelectProps<\n ValueType = any,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType,\n> extends Omit<SelectProps<ValueType, OptionType>, 'loading' | 'onSearch'>,\n RefAttributes<RefSelectProps>,\n StyleCapable {\n debounce?: UseDebouncedCallbackOptions;\n search: (search: string) => Promise<OptionType[]>;\n}\n\nconst DEFAULT_DEBOUNCE = {\n delay: 300,\n leading: false,\n trailing: true,\n};\n\n/**\n * A Select component that loads options from a remote API.\n * Supports automatic fetching, loading states, and error handling.\n */\nexport function RemoteSelect<\n ValueType = any,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType,\n>(props: RemoteSelectProps<ValueType, OptionType>) {\n const {\n debounce = DEFAULT_DEBOUNCE,\n search,\n options,\n ...selectProps\n } = props;\n const { loading, result, run } = useDebouncedExecutePromise<OptionType[]>({\n debounce: debounce,\n });\n const handleSearch = (value: string) => {\n if (value.trim() === '' && result) {\n return;\n }\n run(() => {\n return search(value);\n });\n };\n return (\n <Select<ValueType, OptionType>\n filterOption={false}\n showSearch={true}\n loading={loading}\n onSearch={handleSearch}\n options={result ?? options}\n {...selectProps}\n />\n );\n}\n\nRemoteSelect.displayName = 'RemoteSelect';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button, ButtonProps } from 'antd';\nimport { FullscreenOutlined, FullscreenExitOutlined } from '@ant-design/icons';\nimport { RefObject, ReactNode } from 'react';\nimport { useFullscreen } from '@ahoo-wang/fetcher-react';\n\nexport interface FullScreenProps extends Omit<\n ButtonProps,\n 'icon' | 'onClick' | 'onChange' | 'target'\n> {\n /**\n * Target element to make fullscreen. If not provided, uses the document root element.\n */\n target?: RefObject<HTMLElement | null>;\n /**\n * Callback when fullscreen state changes\n */\n onChange?: (isFullscreen: boolean) => void;\n /**\n * Custom icon for entering fullscreen\n */\n enterIcon?: ReactNode;\n /**\n * Custom icon for exiting fullscreen\n */\n exitIcon?: ReactNode;\n}\n\n/**\n * A button component that toggles fullscreen mode.\n * Follows the existing component patterns in the viewer package.\n */\nexport function Fullscreen(props: FullScreenProps) {\n const {\n target,\n onChange,\n enterIcon = <FullscreenOutlined />,\n exitIcon = <FullscreenExitOutlined />,\n ...buttonProps\n } = props;\n\n const { isFullscreen, toggle } = useFullscreen({\n target,\n onChange,\n });\n\n return (\n <Button\n {...buttonProps}\n icon={isFullscreen ? exitIcon : enterIcon}\n onClick={toggle}\n />\n );\n}\n\nFullscreen.displayName = 'FullScreen';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Validates if a value is a valid \"between\" value, which is an array containing exactly two valid values.\n * This function is typically used in filtering contexts where a range is specified as [min, max].\n *\n * @param value - The value to validate. Should be an array of exactly two elements.\n * @returns {boolean} Returns true if the value is an array of exactly two valid (non-null, non-undefined) values, otherwise false.\n *\n * @example\n * ```typescript\n * isValidBetweenValue([1, 10]); // true - valid range\n * isValidBetweenValue([null, 10]); // false - first value is invalid\n * isValidBetweenValue([1]); // false - not exactly two elements\n * isValidBetweenValue(\"not an array\"); // false - not an array\n * ```\n */\nexport function isValidBetweenValue(value: any): boolean {\n if (!Array.isArray(value)) {\n return false;\n }\n if (value.length !== 2) {\n return false;\n }\n return isValidValue(value[0]) && isValidValue(value[1]);\n}\n\n/**\n * Checks if a value is valid by ensuring it is neither null nor undefined.\n * This is a basic validation function used throughout the filtering system to determine\n * if a value can be considered meaningful for operations.\n *\n * @param value - The value to check for validity. Can be of any type.\n * @returns {boolean} Returns true if the value is not null and not undefined, otherwise false.\n *\n * @example\n * ```typescript\n * isValidValue(42); // true\n * isValidValue(\"hello\"); // true\n * isValidValue(null); // false\n * isValidValue(undefined); // false\n * isValidValue(0); // true - zero is valid\n * isValidValue(\"\"); // true - empty string is valid\n * ```\n */\nexport function isValidValue(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\n/**\n * Retrieves the current timezone of the user's environment.\n * This function uses the Intl.DateTimeFormat API to determine the system's timezone setting.\n *\n * @returns {string} The timezone identifier as a string (e.g., \"America/New_York\", \"Europe/London\").\n *\n * @throws {Error} May throw if the Intl API is not available in the environment.\n *\n * @example\n * ```typescript\n * const tz = currentTimeZone();\n * console.log(tz); // \"America/New_York\" (depending on system settings)\n * ```\n *\n * @note This function relies on the browser's or Node.js environment's Intl support.\n * In environments without Intl support, this may not work as expected.\n */\nexport function currentTimeZone(): string {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Condition,\n ConditionOptions,\n EMPTY_VALUE_OPERATORS,\n Operator,\n} from '@ahoo-wang/fetcher-wow';\nimport { RefAttributes, useImperativeHandle, useState } from 'react';\nimport { FilterRef, FilterValue } from './types';\nimport { Optional } from '../types';\nimport { ExtendedOperator, SelectOperator } from './operator';\nimport { isValidBetweenValue } from './utils';\n\nexport type OnOperatorChangeValueConverter = (\n beforeOperator: SelectOperator,\n afterOperator: SelectOperator,\n value: Optional,\n) => Optional;\nexport type OnChange = (condition: Optional<FilterValue>) => void;\nexport type ValidateValue = (operator: Operator, value: Optional) => boolean;\nexport type ConditionValueParser = (\n operator: Operator,\n value: Optional,\n) => Optional;\nexport type FilterValueConverter = (\n filterValue: FilterValue,\n) => Optional<FilterValue>;\nexport const TrueValidateValue: ValidateValue = (): boolean => {\n return true;\n};\n\nexport interface UseFilterStateOptions extends RefAttributes<FilterRef> {\n field?: string;\n operator: SelectOperator;\n value: Optional;\n conditionOptions?: ConditionOptions;\n onOperatorChangeValueConverter?: OnOperatorChangeValueConverter;\n validate?: ValidateValue;\n conditionValueParser?: ConditionValueParser;\n filterValueConverter?: FilterValueConverter;\n onChange?: OnChange;\n}\n\nexport interface UseFilterStateReturn {\n operator: SelectOperator;\n value: Optional;\n setOperator: (operator: SelectOperator) => void;\n setValue: (value: Optional) => void;\n reset: () => void;\n}\n\nconst defaultValidateValue: ValidateValue = (\n operator: Operator,\n value: any,\n): boolean => {\n if (!operator) return false;\n if (EMPTY_VALUE_OPERATORS.has(operator)) {\n return true;\n }\n if (value === undefined || value === null || value === '') return false;\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n if (operator === Operator.BETWEEN) {\n return isValidBetweenValue(value);\n }\n return true;\n};\n\nconst defaultConditionValueParser: ConditionValueParser = (\n operator: Operator,\n value: any,\n): any => {\n return value;\n};\n\nconst defaultValueConverter: OnOperatorChangeValueConverter = (\n beforeOperator: SelectOperator,\n afterOperator: SelectOperator,\n value: any,\n) => {\n return value;\n};\n\nconst defaultFilterValueConverter: FilterValueConverter = (\n filterValue: FilterValue,\n): Optional<FilterValue> => {\n return filterValue;\n};\n\nexport function useFilterState(\n options: UseFilterStateOptions,\n): UseFilterStateReturn {\n const [operator, setOperator] = useState<SelectOperator>(options.operator);\n const [value, setValue] = useState<Optional>(options.value);\n const validate = options.validate ?? defaultValidateValue;\n const valueParser =\n options.conditionValueParser ?? defaultConditionValueParser;\n const valueConverter =\n options.onOperatorChangeValueConverter ?? defaultValueConverter;\n const filterValueConverter =\n options.filterValueConverter ?? defaultFilterValueConverter;\n const resolveFilterValue = (\n currentOperator: SelectOperator,\n currentValue: Optional,\n ): Optional<FilterValue> => {\n if (currentOperator === ExtendedOperator.UNDEFINED) {\n return undefined;\n }\n if (!validate(currentOperator, currentValue)) {\n return undefined;\n }\n const conditionValue = valueParser(currentOperator, currentValue);\n const condition: Condition = {\n field: options.field,\n operator: currentOperator,\n value: conditionValue,\n options: options.conditionOptions,\n };\n const filterValue: FilterValue = {\n condition,\n };\n return filterValueConverter(filterValue);\n };\n const setOperatorFn = (newOperator: SelectOperator) => {\n const afterValue = valueConverter(operator, newOperator, value);\n setOperator(newOperator);\n setValue(afterValue);\n const filterValue = resolveFilterValue(newOperator, afterValue);\n options.onChange?.(filterValue);\n };\n const setValueFn = (newValue: Optional) => {\n setValue(newValue);\n const filterValue = resolveFilterValue(operator, newValue);\n options.onChange?.(filterValue);\n };\n const resetFn = () => {\n setOperator(options.operator);\n setValue(options.value);\n const filterValue = resolveFilterValue(options.operator, options.value);\n options.onChange?.(filterValue);\n };\n useImperativeHandle<FilterRef, FilterRef>(options.ref, () => ({\n getValue(): FilterValue | undefined {\n return resolveFilterValue(operator, value);\n },\n reset: resetFn,\n }));\n\n return {\n operator,\n value,\n setOperator: setOperatorFn,\n setValue: setValueFn,\n reset: resetFn,\n };\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps, FilterValueProps } from './types';\nimport { OPERATOR_zh_CN } from './operator';\nimport {\n ConditionValueParser,\n FilterValueConverter,\n OnOperatorChangeValueConverter,\n useFilterState,\n UseFilterStateReturn,\n ValidateValue,\n} from './useFilterState';\nimport { Button, Select, Space } from 'antd';\nimport { ReactNode } from 'react';\nimport { SelectOperator } from './operator';\n\nexport type ValueInputRender = (\n filterState: UseFilterStateReturn,\n) => ReactNode | null;\n\nexport interface AssemblyFilterProps<\n ValuePropsType extends FilterValueProps = FilterValueProps,\n> extends FilterProps<ValuePropsType> {\n supportedOperators: SelectOperator[];\n onOperatorChangeValueConverter?: OnOperatorChangeValueConverter;\n validate?: ValidateValue;\n conditionValueParser?: ConditionValueParser;\n filterValueConverter?: FilterValueConverter;\n valueInputRender?: ValueInputRender;\n}\n\nexport function AssemblyFilter({ ref, ...props }: AssemblyFilterProps) {\n const supportedOperators =\n props.operator?.supportedOperators ?? props.supportedOperators;\n // Validate that supportedOperators is not empty\n if (!supportedOperators || supportedOperators.length === 0) {\n throw new Error('supportedOperators must be a non-empty array');\n }\n\n const operatorLocale = props.operator?.locale ?? OPERATOR_zh_CN;\n\n // Determine the initial operator\n let initialOperator = props.operator?.defaultValue;\n\n // If no operator is provided or it's not in supported operators, use the first supported operator\n if (!initialOperator || !supportedOperators.includes(initialOperator)) {\n initialOperator = supportedOperators[0];\n }\n const filterState = useFilterState({\n field: props.field.name,\n operator: initialOperator,\n value: props.value?.defaultValue,\n ref: ref,\n onOperatorChangeValueConverter: props.onOperatorChangeValueConverter,\n validate: props.validate,\n conditionValueParser: props.conditionValueParser,\n filterValueConverter: props.filterValueConverter,\n onChange: props.onChange,\n });\n const valueInput = props.valueInputRender?.(filterState);\n const options = supportedOperators.map(supportedOperator => ({\n value: supportedOperator,\n label: operatorLocale[supportedOperator],\n }));\n return (\n <Space.Compact block style={props.style} className={props.className}>\n <Button {...props.label}>{props.field.label}</Button>\n <Select\n style={{ minWidth: 120 }}\n onChange={filterState.setOperator}\n {...props.operator}\n value={filterState.operator}\n options={options}\n ></Select>\n {valueInput}\n </Space.Compact>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { Input } from 'antd';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport { TagInput } from '../components';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\nimport { UseFilterStateReturn } from './useFilterState';\n\nexport const TEXT_FILTER = 'text';\n\nexport function TextFilter(props: FilterProps) {\n const assemblyFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [\n Operator.EQ,\n Operator.NE,\n Operator.CONTAINS,\n Operator.STARTS_WITH,\n Operator.ENDS_WITH,\n Operator.IN,\n Operator.NOT_IN,\n ],\n valueInputRender: (filterState: UseFilterStateReturn) => {\n switch (filterState.operator) {\n case Operator.IN:\n case Operator.NOT_IN: {\n return (\n <TagInput\n value={filterState.value}\n onChange={filterState.setValue}\n {...props.value}\n />\n );\n }\n default: {\n return (\n <Input\n value={filterState.value}\n onChange={e => filterState.setValue(e.target.value)}\n allowClear\n {...props.value}\n />\n );\n }\n }\n },\n };\n return <AssemblyFilter {...assemblyFilterProps}></AssemblyFilter>;\n}\n\nTextFilter.displayName = 'TextFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { Input } from 'antd';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport { TagInput } from '../components';\nimport {\n OnOperatorChangeValueConverter,\n UseFilterStateReturn,\n} from './useFilterState';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\n\nexport const ID_FILTER = 'id';\n\nexport const IdOnOperatorChangeValueConverter: OnOperatorChangeValueConverter =\n (beforeOperator, afterOperator, value) => {\n if (value === undefined || value === null) {\n return value;\n }\n if (afterOperator === Operator.ID) {\n if (Array.isArray(value)) {\n return value[0];\n }\n return value;\n }\n if (Array.isArray(value)) {\n return value;\n }\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return [];\n }\n return [trimmedValue];\n };\n\nexport function IdFilter(props: FilterProps) {\n const assemblyFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [Operator.ID, Operator.IDS],\n onOperatorChangeValueConverter: IdOnOperatorChangeValueConverter,\n valueInputRender: (filterState: UseFilterStateReturn) => {\n return filterState.operator === Operator.ID ? (\n <Input\n value={filterState.value}\n onChange={e => filterState.setValue(e.target.value)}\n allowClear\n {...props.value}\n />\n ) : (\n <TagInput\n value={filterState.value}\n onChange={filterState.setValue}\n {...props.value}\n />\n );\n },\n };\n return <AssemblyFilter {...assemblyFilterProps}></AssemblyFilter>;\n}\n\nIdFilter.displayName = 'IdConditionFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { InputNumber } from 'antd';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport { NumberTagValueItemSerializer, TagInput } from '../components';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\nimport { UseFilterStateReturn } from './useFilterState';\nimport { NumberRange } from '../components';\n\nexport const NUMBER_FILTER = 'number';\n\nexport function NumberFilter(props: FilterProps) {\n const assemblyFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [\n Operator.EQ,\n Operator.NE,\n Operator.GT,\n Operator.LT,\n Operator.GTE,\n Operator.LTE,\n Operator.BETWEEN,\n Operator.IN,\n Operator.NOT_IN,\n ],\n validate: (operator, value) => {\n if (operator === Operator.BETWEEN) {\n if (!Array.isArray(value)) {\n return false;\n }\n return value[0] !== undefined && value[1] !== undefined;\n }\n return value != undefined;\n },\n valueInputRender: (filterState: UseFilterStateReturn) => {\n switch (filterState.operator) {\n case Operator.IN:\n case Operator.NOT_IN: {\n return (\n <TagInput\n value={filterState.value}\n serializer={NumberTagValueItemSerializer}\n onChange={e => filterState.setValue(e)}\n {...props.value}\n />\n );\n }\n case Operator.BETWEEN: {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { placeholder, ...restValue } = props.value ?? {};\n return (\n <NumberRange\n value={filterState.value}\n onChange={filterState.setValue}\n {...restValue}\n ></NumberRange>\n );\n }\n default: {\n const { defaultValue, ...restValue } = props.value ?? {};\n const defaultInputNumber = Array.isArray(defaultValue)\n ? defaultValue[0]\n : defaultValue;\n const value = Array.isArray(filterState.value)\n ? filterState.value[0]\n : filterState.value;\n return (\n <InputNumber<number>\n value={value}\n defaultValue={defaultInputNumber}\n onChange={v => {\n filterState.setValue(v ?? undefined);\n }}\n {...restValue}\n ></InputNumber>\n );\n }\n }\n },\n };\n return <AssemblyFilter {...assemblyFilterProps}></AssemblyFilter>;\n}\n\nNumberFilter.displayName = 'NumberFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps, FilterValueProps } from './types';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport { UseFilterStateReturn } from './useFilterState';\nimport { Select, SelectProps } from 'antd';\n\nexport const SELECT_FILTER = 'select';\n\nexport interface SelectFilterValueProps\n extends FilterValueProps,\n Omit<\n SelectProps,\n | 'defaultValue'\n | 'mode'\n | 'value'\n | 'allowClear'\n | 'onChange'\n | 'placeholder'\n > {}\n\nexport function SelectFilter(props: FilterProps<SelectFilterValueProps>) {\n const assemblyFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [Operator.IN, Operator.NOT_IN],\n valueInputRender: (filterState: UseFilterStateReturn) => {\n return (\n <Select\n mode={'multiple'}\n value={filterState.value}\n onChange={filterState.setValue}\n allowClear\n {...props.value}\n />\n );\n },\n };\n return <AssemblyFilter {...assemblyFilterProps}></AssemblyFilter>;\n}\n\nSelectFilter.displayName = 'SelectFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport { ExtendedOperator } from './operator';\nimport { TrueValidateValue } from './useFilterState';\n\nexport const BOOL_FILTER = 'bool';\n\nexport function BoolFilter(props: FilterProps) {\n const assemblyFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [\n ExtendedOperator.UNDEFINED,\n Operator.TRUE,\n Operator.FALSE,\n ],\n validate: TrueValidateValue,\n };\n return <AssemblyFilter {...assemblyFilterProps}></AssemblyFilter>;\n}\n\nBoolFilter.displayName = 'BoolFilter';\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { AssemblyFilter, AssemblyFilterProps } from './AssemblyFilter';\nimport { Operator } from '@ahoo-wang/fetcher-wow';\nimport {\n ConditionValueParser,\n OnOperatorChangeValueConverter,\n UseFilterStateReturn,\n} from './useFilterState';\nimport { DatePicker, InputNumber } from 'antd';\nimport { Optional } from '../types';\nimport { Dayjs, isDayjs } from 'dayjs';\nimport { ExtendedOperator, SelectOperator } from './operator';\n\nexport const DATE_TIME_FILTER_NAME = 'datetime';\nconst TIME_FORMAT = 'HH:mm:ss';\nconst DateTimeNumberValueOperators = new Set([\n Operator.RECENT_DAYS,\n Operator.EARLIER_DAYS,\n]);\n\nconst DateTimeDayjsValueOperators = new Set([\n Operator.GT,\n Operator.LT,\n Operator.GTE,\n Operator.LTE,\n]);\n\nexport const DateTimeOnOperatorChangeValueConverter: OnOperatorChangeValueConverter =\n (\n beforeOperator: SelectOperator,\n afterOperator: SelectOperator,\n value: Optional<number | Dayjs | Dayjs[]>,\n ) => {\n if (\n beforeOperator === ExtendedOperator.UNDEFINED ||\n afterOperator === ExtendedOperator.UNDEFINED\n ) {\n return value;\n }\n if (\n DateTimeNumberValueOperators.has(beforeOperator) &&\n DateTimeNumberValueOperators.has(afterOperator)\n ) {\n return value;\n }\n if (DateTimeDayjsValueOperators.has(beforeOperator)) {\n if (DateTimeDayjsValueOperators.has(afterOperator)) {\n return value;\n }\n if (afterOperator === Operator.BETWEEN) {\n return [value, undefined];\n }\n }\n return undefined;\n };\nexport const TimestampConditionValueParser: ConditionValueParser = (\n operator: Operator,\n value: Optional<number | Dayjs | Dayjs[]>,\n) => {\n if (!value) {\n return undefined;\n }\n\n if (operator === Operator.BETWEEN) {\n if (!Array.isArray(value) || value.length !== 2) {\n return undefined;\n }\n return [value[0]?.valueOf(), value[1]?.valueOf()];\n }\n if (DateTimeNumberValueOperators.has(operator)) {\n return value;\n }\n if (operator === Operator.BEFORE_TODAY) {\n if (isDayjs(value)) {\n return value.format(TIME_FORMAT);\n }\n return undefined;\n }\n if (isDayjs(value)) {\n return value.valueOf();\n }\n return undefined;\n};\n\nexport function DateTimeFilter(props: FilterProps) {\n const assemblyConditionFilterProps: AssemblyFilterProps = {\n ...props,\n supportedOperators: [\n Operator.GT,\n Operator.LT,\n Operator.GTE,\n Operator.LTE,\n Operator.BETWEEN,\n Operator.TODAY,\n Operator.BEFORE_TODAY,\n Operator.TOMORROW,\n Operator.THIS_WEEK,\n Operator.NEXT_WEEK,\n Operator.LAST_WEEK,\n Operator.THIS_MONTH,\n Operator.LAST_MONTH,\n Operator.RECENT_DAYS,\n Operator.EARLIER_DAYS,\n ],\n onOperatorChangeValueConverter: DateTimeOnOperatorChangeValueConverter,\n conditionValueParser: TimestampConditionValueParser,\n valueInputRender: (filterState: UseFilterStateReturn) => {\n switch (filterState.operator) {\n case Operator.BETWEEN: {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { placeholder, ...rangResetProps } = props.value || {};\n return (\n <DatePicker.RangePicker\n value={filterState.value}\n onChange={filterState.setValue}\n {...rangResetProps}\n />\n );\n }\n case Operator.TODAY:\n case Operator.TOMORROW:\n case Operator.THIS_WEEK:\n case Operator.NEXT_WEEK:\n case Operator.LAST_WEEK:\n case Operator.THIS_MONTH:\n case Operator.LAST_MONTH: {\n return null;\n }\n case Operator.RECENT_DAYS:\n case Operator.EARLIER_DAYS: {\n return (\n <InputNumber\n value={filterState.value}\n min={1}\n onChange={filterState.setValue}\n {...props.value}\n />\n );\n }\n case Operator.BEFORE_TODAY: {\n return (\n <DatePicker\n picker={'time'}\n value={filterState.value}\n onChange={filterState.setValue}\n {...props.value}\n />\n );\n }\n default: {\n return (\n <DatePicker\n value={filterState.value}\n picker={'date'}\n showNow={false}\n onChange={filterState.setValue}\n {...props.value}\n />\n );\n }\n }\n },\n };\n return <AssemblyFilter {...assemblyConditionFilterProps}></AssemblyFilter>;\n}\n\nDateTimeFilter.displayName = 'DateTimeFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FunctionComponent } from 'react';\n\n/**\n * Interface for objects that have a type property.\n * This is used to identify components or other typed entities in the registry.\n *\n * @template Type - The type of the type property, defaults to string.\n */\nexport interface TypeCapable<Type = string> {\n /**\n * The type identifier for this object.\n */\n type: Type;\n}\n\n/**\n * A registry class for storing and retrieving React components by type.\n * This allows dynamic component resolution based on type identifiers, useful for\n * rendering different components based on data types or configurations.\n *\n * @template Type - The type used as keys in the registry (e.g., string, number).\n * @template Props - The props type that all registered components must accept.\n */\nexport class TypedComponentRegistry<Type, Props> {\n private readonly registry: Map<Type, FunctionComponent<Props>> = new Map();\n\n /**\n * Gets an array of all registered types in the registry.\n *\n * @returns An array containing all type keys currently registered.\n */\n get types(): Type[] {\n return Array.from(this.registry.keys());\n }\n\n /**\n * Gets an array of all type-component pairs in the registry.\n *\n * @returns An array of tuples containing [type, component] pairs.\n */\n get entries(): [Type, FunctionComponent<Props>][] {\n return Array.from(this.registry.entries());\n }\n\n /**\n * Gets the number of registered components in the registry.\n *\n * @returns The total count of registered components.\n */\n get size(): number {\n return this.registry.size;\n }\n\n /**\n * Checks if a component is registered for the given type.\n *\n * @param {Type} type - The type to check for registration.\n * @returns {boolean} True if a component is registered for the type, false otherwise.\n */\n has(type: Type): boolean {\n return this.registry.has(type);\n }\n\n /**\n * Removes all registered components from the registry.\n */\n clear(): void {\n this.registry.clear();\n }\n\n /**\n * Registers a React component for a specific type.\n * Each type can only have one component registered.\n *\n * @param {Type} type - The type identifier for the component.\n * @param {FunctionComponent<Props>} component - The React functional component to register.\n * @throws {Error} If a component is already registered for the given type.\n *\n * @example\n * ```typescript\n * const registry = new TypedComponentRegistry<string, { value: string }>();\n * registry.register('text', ({ value }) => <span>{value}</span>);\n * ```\n */\n register(type: Type, component: FunctionComponent<Props>): void {\n if (this.registry.has(type)) {\n throw new Error(`Component for type ${type} already registered.`);\n }\n this.registry.set(type, component);\n }\n\n /**\n * Unregisters the component for the given type.\n * If no component is registered for the type, this operation does nothing.\n *\n * @param {Type} type - The type identifier to unregister.\n */\n unregister(type: Type): void {\n this.registry.delete(type);\n }\n\n /**\n * Retrieves the component registered for the given type.\n *\n * @param {Type} type - The type identifier to look up.\n * @returns {FunctionComponent<Props> | undefined} The registered React component, or undefined if not found.\n */\n get(type: Type): FunctionComponent<Props> | undefined {\n return this.registry.get(type);\n }\n\n /**\n * Creates a new TypedComponentRegistry instance and optionally registers initial components.\n *\n * @template Type - The type used as keys.\n * @template Props - The props type for components.\n * @param {Array<[Type, FunctionComponent<Props>]>} [components=[]] - An optional array of [type, component] pairs to register initially.\n * @returns {TypedComponentRegistry<Type, Props>} A new TypedComponentRegistry instance with the specified components registered.\n *\n * @example\n * ```typescript\n * const registry = TypedComponentRegistry.create([\n * ['text', ({ value }) => <span>{value}</span>],\n * ['number', ({ value }) => <strong>{value}</strong>]\n * ]);\n * ```\n */\n static create<Type, Props>(\n components: [Type, FunctionComponent<Props>][] = [],\n ): TypedComponentRegistry<Type, Props> {\n const registry = new TypedComponentRegistry<Type, Props>();\n components.forEach(([type, component]) =>\n registry.register(type, component),\n );\n return registry;\n }\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FilterProps } from './types';\nimport { TEXT_FILTER, TextFilter } from './TextFilter';\nimport { ID_FILTER, IdFilter } from './IdFilter';\nimport { NUMBER_FILTER, NumberFilter } from './NumberFilter';\nimport { FilterType } from './TypedFilter';\nimport { SELECT_FILTER, SelectFilter } from './SelectFilter';\nimport { BOOL_FILTER, BoolFilter } from './BoolFilter';\nimport { DATE_TIME_FILTER_NAME, DateTimeFilter } from './DateTimeFilter';\nimport { TypedComponentRegistry } from '../registry';\n\n/**\n * A centralized registry containing all available filter components for the viewer package.\n *\n * This registry provides a mapping from filter type identifiers to their corresponding React components,\n * enabling dynamic filter component resolution based on filter types. It includes all standard filter\n * types supported by the viewer: ID, text, number, select, boolean, and date-time filters.\n *\n * The registry is pre-populated with all built-in filter components and can be used to retrieve\n * filter components by their type names for rendering in filter interfaces.\n *\n * @example\n * ```typescript\n * import { filterRegistry } from './filterRegistry';\n *\n * // Get a text filter component\n * const TextFilterComponent = filterRegistry.get('text');\n *\n * // Check if a filter type is available\n * if (filterRegistry.has('number')) {\n * const NumberFilterComponent = filterRegistry.get('number');\n * // Render the component\n * }\n *\n * // Get all available filter types\n * const availableTypes = filterRegistry.types; // ['id', 'text', 'number', 'select', 'bool', 'dateTime']\n * ```\n *\n * @example\n * ```typescript\n * // Using in a React component\n * import React from 'react';\n * import { filterRegistry } from './filterRegistry';\n *\n * interface FilterRendererProps {\n * filterType: string;\n * filterProps: FilterProps;\n * }\n *\n * const FilterRenderer: React.FC<FilterRendererProps> = ({ filterType, filterProps }) => {\n * const FilterComponent = filterRegistry.get(filterType);\n *\n * if (!FilterComponent) {\n * return <div>Unknown filter type: {filterType}</div>;\n * }\n *\n * return <FilterComponent {...filterProps} />;\n * };\n * ```\n */\nexport const filterRegistry = TypedComponentRegistry.create<\n FilterType,\n FilterProps\n>([\n [ID_FILTER, IdFilter],\n [TEXT_FILTER, TextFilter],\n [NUMBER_FILTER, NumberFilter],\n [SELECT_FILTER, SelectFilter],\n [BOOL_FILTER, BoolFilter],\n [DATE_TIME_FILTER_NAME, DateTimeFilter],\n]);\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Alert } from 'antd';\nimport React, { useImperativeHandle } from 'react';\nimport { TypedFilterProps } from './TypedFilter';\nimport { FilterValue } from './types';\n\nexport function FallbackFilter({ type, ref }: TypedFilterProps) {\n useImperativeHandle(ref, () => ({\n getValue(): FilterValue | undefined {\n return undefined;\n },\n reset(): void {\n // No-op for fallback filter\n },\n }));\n return (\n <Alert\n title={`Unsupported filter type:[${type}]`}\n type=\"warning\"\n showIcon\n />\n );\n}\n\nFallbackFilter.displayName = 'FallbackFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo } from 'react';\nimport { FilterProps } from './types';\nimport { filterRegistry } from './filterRegistry';\nimport { FallbackFilter } from './FallbackFilter';\nimport { TypeCapable } from '../registry';\n\nexport type FilterType = string;\n\nexport interface TypedFilterProps\n extends FilterProps,\n TypeCapable<FilterType> {\n}\n\nconst DEFAULT_VALUE_STYLE: React.CSSProperties = {\n flex: 'auto',\n};\n\nexport function TypedFilter(props: TypedFilterProps) {\n const FilterComponent = useMemo(() => {\n return filterRegistry.get(props.type) || FallbackFilter;\n }, [props.type]);\n const valueProps = {\n style: DEFAULT_VALUE_STYLE,\n ...props.value,\n };\n const filterProps = {\n ...props,\n value: valueProps,\n };\n return React.createElement(FilterComponent, filterProps);\n}\n\nTypedFilter.displayName = 'TypedFilter';\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TypedFilter, TypedFilterProps } from '../TypedFilter';\nimport { MinusOutlined } from '@ant-design/icons';\nimport { Button, Space } from 'antd';\nimport React, { useState } from 'react';\n\nexport interface RemovableTypedFilterProps extends TypedFilterProps {\n onRemove?: () => void;\n}\n\nexport function RemovableTypedFilter(props: RemovableTypedFilterProps) {\n const { onRemove, ...rest } = props;\n const [showRemove, setShowRemove] = useState(false);\n if (!onRemove) {\n return <TypedFilter {...rest} />;\n }\n return (\n <Space\n onMouseOver={() => setShowRemove(true)}\n onMouseOut={() => setShowRemove(false)}\n >\n <TypedFilter {...rest} />\n {showRemove && (\n <Button\n type=\"dashed\"\n shape=\"circle\"\n size={'small'}\n onClick={onRemove}\n icon={<MinusOutlined />}\n ></Button>\n )}\n </Space>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { Key, RefAttributes, useImperativeHandle } from 'react';\nimport { TypedFilterProps } from '../TypedFilter';\nimport { FilterRef } from '../types';\nimport { and, Condition } from '@ahoo-wang/fetcher-wow';\nimport { Button, Col, Row, Space, ColProps, ButtonProps } from 'antd';\nimport { ClearOutlined, SearchOutlined } from '@ant-design/icons';\nimport { useRefs } from '@ahoo-wang/fetcher-react';\nimport { RemovableTypedFilter } from './RemovableTypedFilter';\nimport { RowProps } from 'antd/es/grid/row';\n\nexport interface ActiveFilter\n extends Omit<TypedFilterProps, 'onChange' | 'ref'> {\n key: Key;\n onRemove?: () => void;\n}\n\nexport interface FilterPanelRef {\n /**\n * Triggers the search action using the current filter values.\n * Typically calls the `onSearch` callback with the composed filter condition.\n */\n search(): void;\n\n /**\n * Resets all filter values to their initial state.\n * Typically clears the filters and triggers any associated reset logic.\n */\n reset(): void;\n}\n\nexport interface FilterPanelProps extends RefAttributes<FilterPanelRef> {\n row?: RowProps;\n col?: ColProps;\n actionsCol?: ColProps;\n filters: ActiveFilter[];\n actions?: React.ReactNode;\n onSearch?: (condition: Condition) => void;\n resetButton?: boolean | Omit<ButtonProps, 'onClick'>;\n searchButton?: Omit<ButtonProps, 'onClick'>;\n}\n\nconst DEFAULT_ROW_PROPS: RowProps = {\n gutter: [8, 8],\n wrap: true,\n};\n\nconst DEFAULT_COL_PROPS: ColProps = {\n xxl: 6,\n xl: 8,\n lg: 12,\n md: 12,\n sm: 24,\n xs: 24,\n};\n\nconst DEFAULT_ACTIONS_COL_PROPS: ColProps = DEFAULT_COL_PROPS;\n\nexport function FilterPanel(props: FilterPanelProps) {\n const {\n ref,\n row = DEFAULT_ROW_PROPS,\n col = DEFAULT_COL_PROPS,\n actionsCol = DEFAULT_ACTIONS_COL_PROPS,\n filters,\n onSearch,\n actions,\n resetButton,\n searchButton,\n } = props;\n const filterRefs = useRefs<FilterRef>();\n const handleSearch = () => {\n if (!onSearch) {\n return;\n }\n const conditions = Array.from(filterRefs.values())\n .map(ref => ref?.getValue()?.condition)\n .filter(Boolean);\n const finalCondition: Condition = and(...conditions);\n onSearch(finalCondition);\n };\n const handleReset = () => {\n for (const filterRef of filterRefs.values()) {\n filterRef.reset();\n }\n };\n useImperativeHandle<FilterPanelRef, FilterPanelRef>(ref, () => ({\n search: handleSearch,\n reset: handleReset,\n }));\n const showResetButton = resetButton !== false;\n const resetButtonProps = typeof resetButton === 'object' ? resetButton : {};\n return (\n <>\n <Row {...row}>\n {filters.map(filter => {\n return (\n <Col {...col} key={filter.key}>\n <RemovableTypedFilter\n key={filter.key}\n type={filter.type}\n field={filter.field}\n operator={filter.operator}\n value={filter.value}\n onRemove={filter.onRemove}\n ref={filterRefs.register(filter.key)}\n ></RemovableTypedFilter>\n </Col>\n );\n })}\n <Col {...actionsCol}>\n <Space.Compact>\n {actions}\n {showResetButton && (\n <Button\n icon={<ClearOutlined />}\n onClick={handleReset}\n {...resetButtonProps}\n >\n {resetButtonProps?.children || 'Reset'}\n </Button>\n )}\n <Button\n type=\"primary\"\n icon={<SearchOutlined />}\n onClick={handleSearch}\n {...searchButton}\n >\n {searchButton?.children || 'Search'}\n </Button>\n </Space.Compact>\n </Col>\n </Row>\n </>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useState, Key } from 'react';\nimport { Button } from 'antd';\nimport { AvailableFilterGroup, AvailableFilter } from './AvailableFilterSelect';\nimport { AvailableFilterSelectModal } from './AvailableFilterSelectModal';\nimport { useRequestId } from '@ahoo-wang/fetcher-react';\nimport {\n ActiveFilter,\n FilterPanelProps,\n FilterPanel,\n} from './FilterPanel';\n\nexport interface EditableFilterPanelProps extends Omit<\n FilterPanelProps,\n 'actions'\n> {\n availableFilters: AvailableFilterGroup[];\n}\n\nexport function EditableFilterPanel(props: EditableFilterPanelProps) {\n const { ref, row, col, availableFilters, filters, onSearch } = props;\n const [activeFilters, setActiveFilters] = useState(filters);\n const [modalOpen, setModalOpen] = useState(false);\n const generator = useRequestId();\n\n const handleAddFilter = (selectedAvailableFilters: AvailableFilter[]) => {\n if (selectedAvailableFilters.length === 0) {\n setModalOpen(false);\n return;\n }\n const newFilters = selectedAvailableFilters.map(\n available =>\n ({\n key: generator.generate(),\n type: available.component,\n field: available.field,\n value: available.value,\n operator: available.operator,\n }) as ActiveFilter,\n );\n setActiveFilters([...activeFilters, ...newFilters]);\n setModalOpen(false);\n };\n\n const removeFilter = (key: Key) => {\n const newFilters = activeFilters.filter(f => f.key !== key);\n setActiveFilters(newFilters);\n };\n\n const editableFilters = activeFilters.map(filter => ({\n ...filter,\n onRemove: () => removeFilter(filter.key),\n }));\n\n return (\n <>\n <FilterPanel\n ref={ref}\n filters={editableFilters}\n onSearch={onSearch}\n actions={<Button onClick={() => setModalOpen(true)}>Add Filter</Button>}\n row={row}\n col={col}\n />\n <AvailableFilterSelectModal\n title={'Add Filter'}\n open={modalOpen}\n onCancel={() => setModalOpen(false)}\n onSave={handleAddFilter}\n availableFilters={{\n filters: availableFilters,\n activeFilters: activeFilters,\n }}\n />\n </>\n );\n}\n","import { CellProps } from './types';\nimport { Button, ButtonProps } from 'antd';\n\n/**\n * Constant representing the type identifier for action cells.\n *\n * This constant is used to register and identify action cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for action-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'action'\n *\n * @example\n * ```tsx\n * import { typedCellRender, ACTION_CELL_TYPE } from './table/cell';\n *\n * const actionRenderer = typedCellRender(ACTION_CELL_TYPE, { onClick: () => {} });\n * ```\n */\nexport const ACTION_CELL_TYPE: string = 'action';\n\n/**\n * Props for the ActionCell component, extending CellProps with string value type and ButtonProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface ActionCellProps\n * @extends CellProps<string, RecordType, Omit<ButtonProps, 'onClick'> & { onClick?: (record: RecordType) => void; }>\n *\n * @example\n * ```tsx\n * interface User {\n * id: number;\n * name: string;\n * email: string;\n * }\n *\n * const props: ActionCellProps<User> = {\n * data: {\n * value: \"Edit\",\n * record: { id: 1, name: \"John Doe\", email: \"john@example.com\" },\n * index: 0\n * },\n * attributes: { onClick: (record) => console.log('Edit user:', record) }\n * };\n * ```\n */\nexport interface ActionCellProps<RecordType = any> extends CellProps<\n string,\n RecordType,\n Omit<ButtonProps, 'onClick'> & {\n onClick?: (record: RecordType) => void;\n }\n> {}\n\nexport function isActionCellProps(obj: any): obj is ActionCellProps {\n return (\n typeof obj.data === 'object' &&\n typeof obj.data.value === 'string' &&\n typeof obj.data.record === 'object' &&\n typeof obj.data.index === 'number' &&\n (obj.attributes === undefined || typeof obj.attributes === 'object')\n );\n}\n\n/**\n * Renders an action button cell using Ant Design's Button component.\n *\n * This component displays clickable action buttons in table cells with support for\n * various button styling options provided by Ant Design's Button. It handles\n * the rendering of action buttons while allowing customization through attributes\n * like disabled, loading, size, and other ButtonProps.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the action cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The string value to display as the button text.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes to pass to Button component.\n * @returns A React element representing the action button cell, or null if no value is provided.\n *\n * @example\n * ```tsx\n * <ActionCell\n * data={{\n * value: \"Delete\",\n * record: { id: 1, name: \"Item Name\", status: \"active\" },\n * index: 0\n * }}\n * attributes={{\n * onClick: (record) => handleDelete(record.id),\n * danger: true\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface ActionItem {\n * id: number;\n * label: string;\n * action: string;\n * }\n *\n * <ActionCell<ActionItem>\n * data={{\n * value: \"View Details\",\n * record: { id: 1, label: \"Item 1\", action: \"view\" },\n * index: 0\n * }}\n * attributes={{\n * onClick: (record) => navigateToDetails(record.id),\n * type: \"primary\"\n * }}\n * />\n * ```\n */\nexport function ActionCell<RecordType = any>(\n props: ActionCellProps<RecordType>,\n) {\n // Extract data and attributes from props for easier access\n const { data, attributes } = props;\n\n // Early return if no value is provided - prevents rendering empty or meaningless buttons\n if (!data.value) {\n return null;\n }\n\n // Render the action button with link styling for a clean, unobtrusive appearance\n return (\n <Button\n type=\"link\" // Ant Design link button provides subtle styling without heavy borders\n {...attributes} // Spread additional button props (e.g., disabled, loading, size)\n onClick={() => attributes?.onClick?.(data.record)} // Invoke handler with action key and full record context\n style={{ padding: 0 }}\n >\n {data.value}\n </Button>\n );\n}\n","import { CellProps } from './types';\nimport { Button, MenuProps } from 'antd';\nimport { Dropdown, Space } from 'antd';\nimport { DownOutlined } from '@ant-design/icons';\nimport { ActionCell, ActionCellProps, isActionCellProps } from './ActionCell';\nimport type * as React from 'react';\n\n/**\n * Constant representing the type identifier for actions cells.\n *\n * This constant is used to register and identify actions cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for actions-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'actions'\n *\n * @example\n * ```tsx\n * import { typedCellRender, ACTIONS_CELL_TYPE } from './table/cell';\n *\n * const actionsRenderer = typedCellRender(ACTIONS_CELL_TYPE, { onClick: () => {} });\n * ```\n */\nexport const ACTIONS_CELL_TYPE: string = 'actions';\n\n/**\n * Data structure for actions cell configuration.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface ActionsData\n *\n * @example\n * ```tsx\n * interface User {\n * id: number;\n * name: string;\n * email: string;\n * }\n *\n * const actionsData: ActionsData<User> = {\n * primaryAction: {\n * data: { value: \"Edit\", record: user, index: 0 },\n * attributes: { onClick: (record) => editUser(record) }\n * },\n * moreActionTitle: \"More Actions\",\n * secondaryActions: [\n * {\n * data: { value: \"Delete\", record: user, index: 0 },\n * attributes: { onClick: (record) => deleteUser(record), danger: true }\n * }\n * ]\n * };\n * ```\n */\nexport interface ActionsData<RecordType = any> {\n primaryAction:\n | ActionCellProps<RecordType>\n | ((record: RecordType) => React.ReactNode);\n moreActionTitle?: string;\n secondaryActions:\n | ActionCellProps<RecordType>[]\n | ((record: RecordType) => React.ReactNode[]);\n}\n\n/**\n * Props for the ActionsCell component, extending CellProps with ActionsData value type and click handler attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface ActionsCellProps\n * @extends CellProps<ActionsData, RecordType, { onClick: (actionKey: string, value: RecordType) => void; }>\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * price: number;\n * }\n *\n * const props: ActionsCellProps<Product> = {\n * data: {\n * value: {\n * primaryAction: { data: { value: \"Edit\", record: product, index: 0 }, attributes: { onClick: editProduct } },\n * secondaryActions: [{ data: { value: \"Delete\", record: product, index: 0 }, attributes: { onClick: deleteProduct } }]\n * },\n * record: product,\n * index: 0\n * },\n * attributes: { onClick: (actionKey, record) => handleAction(actionKey, record) }\n * };\n * ```\n */\nexport interface ActionsCellProps<RecordType = any> extends CellProps<\n ActionsData<RecordType>,\n RecordType,\n { onClick: (actionKey: string, value: RecordType) => void }\n> {}\n\n/**\n * Renders an actions cell with primary and secondary action buttons using Ant Design components.\n *\n * This component displays multiple action buttons in table cells, with a primary action\n * button and optional secondary actions in a dropdown menu. It uses ActionCell components\n * for individual buttons and provides a clean interface for handling multiple actions.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the actions cell component.\n * @param props.data - The cell data containing ActionsData value, record, and index.\n * @param props.data.value - The actions configuration with primary and secondary actions.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes including click handler.\n * @returns A React element representing the actions cell with buttons and dropdown.\n *\n * @example\n * ```tsx\n * <ActionsCell\n * data={{\n * value: {\n * primaryAction: {\n * data: { value: \"Edit\", record: item, index: 0 },\n * attributes: { onClick: () => editItem(item.id) }\n * },\n * moreActionTitle: \"Options\",\n * secondaryActions: [\n * {\n * data: { value: \"Delete\", record: item, index: 0 },\n * attributes: { onClick: () => deleteItem(item.id), danger: true }\n * }\n * ]\n * },\n * record: item,\n * index: 0\n * }}\n * attributes={{\n * onClick: (actionKey, record) => console.log(actionKey, record)\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface Task {\n * id: number;\n * title: string;\n * status: string;\n * }\n *\n * <ActionsCell<Task>\n * data={{\n * value: {\n * primaryAction: {\n * data: { value: \"Complete\", record: task, index: 0 },\n * attributes: { onClick: (record) => completeTask(record.id) }\n * },\n * secondaryActions: [\n * {\n * data: { value: \"Archive\", record: task, index: 0 },\n * attributes: { onClick: (record) => archiveTask(record.id) }\n * }\n * ]\n * },\n * record: task,\n * index: 0\n * }}\n * />\n * ```\n */\nfunction renderActions(props: ActionsCellProps) {\n const { data } = props;\n\n let secondaryButtons: MenuProps['items'] = [];\n if (\n Array.isArray(data.value.secondaryActions) &&\n data.value.secondaryActions.length > 0\n ) {\n const actions: ActionCellProps[] = data.value.secondaryActions;\n secondaryButtons = actions.map(action => {\n return {\n key: action.data.index,\n label: <ActionCell {...action} />,\n };\n });\n }\n\n if (typeof data.value.secondaryActions === 'function') {\n secondaryButtons = data.value\n .secondaryActions(data.record)\n .map((action, index) => {\n return {\n key: index,\n label: <>{action}</>,\n };\n });\n }\n\n if (secondaryButtons.length > 0) {\n return (\n <Space>\n {isActionCellProps(data.value.primaryAction) ? (\n <ActionCell {...data.value.primaryAction} />\n ) : (\n <>{data.value.primaryAction(data.record)}</>\n )}\n\n <Dropdown menu={{ items: secondaryButtons }}>\n <Button type=\"link\" style={{ padding: 0 }}>\n <Space>\n {data.value.moreActionTitle || 'More'}\n <DownOutlined />\n </Space>\n </Button>\n </Dropdown>\n </Space>\n );\n }\n\n return (\n <>\n {isActionCellProps(data.value.primaryAction) ? (\n <ActionCell {...data.value.primaryAction} />\n ) : (\n <>{data.value.primaryAction(data.record)}</>\n )}\n </>\n );\n}\n\n/**\n * ActionsCell component for rendering multiple action buttons in table cells.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the ActionsCell component.\n * @returns A React element representing the actions cell.\n */\nexport function ActionsCell<RecordType = any>(\n props: ActionsCellProps<RecordType>,\n) {\n return renderActions(props);\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport dayjs, { Dayjs } from 'dayjs';\n\nexport function parseDayjs(value: string | number | Date | Dayjs): Dayjs {\n if (dayjs.isDayjs(value)) {\n return value;\n }\n return dayjs(value);\n}\n\nexport function isNullOrUndefined(value: any): value is null | undefined {\n return value === null || value === undefined;\n}\n\n/**\n * Checks if a value is a valid image source URL.\n *\n * This function determines whether a given value can be used as an image source\n * by checking if it's a string that represents a valid image URL. It supports\n * absolute URLs (http/https), relative URLs (/), and data URLs (data:image/).\n *\n * @param value - The value to check\n * @returns true if the value is a valid image source, false otherwise\n *\n * @example\n * ```typescript\n * isValidImageSrc('https://example.com/image.jpg') // true\n * isValidImageSrc('/images/avatar.png') // true\n * isValidImageSrc('data:image/png;base64,iVBORw0KGgo...') // true\n * isValidImageSrc('John Doe') // false\n * isValidImageSrc(null) // false\n * ```\n */\nexport function isValidImageSrc(value: any): value is string {\n if (typeof value !== 'string' || value.trim() === '') {\n return false;\n }\n\n const trimmedValue = value.trim().toLowerCase();\n\n // Check for absolute URLs (http/https) - case insensitive\n if (\n trimmedValue.startsWith('http://') ||\n trimmedValue.startsWith('https://')\n ) {\n return true;\n }\n\n // Check for relative URLs starting with /\n if (value.trim().startsWith('/')) {\n return true;\n }\n\n // Check for valid data URLs (data:image/...;...)\n if (trimmedValue.startsWith('data:image/')) {\n // Ensure it has the proper format: data:image/type;base64,data\n const dataUrlPattern = /^data:image\\/[a-z]+(;[a-z0-9]+)?,/i;\n return dataUrlPattern.test(value.trim());\n }\n\n return false;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Avatar } from 'antd';\nimport { AvatarProps } from 'antd/es/avatar';\nimport { isValidImageSrc } from './utils';\n\n/**\n * Constant representing the type identifier for avatar cells.\n *\n * This constant is used to register and identify avatar cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for avatar-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'avatar'\n *\n * @example\n * ```tsx\n * import { typedCellRender, AVATAR_CELL_TYPE } from './table/cell';\n *\n * const avatarRenderer = typedCellRender(AVATAR_CELL_TYPE, {\n * size: 32\n * });\n * ```\n */\nexport const AVATAR_CELL_TYPE: string = 'avatar';\n\n/**\n * Props for the AvatarCell component, extending CellProps with string value type and AvatarProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface AvatarCellProps\n * @extends CellProps<string, RecordType, AvatarProps>\n *\n * @example\n * ```tsx\n * interface User {\n * id: number;\n * name: string;\n * avatarUrl: string;\n * }\n *\n * const props: AvatarCellProps<User> = {\n * data: {\n * value: \"https://example.com/avatar.jpg\",\n * record: { id: 1, name: \"John\", avatarUrl: \"https://example.com/avatar.jpg\" },\n * index: 0\n * },\n * attributes: {\n * size: 40,\n * alt: \"User avatar\"\n * }\n * };\n * ```\n */\nexport interface AvatarCellProps<RecordType = any> extends CellProps<\n string,\n RecordType,\n AvatarProps\n> {}\n\n/**\n * Renders an avatar cell using Ant Design's Avatar component.\n *\n * This component displays user avatars in table cells with support for\n * images, fallback text, and all Avatar component features. It handles\n * null/undefined values gracefully by showing initials from the record name.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the avatar cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The avatar URL string or name to display.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes for the Avatar component.\n * @returns A React element representing the avatar cell.\n *\n * @example\n * ```tsx\n * <AvatarCell\n * data={{\n * value: \"https://example.com/avatar.jpg\",\n * record: { id: 1, name: \"John\", avatar: \"https://example.com/avatar.jpg\" },\n * index: 0\n * }}\n * attributes={{\n * size: 32\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With fallback to initials\n * <AvatarCell\n * data={{\n * value: \"John Doe\",\n * record: { id: 1, name: \"John Doe\" },\n * index: 0\n * }}\n * attributes={{\n * size: 40,\n * style: { backgroundColor: '#1890ff' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface User {\n * id: number;\n * name: string;\n * avatar?: string;\n * }\n *\n * <AvatarCell<User>\n * data={{\n * value: user.avatar || user.name,\n * record: user,\n * index: 0\n * }}\n * attributes={{\n * size: 24\n * }}\n * />\n * ```\n */\nexport function AvatarCell<RecordType = any>(\n props: AvatarCellProps<RecordType>,\n) {\n const { data, attributes = {} } = props;\n\n if (!data.value) {\n return <Avatar {...attributes} />;\n }\n\n // If value is a valid image source, use it as src\n if (isValidImageSrc(data.value)) {\n return <Avatar src={data.value} {...attributes} />;\n }\n\n // Otherwise, use as text (initials or name)\n return <Avatar {...attributes}>{data.value}</Avatar>;\n}\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_calendar=t()}(this,(function(){\"use strict\";return function(e,t,a){var n=\"h:mm A\",d={lastDay:\"[Yesterday at] \"+n,sameDay:\"[Today at] \"+n,nextDay:\"[Tomorrow at] \"+n,nextWeek:\"dddd [at] \"+n,lastWeek:\"[Last] dddd [at] \"+n,sameElse:\"MM/DD/YYYY\"};t.prototype.calendar=function(e,t){var n=t||this.$locale().calendar||d,o=a(e||void 0).startOf(\"d\"),s=this.diff(o,\"d\",!0),i=\"sameElse\",f=s<-6?i:s<-1?\"lastWeek\":s<0?\"lastDay\":s<1?\"sameDay\":s<2?\"nextDay\":s<7?\"nextWeek\":i,l=n[f]||d[f];return\"function\"==typeof l?l.call(this,a()):this.format(l)}}}));","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Typography } from 'antd';\nimport { TextProps } from 'antd/es/typography/Text';\nimport { Dayjs } from 'dayjs';\nimport { parseDayjs } from './utils';\n\nconst { Text } = Typography;\n\n/**\n * Constant representing the type identifier for datetime cells.\n *\n * This constant is used to register and identify datetime cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for datetime-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'datetime'\n *\n * @example\n * ```tsx\n * import { typedCellRender, DATETIME_CELL_TYPE } from './table/cell';\n *\n * const datetimeRenderer = typedCellRender(DATETIME_CELL_TYPE, {\n * format: 'YYYY-MM-DD HH:mm:ss'\n * });\n * ```\n */\nexport const DATETIME_CELL_TYPE: string = 'datetime';\n\n/**\n * Props for the DateTimeCell component, extending CellProps with datetime value type and TextProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface DateTimeCellProps\n * @extends CellProps<string | number | Date | Dayjs, RecordType, TextProps & { format?: string }>\n *\n * @example\n * ```tsx\n * interface Event {\n * id: number;\n * title: string;\n * createdAt: string;\n * updatedAt: number;\n * }\n *\n * const props: DateTimeCellProps<Event> = {\n * data: {\n * value: \"2024-01-15T10:30:00Z\",\n * record: { id: 1, title: \"Meeting\", createdAt: \"2024-01-15T10:30:00Z\", updatedAt: 1705312200000 },\n * index: 0\n * },\n * attributes: {\n * format: \"YYYY-MM-DD HH:mm:ss\"\n * }\n * };\n * ```\n */\nexport interface DateTimeCellProps<RecordType = any> extends CellProps<\n string | number | Date | Dayjs,\n RecordType,\n TextProps & { format?: string | ((dayjs: Dayjs) => string) }\n> {}\n\nexport const DEFAULT_DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';\n\n/**\n * Renders a datetime cell using Ant Design's Typography.Text component with dayjs formatting.\n *\n * This component displays datetime values in table cells, supporting various input formats\n * (string, number timestamp, Date object, or Dayjs object) and customizable formatting\n * through the dayjs library. It provides consistent datetime display with fallback handling\n * for invalid dates.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the datetime cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The datetime value to display (string, number, Date, or Dayjs).\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes including format string and TextProps.\n * @param props.attributes.format - Optional dayjs format string (default: 'YYYY-MM-DD HH:mm:ss').\n * @returns A React element representing the formatted datetime cell.\n *\n * @example\n * ```tsx\n * <DateTimeCell\n * data={{\n * value: \"2024-01-15T10:30:00Z\",\n * record: { id: 1, title: \"Event\", createdAt: \"2024-01-15T10:30:00Z\" },\n * index: 0\n * }}\n * attributes={{\n * format: \"YYYY-MM-DD HH:mm:ss\"\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript and timestamp\n * interface Log {\n * id: number;\n * message: string;\n * timestamp: number;\n * }\n *\n * <DateTimeCell<Log>\n * data={{\n * value: 1705312200000,\n * record: { id: 1, message: \"User login\", timestamp: 1705312200000 },\n * index: 0\n * }}\n * attributes={{\n * format: \"MMM DD, YYYY hh:mm A\",\n * style: { color: '#666' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With Date object\n * <DateTimeCell\n * data={{\n * value: new Date(),\n * record: { id: 1, title: \"Current time\" },\n * index: 0\n * }}\n * />\n * ```\n */\nexport function DateTimeCell<RecordType = any>(\n props: DateTimeCellProps<RecordType>,\n) {\n const { data, attributes = {} } = props;\n const { format = DEFAULT_DATE_TIME_FORMAT, ...textProps } = attributes;\n if (!data.value) {\n return <Text {...textProps}>-</Text>;\n }\n const date = parseDayjs(data.value);\n if (!date.isValid()) {\n return <Text {...textProps}>-</Text>;\n }\n if (typeof format === 'function') {\n return <Text {...textProps}>{format(date)}</Text>;\n }\n return <Text {...textProps}>{date.format(format)}</Text>;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport calendar from 'dayjs/plugin/calendar';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { CellProps } from './types';\nimport { TextProps } from 'antd/es/typography/Text';\nimport { DateTimeCell, DEFAULT_DATE_TIME_FORMAT } from './DateTimeCell';\n\ndayjs.extend(calendar);\n\n/**\n * Calendar format configuration for relative time display.\n *\n * Defines the format strings used by dayjs calendar plugin to display\n * dates relative to the current time (e.g., \"今天\", \"昨天\", etc.).\n *\n * @interface CalendarFormats\n *\n * @example\n * ```typescript\n * const customFormats: CalendarFormats = {\n * sameDay: '[今天] HH:mm',\n * lastDay: '[昨天] HH:mm',\n * sameElse: 'YYYY-MM-DD HH:mm:ss'\n * };\n * ```\n */\nexport interface CalendarFormats {\n /** Format for dates that are today */\n sameDay?: string;\n /** Format for dates that are tomorrow */\n nextDay?: string;\n /** Format for dates in the next week */\n nextWeek?: string;\n /** Format for dates that were yesterday */\n lastDay?: string;\n /** Format for dates in the last week */\n lastWeek?: string;\n /** Format for all other dates */\n sameElse?: string;\n}\n\n/**\n * Constant representing the type identifier for calendar time cells.\n *\n * This constant is used to register and identify calendar time cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for calendar-based datetime table cells.\n *\n * @constant\n * @type {string}\n * @default 'calendar-time'\n *\n * @example\n * ```tsx\n * import { typedCellRender, CALENDAR_CELL_TYPE } from './table/cell';\n *\n * const calendarRenderer = typedCellRender(CALENDAR_CELL_TYPE, {\n * formats: {\n * sameDay: '[今天] HH:mm',\n * lastDay: '[昨天] HH:mm'\n * }\n * });\n * ```\n */\nexport const CALENDAR_CELL_TYPE = 'calendar-time';\n\n/**\n * Default calendar formats for Chinese locale.\n *\n * Provides sensible defaults for displaying relative dates in Chinese,\n * falling back to standard datetime format for older dates.\n *\n * @constant\n * @type {CalendarFormats}\n */\nexport const DEFAULT_CALENDAR_FORMATS: CalendarFormats = {\n sameDay: '[今天] HH:mm',\n nextDay: '[明天] HH:mm',\n lastDay: '[昨天] HH:mm',\n nextWeek: DEFAULT_DATE_TIME_FORMAT,\n lastWeek: DEFAULT_DATE_TIME_FORMAT,\n sameElse: DEFAULT_DATE_TIME_FORMAT,\n};\n\n/**\n * Props for the CalendarTimeCell component, extending CellProps with datetime value type and TextProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface CalendarTimeProps\n * @extends CellProps<string | number | Date | Dayjs, RecordType, TextProps & { formats?: CalendarFormats }>\n *\n * @example\n * ```tsx\n * interface Event {\n * id: number;\n * title: string;\n * createdAt: string;\n * updatedAt: number;\n * }\n *\n * const props: CalendarTimeProps<Event> = {\n * data: {\n * value: \"2024-01-15T10:30:45Z\",\n * record: { id: 1, title: \"Meeting\", createdAt: \"2024-01-15T10:30:45Z\", updatedAt: 1705312200000 },\n * index: 0\n * },\n * attributes: {\n * formats: {\n * sameDay: \"[今天] HH:mm\",\n * lastDay: \"[昨天] HH:mm\"\n * }\n * }\n * };\n * ```\n */\nexport interface CalendarTimeProps<RecordType = any>\n extends CellProps<\n string | number | Date | Dayjs,\n RecordType,\n TextProps & { formats?: CalendarFormats }\n > {\n}\n\n/**\n * Renders a calendar time cell using Ant Design's Typography.Text component with dayjs calendar formatting.\n *\n * This component displays datetime values in table cells using relative time formats\n * (e.g., \"今天 10:30\", \"昨天 15:45\") based on the current date. It supports various input formats\n * (string, number timestamp, Date object, or Dayjs object) and customizable calendar formats\n * through the dayjs calendar plugin. It provides consistent relative time display with fallback handling\n * for invalid dates.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the calendar time cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The datetime value to display (string, number, Date, or Dayjs).\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes including calendar formats and TextProps.\n * @param props.attributes.formats - Optional calendar format configuration (default: DEFAULT_CALENDAR_FORMATS).\n * @returns A React element representing the formatted calendar time cell.\n *\n * @example\n * ```tsx\n * <CalendarTimeCell\n * data={{\n * value: \"2024-01-15T10:30:45Z\",\n * record: { id: 1, title: \"Event\", createdAt: \"2024-01-15T10:30:45Z\" },\n * index: 0\n * }}\n * attributes={{\n * formats: {\n * sameDay: \"[今天] HH:mm\",\n * lastDay: \"[昨天] HH:mm\"\n * }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript and timestamp\n * interface Log {\n * id: number;\n * message: string;\n * timestamp: number;\n * }\n *\n * <CalendarTimeCell<Log>\n * data={{\n * value: 1705312200000,\n * record: { id: 1, message: \"User login\", timestamp: 1705312200000 },\n * index: 0\n * }}\n * attributes={{\n * formats: {\n * sameDay: \"[今天] HH:mm\",\n * lastDay: \"[昨天] HH:mm\"\n * },\n * style: { color: '#666' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With Date object\n * <CalendarTimeCell\n * data={{\n * value: new Date(),\n * record: { id: 1, title: \"Current time\" },\n * index: 0\n * }}\n * />\n * ```\n */\nexport function CalendarTimeCell<RecordType = any>(\n props: CalendarTimeProps<RecordType>,\n) {\n const { data, attributes = {} } = props;\n const { formats = DEFAULT_CALENDAR_FORMATS, ...textProps } = attributes;\n const format = (dayjs: Dayjs) => {\n return dayjs.calendar(null, formats);\n };\n return (<DateTimeCell data={data} attributes={{ format, ...textProps }} />);\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Typography } from 'antd';\nimport { TextProps } from 'antd/es/typography/Text';\n\nconst { Text } = Typography;\n\n/**\n * Constant representing the type identifier for text cells.\n *\n * This constant is used to register and identify text cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for text-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'text'\n *\n * @example\n * ```tsx\n * import { typedCellRender, TEXT_CELL_TYPE } from './table/cell';\n *\n * const textRenderer = typedCellRender(TEXT_CELL_TYPE, { ellipsis: true });\n * ```\n */\nexport const TEXT_CELL_TYPE: string = 'text';\n\n/**\n * Props for the TextCell component, extending CellProps with string value type and TextProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface TextCellProps\n * @extends CellProps<string, RecordType, TextProps>\n *\n * @example\n * ```tsx\n * interface User {\n * id: number;\n * name: string;\n * }\n *\n * const props: TextCellProps<User> = {\n * data: {\n * value: \"John Doe\",\n * record: { id: 1, name: \"John Doe\" },\n * index: 0\n * },\n * attributes: { ellipsis: true }\n * };\n * ```\n */\nexport interface TextCellProps<RecordType = any>\n extends CellProps<string, RecordType, TextProps> {\n}\n\n/**\n * Renders a text cell using Ant Design's Typography.Text component.\n *\n * This component displays string values in table cells with support for\n * various text formatting options provided by Ant Design's Typography.Text.\n * It handles the rendering of text content while allowing customization\n * through attributes like ellipsis, styling, and other TextProps.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the text cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The string value to display in the cell.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes to pass to Typography.Text component.\n * @returns A React element representing the text cell.\n *\n * @throws {Error} If the value cannot be rendered as React children (e.g., objects).\n *\n * @example\n * ```tsx\n * <TextCell\n * data={{\n * value: \"Hello World\",\n * record: { id: 1, name: \"John\" },\n * index: 0\n * }}\n * attributes={{\n * ellipsis: true,\n * style: { color: 'blue' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface User {\n * id: number;\n * name: string;\n * }\n *\n * <TextCell<User>\n * data={{\n * value: \"John Doe\",\n * record: { id: 1, name: \"John Doe\" },\n * index: 0\n * }}\n * attributes={{ ellipsis: { tooltip: true } }}\n * />\n * ```\n */\nexport function TextCell<RecordType = any>(props: TextCellProps<RecordType>) {\n return <Text {...props.attributes}>{props.attributes?.children ?? props.data.value}</Text>;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Tag, TagProps } from 'antd';\nimport { CellProps } from './types';\n\n\n/**\n * Constant representing the type identifier for tag cells.\n *\n * This constant is used to register and identify tag cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for tag-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'tag'\n *\n * @example\n * ```tsx\n * import { typedCellRender, TAG_CELL_TYPE } from './table/cell';\n *\n * const tagRenderer = typedCellRender(TAG_CELL_TYPE, { color: 'blue' });\n * ```\n */\nexport const TAG_CELL_TYPE: string = 'tag';\n\n/**\n * Props for the TagCell component, extending CellProps with string value type and TagProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface TagCellProps\n * @extends CellProps<string, RecordType, TagProps>\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * category: string;\n * }\n *\n * const props: TagCellProps<Product> = {\n * data: {\n * value: \"electronics\",\n * record: { id: 1, name: \"Laptop\", category: \"electronics\" },\n * index: 0\n * },\n * attributes: { color: \"blue\" }\n * };\n * ```\n */\nexport interface TagCellProps<RecordType = any>\n extends CellProps<string, RecordType, TagProps> {\n}\n\n/**\n * Renders a tag cell using Ant Design's Tag component.\n *\n * This component displays a single string tag in table cells with support for\n * various tag formatting options provided by Ant Design's Tag. It allows\n * customization through attributes like color, closable, and other TagProps.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the tag cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The string tag to display in the cell.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes to pass to the Tag component.\n * @returns A React element representing the tag cell.\n *\n * @throws {Error} If the value is not a string.\n *\n * @example\n * ```tsx\n * <TagCell\n * data={{\n * value: \"urgent\",\n * record: { id: 1, title: \"Task\", priority: \"urgent\" },\n * index: 0\n * }}\n * attributes={{\n * color: \"red\"\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface Task {\n * id: number;\n * title: string;\n * priority: string;\n * }\n *\n * <TagCell<Task>\n * data={{\n * value: \"urgent\",\n * record: { id: 1, title: \"Task\", priority: \"urgent\" },\n * index: 0\n * }}\n * attributes={{ color: \"orange\", closable: true }}\n * />\n * ```\n */\nexport function TagCell<RecordType = any>(props: TagCellProps<RecordType>) {\n const { data, attributes } = props;\n if (!data.value?.trim()) {\n return null;\n }\n\n return <Tag {...attributes}>{attributes?.children ?? data.value}</Tag>;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Space, TagProps } from 'antd';\nimport { TagCell } from './TagCell';\nimport { SpaceProps } from 'antd/es/space';\n\n/**\n * Constant representing the type identifier for tags cells.\n *\n * This constant is used to register and identify tags cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for tags-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'tags'\n *\n * @example\n * ```tsx\n * import { typedCellRender, TAGS_CELL_TYPE } from './table/cell';\n *\n * const tagsRenderer = typedCellRender(TAGS_CELL_TYPE, {\n * 'urgent': { color: 'red' },\n * 'normal': { color: 'blue' }\n * });\n * ```\n */\nexport const TAGS_CELL_TYPE: string = 'tags';\n\n/**\n * Props for the TagsCell component, extending CellProps with string array value type and tag attributes mapping.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface TagsCellProps\n * @extends CellProps<string[], RecordType, Record<string, TagProps>>\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * tags: string[];\n * category: string;\n * }\n *\n * const props: TagsCellProps<Product> = {\n * data: {\n * value: [\"electronics\", \"bestseller\"],\n * record: { id: 1, name: \"Laptop\", tags: [\"electronics\", \"bestseller\"], category: \"computers\" },\n * index: 0\n * },\n * attributes: {\n * \"electronics\": { color: \"blue\" },\n * \"bestseller\": { color: \"gold\" }\n * }\n * };\n * ```\n */\nexport interface TagsCellProps<RecordType = any>\n extends CellProps<string[], RecordType, Record<string, TagProps>> {\n space?: SpaceProps;\n}\n\n/**\n * Renders a tags cell using Ant Design's Space and Tag components.\n *\n * This component displays multiple string tags in table cells, with each tag\n * rendered using the TagCell component. It supports individual tag styling\n * through attributes mapping and automatically filters out empty or whitespace-only tags.\n * Tags are displayed horizontally in a Space component for proper spacing.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the tags cell component.\n * @param props.data - The cell data containing value array, record, and index.\n * @param props.data.value - The array of string tags to display in the cell.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional mapping of tag names to TagProps for individual tag styling.\n * @returns A React element containing the tags wrapped in a Space component, or null if no valid tags.\n *\n * @example\n * ```tsx\n * <TagsCell\n * data={{\n * value: [\"urgent\", \"frontend\", \"bug\"],\n * record: { id: 1, title: \"Fix login issue\", tags: [\"urgent\", \"frontend\", \"bug\"] },\n * index: 0\n * }}\n * attributes={{\n * \"urgent\": { color: \"red\" },\n * \"frontend\": { color: \"blue\" },\n * \"bug\": { color: \"orange\" }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface Task {\n * id: number;\n * title: string;\n * tags: string[];\n * priority: string;\n * }\n *\n * <TagsCell<Task>\n * data={{\n * value: [\"urgent\", \"frontend\"],\n * record: { id: 1, title: \"Task\", tags: [\"urgent\", \"frontend\"], priority: \"high\" },\n * index: 0\n * }}\n * attributes={{\n * \"urgent\": { color: \"red\", closable: true },\n * \"frontend\": { color: \"geekblue\" }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Empty tags array - renders nothing\n * <TagsCell\n * data={{\n * value: [],\n * record: { id: 1, title: \"Task\" },\n * index: 0\n * }}\n * attributes={{}}\n * />\n * ```\n */\nexport function TagsCell<RecordType = any>(props: TagsCellProps<RecordType>) {\n const { space, data, attributes = {} } = props;\n if (!data.value?.length) {\n return null;\n }\n return (\n <Space {...space}>\n {data.value.map((tag, index) => {\n const tagAttributes = attributes[tag];\n return (\n <TagCell\n key={index}\n data={{ value: tag, record: data.record, index: data.index }}\n attributes={tagAttributes}\n ></TagCell>\n );\n })}\n </Space>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Empty, Image } from 'antd';\nimport { ImageProps } from 'antd/es/image';\n\n/**\n * Constant representing the type identifier for image cells.\n *\n * This constant is used to register and identify image cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for image-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'image'\n *\n * @example\n * ```tsx\n * import { typedCellRender, IMAGE_CELL_TYPE } from './table/cell';\n *\n * const imageRenderer = typedCellRender(IMAGE_CELL_TYPE, {\n * width: 50,\n * height: 50\n * });\n * ```\n */\nexport const IMAGE_CELL_TYPE: string = 'image';\n\n/**\n * Props for the ImageCell component, extending CellProps with string value type and ImageProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface ImageCellProps\n * @extends CellProps<string, RecordType, ImageProps>\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * imageUrl: string;\n * }\n *\n * const props: ImageCellProps<Product> = {\n * data: {\n * value: \"https://example.com/image.jpg\",\n * record: { id: 1, name: \"Product A\", imageUrl: \"https://example.com/image.jpg\" },\n * index: 0\n * },\n * attributes: {\n * width: 80,\n * height: 80,\n * alt: \"Product image\"\n * }\n * };\n * ```\n */\nexport interface ImageCellProps<RecordType = any>\n extends CellProps<string, RecordType, ImageProps> {\n}\n\n/**\n * Renders an image cell using Ant Design's Image component.\n *\n * This component displays image URLs in table cells with support for\n * preview, fallback images, and all Image component features. It handles\n * null/undefined values gracefully by showing a placeholder.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the image cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The image URL string to display.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes for the Image component.\n * @returns A React element representing the image cell.\n *\n * @example\n * ```tsx\n * <ImageCell\n * data={{\n * value: \"https://example.com/avatar.jpg\",\n * record: { id: 1, name: \"John\", avatar: \"https://example.com/avatar.jpg\" },\n * index: 0\n * }}\n * attributes={{\n * width: 40,\n * height: 40,\n * preview: true\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With fallback image\n * <ImageCell\n * data={{\n * value: \"https://example.com/image.jpg\",\n * record: { id: 1, title: \"Product\", imageUrl: \"https://example.com/image.jpg\" },\n * index: 0\n * }}\n * attributes={{\n * width: 100,\n * height: 100,\n * fallback: \"https://example.com/placeholder.jpg\"\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface User {\n * id: number;\n * name: string;\n * avatar: string;\n * }\n *\n * <ImageCell<User>\n * data={{\n * value: user.avatar,\n * record: user,\n * index: 0\n * }}\n * attributes={{\n * width: 32,\n * height: 32,\n * style: { borderRadius: '50%' }\n * }}\n * />\n * ```\n */\nexport function ImageCell<RecordType = any>(props: ImageCellProps<RecordType>) {\n const { data, attributes = {} } = props;\n\n if (!data.value) {\n return <Empty description={null} />;\n }\n\n return <Image src={data.value} {...attributes} />;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Empty, Image, Badge } from 'antd';\nimport { PreviewGroupProps } from 'antd/es/image/PreviewGroup';\n\n/**\n * Constant representing the type identifier for image group cells.\n *\n * This constant is used to register and identify image group cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for image group-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'image-group'\n *\n * @example\n * ```tsx\n * import { typedCellRender, IMAGE_GROUP_CELL_TYPE } from './table/cell';\n *\n * const imageGroupRenderer = typedCellRender(IMAGE_GROUP_CELL_TYPE, {\n * width: 50,\n * height: 50\n * });\n * ```\n */\nexport const IMAGE_GROUP_CELL_TYPE: string = 'image-group';\n\n/**\n * Props for the ImageGroupCell component, extending CellProps with string array value type and ImageProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface ImageGroupCellProps\n * @extends CellProps<string[], RecordType, ImageProps>\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * images: string[];\n * }\n *\n * const props: ImageGroupCellProps<Product> = {\n * data: {\n * value: [\"https://example.com/image1.jpg\", \"https://example.com/image2.jpg\"],\n * record: { id: 1, name: \"Product A\", images: [\"https://example.com/image1.jpg\", \"https://example.com/image2.jpg\"] },\n * index: 0\n * },\n * attributes: {\n * width: 80,\n * height: 80,\n * preview: true\n * }\n * };\n * ```\n */\nexport interface ImageGroupCellProps<RecordType = any>\n extends CellProps<string[], RecordType, PreviewGroupProps> {}\n\n/**\n * Renders an image group cell using Ant Design's Image.PreviewGroup component.\n *\n * This component displays multiple images in a group that can be previewed together,\n * allowing navigation between images. It handles null/undefined/empty arrays gracefully\n * by showing a placeholder.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the image group cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The array of image URLs to display.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes for the Image components.\n * @returns A React element representing the image group cell.\n *\n * @example\n * ```tsx\n * <ImageGroupCell\n * data={{\n * value: [\"https://example.com/avatar1.jpg\", \"https://example.com/avatar2.jpg\"],\n * record: { id: 1, name: \"John\", avatars: [\"https://example.com/avatar1.jpg\", \"https://example.com/avatar2.jpg\"] },\n * index: 0\n * }}\n * attributes={{\n * width: 40,\n * height: 40,\n * preview: true\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With fallback images\n * <ImageGroupCell\n * data={{\n * value: [\"https://example.com/image1.jpg\", \"https://example.com/image2.jpg\"],\n * record: { id: 1, title: \"Product\", images: [\"https://example.com/image1.jpg\", \"https://example.com/image2.jpg\"] },\n * index: 0\n * }}\n * attributes={{\n * width: 100,\n * height: 100,\n * fallback: \"https://example.com/placeholder.jpg\"\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface Gallery {\n * id: number;\n * name: string;\n * photos: string[];\n * }\n *\n * <ImageGroupCell<Gallery>\n * data={{\n * value: gallery.photos,\n * record: gallery,\n * index: 0\n * }}\n * attributes={{\n * width: 64,\n * height: 64,\n * style: { borderRadius: '4px' }\n * }}\n * />\n * ```\n */\nexport function ImageGroupCell<RecordType = any>(\n props: ImageGroupCellProps<RecordType>,\n) {\n const { data, attributes = {} } = props;\n\n if (!data.value || !Array.isArray(data.value) || data.value.length === 0) {\n return <Empty description={null} />;\n }\n const hasMultipleImages = data.value.length > 1;\n const mainImageElement = (\n <Image src={data.value[0]} {...(attributes as any)} />\n );\n\n return (\n <Image.PreviewGroup items={data.value} {...attributes}>\n {hasMultipleImages ? (\n <Badge count={data.value.length}>{mainImageElement}</Badge>\n ) : (\n mainImageElement\n )}\n </Image.PreviewGroup>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Typography } from 'antd';\nimport { LinkProps } from 'antd/es/typography/Link';\n\nconst { Link } = Typography;\n\n/**\n * Constant representing the type identifier for link cells.\n *\n * This constant is used to register and identify link cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for link-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'link'\n *\n * @example\n * ```tsx\n * import { typedCellRender, LINK_CELL_TYPE } from './table/cell';\n *\n * const linkRenderer = typedCellRender(LINK_CELL_TYPE, { href: '#' });\n * ```\n */\nexport const LINK_CELL_TYPE: string = 'link';\n\n/**\n * Props for the LinkCell component, extending CellProps with string value type and LinkProps attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface LinkCellProps\n * @extends CellProps<string, RecordType, LinkProps>\n *\n * @example\n * ```tsx\n * interface Article {\n * id: number;\n * title: string;\n * url: string;\n * }\n *\n * const props: LinkCellProps<Article> = {\n * data: {\n * value: \"Read More\",\n * record: { id: 1, title: \"Article Title\", url: \"https://example.com\" },\n * index: 0\n * },\n * attributes: { href: \"https://example.com\" }\n * };\n * ```\n */\nexport interface LinkCellProps<RecordType = any> extends CellProps<\n string,\n RecordType,\n LinkProps\n> {}\n\nconst EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\nconst EMAIL_PREFIX = 'mailto:';\n\n/**\n * Renders a link cell using Ant Design's Typography.Link component.\n *\n * This component displays clickable links in table cells with support for\n * various link formatting options provided by Ant Design's Typography.Link.\n * It handles the rendering of link content while allowing customization\n * through attributes like href, target, and other LinkProps.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param props - The props for the link cell component.\n * @param props.data - The cell data containing value, record, and index.\n * @param props.data.value - The string value to display as the link text.\n * @param props.data.record - The full record object for context.\n * @param props.data.index - The index of the row in the table.\n * @param props.attributes - Optional attributes to pass to Typography.Link component.\n * @returns A React element representing the link cell.\n *\n * @example\n * ```tsx\n * <LinkCell\n * data={{\n * value: \"Visit Website\",\n * record: { id: 1, name: \"Example\", url: \"https://example.com\" },\n * index: 0\n * }}\n * attributes={{\n * href: \"https://example.com\",\n * target: \"_blank\"\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript\n * interface LinkItem {\n * id: number;\n * text: string;\n * href: string;\n * }\n *\n * <LinkCell<LinkItem>\n * data={{\n * value: \"Click Here\",\n * record: { id: 1, text: \"Click Here\", href: \"https://example.com\" },\n * index: 0\n * }}\n * attributes={{\n * href: \"https://example.com\",\n * style: { color: '#1890ff' }\n * }}\n * />\n * ```\n */\nexport function LinkCell<RecordType = any>(props: LinkCellProps<RecordType>) {\n const isEmail = props.data.value && EMAIL_REGEX.test(props.data.value);\n const href =\n props.attributes?.href ??\n (isEmail ? `${EMAIL_PREFIX}${props.data.value}` : props.data.value);\n const linkProps = isEmail\n ? props.attributes\n : {\n ...props.attributes,\n ...(props.attributes?.target === undefined ? { target: '_blank' } : {}),\n };\n return (\n <Link href={href} {...linkProps}>\n {props.attributes?.children ?? props.data.value}\n </Link>\n );\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isNullOrUndefined } from './utils';\n\n/**\n * Configuration options for currency formatting.\n *\n * This interface extends a subset of Intl.NumberFormatOptions with additional\n * currency-specific formatting controls. It provides a comprehensive set of\n * options for customizing how monetary values are displayed.\n *\n * @example\n * ```typescript\n * const options: CurrencyFormatOptions = {\n * currency: 'USD',\n * currencyDisplay: 'symbol',\n * decimals: 2,\n * locale: 'en-US',\n * useGrouping: true,\n * fallback: 'N/A'\n * };\n * ```\n */\nexport interface CurrencyFormatOptions {\n /**\n * The currency code to use for formatting (ISO 4217 currency codes).\n * Common values include 'USD', 'EUR', 'CNY', 'JPY', etc.\n *\n * @type {string}\n * @default 'CNY'\n * @example 'USD', 'EUR', 'CNY', 'JPY'\n */\n currency?: string;\n\n /**\n * How to display the currency in the formatted output.\n * - 'symbol': Use currency symbol (e.g., $, €, ¥)\n * - 'narrowSymbol': Use narrow currency symbol when available\n * - 'code': Use currency code (e.g., USD, EUR, CNY)\n * - 'name': Use currency name (e.g., US dollar, euro, Chinese yuan)\n *\n * @type {Intl.NumberFormatOptionsCurrencyDisplay}\n * @default 'symbol'\n */\n currencyDisplay?: Intl.NumberFormatOptionsCurrencyDisplay;\n\n /**\n * The number of decimal places to display.\n * This controls both minimum and maximum fraction digits.\n *\n * @type {number}\n * @default 2\n * @example 2, 3, 0\n */\n decimals?: number;\n\n /**\n * The locale to use for formatting (BCP 47 language tag).\n * This affects number formatting, currency symbols, and grouping separators.\n *\n * @type {string}\n * @default 'zh-CN'\n * @example 'en-US', 'zh-CN', 'ja-JP', 'de-DE'\n */\n locale?: string;\n\n /**\n * Whether to use grouping separators (thousands separators).\n * When true, large numbers will be formatted with separators (e.g., 1,234.56).\n *\n * @type {boolean}\n * @default true\n */\n useGrouping?: boolean;\n\n /**\n * The fallback string to return when the input value is invalid, null, undefined, or NaN.\n * This ensures consistent output for edge cases.\n *\n * @type {string}\n * @default '-'\n * @example '-', 'N/A', 'Invalid', ''\n */\n fallback?: string;\n}\n\n/**\n * Default configuration options for currency formatting.\n *\n * These defaults are used when no options are provided to formatCurrency().\n * They provide sensible defaults for Chinese Yuan (CNY) formatting with\n * standard decimal places and grouping separators.\n *\n * @constant\n * @type {CurrencyFormatOptions}\n *\n * @example\n * ```typescript\n * // Using defaults\n * formatCurrency(1234.56); // Uses DEFAULT_CURRENCY_FORMAT_OPTIONS\n *\n * // Overriding specific options\n * formatCurrency(1234.56, { currency: 'USD' }); // Merges with defaults\n * ```\n */\nexport const DEFAULT_CURRENCY_FORMAT_OPTIONS: CurrencyFormatOptions = {\n currency: 'CNY',\n currencyDisplay: 'symbol',\n decimals: 2,\n locale: 'zh-CN',\n useGrouping: true,\n fallback: '-',\n};\n\n/**\n * Internal constant defining the NumberFormat style for currency formatting.\n * This is used internally by the formatCurrency function.\n *\n * @private\n * @constant\n * @type {string}\n * @default 'currency'\n */\nconst NUMBER_FORMATE_STYLE = 'currency';\n\n/**\n * Formats a numeric amount as a localized currency string.\n *\n * This function provides comprehensive currency formatting using the browser's\n * Intl.NumberFormat API. It supports various currencies, locales, and formatting\n * options while providing robust error handling and fallback behavior.\n *\n * @param {number | string} amount - The monetary amount to format. Can be a number or a string representation of a number.\n * @param {CurrencyFormatOptions} [options=DEFAULT_CURRENCY_FORMAT_OPTIONS] - Formatting options to customize the output.\n * @returns {string} The formatted currency string, or the fallback value if formatting fails.\n *\n * @throws {Error} May throw if the Intl.NumberFormat constructor fails with invalid options, but this is handled internally with fallback.\n *\n * @example\n * ```typescript\n * // Basic usage with defaults (CNY, zh-CN locale)\n * formatCurrency(1234.56); // \"¥1,234.56\"\n * formatCurrency(0); // \"¥0.00\"\n * formatCurrency(null); // \"-\"\n *\n * // Using USD with US locale\n * formatCurrency(1234.56, {\n * currency: 'USD',\n * locale: 'en-US'\n * }); // \"$1,234.56\"\n *\n * // Formatting with custom decimal places\n * formatCurrency(1234.56789, {\n * currency: 'EUR',\n * decimals: 3,\n * locale: 'de-DE'\n * }); // \"1.234,568 €\"\n *\n * // Large numbers with grouping\n * formatCurrency(1234567.89, {\n * currency: 'CNY',\n * useGrouping: true\n * }); // \"¥1,234,567.89\"\n *\n * // Without grouping separators\n * formatCurrency(1234567.89, {\n * currency: 'CNY',\n * useGrouping: false\n * }); // \"¥1234567.89\"\n *\n * // Custom fallback for invalid values\n * formatCurrency(NaN, {\n * fallback: 'Invalid amount'\n * }); // \"Invalid amount\"\n *\n * // String input (automatically parsed)\n * formatCurrency('1234.56'); // \"¥1,234.56\"\n * formatCurrency('$1,234.56'); // \"¥1234.56\" (non-numeric characters removed)\n * ```\n *\n * @example\n * ```typescript\n * // Error handling - function gracefully handles edge cases\n * formatCurrency(Infinity); // \"-\"\n * formatCurrency(-Infinity); // \"-\"\n * formatCurrency('not-a-number'); // \"-\"\n * ```\n */\nexport function formatCurrency(\n amount: number | string | null,\n options: CurrencyFormatOptions = DEFAULT_CURRENCY_FORMAT_OPTIONS,\n): string {\n const {\n currency = DEFAULT_CURRENCY_FORMAT_OPTIONS.currency,\n currencyDisplay = DEFAULT_CURRENCY_FORMAT_OPTIONS.currencyDisplay,\n decimals = DEFAULT_CURRENCY_FORMAT_OPTIONS.decimals,\n locale = DEFAULT_CURRENCY_FORMAT_OPTIONS.locale,\n useGrouping = DEFAULT_CURRENCY_FORMAT_OPTIONS.useGrouping,\n fallback = DEFAULT_CURRENCY_FORMAT_OPTIONS.fallback,\n } = options;\n const numericAmount: number = parseAmount(amount);\n if (isNaN(numericAmount) || !isFinite(numericAmount)) {\n return fallback!;\n }\n\n const formatter = new Intl.NumberFormat(locale, {\n style: NUMBER_FORMATE_STYLE,\n currency,\n currencyDisplay,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n useGrouping,\n });\n\n return formatter.format(numericAmount);\n}\n\n/**\n * Parses and normalizes an amount input to a numeric value.\n *\n * This internal helper function converts string inputs to numbers by removing\n * non-numeric characters (except decimal points and minus signs). It's used\n * internally by formatCurrency to handle various input formats gracefully.\n *\n * @private\n * @param {number | string} amount - The amount to parse, either a number or string.\n * @returns {number} The parsed numeric value, or NaN if parsing fails.\n *\n * @example\n * ```typescript\n * parseAmount(123.45); // 123.45\n * parseAmount('123.45'); // 123.45\n * parseAmount('$123.45'); // 123.45 (removes currency symbol)\n * parseAmount('1,234.56'); // 1234.56 (removes comma)\n * parseAmount('not-a-number'); // NaN\n * ```\n */\nfunction parseAmount(amount: number | string | null | undefined): number {\n if (typeof amount === 'number') {\n return amount;\n }\n\n if (isNullOrUndefined(amount)) {\n return NaN;\n }\n const cleanedAmount = amount.replace(/[^\\d.-]/g, '');\n return parseFloat(cleanedAmount);\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CellProps } from './types';\nimport { Typography } from 'antd';\nimport { TextProps } from 'antd/es/typography/Text';\nimport { formatCurrency, CurrencyFormatOptions } from './currencyFormatter';\n\nconst { Text } = Typography;\n\n/**\n * Constant representing the type identifier for currency cells.\n *\n * This constant is used to register and identify currency cell components\n * in the cell registry system. It should be used when creating typed\n * cell renderers for currency-based table cells.\n *\n * @constant\n * @type {string}\n * @default 'currency'\n *\n * @example\n * ```tsx\n * import { typedCellRender, CURRENCY_CELL_TYPE } from './table/cell';\n *\n * const currencyRenderer = typedCellRender(CURRENCY_CELL_TYPE, {\n * format: {\n * currency: 'USD',\n * decimals: 2,\n * locale: 'en-US'\n * },\n * style: { fontWeight: 'bold' }\n * });\n * ```\n *\n * @example\n * ```tsx\n * // Using with cell registry\n * import { cellRegistry, CURRENCY_CELL_TYPE } from './table/cell';\n *\n * const CurrencyCellComponent = cellRegistry.get(CURRENCY_CELL_TYPE);\n * if (CurrencyCellComponent) {\n * // Use the component for rendering currency cells\n * }\n * ```\n */\nexport const CURRENCY_CELL_TYPE: string = 'currency';\n\n/**\n * Attributes for currency cell formatting, extending TextProps with currency-specific options.\n *\n * This interface combines Ant Design's TextProps for text styling with\n * a format property containing CurrencyFormatOptions for currency formatting configuration.\n * The format property is optional and allows customization of how currency values are displayed.\n *\n * @interface CurrencyAttributes\n * @extends TextProps\n *\n * @property {CurrencyFormatOptions} [format] - Optional currency formatting options.\n * When not provided, uses default currency formatting (CNY, zh-CN locale, 2 decimals).\n * @property {boolean} [ellipsis] - Whether to truncate text with ellipsis when it overflows.\n * @property {React.CSSProperties} [style] - Custom CSS styles to apply to the text element.\n * @property {string} [className] - Additional CSS class names to apply to the text element.\n * @property {React.ReactNode} [children] - Custom content to display instead of the formatted currency value.\n *\n * @example\n * ```tsx\n * const attributes: CurrencyAttributes = {\n * format: {\n * currency: 'USD',\n * currencyDisplay: 'symbol',\n * decimals: 2,\n * locale: 'en-US',\n * useGrouping: true\n * },\n * ellipsis: true,\n * style: { color: 'green', fontWeight: 'bold' },\n * className: 'currency-text'\n * };\n * ```\n *\n * @example\n * ```tsx\n * // Using only text styling without currency formatting\n * const attributes: CurrencyAttributes = {\n * style: { color: 'red' },\n * ellipsis: true\n * };\n * ```\n */\nexport interface CurrencyAttributes extends TextProps {\n format?: CurrencyFormatOptions;\n}\n\n/**\n * Props for the CurrencyCell component, extending CellProps with numeric value type and CurrencyAttributes.\n *\n * This interface defines the complete props structure for the CurrencyCell component,\n * combining cell data with optional formatting and styling attributes.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @interface CurrencyCellProps\n * @extends CellProps<number | string, RecordType, CurrencyAttributes>\n *\n * @property {CellData<number | string, RecordType>} data - The cell data containing the value to format.\n * @property {CurrencyAttributes} [attributes] - Optional attributes for currency formatting and text styling.\n *\n * @example\n * ```tsx\n * interface Product {\n * id: number;\n * name: string;\n * price: number;\n * }\n *\n * const props: CurrencyCellProps<Product> = {\n * data: {\n * value: 1234.56,\n * record: { id: 1, name: \"Widget\", price: 1234.56 },\n * index: 0\n * },\n * attributes: {\n * format: {\n * currency: 'USD',\n * decimals: 2,\n * locale: 'en-US'\n * },\n * ellipsis: true,\n * style: { fontWeight: 'bold' }\n * }\n * };\n * ```\n *\n * @example\n * ```tsx\n * // With string values (automatically parsed)\n * const props: CurrencyCellProps = {\n * data: {\n * value: \"999.99\",\n * record: { id: 1, amount: \"999.99\" },\n * index: 0\n * },\n * attributes: {\n * format: {\n * currency: 'EUR',\n * currencyDisplay: 'code'\n * }\n * }\n * };\n * ```\n */\nexport interface CurrencyCellProps<RecordType = any> extends CellProps<\n number | string,\n RecordType,\n CurrencyAttributes\n> {}\n\n/**\n * Renders a currency cell using the formatCurrency function and Ant Design's Typography.Text component.\n *\n * This component displays numeric values formatted as localized currency strings in table cells.\n * It supports various currencies, locales, decimal precision, and formatting options while\n * providing text styling capabilities through Ant Design's Typography.Text component.\n *\n * The component automatically handles invalid values (null, undefined, NaN, Infinity) by\n * displaying a fallback string, and supports both numeric and string inputs that are\n * automatically parsed.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param {CurrencyCellProps<RecordType>} props - The props for the currency cell component.\n * @param {CellData<number | string, RecordType>} props.data - The cell data containing value, record, and index.\n * @param {number | string} props.data.value - The numeric or string value to format as currency.\n * String values are automatically parsed, removing non-numeric characters except decimal points and minus signs.\n * @param {RecordType} props.data.record - The full record object providing context for the cell.\n * @param {number} props.data.index - The zero-based index of the row in the table.\n * @param {CurrencyAttributes} [props.attributes] - Optional attributes for currency formatting and text styling.\n * @param {CurrencyFormatOptions} [props.attributes.format] - Currency formatting options including currency code, locale, decimals, etc.\n * @param {boolean} [props.attributes.ellipsis] - Whether to truncate text with ellipsis when it overflows.\n * @param {React.CSSProperties} [props.attributes.style] - Custom CSS styles to apply to the text element.\n * @param {string} [props.attributes.className] - Additional CSS class names to apply to the text element.\n * @param {React.ReactNode} [props.attributes.children] - Custom content to display instead of the formatted currency value.\n * @returns {React.ReactElement} A React element representing the formatted currency cell using Typography.Text.\n *\n * @throws {Error} This component does not throw errors directly, but may propagate errors from the formatCurrency function\n * if invalid currency codes or locales are provided in the format options.\n *\n * @example\n * ```tsx\n * // Basic usage with USD formatting\n * <CurrencyCell\n * data={{\n * value: 1234.56,\n * record: { id: 1, name: \"Product\", price: 1234.56 },\n * index: 0\n * }}\n * attributes={{\n * format: {\n * currency: 'USD',\n * decimals: 2,\n * locale: 'en-US'\n * },\n * ellipsis: true,\n * style: { fontWeight: 'bold' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript and EUR currency\n * interface Transaction {\n * id: string;\n * amount: number;\n * currency: string;\n * }\n *\n * <CurrencyCell<Transaction>\n * data={{\n * value: 999.99,\n * record: { id: \"tx-123\", amount: 999.99, currency: \"EUR\" },\n * index: 0\n * }}\n * attributes={{\n * format: {\n * currency: 'EUR',\n * currencyDisplay: 'code',\n * decimals: 2,\n * locale: 'de-DE'\n * },\n * style: { color: 'green' }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Using string values (automatically parsed)\n * <CurrencyCell\n * data={{\n * value: \"1,234.56\",\n * record: { id: 1, amount: \"1,234.56\" },\n * index: 0\n * }}\n * attributes={{\n * format: {\n * currency: 'CNY',\n * useGrouping: true\n * }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Handling invalid values (displays fallback)\n * <CurrencyCell\n * data={{\n * value: NaN,\n * record: { id: 1, amount: NaN },\n * index: 0\n * }}\n * attributes={{\n * format: {\n * currency: 'USD',\n * fallback: 'N/A'\n * }\n * }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Custom content override\n * <CurrencyCell\n * data={{\n * value: 100,\n * record: { id: 1, amount: 100 },\n * index: 0\n * }}\n * attributes={{\n * format: { currency: 'USD' },\n * children: <span style={{ color: 'red' }}>Custom Content</span>\n * }}\n * />\n * ```\n */\nexport function CurrencyCell<RecordType = any>(\n props: CurrencyCellProps<RecordType>,\n) {\n const { data, attributes = {} } = props;\n const { format, ...textProps } = attributes;\n const formattedValue = formatCurrency(data.value, format);\n return <Text {...textProps}>{textProps.children ?? formattedValue}</Text>;\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TypedComponentRegistry } from '../../registry';\nimport { CellType } from './TypedCell';\nimport { CellProps } from './types';\nimport { ACTION_CELL_TYPE, ActionCell } from './ActionCell';\nimport { ACTIONS_CELL_TYPE, ActionsCell } from './ActionsCell';\nimport { TEXT_CELL_TYPE, TextCell } from './TextCell';\nimport { TAG_CELL_TYPE, TagCell } from './TagCell';\nimport { TAGS_CELL_TYPE, TagsCell } from './TagsCell';\nimport { DATETIME_CELL_TYPE, DateTimeCell } from './DateTimeCell';\nimport { CALENDAR_CELL_TYPE, CalendarTimeCell } from './CalendarTime';\nimport { IMAGE_CELL_TYPE, ImageCell } from './ImageCell';\nimport { IMAGE_GROUP_CELL_TYPE, ImageGroupCell } from './ImageGroupCell';\nimport { LINK_CELL_TYPE, LinkCell } from './LinkCell';\nimport { CURRENCY_CELL_TYPE, CurrencyCell } from './CurrencyCell';\nimport { AVATAR_CELL_TYPE, AvatarCell } from './AvatarCell';\n\n/**\n * Registry for cell components, mapping cell types to their corresponding components.\n *\n * This registry instance manages the available cell component types for table rendering.\n * It is pre-initialized with the text cell component and can be extended with additional\n * cell types as needed. The registry provides type-safe component resolution for\n * dynamic cell rendering based on data types.\n *\n * @constant\n * @type {TypedComponentRegistry<CellType, CellProps>}\n *\n * @example\n * ```tsx\n * // Get a registered component\n * const TextCellComponent = cellRegistry.get('text');\n *\n * // Check if a type is registered\n * if (cellRegistry.has('number')) {\n * // Use number cell\n * }\n *\n * // Register a custom cell type\n * cellRegistry.register('custom', CustomCellComponent);\n * ```\n *\n * @example\n * ```tsx\n * // Using with typedCellRender\n * import { typedCellRender } from './TypedCell';\n *\n * const renderer = typedCellRender('text', { ellipsis: true });\n * if (renderer) {\n * const cell = renderer('Hello', { id: 1 }, 0);\n * }\n * ```\n */\nexport const cellRegistry: TypedComponentRegistry<CellType, CellProps> =\n TypedComponentRegistry.create<CellType, CellProps>([\n [ACTION_CELL_TYPE, ActionCell],\n [ACTIONS_CELL_TYPE, ActionsCell],\n [TEXT_CELL_TYPE, TextCell],\n [TAG_CELL_TYPE, TagCell],\n [TAGS_CELL_TYPE, TagsCell],\n [DATETIME_CELL_TYPE, DateTimeCell],\n [CALENDAR_CELL_TYPE, CalendarTimeCell],\n [IMAGE_CELL_TYPE, ImageCell],\n [IMAGE_GROUP_CELL_TYPE, ImageGroupCell],\n [LINK_CELL_TYPE, LinkCell],\n [CURRENCY_CELL_TYPE, CurrencyCell],\n [AVATAR_CELL_TYPE, AvatarCell],\n ]);\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cellRegistry } from './cellRegistry';\nimport type * as React from 'react';\nimport { CellData } from './types';\n\n/**\n * Represents the type identifier for different cell components.\n *\n * Cell types are string identifiers used to register and retrieve\n * specific cell rendering components from the cell registry.\n * Common types include 'text', 'number', 'date', etc.\n *\n * @example\n * ```tsx\n * const textType: CellType = 'text';\n * const customType: CellType = 'custom-cell';\n * ```\n */\nexport type CellType = string;\n\n/**\n * A function type for rendering typed cells, supporting both synchronous and asynchronous rendering.\n *\n * Cell renderers are functions that take cell data and return React nodes\n * for display in table cells. They can be synchronous for immediate rendering\n * or asynchronous for cases requiring data fetching or complex computations.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @param value - The value to render in the cell. Can be any type depending on the cell implementation.\n * @param record - The full record object providing context for the cell rendering.\n * @param index - The zero-based index of the row in the table.\n * @returns A React node for synchronous rendering, or a Promise resolving to a React node for asynchronous rendering.\n *\n * @example\n * ```tsx\n * // Synchronous renderer\n * const textRenderer: CellRenderer<User> = (value, record, index) => {\n * return <span>{String(value)}</span>;\n * };\n *\n * // Asynchronous renderer\n * const asyncRenderer: CellRenderer<User> = async (value, record, index) => {\n * const formatted = await formatValue(value);\n * return <span>{formatted}</span>;\n * };\n * ```\n */\nexport type CellRenderer<RecordType = any> = (\n value: any,\n record: RecordType,\n index: number,\n) => React.ReactNode;\n\n/**\n * Creates a typed cell renderer function for a given cell type.\n *\n * This function retrieves a cell component from the registry based on the\n * provided type and returns a renderer function that can be used to render\n * cells of that type. The returned renderer encapsulates the component and\n * its attributes for repeated use.\n *\n * @template RecordType - The type of the record containing the cell data.\n * @template Attributes - The type of additional attributes for the cell component.\n * @param type - The cell type identifier to look up in the registry (e.g., 'text', 'number').\n * @param attributes - Optional attributes object to pass to the cell component for customization.\n * @returns A renderer function for the specified cell type, or undefined if the type is not registered.\n *\n * @throws {Error} This function itself doesn't throw, but the returned renderer may throw\n * if the underlying component encounters rendering errors.\n *\n * @example\n * ```tsx\n * // Create a text renderer with ellipsis\n * const textRenderer = typedCellRender('text', { ellipsis: true });\n *\n * // Use the renderer to create cells\n * const cell1 = textRenderer('Hello World', { id: 1 }, 0);\n * const cell2 = textRenderer('Long text...', { id: 2 }, 1);\n * ```\n *\n * @example\n * ```tsx\n * // With TypeScript types\n * interface User {\n * id: number;\n * name: string;\n * }\n *\n * const userNameRenderer = typedCellRender<User>('text', {\n * style: { fontWeight: 'bold' }\n * });\n *\n * const cell = userNameRenderer('John Doe', { id: 1, name: 'John Doe' }, 0);\n * ```\n *\n * @example\n * ```tsx\n * // Handling unregistered types\n * const unknownRenderer = typedCellRender('unknown-type');\n * if (!unknownRenderer) {\n * console.warn('Unknown cell type');\n * }\n * ```\n */\nexport function typedCellRender<RecordType = any, Attributes = any>(\n type: CellType,\n attributes?: Attributes,\n): CellRenderer<RecordType> | undefined {\n const CellComponent = cellRegistry.get(type);\n if (!CellComponent) {\n return undefined;\n }\n return (value: any, record: RecordType, index: number) => {\n const data: CellData = {\n value,\n record,\n index,\n };\n return CellComponent({\n attributes,\n data,\n }) as React.ReactNode;\n };\n}\n","/*\n * Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Checkbox } from 'antd';\nimport { DragOutlined } from '@ant-design/icons';\nimport { ViewColumnDefinition } from '../../viewer';\n\n/**\n * Table Field Item Component\n *\n * A component that represents a single column field in a table settings panel.\n * It displays a checkbox for toggling column visibility and a drag handle for reordering.\n *\n * @param props - The properties for the TableFieldItem component\n * @param props.columnDefinition - The column definition including title and primary key flag\n * @param props.fixed - Whether the column is fixed and cannot be hidden\n * @param props.visible - Whether the column is currently visible\n * @param props.onVisibleChange - Callback function triggered when visibility changes\n *\n * @returns A React element representing the table field item\n *\n * @example\n * ```tsx\n * <TableFieldItem\n * columnDefinition={{\n * title: 'Product Name',\n * dataIndex: 'name',\n * cell: { type: TEXT_CELL_TYPE },\n * primaryKey: false\n * }}\n * fixed={false}\n * visible={true}\n * onVisibleChange={(visible) => console.log('Visibility changed:', visible)}\n * />\n * ```\n */\nexport interface TableFieldItemProps {\n /** The column definition including title and primary key flag */\n columnDefinition: ViewColumnDefinition;\n /** Whether the column is fixed and cannot be hidden */\n fixed: boolean;\n /** Whether the column is currently visible */\n visible: boolean;\n /** Callback function triggered when visibility changes */\n onVisibleChange: (visible: boolean) => void;\n}\n\n/**\n * Table Field Item Component\n *\n * Renders a single column field in the table settings panel with:\n * - Checkbox for visibility toggle\n * - Drag handle for reordering\n * - Primary key disabled state\n *\n * @param props - The properties for the component\n * @returns A React element displaying the field item\n */\nexport function TableFieldItem(props: TableFieldItemProps) {\n return (\n <>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n }}\n >\n <Checkbox\n defaultChecked={props.visible}\n disabled={props.columnDefinition.primaryKey}\n onChange={e => props.onVisibleChange(e.target.checked)}\n >\n {props.columnDefinition.title}\n </Checkbox>\n <DragOutlined />\n </div>\n </>\n );\n}\n","import { createContext, ReactNode, useContext } from 'react';\nimport { ViewColumn } from './types';\nimport type { SizeType } from 'antd/es/config-provider/SizeContext';\n\nexport interface ViewerSharedValue {\n aggregateName: string;\n viewName: string;\n viewColumns: ViewColumn[];\n setViewColumns: (viewColumns: ViewColumn[]) => void;\n\n showFilterPanel: boolean;\n setShowFilterPanel: (showFilterPanel: boolean) => void;\n\n refreshData: () => void;\n\n tableSize: SizeType;\n setTableSize: (size: SizeType) => void;\n}\n\nexport type ViewerSharedValueContext = ViewerSharedValue;\n\nexport const ViewerSharedValueContext = createContext<\n ViewerSharedValueContext | undefined\n>(undefined);\n\nexport interface ViewerSharedValueOptions extends ViewerSharedValue {\n children: ReactNode;\n}\n\nexport function ViewerSharedValueProvider({\n children,\n ...options\n}: ViewerSharedValueOptions) {\n return (\n <ViewerSharedValueContext.Provider value={options}>\n {children}\n </ViewerSharedValueContext.Provider>\n );\n}\n\nexport function useViewerSharedValue(): ViewerSharedValueContext {\n const context = useContext(ViewerSharedValueContext);\n if (!context) {\n throw new Error('can not load ViewerSharedValueContext');\n }\n return context;\n}\n","import React from 'react';\nimport styles from './BarItem.module.css';\n\nexport interface BarItemProps {\n icon: React.ReactNode;\n active: boolean;\n}\n\nexport function BarItem(props: BarItemProps) {\n const { icon, active } = props;\n\n return (\n <div className={`${styles.item} ${active ? styles.active : ''}`}>\n {icon}\n </div>\n );\n}\n","import { TopBarItemProps } from './types';\nimport { useState } from 'react';\nimport { BarItem } from './BarItem';\nimport { FilterOutlined } from '@ant-design/icons';\nimport { useViewerSharedValue } from '../viewer';\n\nexport const FILTER_BAR_ITEM_TYPE: string = 'filter';\n\nexport interface FilterBarItemProps extends TopBarItemProps {}\n\nexport function FilterBarItem(props: FilterBarItemProps) {\n const { style, className } = props;\n\n const { showFilterPanel, setShowFilterPanel } = useViewerSharedValue();\n\n const [active, setActive] = useState(showFilterPanel || false);\n\n const handleClick = () => {\n setActive(!active);\n setShowFilterPanel(!active);\n };\n\n return (\n <div className={className} style={style} onClick={handleClick}>\n <BarItem icon={<FilterOutlined />} active={active || false} />\n </div>\n );\n}\n","import { TopBarItemProps } from './types';\nimport { BarItem } from './BarItem';\nimport { ReloadOutlined } from '@ant-design/icons';\nimport { useViewerSharedValue } from '../viewer';\n\nexport const REFRESH_DATA_BAR_ITEM_TYPE: string = 'refresh_data';\n\nexport interface RefreshDataBarItemProps\n extends TopBarItemProps {}\n\nexport function RefreshDataBarItem(props: RefreshDataBarItemProps) {\n const { style, className } = props;\n\n const { refreshData } = useViewerSharedValue();\n\n const handleClick = () => {\n refreshData();\n };\n\n return (\n <div className={className} style={style} onClick={handleClick}>\n <BarItem icon={<ReloadOutlined />} active={false} />\n </div>\n );\n}\n","import { TopBarItemProps } from './types';\nimport { BarItem } from './BarItem';\nimport { Dropdown, MenuProps } from 'antd';\nimport { ColumnHeightOutlined } from '@ant-design/icons';\nimport { useViewerSharedValue } from '../viewer';\nimport { SizeType } from 'antd/es/config-provider/SizeContext';\n\nexport const COLUMN_HEIGHT_BAR_ITEM_TYPE: string = 'column-height';\n\nexport interface ColumnHeightBarItemProps extends TopBarItemProps {}\n\nexport function ColumnHeightBarItem(props: ColumnHeightBarItemProps) {\n const { className } = props;\n\n const { tableSize, setTableSize } = useViewerSharedValue();\n\n const items: MenuProps['items'] = [\n {\n key: 'middle',\n label: '标准',\n },\n {\n key: 'small',\n label: '紧凑',\n },\n ];\n\n const handleSelect = ({ key }: { key: string }) => {\n setTableSize(key as SizeType);\n };\n\n return (\n <Dropdown\n className={className}\n menu={{\n items,\n selectable: true,\n defaultSelectedKeys: [tableSize || 'middle'],\n onSelect: handleSelect,\n }}\n trigger={['click']}\n >\n <div onClick={e => e.preventDefault()}>\n <BarItem icon={<ColumnHeightOutlined />} active={false} />\n </div>\n </Dropdown>\n );\n}\n","import { BarItem } from './BarItem';\nimport { TopBarItemProps } from './types';\nimport { LinkOutlined } from '@ant-design/icons';\nimport { message } from 'antd';\n\nexport const SHARE_LINK_BAR_ITEM_TYPE: string = 'share-link';\n\nexport interface ShareLinkBarItemProps\n extends TopBarItemProps {}\n\nexport function ShareLinkBarItem(props: ShareLinkBarItemProps) {\n const { className, style } = props;\n\n const [messageApi, contextHolder] = message.useMessage();\n\n const handleClick = async () => {\n const currentFullPath = window.location.href;\n try {\n await navigator.clipboard.writeText(currentFullPath);\n messageApi.success('链接复制成功');\n } catch (error) {\n console.error('Failed to copy: ', error);\n messageApi.error('链接复制失败');\n }\n };\n\n return (\n <>\n {contextHolder}\n <div className={className} style={style} onClick={handleClick}>\n <BarItem icon={<LinkOutlined />} active={false} />\n </div>\n </>\n );\n}\n","import { TypedComponentRegistry } from '../registry';\nimport { BarItemType } from './TypedBarItem';\nimport { TopBarItemProps } from './types';\nimport { FILTER_BAR_ITEM_TYPE, FilterBarItem } from './FilterBarItem';\nimport {\n REFRESH_DATA_BAR_ITEM_TYPE,\n RefreshDataBarItem,\n} from './RefreshDataBarItem';\nimport {\n COLUMN_HEIGHT_BAR_ITEM_TYPE,\n ColumnHeightBarItem,\n} from './ColumnHeightBarItem';\nimport { SHARE_LINK_BAR_ITEM_TYPE, ShareLinkBarItem } from './ShareLinkBarItem';\n\nexport const barItemRegistry = TypedComponentRegistry.create<\n BarItemType,\n TopBarItemProps\n>([\n [FILTER_BAR_ITEM_TYPE, FilterBarItem],\n [REFRESH_DATA_BAR_ITEM_TYPE, RefreshDataBarItem],\n [COLUMN_HEIGHT_BAR_ITEM_TYPE, ColumnHeightBarItem],\n [SHARE_LINK_BAR_ITEM_TYPE, ShareLinkBarItem],\n]);\n","import { TypeCapable } from '../registry';\nimport { barItemRegistry } from './barItemRegistry';\nimport React, { useMemo } from 'react';\nimport { TopBarItemProps } from './types';\n\nexport type BarItemType = string;\n\nexport interface TypedTopBarItemProps\n extends TopBarItemProps, TypeCapable<BarItemType> {}\n\nexport function TypedBarItem(props: TypedTopBarItemProps) {\n const TopBarItemComponent = useMemo(() => {\n return barItemRegistry.get(props.type);\n }, [props.type]);\n\n if (!TopBarItemComponent) {\n return undefined;\n }\n\n const topBarItemProps = {\n ...props,\n };\n\n return React.createElement(TopBarItemComponent, topBarItemProps);\n}\n\nTypedBarItem.displayName = 'TypedBarItem';\n","import { barItemRegistry } from './barItemRegistry';\nimport { BarItemType, TypedBarItem } from './TypedBarItem';\nimport { useViewerSharedValue } from '../viewer';\n\nimport { Space } from 'antd';\n\nexport interface TopBarProps {\n barItems: BarItemType[];\n}\n\nexport function TopBar(props: TopBarProps) {\n const { barItems } = props;\n\n const { aggregateName, viewName } = useViewerSharedValue();\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <div style={{ lineHeight: '32px' }}>\n {aggregateName} | {viewName}\n </div>\n <Space>\n {barItems.map((barItem, index) => {\n const BarItemComponent = barItemRegistry.get(barItem);\n if (!BarItemComponent) {\n return null;\n }\n return <TypedBarItem type={barItem} key={index} />;\n })}\n </Space>\n </div>\n );\n}\n","import { ViewTable, ViewTableActionColumn } from '../table';\nimport { Layout, Pagination, PaginationProps, Space } from 'antd';\nimport {\n EditableFilterPanel,\n EditableFilterPanelProps,\n FilterPanelRef,\n} from '../filter';\nimport { View, ViewColumn, ViewDefinition } from './';\nimport styles from './Viewer.module.css';\nimport { StyleCapable } from '../types';\nimport { ViewerSharedValueProvider } from './ViewerSharedValueContext';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { all, Condition, PagedList, PagedQuery } from '@ahoo-wang/fetcher-wow';\nimport { useDebouncedFetcherQuery } from '@ahoo-wang/fetcher-react';\nimport { FetcherError } from '@ahoo-wang/fetcher';\nimport {\n TopBar,\n COLUMN_HEIGHT_BAR_ITEM_TYPE,\n FILTER_BAR_ITEM_TYPE,\n REFRESH_DATA_BAR_ITEM_TYPE,\n} from '../topbar';\nimport { SizeType } from 'antd/es/config-provider/SizeContext';\n\nconst { Header, Footer, Sider, Content } = Layout;\n\nexport interface ViewerProps<RecordType> extends StyleCapable {\n name: string;\n view: View;\n definition: ViewDefinition;\n actionColumn: ViewTableActionColumn<RecordType>;\n\n paginationProps?: Omit<PaginationProps, 'total'>;\n}\n\nexport function Viewer<RecordType>(props: ViewerProps<RecordType>) {\n const { view, definition, actionColumn, paginationProps } = props;\n\n const { result, getQuery, setQuery, run } = useDebouncedFetcherQuery<\n PagedQuery,\n PagedList<RecordType>\n >({\n url: definition.dataSourceUrl,\n debounce: {\n delay: 300,\n leading: true,\n },\n onError: (error: FetcherError) => {\n console.log(error);\n },\n });\n\n const filterPanelRef = useRef<FilterPanelRef>(null);\n useEffect(() => {\n filterPanelRef?.current?.search();\n }, []);\n\n const [viewColumns, setViewColumns] = useState<ViewColumn[]>(view.columns);\n const updateViewColumns = (newColumns: ViewColumn[]) => {\n setViewColumns(newColumns);\n };\n\n const [showFilterPanel, setShowFilterPanel] = useState(true);\n const updateShowFilterPanel = (newShowFilterPanel: boolean) => {\n setShowFilterPanel(newShowFilterPanel);\n };\n\n const [viewTableSize, setViewTableSize] = useState<SizeType>(\n view.tableSize || 'middle',\n );\n const updateTableSize = (newTableSize: SizeType) => {\n setViewTableSize(newTableSize);\n };\n\n const editableFilterPanelProps: EditableFilterPanelProps = {\n filters: view.filters,\n availableFilters: definition.availableFilters,\n };\n\n const onSearch = useCallback(\n (condition: Condition) => {\n setQuery({\n ...getQuery(),\n condition: condition,\n pagination: { index: 1, size: definition.defaultPageSize },\n });\n run();\n },\n [getQuery, setQuery, run, definition],\n );\n\n const onPaginationChange = useCallback(\n (page: number, pageSize: number) => {\n setQuery({\n ...(getQuery() || { condition: all() }),\n pagination: { index: page, size: pageSize },\n });\n run();\n },\n [getQuery, setQuery, run],\n );\n\n const refreshData = useCallback(() => {\n run();\n }, [run]);\n\n return (\n <ViewerSharedValueProvider\n aggregateName={definition.name}\n viewName={view.name}\n viewColumns={viewColumns}\n setViewColumns={updateViewColumns}\n showFilterPanel={showFilterPanel}\n setShowFilterPanel={updateShowFilterPanel}\n refreshData={refreshData}\n tableSize={viewTableSize}\n setTableSize={updateTableSize}\n >\n <Layout className={props.className} style={props.style}>\n <Sider className={styles.personalViews}>\n Here is the personal view list.\n </Sider>\n <Layout className={styles.container}>\n <Content>\n <Space\n orientation=\"vertical\"\n style={{ display: 'flex' }}\n size=\"small\"\n >\n <Header className={styles.topBar}>\n <TopBar\n barItems={[\n FILTER_BAR_ITEM_TYPE,\n REFRESH_DATA_BAR_ITEM_TYPE,\n COLUMN_HEIGHT_BAR_ITEM_TYPE,\n ]}\n />\n </Header>\n {showFilterPanel && (\n <div className={styles.filterPanel}>\n <EditableFilterPanel\n ref={filterPanelRef}\n {...editableFilterPanelProps}\n onSearch={onSearch}\n />\n </div>\n )}\n <ViewTable\n dataSource={result?.list || []}\n viewDefinition={definition}\n actionColumn={actionColumn}\n attributes={{ pagination: false }}\n ></ViewTable>\n <Footer className={styles.pagination}>\n <span>已选择 n 条数据</span>\n <Pagination\n total={result?.total || 0}\n showTotal={total => `total ${total} items`}\n defaultPageSize={definition.defaultPageSize}\n defaultCurrent={1}\n pageSizeOptions={['10', '20', '50', '100', '200']}\n onChange={onPaginationChange}\n {...paginationProps}\n />\n </Footer>\n </Space>\n </Content>\n </Layout>\n </Layout>\n </ViewerSharedValueProvider>\n );\n}\n","import React, { useState, useCallback } from 'react';\nimport { TableFieldItem } from './TableFieldItem';\nimport styles from './TableSettingPanel.module.css';\nimport { Space } from 'antd';\nimport { ViewColumn, ViewDefinition } from '../../viewer';\nimport { useViewerSharedValue } from '../../viewer';\n\nexport interface TableSettingPanelProps {\n viewDefinition: ViewDefinition;\n className?: string;\n}\n\ninterface DragState {\n index: number;\n group: 'fixed' | 'visible';\n}\n\nexport function TableSettingPanel(props: TableSettingPanelProps) {\n const { viewDefinition } = props;\n const [dragState, setDragState] = useState<DragState | null>(null);\n\n const { viewColumns, setViewColumns } = useViewerSharedValue();\n\n const columns = viewColumns.map((col, index) => {\n return {\n ...col,\n index,\n };\n });\n\n const fixedColumns = columns.filter(col => col.fixed);\n const visibleColumns = columns.filter(col => col.visible && !col.fixed);\n const hiddenColumns = columns.filter(col => !col.visible);\n\n const handleVisibilityChange = (index: number, visible: boolean) => {\n const newColumns = columns.map((col, i) =>\n i === index ? { ...col, visible } : col,\n );\n setViewColumns(newColumns);\n };\n\n const handleDragStart = useCallback(\n (\n e: React.DragEvent<HTMLDivElement>,\n group: 'fixed' | 'visible',\n index: number,\n ) => {\n // Create custom drag image with desired styling\n const dragElement = e.currentTarget.cloneNode(true) as HTMLElement;\n dragElement.style.backgroundColor = '#F5F5F5';\n // dragElement.style.opacity = '0.9';\n dragElement.style.transform = 'scale(1.02)';\n dragElement.style.opacity = '1.0';\n dragElement.style.boxShadow = '0 2px 8px rgba(0, 0, 0, 0.15)';\n dragElement.style.position = 'absolute';\n dragElement.style.top = '-1000px'; // Hide off-screen\n dragElement.style.width = `${e.currentTarget.clientWidth}px`;\n dragElement.style.height = `${e.currentTarget.clientHeight}px`;\n\n document.body.appendChild(dragElement);\n e.dataTransfer.setDragImage(\n dragElement,\n e.nativeEvent.offsetX,\n e.nativeEvent.offsetY,\n );\n\n // Remove the temporary element after drag starts\n setTimeout(() => document.body.removeChild(dragElement), 0);\n\n e.dataTransfer.effectAllowed = 'move';\n setDragState({ index, group });\n },\n [setDragState],\n );\n\n const handleDragOver = useCallback((e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n }, []);\n\n const handleDragEnd = useCallback(() => {\n setDragState(null);\n }, [setDragState]);\n\n const handleDrop = (\n e: React.DragEvent<HTMLDivElement>,\n group: 'fixed' | 'visible',\n dragIndex: number,\n ) => {\n console.log('handleDrop', e.dataTransfer, group, dragIndex);\n if (!dragState) {\n return;\n }\n if (dragState.index === dragIndex) {\n return;\n }\n if (group === 'fixed' && fixedColumns.length >= 3) {\n return;\n }\n\n // const [draggedItem] = newColumns.splice(draggedIndex, 1);\n // newColumns.splice(dropIndex, 0, draggedItem);\n\n const targetIndex = group === 'fixed' ? dragIndex + 1 : dragIndex;\n const newColumns = [...columns];\n const [originItem] = newColumns.splice(dragState.index, 1);\n originItem.fixed = group === 'fixed';\n newColumns.splice(targetIndex, 0, originItem);\n newColumns.forEach((col, i) => (col.index = i));\n setViewColumns(newColumns);\n };\n\n const renderDraggableItem = (\n column: ViewColumn & { index: number },\n group: 'fixed' | 'visible',\n ) => {\n const columnDefinition = viewDefinition.columns.find(\n col => col.dataIndex === column.dataIndex,\n );\n if (!columnDefinition) {\n return <></>;\n }\n\n return (\n <div\n className={`${styles.item} ${dragState?.index === column.index ? styles.dragging : ''}`}\n key={columnDefinition.dataIndex}\n draggable={!columnDefinition.primaryKey}\n onDragStart={e => handleDragStart(e, group, column.index)}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n onDrop={e => handleDrop(e, group, column.index)}\n >\n <TableFieldItem\n columnDefinition={columnDefinition}\n fixed={column.fixed || false}\n visible={column.visible}\n onVisibleChange={visible =>\n handleVisibilityChange(column.index, visible)\n }\n />\n </div>\n );\n };\n\n const renderStaticItem = (column: ViewColumn & { index: number }) => {\n const columnDefinition = viewDefinition.columns.find(\n col => col.dataIndex === column.dataIndex,\n );\n if (!columnDefinition) {\n return <></>;\n }\n\n return (\n <div className={styles.item} key={columnDefinition.dataIndex}>\n <TableFieldItem\n columnDefinition={columnDefinition}\n fixed={column.fixed || false}\n visible={column.visible}\n onVisibleChange={visible =>\n handleVisibilityChange(column.index, visible)\n }\n />\n </div>\n );\n };\n\n return (\n <Space size={0} orientation=\"vertical\" style={{ display: 'flex' }}>\n <div className={styles.groupTitle}>已显示字段</div>\n {fixedColumns.map(column => renderDraggableItem(column, 'fixed'))}\n <div className={styles.tips}>\n 请将需要锁定的字段拖至上方(最多支持3列)\n </div>\n {visibleColumns.map(column => renderDraggableItem(column, 'visible'))}\n <div className={styles.groupTitle}>未显示字段</div>\n {hiddenColumns.map(column => renderStaticItem(column))}\n </Space>\n );\n}\n","import { Table, Popover } from 'antd';\nimport { ActionsCell, TextCell, typedCellRender } from './cell';\nimport { ViewTableProps } from './types';\nimport { SettingOutlined } from '@ant-design/icons';\nimport styles from './ViewTable.module.css';\nimport { TableSettingPanel } from './setting';\nimport { useViewerSharedValue } from '../viewer';\n\nimport type { TableColumnsType } from 'antd';\n\n/**\n * Renders a view table using Ant Design's Table component with typed cell rendering.\n *\n * This component provides a flexible table view that supports various cell types\n * through a typed cell rendering system. It automatically handles column configuration,\n * cell rendering based on type, and optional action columns with multiple actions.\n *\n * @template RecordType - The type of the records in the data source.\n * @param props - The props for the ViewTable component.\n * @param props.columns - Array of column definitions with cell type and attributes.\n * @param props.dataSource - Array of records to display in the table.\n * @param props.attributes - Optional attributes to pass to the underlying Table component.\n * @param props.actionColumn - Optional action column configuration with actions function.\n * @returns A React element representing the view table.\n *\n * @example\n * ```tsx\n * interface User {\n * id: number;\n * name: string;\n * email: string;\n * status: string;\n * }\n *\n * const columns: ViewColumnProps[] = [\n * {\n * title: 'Name',\n * dataIndex: 'name',\n * cell: { type: 'text' },\n * primaryKey: false\n * },\n * {\n * title: 'Email',\n * dataIndex: 'email',\n * cell: { type: 'link', attributes: { target: '_blank' } },\n * primaryKey: false\n * },\n * {\n * title: 'Status',\n * dataIndex: 'status',\n * cell: { type: 'badge' },\n * primaryKey: false\n * }\n * ];\n *\n * const dataSource: User[] = [\n * { id: 1, name: 'John Doe', email: 'john@example.com', status: 'active' }\n * ];\n *\n * <ViewTable\n * columns={columns}\n * dataSource={dataSource}\n * attributes={{ pagination: { pageSize: 10 } }}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With action column\n * const actionColumn: ViewTableActionColumn<User> = {\n * title: 'Actions',\n * dataIndex: 'actions',\n * cell: { type: 'actions' },\n * primaryKey: false,\n * actions: (record) => ({\n * primaryAction: {\n * data: { value: 'Edit', record, index: 0 },\n * attributes: { onClick: () => editUser(record.id) }\n * },\n * secondaryActions: [\n * {\n * data: { value: 'Delete', record, index: 0 },\n * attributes: { onClick: () => deleteUser(record.id), danger: true }\n * }\n * ]\n * })\n * };\n *\n * <ViewTable\n * columns={columns}\n * dataSource={dataSource}\n * actionColumn={actionColumn}\n * />\n * ```\n */\nexport function ViewTable<RecordType = any>(props: ViewTableProps<RecordType>) {\n const { viewDefinition, dataSource, actionColumn, attributes } = props;\n\n const { viewColumns, tableSize } = useViewerSharedValue();\n const tableColumns: TableColumnsType<RecordType> = viewColumns\n .filter(it => it.visible)\n .map(it => {\n const columnDefinition = viewDefinition.columns.find(\n col => col.dataIndex === it.dataIndex,\n );\n\n return columnDefinition\n ? {\n title: columnDefinition.title,\n dataIndex: it.dataIndex.split('.'),\n fixed: columnDefinition.primaryKey\n ? 'start'\n : it.fixed\n ? 'start'\n : '',\n render: (value, record, index) => {\n const cellRender = typedCellRender(\n columnDefinition.type,\n columnDefinition.attributes || {},\n );\n if (cellRender) {\n return cellRender(value, record, index);\n } else {\n return (\n <TextCell data={{ value: String(value), record, index }} />\n );\n }\n },\n ...columnDefinition.attributes,\n width: it.width,\n }\n : {\n title: '未知',\n dataIndex: it.dataIndex,\n render: (value, record, index) => {\n return (\n <TextCell\n data={{ value: String(value) || 'ERROR', record, index }}\n />\n );\n },\n };\n });\n if (actionColumn) {\n const dataIndex =\n actionColumn.dataIndex ||\n viewDefinition.columns.find(x => x.primaryKey)?.dataIndex ||\n 'id';\n\n tableColumns.push({\n title: () => {\n if (actionColumn.configurable) {\n const settingPanel = (\n <TableSettingPanel viewDefinition={viewDefinition} />\n );\n\n return (\n <div className={styles.configurableColumnHeader}>\n <span>{actionColumn.title}</span>\n <Popover\n content={settingPanel}\n title={actionColumn.configurePanelTitle || 'Setting'}\n placement=\"bottomRight\"\n trigger=\"click\"\n >\n <SettingOutlined />\n </Popover>\n </div>\n );\n }\n return actionColumn.title;\n },\n dataIndex: dataIndex,\n key: 'action',\n fixed: 'end',\n width: '200px',\n render: (_, record) => {\n const actionsData = props.actionColumn!.actions(record);\n const data = {\n value: actionsData,\n record: record,\n index: viewColumns.length + 1,\n };\n return <ActionsCell data={data} />;\n },\n });\n }\n\n return (\n <Table<RecordType>\n dataSource={dataSource}\n columns={tableColumns}\n {...attributes}\n scroll={{ x: 'max-content' }}\n size={tableSize}\n />\n );\n}\n"],"names":["OPERATOR_zh_CN","AND","OR","NOR","ID","IDS","AGGREGATE_ID","AGGREGATE_IDS","TENANT_ID","OWNER_ID","DELETED","ALL","EQ","NE","GT","LT","GTE","LTE","CONTAINS","IN","NOT_IN","BETWEEN","ALL_IN","STARTS_WITH","ENDS_WITH","ELEM_MATCH","NULL","NOT_NULL","TRUE","FALSE","EXISTS","TODAY","BEFORE_TODAY","TOMORROW","THIS_WEEK","NEXT_WEEK","LAST_WEEK","THIS_MONTH","LAST_MONTH","RECENT_DAYS","EARLIER_DAYS","RAW","UNDEFINED","ExtendedOperator","EMPTY_ACTIVE_FILTERS","AvailableFilterSelect","props","$","_c","filters","activeFilters","t0","ref","undefined","t1","map","_temp","sort","activeFilterFieldNames","selectedFilters","setSelectedFilters","useState","t2","getValue","flatMap","group","filter","includes","field","name","some","activeFilter_0","activeFilter","useImperativeHandle","t3","filter_0","checked","handleCheck","t4","t5","useEffect","t6","t7","group_0","jsxs","jsx","Typography","label","Flex","filter_1","Checkbox","e","target","activeFilter_1","AvailableFilterSelectModal","availableFilterSelectRef","useRef","onSave","current","handleOk","availableFilters","Modal","StringTagValueItemSerializer","serialize","value","deserialize","NumberTagValueItemSerializer","item","toString","parseFloat","DEFAULT_TOKEN_SEPARATORS","TagInput","onChange","restProps","tokenSeparators","allowClear","serializer","value_0","parsedValue","handleChange","serializedValue","Array","isArray","Select","displayName","convertToRangeValue","DEFAULT_PLACEHOLDER","NumberRange","isControlled","defaultValue","internalValue","setInternalValue","start","end","newValue","handleValueChange","newStart","handleStartChange","newEnd","handleEndChange","startMax","max","endMin","min","placeholder","precision","InputNumber","Symbol","for","Input","width","borderInlineStart","borderInlineEnd","pointerEvents","t8","t9","Space","DEFAULT_DEBOUNCE","delay","leading","trailing","RemoteSelect","options","search","selectProps","debounce","loading","result","run","useDebouncedExecutePromise","trim","handleSearch","Fullscreen","enterIcon","FullscreenOutlined","exitIcon","FullscreenExitOutlined","buttonProps","isFullscreen","toggle","useFullscreen","Button","isValidBetweenValue","length","isValidValue","currentTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","TrueValidateValue","defaultValidateValue","operator","EMPTY_VALUE_OPERATORS","has","Operator","defaultConditionValueParser","defaultValueConverter","beforeOperator","afterOperator","defaultFilterValueConverter","filterValue","useFilterState","setOperator","setValue","validate","valueParser","conditionValueParser","valueConverter","onOperatorChangeValueConverter","filterValueConverter","conditionOptions","currentOperator","currentValue","conditionValue","condition","resolveFilterValue","newOperator","afterValue","filterValue_0","setOperatorFn","filterValue_1","setValueFn","filterValue_2","resetFn","reset","AssemblyFilter","supportedOperators","Error","operatorLocale","locale","initialOperator","filterState","valueInput","valueInputRender","supportedOperator","minWidth","className","style","TEXT_FILTER","TextFilter","assemblyFilterProps","ID_FILTER","IdOnOperatorChangeValueConverter","trimmedValue","IdFilter","NUMBER_FILTER","NumberFilter","restValue_0","restValue","defaultInputNumber","v","SELECT_FILTER","SelectFilter","BOOL_FILTER","BoolFilter","t","module","this","n","s","a","o","c","f","h","d","l","y","M","__name","m","r","i","u","g","D","p","S","_","w","O","k","DATE_TIME_FILTER_NAME","TIME_FORMAT","DateTimeNumberValueOperators","Set","DateTimeDayjsValueOperators","DateTimeOnOperatorChangeValueConverter","TimestampConditionValueParser","valueOf","isDayjs","format","DateTimeFilter","rangResetProps","DatePicker","assemblyConditionFilterProps","TypedComponentRegistry","registry","Map","types","from","keys","entries","size","type","clear","register","component","set","unregister","delete","get","create","components","forEach","_TypedComponentRegistry","filterRegistry","FallbackFilter","Alert","DEFAULT_VALUE_STYLE","flex","TypedFilter","FilterComponent","valueProps","filterProps","React","createElement","RemovableTypedFilter","onRemove","rest","showRemove","setShowRemove","MinusOutlined","DEFAULT_ROW_PROPS","gutter","wrap","DEFAULT_COL_PROPS","xxl","xl","lg","md","sm","xs","DEFAULT_ACTIONS_COL_PROPS","FilterPanel","row","col","actionsCol","onSearch","actions","resetButton","searchButton","filterRefs","useRefs","conditions","values","Boolean","finalCondition","and","filterRef","handleReset","showResetButton","resetButtonProps","Col","key","ClearOutlined","children","SearchOutlined","t10","t11","t12","t13","t14","Fragment","Row","ref_0","EditableFilterPanel","setActiveFilters","modalOpen","setModalOpen","generator","useRequestId","selectedAvailableFilters","newFilters","available","generate","handleAddFilter","newFilters_0","removeFilter","editableFilters","ACTION_CELL_TYPE","isActionCellProps","obj","data","record","index","attributes","ActionCell","onClick","padding","ACTIONS_CELL_TYPE","renderActions","secondaryButtons","secondaryActions","action","primaryAction","Dropdown","items","moreActionTitle","DownOutlined","ActionsCell","parseDayjs","dayjs","isNullOrUndefined","isValidImageSrc","toLowerCase","startsWith","test","AVATAR_CELL_TYPE","AvatarCell","Avatar","Text","DATETIME_CELL_TYPE","DEFAULT_DATE_TIME_FORMAT","DateTimeCell","T0","bb0","textProps","date","isValid","extend","calendar","CALENDAR_CELL_TYPE","DEFAULT_CALENDAR_FORMATS","sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse","CalendarTimeCell","formats","TEXT_CELL_TYPE","TextCell","TAG_CELL_TYPE","TagCell","Tag","TAGS_CELL_TYPE","TagsCell","space","tag","tagAttributes","IMAGE_CELL_TYPE","ImageCell","Empty","Image","IMAGE_GROUP_CELL_TYPE","ImageGroupCell","hasMultipleImages","mainImageElement","Badge","Link","LINK_CELL_TYPE","EMAIL_REGEX","EMAIL_PREFIX","LinkCell","isEmail","href","linkProps","DEFAULT_CURRENCY_FORMAT_OPTIONS","currency","currencyDisplay","decimals","useGrouping","fallback","NUMBER_FORMATE_STYLE","formatCurrency","amount","numericAmount","parseAmount","isNaN","isFinite","NumberFormat","minimumFractionDigits","maximumFractionDigits","NaN","cleanedAmount","replace","CURRENCY_CELL_TYPE","CurrencyCell","formattedValue","cellRegistry","typedCellRender","CellComponent","TableFieldItem","display","justifyContent","onVisibleChange","columnDefinition","primaryKey","title","visible","DragOutlined","ViewerSharedValueContext","createContext","ViewerSharedValueProvider","useViewerSharedValue","context","useContext","BarItem","icon","active","styles","FILTER_BAR_ITEM_TYPE","FilterBarItem","showFilterPanel","setShowFilterPanel","setActive","handleClick","FilterOutlined","REFRESH_DATA_BAR_ITEM_TYPE","RefreshDataBarItem","refreshData","ReloadOutlined","COLUMN_HEIGHT_BAR_ITEM_TYPE","ColumnHeightBarItem","tableSize","setTableSize","handleSelect","selectable","defaultSelectedKeys","onSelect","ColumnHeightOutlined","preventDefault","SHARE_LINK_BAR_ITEM_TYPE","ShareLinkBarItem","messageApi","contextHolder","message","useMessage","currentFullPath","window","location","navigator","clipboard","writeText","success","console","error","LinkOutlined","barItemRegistry","TypedBarItem","TopBarItemComponent","topBarItemProps","TopBar","barItems","aggregateName","viewName","alignItems","lineHeight","barItem","Header","Footer","Sider","Content","Layout","Viewer","view","definition","actionColumn","paginationProps","dataSourceUrl","url","onError","getQuery","setQuery","useDebouncedFetcherQuery","filterPanelRef","viewColumns","setViewColumns","columns","newColumns","updateViewColumns","newShowFilterPanel","updateShowFilterPanel","viewTableSize","setViewTableSize","newTableSize","updateTableSize","editableFilterPanelProps","defaultPageSize","pagination","page","pageSize","all","onPaginationChange","personalViews","topBar","filterPanel","t15","list","t16","t17","ViewTable","t18","t19","total","t20","t21","Pagination","_temp2","t22","container","t23","t24","log","TableSettingPanel","viewDefinition","dragState","setDragState","fixedColumns","visibleColumns","_temp3","hiddenColumns","_temp4","handleVisibilityChange","index_0","col_3","index_1","dragElement","currentTarget","cloneNode","backgroundColor","transform","opacity","boxShadow","position","top","clientWidth","height","clientHeight","document","body","appendChild","dataTransfer","setDragImage","nativeEvent","offsetX","offsetY","setTimeout","removeChild","effectAllowed","handleDragStart","handleDragOver","_temp5","handleDragEnd","handleDrop","e_1","dragIndex","targetIndex","newColumns_0","originItem","splice","fixed","_temp6","renderDraggableItem","column","group_1","find","dataIndex","dragging","e_2","e_3","visible_0","renderStaticItem","column_0","columnDefinition_0","visible_1","groupTitle","tips","column_1","column_2","column_3","col_4","i_0","e_0","dropEffect","col_2","col_1","col_0","dataSource","tableColumns","it_0","it","split","render","cellRender","String","configurable","configurePanelTitle","settingPanel","configurableColumnHeader","Popover","SettingOutlined","record_1","push","x","Table","record_0"],"mappings":"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","x_google_ignoreList":[16,29]}
|