@plasmicpkgs/plasmic-rich-components 1.0.220 → 1.0.221
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/.tsbuildinfo +1 -1
- package/dist/field-mappings.d.ts +2 -2
- package/dist/index.js +58 -47
- package/dist/index.js.map +1 -1
- package/dist/plasmic-rich-components.esm.js +58 -47
- package/dist/plasmic-rich-components.esm.js.map +1 -1
- package/dist/rich-table/index.d.ts +4 -4
- package/package.json +4 -4
- package/skinny/{common-prop-types-988c65db.esm.js → common-prop-types-82f3a4ed.esm.js} +2 -2
- package/skinny/{common-prop-types-988c65db.esm.js.map → common-prop-types-82f3a4ed.esm.js.map} +1 -1
- package/skinny/{common-prop-types-193ce561.cjs.js → common-prop-types-94b20130.cjs.js} +2 -2
- package/skinny/{common-prop-types-193ce561.cjs.js.map → common-prop-types-94b20130.cjs.js.map} +1 -1
- package/skinny/field-mappings.d.ts +2 -2
- package/skinny/{formatting-0acc57f5.esm.js → formatting-6f22c9d6.esm.js} +15 -15
- package/skinny/formatting-6f22c9d6.esm.js.map +1 -0
- package/skinny/{formatting-6dc71cdd.cjs.js → formatting-939d0aa3.cjs.js} +15 -15
- package/skinny/formatting-939d0aa3.cjs.js.map +1 -0
- package/skinny/rich-calendar/index.cjs.js +29 -20
- package/skinny/rich-calendar/index.cjs.js.map +1 -1
- package/skinny/rich-calendar/index.esm.js +29 -20
- package/skinny/rich-calendar/index.esm.js.map +1 -1
- package/skinny/rich-details/index.cjs.js +1 -1
- package/skinny/rich-details/index.esm.js +1 -1
- package/skinny/rich-layout/index.cjs.js +7 -4
- package/skinny/rich-layout/index.cjs.js.map +1 -1
- package/skinny/rich-layout/index.esm.js +7 -4
- package/skinny/rich-layout/index.esm.js.map +1 -1
- package/skinny/rich-list/index.cjs.js +8 -9
- package/skinny/rich-list/index.cjs.js.map +1 -1
- package/skinny/rich-list/index.esm.js +9 -10
- package/skinny/rich-list/index.esm.js.map +1 -1
- package/skinny/rich-table/index.cjs.js +6 -6
- package/skinny/rich-table/index.cjs.js.map +1 -1
- package/skinny/rich-table/index.d.ts +4 -4
- package/skinny/rich-table/index.esm.js +6 -6
- package/skinny/rich-table/index.esm.js.map +1 -1
- package/skinny/formatting-0acc57f5.esm.js.map +0 -1
- package/skinny/formatting-6dc71cdd.cjs.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../src/rich-table/RichTable.tsx","../../src/rich-table/index.tsx"],"sourcesContent":["import { EllipsisOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport { ActionType, ProColumns, ProTable } from \"@ant-design/pro-components\";\nimport {\n deriveFieldConfigs,\n NormalizedData,\n useNormalizedData,\n} from \"@plasmicapp/data-sources\";\nimport { Button, Dropdown } from \"antd\";\nimport type { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport type { GetRowKey } from \"antd/es/table/interface\";\nimport { createObjectCsvStringifier } from \"csv-writer-browser\";\nimport fastStringify from \"fast-stringify\";\nimport React, { ReactNode, useMemo, useRef } from \"react\";\nimport { useIsClient } from \"../common\";\nimport {\n BaseColumnConfig,\n deriveValueType,\n FieldfulProps,\n RowFunc,\n} from \"../field-mappings\";\nimport {\n deriveKeyOfRow,\n deriveRowKey,\n renderActions,\n RowAction,\n tagDataArray,\n useSortedFilteredData,\n} from \"../field-react-utils\";\nimport { renderValue } from \"../formatting\";\nimport { ErrorBoundary, isInteractable, mkShortId } from \"../utils\";\n\n// Avoid csv-stringify, it doesn't directly work in browser without Buffer polyfill.\n\nexport interface Action {\n type: \"edit\" | \"view\" | \"delete\" | \"custom\";\n label?: string;\n moreMenu?: boolean;\n}\n\nexport interface RichTableProps extends FieldfulProps<TableColumnConfig> {\n defaultSize?: SizeType;\n pagination?: boolean;\n\n canSelectRows?: \"none\" | \"click\" | \"single\" | \"multiple\";\n\n selectedRowKey?: string;\n selectedRowKeys?: string[];\n onRowSelectionChanged?: (rowKeys: string[], rows: any[]) => void;\n onRowClick?: (rowKey: string, row: any, event: React.MouseEvent) => void;\n\n rowKey?: string | GetRowKey<any>;\n rowActions?: RowAction[];\n\n title?: ReactNode;\n\n addHref?: string;\n\n actions?: Action[];\n customActionChildren?: ReactNode;\n\n pageSize?: number;\n\n hideSearch?: boolean;\n hideDensity?: boolean;\n hideColumnPicker?: boolean;\n hideExports?: boolean;\n hideSelectionBar?: boolean;\n\n scopeClassName?: string;\n themeResetClassName?: string;\n}\n\n// In this code, ColumnConfigs are Plasmic, while ColumnDefinitions are Ant.\nexport function RichTable(props: RichTableProps) {\n const {\n className,\n data: rawData = {\n data: [],\n schema: {\n id: \"inferred\",\n fields: [\n {\n id: \"id\",\n type: \"string\",\n readOnly: false,\n },\n ],\n },\n },\n // children,\n pagination = true,\n defaultSize,\n title,\n addHref,\n pageSize = 10,\n hideSearch,\n hideDensity = true,\n hideColumnPicker,\n hideExports,\n hideSelectionBar = true,\n rowKey,\n scopeClassName,\n } = props;\n const isClient = useIsClient();\n\n const normalizedData = useNormalizedData(isClient ? rawData : []);\n\n const data = useMemo(() => {\n if (!normalizedData?.data) {\n return normalizedData;\n }\n return { ...normalizedData, data: tagDataArray(normalizedData.data) };\n }, [normalizedData]);\n\n const { columnDefinitions, normalized } = useColumnDefinitions(data, props);\n\n const actionRef = useRef<ActionType>();\n\n const { finalData, search, setSearch, setSortState } = useSortedFilteredData(\n data,\n normalized\n );\n\n const rowSelectionProps = useRowSelectionProps(data, props);\n\n if (!isClient) {\n return null;\n }\n\n return (\n <div className={`${className} ${scopeClassName ?? \"\"}`}>\n <ErrorBoundary canvasEnvId={(props as any)[\"data-plasmic-canvas-envs\"]}>\n <ProTable\n ErrorBoundary={false}\n rowClassName={\n props.onRowClick || props.canSelectRows === \"click\"\n ? \"plasmic-table-row-clickable\"\n : undefined\n }\n actionRef={actionRef}\n columns={columnDefinitions}\n onChange={(_pagination, _filters, sorter, _extra) => {\n setSortState({ sorter: sorter as any });\n }}\n style={{\n width: \"100%\",\n }}\n cardProps={{\n ghost: true,\n }}\n {...rowSelectionProps}\n dataSource={finalData}\n rowKey={deriveRowKey(data, rowKey)}\n defaultSize={defaultSize}\n editable={{ type: \"multiple\" }}\n search={false}\n options={{\n setting: hideColumnPicker\n ? false\n : {\n listsHeight: 400,\n },\n reload: false,\n density: !hideDensity,\n }}\n pagination={\n pagination\n ? {\n pageSize,\n onChange: (page) => console.log(page),\n showSizeChanger: false,\n }\n : false\n }\n dateFormatter=\"string\"\n headerTitle={title}\n toolbar={{\n search: !hideSearch\n ? {\n value: search,\n onChange: (e) => setSearch(e.target.value),\n onSearch: () => {\n return;\n },\n placeholder: \"Search\",\n }\n : undefined,\n }}\n toolBarRender={() =>\n [\n addHref && (\n <Button\n key=\"button\"\n icon={<PlusOutlined />}\n type=\"primary\"\n href={addHref}\n >\n Add\n </Button>\n ),\n !hideExports && <ExportMenu data={data} />,\n ].filter((x) => !!x)\n }\n />\n </ErrorBoundary>\n {/*Always hide the weird pin left/right buttons for now, which also have render layout issues*/}\n <style\n dangerouslySetInnerHTML={{\n __html: `\n :where(.css-dev-only-do-not-override-1p704s4).ant-pro-table-column-setting-overlay .ant-tree-treenode:hover .ant-pro-table-column-setting-list-item-option {\n display: none;\n }\n .plasmic-table-row-clickable {\n cursor: pointer;\n }\n .ant-pro-table-list-toolbar-right {\n flex-wrap: initial;\n flex-shrink: 0;\n }\n .ant-pro-table, .ant-pro-table > .ant-pro-card, .ant-pro-table .ant-table-wrapper, .ant-pro-table .ant-spin-nested-loading, .ant-pro-table .ant-table-container {\n height: 100%;\n }\n .ant-pro-table .ant-spin-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n .ant-pro-table .ant-table {\n flex-grow: 1;\n min-height: 0;\n }\n .ant-pro-table .ant-pagination {\n flex-shrink: 0;\n }\n .ant-pro-table .ant-table-content {\n overflow: auto !important;\n height: 100%;\n }\n .ant-pro-table > .ant-pro-card > .ant-pro-card-body {\n display: flex;\n flex-direction: column;\n }\n .ant-pro-table .ant-table-wrapper {\n flex-grow: 1;\n min-height: 0;\n }\n .ant-pro-table .ant-table-thead > tr > th, .ant-pro-table .ant-table-thead > tr > td.ant-table-selection-column {\n position: sticky;\n top: 0;\n z-index: 2;\n }\n .ant-pro-table .ant-table-thead > tr > th.ant-table-cell-fix-left, .ant-pro-table .ant-table-thead > tr > th.ant-table-cell-fix-right {\n z-index: 3;\n }\n .ant-pro-table .ant-table-tbody > tr > td {\n z-index: 0;\n }\n .ant-pro-table .ant-table-tbody > tr > td.ant-table-cell-fix-left,.ant-pro-table .ant-table-tbody > tr > td.ant-table-cell-fix-right {\n z-index: 1;\n }\n ${\n scopeClassName && hideSelectionBar\n ? `\n .${scopeClassName} .ant-pro-table-alert {\n display: none;\n }\n `\n : \"\"\n }\n `,\n }}\n />\n </div>\n );\n}\n\ninterface StyleConfig {\n styles: Record<string, any>;\n align: \"left\" | \"center\" | \"right\";\n freeze: \"off\" | \"left\" | \"right\";\n}\n\nconst defaultColumnConfig = (): TableColumnConfig =>\n ({\n key: mkShortId(),\n isEditableExpr: () => false,\n disableSorting: false,\n sortByExpr: undefined,\n isHidden: false,\n formatting: {\n styles: {},\n align: \"left\",\n freeze: \"off\",\n },\n dataType: \"auto\" as const,\n } as const);\n\nexport type TableColumnConfig = BaseColumnConfig & {\n isEditableExpr: RowFunc<boolean>;\n disableSorting: boolean;\n sortByExpr?: RowFunc<any>;\n formatting: StyleConfig;\n};\n\nfunction useColumnDefinitions(\n data: NormalizedData | undefined,\n props: React.ComponentProps<typeof RichTable>\n) {\n const { fields, setControlContextData, rowActions } = props;\n return React.useMemo(() => {\n const schema = data?.schema;\n if (!data || !schema) {\n return { normalized: [], columnDefinitions: [] };\n }\n const { mergedFields, minimalFullLengthFields } =\n deriveFieldConfigs<TableColumnConfig>(fields ?? [], schema, (field) => ({\n ...defaultColumnConfig(),\n ...(field && {\n key: field.id,\n fieldId: field.id,\n title: field.label || field.id,\n expr: (currentItem) => currentItem[field.id],\n }),\n }));\n setControlContextData?.({ ...data, mergedFields, minimalFullLengthFields });\n const normalized = mergedFields;\n const columnDefinitions: ProColumns<any, any>[] = normalized\n .filter((cconfig) => !cconfig.isHidden)\n .map((cconfig, _columnIndex, _columnsArray) => {\n const columnDefinition: ProColumns<any, any> = {\n dataIndex: cconfig.fieldId,\n title: cconfig.title,\n // dataIndex: cconfig,\n key: cconfig.key,\n valueType: deriveValueType(cconfig),\n\n // To come later\n readonly: false,\n sorter: !cconfig.disableSorting,\n copyable: false,\n ellipsis: false,\n tip: undefined,\n formItemProps: {\n rules: [],\n },\n disable: false,\n valueEnum: undefined,\n search: undefined,\n hideInSearch: false,\n renderFormItem: (_, { defaultRender }) => {\n return defaultRender(_);\n },\n\n render: (_value: any, record: any, _rowIndex: any) => {\n return renderValue(record, cconfig);\n },\n };\n\n return columnDefinition;\n });\n const rowKey = props.rowKey;\n if (rowActions && rowActions.length > 0) {\n columnDefinitions.push({\n title: \"Actions\",\n valueType: \"option\",\n key: \"__plasmicActions\",\n fixed: \"right\",\n className: props.themeResetClassName,\n render: (_text, row) => [\n ...renderActions(rowActions, row, data, rowKey),\n ],\n });\n }\n return { normalized, columnDefinitions };\n }, [fields, data, setControlContextData, rowActions]);\n}\n\nfunction useRowSelectionProps(\n data: NormalizedData | undefined,\n props: React.ComponentProps<typeof RichTable>\n): Partial<React.ComponentProps<typeof ProTable>> {\n const {\n canSelectRows,\n selectedRowKey,\n selectedRowKeys,\n onRowSelectionChanged,\n rowKey,\n onRowClick,\n } = props;\n const deriveSelectedRowKeys = () => {\n if (\n !canSelectRows ||\n canSelectRows === \"none\" ||\n !deriveRowKey(data, rowKey)\n ) {\n return [];\n }\n\n if (canSelectRows === \"multiple\") {\n return selectedRowKeys ?? [];\n } else if (selectedRowKey) {\n return [selectedRowKey];\n } else {\n return [];\n }\n };\n\n const rowSelection: React.ComponentProps<typeof ProTable>[\"rowSelection\"] =\n canSelectRows && canSelectRows !== \"none\"\n ? {\n type:\n canSelectRows === \"single\" || canSelectRows === \"click\"\n ? \"radio\"\n : \"checkbox\",\n selectedRowKeys: deriveSelectedRowKeys(),\n onChange: (rowKeys, rows) => {\n onRowSelectionChanged?.(rowKeys as string[], rows);\n },\n alwaysShowAlert: true,\n ...(canSelectRows === \"click\" && {\n renderCell: () => null,\n columnWidth: 0,\n columnTitle: null,\n hideSelectAll: true,\n }),\n }\n : undefined;\n return {\n rowSelection,\n onRow: (row) => ({\n onClick: (event) => {\n const key = deriveKeyOfRow(row, deriveRowKey(data, rowKey));\n if (key != null && !isInteractable(event.target as HTMLElement)) {\n if (canSelectRows === \"click\") {\n onRowSelectionChanged?.([key], [row]);\n }\n onRowClick?.(key, row, event);\n }\n },\n }),\n };\n}\n\nfunction ExportMenu(props: { data: NormalizedData | undefined }) {\n const { data } = props;\n\n return (\n <Dropdown\n key=\"menu\"\n menu={{\n items: [\n {\n label: \"Download as CSV\",\n key: \"csv\",\n onClick: async () => {\n const writer = createObjectCsvStringifier({\n header:\n data?.schema?.fields.map((f) => ({\n id: f.id,\n title: f.id,\n })) ?? [],\n });\n const dataStr =\n writer.getHeaderString() +\n writer.stringifyRecords(data?.data as any);\n\n // const dataStr = stringify(data?.data as any, {\n // columns:\n // tryGetSchema(data)?.fields.map((f) => f.id) ?? [],\n // header: true,\n // });\n\n const filename = \"data.csv\";\n\n // Adapted from https://stackoverflow.com/a/68771795\n const blob = new Blob([dataStr], {\n type: \"text/csv;charset=utf-8;\",\n });\n if ((navigator as any).msSaveBlob) {\n // In case of IE 10+\n (navigator as any).msSaveBlob(blob, filename);\n } else {\n const link = document.createElement(\"a\");\n if (link.download !== undefined) {\n // Browsers that support HTML5 download attribute\n const url = URL.createObjectURL(blob);\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", filename);\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n },\n },\n {\n label: \"Download as JSON\",\n key: \"json\",\n onClick: () => {\n const dataStr = fastStringify(data?.data);\n const dataUri = `data:application/json;charset=utf-8, ${encodeURIComponent(\n dataStr\n )}`;\n\n const exportFileDefaultName = \"data.json\";\n\n const linkElement = document.createElement(\"a\");\n linkElement.setAttribute(\"href\", dataUri);\n linkElement.setAttribute(\"download\", exportFileDefaultName);\n linkElement.click();\n },\n },\n ],\n }}\n >\n <Button>\n <EllipsisOutlined />\n </Button>\n </Dropdown>\n );\n}\n","import { ComponentMeta } from \"@plasmicapp/host/registerComponent\";\nimport {\n commonProps,\n dataProp,\n onRowClickProp,\n rowActionsProp,\n} from \"../common-prop-types\";\nimport { buildFieldsPropType } from \"../field-mappings\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichTable, RichTableProps, TableColumnConfig } from \"./RichTable\";\n\nexport * from \"./RichTable\";\nexport default RichTable;\n\nexport const tableHelpers = {\n states: {\n selectedRow: {\n onChangeArgsToValue: (rowKeys: string[], rows: any[]) => {\n return rows[0];\n },\n },\n selectedRows: {\n onChangeArgsToValue: (rowKeys: string[], rows: any[]) => {\n return rows;\n },\n },\n selectedRowKey: {\n onChangeArgsToValue: (rowKeys: string[], rows: any[]) => {\n return rowKeys[0];\n },\n },\n selectedRowKeys: {\n onChangeArgsToValue: (rowKeys: string[], rows: any[]) => {\n return rowKeys;\n },\n },\n },\n};\n\nconst dataTableMeta: ComponentMeta<RichTableProps> = {\n name: \"hostless-rich-table\",\n displayName: \"Table\",\n defaultStyles: {\n width: \"stretch\",\n padding: \"16px\",\n maxHeight: \"100%\",\n },\n props: {\n data: dataProp(),\n\n fields: buildFieldsPropType<TableColumnConfig, RichTableProps>({\n fieldTypes: {\n disableSorting: {\n type: \"boolean\",\n displayName: \"Disable sorting?\",\n defaultValueHint: false,\n },\n },\n }),\n\n canSelectRows: {\n type: \"choice\",\n displayName: \"Select rows?\",\n options: [\n { label: \"No\", value: \"none\" },\n { label: \"By clicking a row\", value: \"click\" },\n { label: \"Using radio buttons\", value: \"single\" },\n { label: \"Using checkboxes\", value: \"multiple\" },\n ],\n defaultValueHint: \"none\",\n description:\n \"Lets user select table rows by clicking on a row, or using radio buttons, or checkboxes if multiple rows can be selected together. If you have interactive elements in your row and you don't want clicking on them to select the row, you may use radio buttons instead.\",\n },\n\n rowKey: {\n type: \"string\",\n displayName: \"Row key\",\n helpText:\n \"Column key to use as row key; can also be a function that takes in a row and returns a key value\",\n hidden: (ps) => !ps.canSelectRows || ps.canSelectRows === \"none\",\n },\n\n selectedRowKey: {\n type: \"string\",\n displayName: \"Selected Row Key\",\n hidden: (ps) =>\n ps.canSelectRows !== \"single\" && ps.canSelectRows !== \"click\",\n advanced: true,\n },\n selectedRowKeys: {\n type: \"array\",\n displayName: \"Selected Row Keys\",\n hidden: (ps) => ps.canSelectRows !== \"multiple\",\n advanced: true,\n },\n onRowSelectionChanged: {\n type: \"eventHandler\",\n displayName: \"On row selection changed\",\n argTypes: [\n { name: \"rowKeys\", type: \"object\" },\n { name: \"rows\", type: \"object\" },\n ],\n },\n\n onRowClick: onRowClickProp(),\n\n rowActions: rowActionsProp(),\n\n defaultSize: {\n displayName: \"Density\",\n type: \"choice\",\n options: [\n {\n value: \"large\",\n label: \"Larger\",\n },\n {\n value: \"middle\",\n label: \"Medium\",\n },\n {\n value: \"small\",\n label: \"Compact\",\n },\n ],\n defaultValueHint: \"large\",\n advanced: true,\n },\n\n ...commonProps(),\n\n hideExports: {\n type: \"boolean\",\n description: \"Hides the button for exporting table data to CSV\",\n advanced: true,\n },\n\n hideDensity: {\n type: \"boolean\",\n description: \"Hides the control for changing the density of the table\",\n advanced: true,\n defaultValueHint: true,\n },\n\n hideColumnPicker: {\n type: \"boolean\",\n description: \"Hides the control for reordering and pinning columns\",\n advanced: true,\n },\n\n hideSelectionBar: {\n type: \"boolean\",\n description: \"Hides the toolbar that allows the user to clear selection\",\n advanced: true,\n hidden: (ps) => !ps.canSelectRows || ps.canSelectRows === \"none\",\n defaultValueHint: true,\n },\n scopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"instance\",\n } as any,\n themeResetClassName: {\n type: \"themeResetClass\",\n targetAllTags: true,\n },\n },\n states: {\n selectedRowKey: {\n type: \"writable\",\n valueProp: \"selectedRowKey\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"text\",\n hidden: (ps) =>\n !(ps.canSelectRows === \"click\" || ps.canSelectRows === \"single\"),\n ...tableHelpers.states.selectedRowKey,\n },\n selectedRowKeys: {\n type: \"writable\",\n valueProp: \"selectedRowKeys\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"array\",\n hidden: (ps) => !(ps.canSelectRows === \"multiple\"),\n ...tableHelpers.states.selectedRowKeys,\n },\n selectedRow: {\n type: \"readonly\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"object\",\n hidden: (ps) =>\n !(ps.canSelectRows === \"click\" || ps.canSelectRows === \"single\"),\n ...tableHelpers.states.selectedRow,\n },\n selectedRows: {\n type: \"readonly\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"array\",\n hidden: (ps) => !(ps.canSelectRows === \"multiple\"),\n ...tableHelpers.states.selectedRows,\n },\n },\n componentHelpers: {\n helpers: tableHelpers,\n importName: \"tableHelpers\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-table\",\n },\n importName: \"RichTable\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-table\",\n};\n\nexport function registerRichTable(loader?: Registerable) {\n registerComponentHelper(loader, RichTable, dataTableMeta);\n}\n"],"names":["useIsClient","useNormalizedData","useMemo","__spreadProps","tagDataArray","useRef","useSortedFilteredData","React","ErrorBoundary","ProTable","__spreadValues","deriveRowKey","Button","PlusOutlined","mkShortId","deriveFieldConfigs","deriveValueType","renderValue","renderActions","deriveKeyOfRow","isInteractable","Dropdown","createObjectCsvStringifier","fastStringify","EllipsisOutlined","dataProp","buildFieldsPropType","onRowClickProp","rowActionsProp","commonProps","registerComponentHelper"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../src/rich-table/RichTable.tsx","../../src/rich-table/index.tsx"],"sourcesContent":["import { EllipsisOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport { ActionType, ProColumns, ProTable } from \"@ant-design/pro-components\";\nimport {\n deriveFieldConfigs,\n NormalizedData,\n useNormalizedData,\n} from \"@plasmicapp/data-sources\";\nimport { Button, Dropdown } from \"antd\";\nimport type { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport type { GetRowKey } from \"antd/es/table/interface\";\nimport { createObjectCsvStringifier } from \"csv-writer-browser\";\nimport fastStringify from \"fast-stringify\";\nimport React, { ReactNode, useMemo, useRef } from \"react\";\nimport { useIsClient } from \"../common\";\nimport {\n BaseColumnConfig,\n deriveValueType,\n FieldfulProps,\n RowFunc,\n} from \"../field-mappings\";\nimport {\n deriveKeyOfRow,\n deriveRowKey,\n renderActions,\n RowAction,\n tagDataArray,\n useSortedFilteredData,\n} from \"../field-react-utils\";\nimport { renderValue } from \"../formatting\";\nimport { ErrorBoundary, isInteractable, mkShortId } from \"../utils\";\n\n// Avoid csv-stringify, it doesn't directly work in browser without Buffer polyfill.\n\nexport interface Action {\n type: \"edit\" | \"view\" | \"delete\" | \"custom\";\n label?: string;\n moreMenu?: boolean;\n}\n\nexport interface RichTableProps extends FieldfulProps<TableColumnConfig> {\n defaultSize?: SizeType;\n pagination?: boolean;\n\n canSelectRows?: \"none\" | \"click\" | \"single\" | \"multiple\";\n\n selectedRowKey?: string;\n selectedRowKeys?: string[];\n onRowSelectionChanged?: (rowKeys: string[], rows: any[]) => void;\n onRowClick?: (rowKey: string, row: any, event: React.MouseEvent) => void;\n\n rowKey?: string | GetRowKey<any>;\n rowActions?: RowAction[];\n\n title?: ReactNode;\n\n addHref?: string;\n\n actions?: Action[];\n customActionChildren?: ReactNode;\n\n pageSize?: number;\n\n hideSearch?: boolean;\n hideDensity?: boolean;\n hideColumnPicker?: boolean;\n hideExports?: boolean;\n hideSelectionBar?: boolean;\n\n scopeClassName?: string;\n themeResetClassName?: string;\n}\n\n// In this code, ColumnConfigs are Plasmic, while ColumnDefinitions are Ant.\nexport function RichTable(props: RichTableProps) {\n const {\n className,\n data: rawData = {\n data: [],\n schema: {\n id: \"inferred\",\n fields: [\n {\n id: \"id\",\n type: \"string\",\n readOnly: false,\n },\n ],\n },\n },\n // children,\n pagination = true,\n defaultSize,\n title,\n addHref,\n pageSize = 10,\n hideSearch,\n hideDensity = true,\n hideColumnPicker,\n hideExports,\n hideSelectionBar = true,\n rowKey,\n scopeClassName,\n } = props;\n const isClient = useIsClient();\n\n const normalizedData = useNormalizedData(isClient ? rawData : []);\n\n const data = useMemo(() => {\n if (!normalizedData?.data) {\n return normalizedData;\n }\n return { ...normalizedData, data: tagDataArray(normalizedData.data) };\n }, [normalizedData]);\n\n const { columnDefinitions, normalized } = useColumnDefinitions(data, props);\n\n const actionRef = useRef<ActionType>();\n\n const { finalData, search, setSearch, setSortState } = useSortedFilteredData(\n data,\n normalized\n );\n\n const rowSelectionProps = useRowSelectionProps(data, props);\n\n if (!isClient) {\n return null;\n }\n\n return (\n <div className={`${className} ${scopeClassName ?? \"\"}`}>\n <ErrorBoundary canvasEnvId={(props as any)[\"data-plasmic-canvas-envs\"]}>\n <ProTable\n ErrorBoundary={false}\n rowClassName={\n props.onRowClick || props.canSelectRows === \"click\"\n ? \"plasmic-table-row-clickable\"\n : undefined\n }\n actionRef={actionRef}\n columns={columnDefinitions}\n onChange={(_pagination, _filters, sorter, _extra) => {\n setSortState({ sorter: sorter as any });\n }}\n style={{\n width: \"100%\",\n }}\n cardProps={{\n ghost: true,\n }}\n {...rowSelectionProps}\n dataSource={finalData}\n rowKey={deriveRowKey(data, rowKey)}\n defaultSize={defaultSize}\n editable={{ type: \"multiple\" }}\n search={false}\n options={{\n setting: hideColumnPicker\n ? false\n : {\n listsHeight: 400,\n },\n reload: false,\n density: !hideDensity,\n }}\n pagination={\n pagination\n ? {\n pageSize,\n onChange: (page) => console.log(page),\n showSizeChanger: false,\n }\n : false\n }\n dateFormatter=\"string\"\n headerTitle={title}\n toolbar={{\n search: !hideSearch\n ? {\n value: search,\n onChange: (e) => setSearch(e.target.value),\n onSearch: () => {\n return;\n },\n placeholder: \"Search\",\n }\n : undefined,\n }}\n toolBarRender={() =>\n [\n addHref && (\n <Button\n key=\"button\"\n icon={<PlusOutlined />}\n type=\"primary\"\n href={addHref}\n >\n Add\n </Button>\n ),\n !hideExports && <ExportMenu data={data} />,\n ].filter((x) => !!x)\n }\n />\n </ErrorBoundary>\n {/*Always hide the weird pin left/right buttons for now, which also have render layout issues*/}\n <style\n dangerouslySetInnerHTML={{\n __html: `\n :where(.css-dev-only-do-not-override-1p704s4).ant-pro-table-column-setting-overlay .ant-tree-treenode:hover .ant-pro-table-column-setting-list-item-option {\n display: none;\n }\n .plasmic-table-row-clickable {\n cursor: pointer;\n }\n .ant-pro-table-list-toolbar-right {\n flex-wrap: initial;\n flex-shrink: 0;\n }\n .ant-pro-table, .ant-pro-table > .ant-pro-card, .ant-pro-table .ant-table-wrapper, .ant-pro-table .ant-spin-nested-loading, .ant-pro-table .ant-table-container {\n height: 100%;\n }\n .ant-pro-table .ant-spin-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n .ant-pro-table .ant-table {\n flex-grow: 1;\n min-height: 0;\n }\n .ant-pro-table .ant-pagination {\n flex-shrink: 0;\n }\n .ant-pro-table .ant-table-content {\n overflow: auto !important;\n height: 100%;\n }\n .ant-pro-table > .ant-pro-card > .ant-pro-card-body {\n display: flex;\n flex-direction: column;\n }\n .ant-pro-table .ant-table-wrapper {\n flex-grow: 1;\n min-height: 0;\n }\n .ant-pro-table .ant-table-thead > tr > th, .ant-pro-table .ant-table-thead > tr > td.ant-table-selection-column {\n position: sticky;\n top: 0;\n z-index: 2;\n }\n .ant-pro-table .ant-table-thead > tr > th.ant-table-cell-fix-left, .ant-pro-table .ant-table-thead > tr > th.ant-table-cell-fix-right {\n z-index: 3;\n }\n .ant-pro-table .ant-table-tbody > tr > td {\n z-index: 0;\n }\n .ant-pro-table .ant-table-tbody > tr > td.ant-table-cell-fix-left,.ant-pro-table .ant-table-tbody > tr > td.ant-table-cell-fix-right {\n z-index: 1;\n }\n ${\n scopeClassName && hideSelectionBar\n ? `\n .${scopeClassName} .ant-pro-table-alert {\n display: none;\n }\n `\n : \"\"\n }\n `,\n }}\n />\n </div>\n );\n}\n\ninterface StyleConfig {\n styles: Record<string, any>;\n align: \"left\" | \"center\" | \"right\";\n freeze: \"off\" | \"left\" | \"right\";\n}\n\nconst defaultColumnConfig = (): TableColumnConfig =>\n ({\n key: mkShortId(),\n isEditableExpr: () => false,\n disableSorting: false,\n sortByExpr: undefined,\n isHidden: false,\n formatting: {\n styles: {},\n align: \"left\",\n freeze: \"off\",\n },\n dataType: \"auto\" as const,\n } as const);\n\nexport type TableColumnConfig = BaseColumnConfig & {\n isEditableExpr: RowFunc<boolean>;\n disableSorting: boolean;\n sortByExpr?: RowFunc<any>;\n formatting: StyleConfig;\n};\n\nfunction useColumnDefinitions(\n data: NormalizedData | undefined,\n props: React.ComponentProps<typeof RichTable>\n) {\n const { fields, setControlContextData, rowActions } = props;\n return React.useMemo(() => {\n const schema = data?.schema;\n if (!data || !schema) {\n return { normalized: [], columnDefinitions: [] };\n }\n const { mergedFields, minimalFullLengthFields } =\n deriveFieldConfigs<TableColumnConfig>(fields ?? [], schema, (field) => ({\n ...defaultColumnConfig(),\n ...(field && {\n key: field.id,\n fieldId: field.id,\n title: field.label || field.id,\n expr: (currentItem) => currentItem[field.id],\n }),\n }));\n setControlContextData?.({ ...data, mergedFields, minimalFullLengthFields });\n const normalized = mergedFields;\n const columnDefinitions: ProColumns<any, any>[] = normalized\n .filter((cconfig) => !cconfig.isHidden)\n .map((cconfig, _columnIndex, _columnsArray) => {\n const columnDefinition: ProColumns<any, any> = {\n dataIndex: cconfig.fieldId,\n title: cconfig.title,\n // dataIndex: cconfig,\n key: cconfig.key,\n valueType: deriveValueType(cconfig),\n\n // To come later\n readonly: false,\n sorter: !cconfig.disableSorting,\n copyable: false,\n ellipsis: false,\n tip: undefined,\n formItemProps: {\n rules: [],\n },\n disable: false,\n valueEnum: undefined,\n search: undefined,\n hideInSearch: false,\n renderFormItem: (_, { defaultRender }) => {\n return defaultRender(_);\n },\n\n render: (_value: any, record: any, _rowIndex: any) => {\n return renderValue(record, cconfig);\n },\n };\n\n return columnDefinition;\n });\n const rowKey = props.rowKey;\n if (rowActions && rowActions.length > 0) {\n columnDefinitions.push({\n title: \"Actions\",\n valueType: \"option\",\n key: \"__plasmicActions\",\n fixed: \"right\",\n className: props.themeResetClassName,\n render: (_text, row) => [\n ...renderActions(rowActions, row, data, rowKey),\n ],\n });\n }\n return { normalized, columnDefinitions };\n }, [fields, data, setControlContextData, rowActions]);\n}\n\nfunction useRowSelectionProps(\n data: NormalizedData | undefined,\n props: React.ComponentProps<typeof RichTable>\n): Partial<React.ComponentProps<typeof ProTable>> {\n const {\n canSelectRows,\n selectedRowKey,\n selectedRowKeys,\n onRowSelectionChanged,\n rowKey,\n onRowClick,\n } = props;\n const deriveSelectedRowKeys = () => {\n if (\n !canSelectRows ||\n canSelectRows === \"none\" ||\n !deriveRowKey(data, rowKey)\n ) {\n return [];\n }\n\n if (canSelectRows === \"multiple\") {\n return selectedRowKeys ?? [];\n } else if (selectedRowKey) {\n return [selectedRowKey];\n } else {\n return [];\n }\n };\n\n const rowSelection: React.ComponentProps<typeof ProTable>[\"rowSelection\"] =\n canSelectRows && canSelectRows !== \"none\"\n ? {\n type:\n canSelectRows === \"single\" || canSelectRows === \"click\"\n ? \"radio\"\n : \"checkbox\",\n selectedRowKeys: deriveSelectedRowKeys(),\n onChange: (rowKeys, rows) => {\n onRowSelectionChanged?.(rowKeys as string[], rows);\n },\n alwaysShowAlert: true,\n ...(canSelectRows === \"click\" && {\n renderCell: () => null,\n columnWidth: 0,\n columnTitle: null,\n hideSelectAll: true,\n }),\n }\n : undefined;\n return {\n rowSelection,\n onRow: (row) => ({\n onClick: (event) => {\n const key = deriveKeyOfRow(row, deriveRowKey(data, rowKey));\n if (key != null && !isInteractable(event.target as HTMLElement)) {\n if (canSelectRows === \"click\") {\n onRowSelectionChanged?.([key], [row]);\n }\n onRowClick?.(key, row, event);\n }\n },\n }),\n };\n}\n\nfunction ExportMenu(props: { data: NormalizedData | undefined }) {\n const { data } = props;\n\n return (\n <Dropdown\n key=\"menu\"\n menu={{\n items: [\n {\n label: \"Download as CSV\",\n key: \"csv\",\n onClick: async () => {\n const writer = createObjectCsvStringifier({\n header:\n data?.schema?.fields.map((f) => ({\n id: f.id,\n title: f.id,\n })) ?? [],\n });\n const dataStr =\n writer.getHeaderString() +\n writer.stringifyRecords(data?.data as any);\n\n // const dataStr = stringify(data?.data as any, {\n // columns:\n // tryGetSchema(data)?.fields.map((f) => f.id) ?? [],\n // header: true,\n // });\n\n const filename = \"data.csv\";\n\n // Adapted from https://stackoverflow.com/a/68771795\n const blob = new Blob([dataStr], {\n type: \"text/csv;charset=utf-8;\",\n });\n if ((navigator as any).msSaveBlob) {\n // In case of IE 10+\n (navigator as any).msSaveBlob(blob, filename);\n } else {\n const link = document.createElement(\"a\");\n if (link.download !== undefined) {\n // Browsers that support HTML5 download attribute\n const url = URL.createObjectURL(blob);\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", filename);\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n },\n },\n {\n label: \"Download as JSON\",\n key: \"json\",\n onClick: () => {\n const dataStr = fastStringify(data?.data);\n const dataUri = `data:application/json;charset=utf-8, ${encodeURIComponent(\n dataStr\n )}`;\n\n const exportFileDefaultName = \"data.json\";\n\n const linkElement = document.createElement(\"a\");\n linkElement.setAttribute(\"href\", dataUri);\n linkElement.setAttribute(\"download\", exportFileDefaultName);\n linkElement.click();\n },\n },\n ],\n }}\n >\n <Button>\n <EllipsisOutlined />\n </Button>\n </Dropdown>\n );\n}\n","import { CodeComponentMeta } from \"@plasmicapp/host\";\nimport {\n commonProps,\n dataProp,\n onRowClickProp,\n rowActionsProp,\n} from \"../common-prop-types\";\nimport { buildFieldsPropType } from \"../field-mappings\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichTable, RichTableProps, TableColumnConfig } from \"./RichTable\";\n\nexport * from \"./RichTable\";\nexport default RichTable;\n\nexport const tableHelpers = {\n states: {\n selectedRow: {\n onChangeArgsToValue: (_rowKeys: string[], rows: any[]) => {\n return rows[0];\n },\n },\n selectedRows: {\n onChangeArgsToValue: (_rowKeys: string[], rows: any[]) => {\n return rows;\n },\n },\n selectedRowKey: {\n onChangeArgsToValue: (rowKeys: string[], _rows: any[]) => {\n return rowKeys[0];\n },\n },\n selectedRowKeys: {\n onChangeArgsToValue: (rowKeys: string[], _rows: any[]) => {\n return rowKeys;\n },\n },\n },\n};\n\nconst dataTableMeta: CodeComponentMeta<RichTableProps> = {\n name: \"hostless-rich-table\",\n displayName: \"Table\",\n defaultStyles: {\n width: \"stretch\",\n padding: \"16px\",\n maxHeight: \"100%\",\n },\n props: {\n data: dataProp(),\n\n fields: buildFieldsPropType<TableColumnConfig, RichTableProps>({\n fieldTypes: {\n disableSorting: {\n type: \"boolean\",\n displayName: \"Disable sorting?\",\n defaultValueHint: false,\n },\n },\n }),\n\n canSelectRows: {\n type: \"choice\",\n displayName: \"Select rows?\",\n options: [\n { label: \"No\", value: \"none\" },\n { label: \"By clicking a row\", value: \"click\" },\n { label: \"Using radio buttons\", value: \"single\" },\n { label: \"Using checkboxes\", value: \"multiple\" },\n ],\n defaultValueHint: \"none\",\n description:\n \"Lets user select table rows by clicking on a row, or using radio buttons, or checkboxes if multiple rows can be selected together. If you have interactive elements in your row and you don't want clicking on them to select the row, you may use radio buttons instead.\",\n },\n\n rowKey: {\n type: \"string\",\n displayName: \"Row key\",\n helpText:\n \"Column key to use as row key; can also be a function that takes in a row and returns a key value\",\n hidden: (ps) => !ps.canSelectRows || ps.canSelectRows === \"none\",\n },\n\n selectedRowKey: {\n type: \"string\",\n displayName: \"Selected Row Key\",\n hidden: (ps) =>\n ps.canSelectRows !== \"single\" && ps.canSelectRows !== \"click\",\n advanced: true,\n },\n selectedRowKeys: {\n type: \"array\",\n displayName: \"Selected Row Keys\",\n hidden: (ps) => ps.canSelectRows !== \"multiple\",\n advanced: true,\n },\n onRowSelectionChanged: {\n type: \"eventHandler\",\n displayName: \"On row selection changed\",\n argTypes: [\n { name: \"rowKeys\", type: \"object\" },\n { name: \"rows\", type: \"object\" },\n ],\n },\n\n onRowClick: onRowClickProp(),\n\n rowActions: rowActionsProp(),\n\n defaultSize: {\n displayName: \"Density\",\n type: \"choice\",\n options: [\n {\n value: \"large\",\n label: \"Larger\",\n },\n {\n value: \"middle\",\n label: \"Medium\",\n },\n {\n value: \"small\",\n label: \"Compact\",\n },\n ],\n defaultValueHint: \"large\",\n advanced: true,\n },\n\n ...commonProps(),\n\n hideExports: {\n type: \"boolean\",\n description: \"Hides the button for exporting table data to CSV\",\n advanced: true,\n },\n\n hideDensity: {\n type: \"boolean\",\n description: \"Hides the control for changing the density of the table\",\n advanced: true,\n defaultValueHint: true,\n },\n\n hideColumnPicker: {\n type: \"boolean\",\n description: \"Hides the control for reordering and pinning columns\",\n advanced: true,\n },\n\n hideSelectionBar: {\n type: \"boolean\",\n description: \"Hides the toolbar that allows the user to clear selection\",\n advanced: true,\n hidden: (ps) => !ps.canSelectRows || ps.canSelectRows === \"none\",\n defaultValueHint: true,\n },\n scopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"instance\",\n } as any,\n themeResetClassName: {\n type: \"themeResetClass\",\n targetAllTags: true,\n },\n },\n states: {\n selectedRowKey: {\n type: \"writable\",\n valueProp: \"selectedRowKey\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"text\",\n hidden: (ps) =>\n !(ps.canSelectRows === \"click\" || ps.canSelectRows === \"single\"),\n ...tableHelpers.states.selectedRowKey,\n },\n selectedRowKeys: {\n type: \"writable\",\n valueProp: \"selectedRowKeys\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"array\",\n hidden: (ps) => !(ps.canSelectRows === \"multiple\"),\n ...tableHelpers.states.selectedRowKeys,\n },\n selectedRow: {\n type: \"readonly\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"object\",\n hidden: (ps) =>\n !(ps.canSelectRows === \"click\" || ps.canSelectRows === \"single\"),\n ...tableHelpers.states.selectedRow,\n },\n selectedRows: {\n type: \"readonly\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"array\",\n hidden: (ps) => !(ps.canSelectRows === \"multiple\"),\n ...tableHelpers.states.selectedRows,\n },\n },\n componentHelpers: {\n helpers: tableHelpers,\n importName: \"tableHelpers\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-table\",\n },\n importName: \"RichTable\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-table\",\n};\n\nexport function registerRichTable(loader?: Registerable) {\n registerComponentHelper(loader, RichTable, dataTableMeta);\n}\n"],"names":["useIsClient","useNormalizedData","useMemo","__spreadProps","tagDataArray","useRef","useSortedFilteredData","React","ErrorBoundary","ProTable","__spreadValues","deriveRowKey","Button","PlusOutlined","mkShortId","deriveFieldConfigs","deriveValueType","renderValue","renderActions","deriveKeyOfRow","isInteractable","Dropdown","createObjectCsvStringifier","fastStringify","EllipsisOutlined","dataProp","buildFieldsPropType","onRowClickProp","rowActionsProp","commonProps","registerComponentHelper"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyEO,SAAS,UAAU,KAAuB,EAAA;AAC/C,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,MAAM,OAAU,GAAA;AAAA,MACd,MAAM,EAAC;AAAA,MACP,MAAQ,EAAA;AAAA,QACN,EAAI,EAAA,UAAA;AAAA,QACJ,MAAQ,EAAA;AAAA,UACN;AAAA,YACE,EAAI,EAAA,IAAA;AAAA,YACJ,IAAM,EAAA,QAAA;AAAA,YACN,QAAU,EAAA,KAAA;AAAA,WACZ;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA;AAAA,IAEA,UAAa,GAAA,IAAA;AAAA,IACb,WAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAW,GAAA,EAAA;AAAA,IACX,UAAA;AAAA,IACA,WAAc,GAAA,IAAA;AAAA,IACd,gBAAA;AAAA,IACA,WAAA;AAAA,IACA,gBAAmB,GAAA,IAAA;AAAA,IACnB,MAAA;AAAA,IACA,cAAA;AAAA,GACE,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,WAAWA,kBAAY,EAAA,CAAA;AAE7B,EAAA,MAAM,cAAiB,GAAAC,6BAAA,CAAkB,QAAW,GAAA,OAAA,GAAU,EAAE,CAAA,CAAA;AAEhE,EAAM,MAAA,IAAA,GAAOC,cAAQ,MAAM;AACzB,IAAI,IAAA,EAAC,iDAAgB,IAAM,CAAA,EAAA;AACzB,MAAO,OAAA,cAAA,CAAA;AAAA,KACT;AACA,IAAA,OAAOC,qCAAK,cAAL,CAAA,EAAA,EAAqB,MAAMC,4BAAa,CAAA,cAAA,CAAe,IAAI,CAAE,EAAA,CAAA,CAAA;AAAA,GACtE,EAAG,CAAC,cAAc,CAAC,CAAA,CAAA;AAEnB,EAAA,MAAM,EAAE,iBAAmB,EAAA,UAAA,EAAe,GAAA,oBAAA,CAAqB,MAAM,KAAK,CAAA,CAAA;AAE1E,EAAA,MAAM,YAAYC,YAAmB,EAAA,CAAA;AAErC,EAAA,MAAM,EAAE,SAAA,EAAW,MAAQ,EAAA,SAAA,EAAW,cAAiB,GAAAC,qCAAA;AAAA,IACrD,IAAA;AAAA,IACA,UAAA;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,iBAAA,GAAoB,oBAAqB,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAE1D,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACGC,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,SAAa,CAAA,CAAA,EAAA,cAAA,IAAA,IAAA,GAAA,cAAA,GAAkB,EAChD,CAAA,CAAA,EAAA,kBAAAA,sBAAA,CAAA,aAAA,CAACC,mBAAc,EAAA,EAAA,WAAA,EAAc,KAAc,CAAA,0BAA0B,CACnE,EAAA,kBAAAD,sBAAA,CAAA,aAAA;AAAA,IAACE,sBAAA;AAAA,IAAAN,eAAA,CAAAO,gBAAA,CAAA;AAAA,MACC,aAAe,EAAA,KAAA;AAAA,MACf,cACE,KAAM,CAAA,UAAA,IAAc,KAAM,CAAA,aAAA,KAAkB,UACxC,6BACA,GAAA,KAAA,CAAA;AAAA,MAEN,SAAA;AAAA,MACA,OAAS,EAAA,iBAAA;AAAA,MACT,QAAU,EAAA,CAAC,WAAa,EAAA,QAAA,EAAU,QAAQ,MAAW,KAAA;AACnD,QAAa,YAAA,CAAA,EAAE,QAAuB,CAAA,CAAA;AAAA,OACxC;AAAA,MACA,KAAO,EAAA;AAAA,QACL,KAAO,EAAA,MAAA;AAAA,OACT;AAAA,MACA,SAAW,EAAA;AAAA,QACT,KAAO,EAAA,IAAA;AAAA,OACT;AAAA,KAAA,EACI,iBAlBL,CAAA,EAAA;AAAA,MAmBC,UAAY,EAAA,SAAA;AAAA,MACZ,MAAA,EAAQC,4BAAa,CAAA,IAAA,EAAM,MAAM,CAAA;AAAA,MACjC,WAAA;AAAA,MACA,QAAA,EAAU,EAAE,IAAA,EAAM,UAAW,EAAA;AAAA,MAC7B,MAAQ,EAAA,KAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACP,OAAA,EAAS,mBACL,KACA,GAAA;AAAA,UACE,WAAa,EAAA,GAAA;AAAA,SACf;AAAA,QACJ,MAAQ,EAAA,KAAA;AAAA,QACR,SAAS,CAAC,WAAA;AAAA,OACZ;AAAA,MACA,YACE,UACI,GAAA;AAAA,QACE,QAAA;AAAA,QACA,QAAU,EAAA,CAAC,IAAS,KAAA,OAAA,CAAQ,IAAI,IAAI,CAAA;AAAA,QACpC,eAAiB,EAAA,KAAA;AAAA,OAEnB,GAAA,KAAA;AAAA,MAEN,aAAc,EAAA,QAAA;AAAA,MACd,WAAa,EAAA,KAAA;AAAA,MACb,OAAS,EAAA;AAAA,QACP,MAAA,EAAQ,CAAC,UACL,GAAA;AAAA,UACE,KAAO,EAAA,MAAA;AAAA,UACP,UAAU,CAAC,CAAA,KAAM,SAAU,CAAA,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,UACzC,UAAU,MAAM;AACd,YAAA,OAAA;AAAA,WACF;AAAA,UACA,WAAa,EAAA,QAAA;AAAA,SAEf,GAAA,KAAA,CAAA;AAAA,OACN;AAAA,MACA,eAAe,MACb;AAAA,QACE,OACE,oBAAAJ,sBAAA,CAAA,aAAA;AAAA,UAACK,WAAA;AAAA,UAAA;AAAA,YACC,GAAI,EAAA,QAAA;AAAA,YACJ,IAAA,uDAAOC,kBAAa,EAAA,IAAA,CAAA;AAAA,YACpB,IAAK,EAAA,SAAA;AAAA,YACL,IAAM,EAAA,OAAA;AAAA,WAAA;AAAA,UACP,KAAA;AAAA,SAED;AAAA,QAEF,CAAC,WAAA,oBAAgBN,sBAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,IAAY,EAAA,CAAA;AAAA,QACxC,MAAO,CAAA,CAAC,CAAM,KAAA,CAAC,CAAC,CAAC,CAAA;AAAA,KAAA,CAAA;AAAA,GAGzB,CAEA,kBAAAA,sBAAA,CAAA,aAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,uBAAyB,EAAA;AAAA,QACvB,MAAQ,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,EAqDN,kBAAkB,gBACd,GAAA,CAAA;AAAA,WACH,EAAA,cAAA,CAAA;AAAA;AAAA;AAAA,UAIG,CAAA,GAAA,EAAA,CAAA;AAAA,MAAA,CAAA;AAAA,OAGR;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ,CAAA;AAQA,MAAM,sBAAsB,OACzB;AAAA,EACC,KAAKO,eAAU,EAAA;AAAA,EACf,gBAAgB,MAAM,KAAA;AAAA,EACtB,cAAgB,EAAA,KAAA;AAAA,EAChB,UAAY,EAAA,KAAA,CAAA;AAAA,EACZ,QAAU,EAAA,KAAA;AAAA,EACV,UAAY,EAAA;AAAA,IACV,QAAQ,EAAC;AAAA,IACT,KAAO,EAAA,MAAA;AAAA,IACP,MAAQ,EAAA,KAAA;AAAA,GACV;AAAA,EACA,QAAU,EAAA,MAAA;AACZ,CAAA,CAAA,CAAA;AASF,SAAS,oBAAA,CACP,MACA,KACA,EAAA;AACA,EAAA,MAAM,EAAE,MAAA,EAAQ,qBAAuB,EAAA,UAAA,EAAe,GAAA,KAAA,CAAA;AACtD,EAAO,OAAAP,sBAAA,CAAM,QAAQ,MAAM;AACzB,IAAA,MAAM,SAAS,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,MAAA,CAAA;AACrB,IAAI,IAAA,CAAC,IAAQ,IAAA,CAAC,MAAQ,EAAA;AACpB,MAAA,OAAO,EAAE,UAAY,EAAA,EAAI,EAAA,iBAAA,EAAmB,EAAG,EAAA,CAAA;AAAA,KACjD;AACA,IAAA,MAAM,EAAE,YAAA,EAAc,uBAAwB,EAAA,GAC5CQ,+BAAsC,MAAU,IAAA,IAAA,GAAA,MAAA,GAAA,EAAI,EAAA,MAAA,EAAQ,CAAC,KAAA,KAAWL,gBACnE,CAAAA,gBAAA,CAAA,EAAA,EAAA,mBAAA,KACC,KAAS,IAAA;AAAA,MACX,KAAK,KAAM,CAAA,EAAA;AAAA,MACX,SAAS,KAAM,CAAA,EAAA;AAAA,MACf,KAAA,EAAO,KAAM,CAAA,KAAA,IAAS,KAAM,CAAA,EAAA;AAAA,MAC5B,IAAM,EAAA,CAAC,WAAgB,KAAA,WAAA,CAAY,MAAM,EAAE,CAAA;AAAA,KAE7C,CAAA,CAAA,CAAA;AACJ,IAAA,qBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAAwBP,eAAK,CAAAO,gBAAA,CAAA,EAAA,EAAA,IAAA,CAAA,EAAL,EAAW,YAAA,EAAc,uBAAwB,EAAA,CAAA,CAAA,CAAA;AACzE,IAAA,MAAM,UAAa,GAAA,YAAA,CAAA;AACnB,IAAA,MAAM,iBAA4C,GAAA,UAAA,CAC/C,MAAO,CAAA,CAAC,OAAY,KAAA,CAAC,OAAQ,CAAA,QAAQ,CACrC,CAAA,GAAA,CAAI,CAAC,OAAA,EAAS,cAAc,aAAkB,KAAA;AAC7C,MAAA,MAAM,gBAAyC,GAAA;AAAA,QAC7C,WAAW,OAAQ,CAAA,OAAA;AAAA,QACnB,OAAO,OAAQ,CAAA,KAAA;AAAA;AAAA,QAEf,KAAK,OAAQ,CAAA,GAAA;AAAA,QACb,SAAA,EAAWM,2BAAgB,OAAO,CAAA;AAAA;AAAA,QAGlC,QAAU,EAAA,KAAA;AAAA,QACV,MAAA,EAAQ,CAAC,OAAQ,CAAA,cAAA;AAAA,QACjB,QAAU,EAAA,KAAA;AAAA,QACV,QAAU,EAAA,KAAA;AAAA,QACV,GAAK,EAAA,KAAA,CAAA;AAAA,QACL,aAAe,EAAA;AAAA,UACb,OAAO,EAAC;AAAA,SACV;AAAA,QACA,OAAS,EAAA,KAAA;AAAA,QACT,SAAW,EAAA,KAAA,CAAA;AAAA,QACX,MAAQ,EAAA,KAAA,CAAA;AAAA,QACR,YAAc,EAAA,KAAA;AAAA,QACd,cAAgB,EAAA,CAAC,CAAG,EAAA,EAAE,eAAoB,KAAA;AACxC,UAAA,OAAO,cAAc,CAAC,CAAA,CAAA;AAAA,SACxB;AAAA,QAEA,MAAQ,EAAA,CAAC,MAAa,EAAA,MAAA,EAAa,SAAmB,KAAA;AACpD,UAAO,OAAAC,sBAAA,CAAY,QAAQ,OAAO,CAAA,CAAA;AAAA,SACpC;AAAA,OACF,CAAA;AAEA,MAAO,OAAA,gBAAA,CAAA;AAAA,KACR,CAAA,CAAA;AACH,IAAA,MAAM,SAAS,KAAM,CAAA,MAAA,CAAA;AACrB,IAAI,IAAA,UAAA,IAAc,UAAW,CAAA,MAAA,GAAS,CAAG,EAAA;AACvC,MAAA,iBAAA,CAAkB,IAAK,CAAA;AAAA,QACrB,KAAO,EAAA,SAAA;AAAA,QACP,SAAW,EAAA,QAAA;AAAA,QACX,GAAK,EAAA,kBAAA;AAAA,QACL,KAAO,EAAA,OAAA;AAAA,QACP,WAAW,KAAM,CAAA,mBAAA;AAAA,QACjB,MAAA,EAAQ,CAAC,KAAA,EAAO,GAAQ,KAAA;AAAA,UACtB,GAAGC,6BAAA,CAAc,UAAY,EAAA,GAAA,EAAK,MAAM,MAAM,CAAA;AAAA,SAChD;AAAA,OACD,CAAA,CAAA;AAAA,KACH;AACA,IAAO,OAAA,EAAE,YAAY,iBAAkB,EAAA,CAAA;AAAA,KACtC,CAAC,MAAA,EAAQ,IAAM,EAAA,qBAAA,EAAuB,UAAU,CAAC,CAAA,CAAA;AACtD,CAAA;AAEA,SAAS,oBAAA,CACP,MACA,KACgD,EAAA;AAChD,EAAM,MAAA;AAAA,IACJ,aAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,qBAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,GACE,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,wBAAwB,MAAM;AAClC,IACE,IAAA,CAAC,iBACD,aAAkB,KAAA,MAAA,IAClB,CAACP,4BAAa,CAAA,IAAA,EAAM,MAAM,CAC1B,EAAA;AACA,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAEA,IAAA,IAAI,kBAAkB,UAAY,EAAA;AAChC,MAAA,OAAO,4CAAmB,EAAC,CAAA;AAAA,eAClB,cAAgB,EAAA;AACzB,MAAA,OAAO,CAAC,cAAc,CAAA,CAAA;AAAA,KACjB,MAAA;AACL,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,YAAA,GACJ,aAAiB,IAAA,aAAA,KAAkB,MAC/B,GAAAD,gBAAA,CAAA;AAAA,IACE,IACE,EAAA,aAAA,KAAkB,QAAY,IAAA,aAAA,KAAkB,UAC5C,OACA,GAAA,UAAA;AAAA,IACN,iBAAiB,qBAAsB,EAAA;AAAA,IACvC,QAAA,EAAU,CAAC,OAAA,EAAS,IAAS,KAAA;AAC3B,MAAA,qBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAAwB,OAAqB,EAAA,IAAA,CAAA,CAAA;AAAA,KAC/C;AAAA,IACA,eAAiB,EAAA,IAAA;AAAA,GAAA,EACb,kBAAkB,OAAW,IAAA;AAAA,IAC/B,YAAY,MAAM,IAAA;AAAA,IAClB,WAAa,EAAA,CAAA;AAAA,IACb,WAAa,EAAA,IAAA;AAAA,IACb,aAAe,EAAA,IAAA;AAAA,GAGnB,CAAA,GAAA,KAAA,CAAA,CAAA;AACN,EAAO,OAAA;AAAA,IACL,YAAA;AAAA,IACA,KAAA,EAAO,CAAC,GAAS,MAAA;AAAA,MACf,OAAA,EAAS,CAAC,KAAU,KAAA;AAClB,QAAA,MAAM,MAAMS,8BAAe,CAAA,GAAA,EAAKR,4BAAa,CAAA,IAAA,EAAM,MAAM,CAAC,CAAA,CAAA;AAC1D,QAAA,IAAI,OAAO,IAAQ,IAAA,CAACS,oBAAe,CAAA,KAAA,CAAM,MAAqB,CAAG,EAAA;AAC/D,UAAA,IAAI,kBAAkB,OAAS,EAAA;AAC7B,YAAA,qBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAAwB,CAAC,GAAG,CAAG,EAAA,CAAC,GAAG,CAAA,CAAA,CAAA;AAAA,WACrC;AACA,UAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAa,KAAK,GAAK,EAAA,KAAA,CAAA,CAAA;AAAA,SACzB;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AACF,CAAA;AAEA,SAAS,WAAW,KAA6C,EAAA;AAC/D,EAAM,MAAA,EAAE,MAAS,GAAA,KAAA,CAAA;AAEjB,EACE,uBAAAb,sBAAA,CAAA,aAAA;AAAA,IAACc,aAAA;AAAA,IAAA;AAAA,MACC,GAAI,EAAA,MAAA;AAAA,MACJ,IAAM,EAAA;AAAA,QACJ,KAAO,EAAA;AAAA,UACL;AAAA,YACE,KAAO,EAAA,iBAAA;AAAA,YACP,GAAK,EAAA,KAAA;AAAA,YACL,SAAS,YAAY;AAtcjC,cAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAucc,cAAA,MAAM,SAASC,2CAA2B,CAAA;AAAA,gBACxC,SACE,EAAM,GAAA,CAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,MAAA,KAAN,mBAAc,MAAO,CAAA,GAAA,CAAI,CAAC,CAAO,MAAA;AAAA,kBAC/B,IAAI,CAAE,CAAA,EAAA;AAAA,kBACN,OAAO,CAAE,CAAA,EAAA;AAAA,iBACX,CAAA,CAAA,KAHA,YAGO,EAAC;AAAA,eACX,CAAA,CAAA;AACD,cAAA,MAAM,UACJ,MAAO,CAAA,eAAA,KACP,MAAO,CAAA,gBAAA,CAAiB,6BAAM,IAAW,CAAA,CAAA;AAQ3C,cAAA,MAAM,QAAW,GAAA,UAAA,CAAA;AAGjB,cAAA,MAAM,IAAO,GAAA,IAAI,IAAK,CAAA,CAAC,OAAO,CAAG,EAAA;AAAA,gBAC/B,IAAM,EAAA,yBAAA;AAAA,eACP,CAAA,CAAA;AACD,cAAA,IAAK,UAAkB,UAAY,EAAA;AAEjC,gBAAC,SAAA,CAAkB,UAAW,CAAA,IAAA,EAAM,QAAQ,CAAA,CAAA;AAAA,eACvC,MAAA;AACL,gBAAM,MAAA,IAAA,GAAO,QAAS,CAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AACvC,gBAAI,IAAA,IAAA,CAAK,aAAa,KAAW,CAAA,EAAA;AAE/B,kBAAM,MAAA,GAAA,GAAM,GAAI,CAAA,eAAA,CAAgB,IAAI,CAAA,CAAA;AACpC,kBAAK,IAAA,CAAA,YAAA,CAAa,QAAQ,GAAG,CAAA,CAAA;AAC7B,kBAAK,IAAA,CAAA,YAAA,CAAa,YAAY,QAAQ,CAAA,CAAA;AACtC,kBAAA,IAAA,CAAK,MAAM,UAAa,GAAA,QAAA,CAAA;AACxB,kBAAS,QAAA,CAAA,IAAA,CAAK,YAAY,IAAI,CAAA,CAAA;AAC9B,kBAAA,IAAA,CAAK,KAAM,EAAA,CAAA;AACX,kBAAS,QAAA,CAAA,IAAA,CAAK,YAAY,IAAI,CAAA,CAAA;AAAA,iBAChC;AAAA,eACF;AAAA,aACF;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAO,EAAA,kBAAA;AAAA,YACP,GAAK,EAAA,MAAA;AAAA,YACL,SAAS,MAAM;AACb,cAAM,MAAA,OAAA,GAAUC,8BAAc,CAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,IAAI,CAAA,CAAA;AACxC,cAAA,MAAM,UAAU,CAAwC,qCAAA,EAAA,kBAAA;AAAA,gBACtD,OAAA;AAAA,eACF,CAAA,CAAA,CAAA;AAEA,cAAA,MAAM,qBAAwB,GAAA,WAAA,CAAA;AAE9B,cAAM,MAAA,WAAA,GAAc,QAAS,CAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AAC9C,cAAY,WAAA,CAAA,YAAA,CAAa,QAAQ,OAAO,CAAA,CAAA;AACxC,cAAY,WAAA,CAAA,YAAA,CAAa,YAAY,qBAAqB,CAAA,CAAA;AAC1D,cAAA,WAAA,CAAY,KAAM,EAAA,CAAA;AAAA,aACpB;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,KAAA;AAAA,oBAEChB,sBAAA,CAAA,aAAA,CAAAK,WAAA,EAAA,IAAA,kBACEL,sBAAA,CAAA,aAAA,CAAAiB,sBAAA,EAAA,IAAiB,CACpB,CAAA;AAAA,GACF,CAAA;AAEJ;;;;;;;;;;;;;;;;;;;;;AC3fO,MAAM,YAAe,GAAA;AAAA,EAC1B,MAAQ,EAAA;AAAA,IACN,WAAa,EAAA;AAAA,MACX,mBAAA,EAAqB,CAAC,QAAA,EAAoB,IAAgB,KAAA;AACxD,QAAA,OAAO,KAAK,CAAC,CAAA,CAAA;AAAA,OACf;AAAA,KACF;AAAA,IACA,YAAc,EAAA;AAAA,MACZ,mBAAA,EAAqB,CAAC,QAAA,EAAoB,IAAgB,KAAA;AACxD,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,IACA,cAAgB,EAAA;AAAA,MACd,mBAAA,EAAqB,CAAC,OAAA,EAAmB,KAAiB,KAAA;AACxD,QAAA,OAAO,QAAQ,CAAC,CAAA,CAAA;AAAA,OAClB;AAAA,KACF;AAAA,IACA,eAAiB,EAAA;AAAA,MACf,mBAAA,EAAqB,CAAC,OAAA,EAAmB,KAAiB,KAAA;AACxD,QAAO,OAAA,OAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AACF,EAAA;AAEA,MAAM,aAAmD,GAAA;AAAA,EACvD,IAAM,EAAA,qBAAA;AAAA,EACN,WAAa,EAAA,OAAA;AAAA,EACb,aAAe,EAAA;AAAA,IACb,KAAO,EAAA,SAAA;AAAA,IACP,OAAS,EAAA,MAAA;AAAA,IACT,SAAW,EAAA,MAAA;AAAA,GACb;AAAA,EACA,KAAO,EAAA,aAAA,CAAA,cAAA,CAAA;AAAA,IACL,MAAMC,wBAAS,EAAA;AAAA,IAEf,QAAQC,8BAAuD,CAAA;AAAA,MAC7D,UAAY,EAAA;AAAA,QACV,cAAgB,EAAA;AAAA,UACd,IAAM,EAAA,SAAA;AAAA,UACN,WAAa,EAAA,kBAAA;AAAA,UACb,gBAAkB,EAAA,KAAA;AAAA,SACpB;AAAA,OACF;AAAA,KACD,CAAA;AAAA,IAED,aAAe,EAAA;AAAA,MACb,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,cAAA;AAAA,MACb,OAAS,EAAA;AAAA,QACP,EAAE,KAAA,EAAO,IAAM,EAAA,KAAA,EAAO,MAAO,EAAA;AAAA,QAC7B,EAAE,KAAA,EAAO,mBAAqB,EAAA,KAAA,EAAO,OAAQ,EAAA;AAAA,QAC7C,EAAE,KAAA,EAAO,qBAAuB,EAAA,KAAA,EAAO,QAAS,EAAA;AAAA,QAChD,EAAE,KAAA,EAAO,kBAAoB,EAAA,KAAA,EAAO,UAAW,EAAA;AAAA,OACjD;AAAA,MACA,gBAAkB,EAAA,MAAA;AAAA,MAClB,WACE,EAAA,2QAAA;AAAA,KACJ;AAAA,IAEA,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,SAAA;AAAA,MACb,QACE,EAAA,kGAAA;AAAA,MACF,QAAQ,CAAC,EAAA,KAAO,CAAC,EAAG,CAAA,aAAA,IAAiB,GAAG,aAAkB,KAAA,MAAA;AAAA,KAC5D;AAAA,IAEA,cAAgB,EAAA;AAAA,MACd,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,kBAAA;AAAA,MACb,QAAQ,CAAC,EAAA,KACP,GAAG,aAAkB,KAAA,QAAA,IAAY,GAAG,aAAkB,KAAA,OAAA;AAAA,MACxD,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,IACA,eAAiB,EAAA;AAAA,MACf,IAAM,EAAA,OAAA;AAAA,MACN,WAAa,EAAA,mBAAA;AAAA,MACb,MAAQ,EAAA,CAAC,EAAO,KAAA,EAAA,CAAG,aAAkB,KAAA,UAAA;AAAA,MACrC,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,IACA,qBAAuB,EAAA;AAAA,MACrB,IAAM,EAAA,cAAA;AAAA,MACN,WAAa,EAAA,0BAAA;AAAA,MACb,QAAU,EAAA;AAAA,QACR,EAAE,IAAA,EAAM,SAAW,EAAA,IAAA,EAAM,QAAS,EAAA;AAAA,QAClC,EAAE,IAAA,EAAM,MAAQ,EAAA,IAAA,EAAM,QAAS,EAAA;AAAA,OACjC;AAAA,KACF;AAAA,IAEA,YAAYC,8BAAe,EAAA;AAAA,IAE3B,YAAYC,8BAAe,EAAA;AAAA,IAE3B,WAAa,EAAA;AAAA,MACX,WAAa,EAAA,SAAA;AAAA,MACb,IAAM,EAAA,QAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP;AAAA,UACE,KAAO,EAAA,OAAA;AAAA,UACP,KAAO,EAAA,QAAA;AAAA,SACT;AAAA,QACA;AAAA,UACE,KAAO,EAAA,QAAA;AAAA,UACP,KAAO,EAAA,QAAA;AAAA,SACT;AAAA,QACA;AAAA,UACE,KAAO,EAAA,OAAA;AAAA,UACP,KAAO,EAAA,SAAA;AAAA,SACT;AAAA,OACF;AAAA,MACA,gBAAkB,EAAA,OAAA;AAAA,MAClB,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,GAAA,EAEGC,6BAlFE,CAAA,EAAA;AAAA,IAoFL,WAAa,EAAA;AAAA,MACX,IAAM,EAAA,SAAA;AAAA,MACN,WAAa,EAAA,kDAAA;AAAA,MACb,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,IAEA,WAAa,EAAA;AAAA,MACX,IAAM,EAAA,SAAA;AAAA,MACN,WAAa,EAAA,yDAAA;AAAA,MACb,QAAU,EAAA,IAAA;AAAA,MACV,gBAAkB,EAAA,IAAA;AAAA,KACpB;AAAA,IAEA,gBAAkB,EAAA;AAAA,MAChB,IAAM,EAAA,SAAA;AAAA,MACN,WAAa,EAAA,sDAAA;AAAA,MACb,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,IAEA,gBAAkB,EAAA;AAAA,MAChB,IAAM,EAAA,SAAA;AAAA,MACN,WAAa,EAAA,2DAAA;AAAA,MACb,QAAU,EAAA,IAAA;AAAA,MACV,QAAQ,CAAC,EAAA,KAAO,CAAC,EAAG,CAAA,aAAA,IAAiB,GAAG,aAAkB,KAAA,MAAA;AAAA,MAC1D,gBAAkB,EAAA,IAAA;AAAA,KACpB;AAAA,IACA,cAAgB,EAAA;AAAA,MACd,IAAM,EAAA,iBAAA;AAAA,MACN,SAAW,EAAA,UAAA;AAAA,KACb;AAAA,IACA,mBAAqB,EAAA;AAAA,MACnB,IAAM,EAAA,iBAAA;AAAA,MACN,aAAe,EAAA,IAAA;AAAA,KACjB;AAAA,GACF,CAAA;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,cAAgB,EAAA,cAAA,CAAA;AAAA,MACd,IAAM,EAAA,UAAA;AAAA,MACN,SAAW,EAAA,gBAAA;AAAA,MACX,YAAc,EAAA,uBAAA;AAAA,MACd,YAAc,EAAA,MAAA;AAAA,MACd,MAAA,EAAQ,CAAC,EACP,KAAA,EAAE,GAAG,aAAkB,KAAA,OAAA,IAAW,GAAG,aAAkB,KAAA,QAAA,CAAA;AAAA,KAAA,EACtD,aAAa,MAAO,CAAA,cAAA,CAAA;AAAA,IAEzB,eAAiB,EAAA,cAAA,CAAA;AAAA,MACf,IAAM,EAAA,UAAA;AAAA,MACN,SAAW,EAAA,iBAAA;AAAA,MACX,YAAc,EAAA,uBAAA;AAAA,MACd,YAAc,EAAA,OAAA;AAAA,MACd,MAAQ,EAAA,CAAC,EAAO,KAAA,EAAE,GAAG,aAAkB,KAAA,UAAA,CAAA;AAAA,KAAA,EACpC,aAAa,MAAO,CAAA,eAAA,CAAA;AAAA,IAEzB,WAAa,EAAA,cAAA,CAAA;AAAA,MACX,IAAM,EAAA,UAAA;AAAA,MACN,YAAc,EAAA,uBAAA;AAAA,MACd,YAAc,EAAA,QAAA;AAAA,MACd,MAAA,EAAQ,CAAC,EACP,KAAA,EAAE,GAAG,aAAkB,KAAA,OAAA,IAAW,GAAG,aAAkB,KAAA,QAAA,CAAA;AAAA,KAAA,EACtD,aAAa,MAAO,CAAA,WAAA,CAAA;AAAA,IAEzB,YAAc,EAAA,cAAA,CAAA;AAAA,MACZ,IAAM,EAAA,UAAA;AAAA,MACN,YAAc,EAAA,uBAAA;AAAA,MACd,YAAc,EAAA,OAAA;AAAA,MACd,MAAQ,EAAA,CAAC,EAAO,KAAA,EAAE,GAAG,aAAkB,KAAA,UAAA,CAAA;AAAA,KAAA,EACpC,aAAa,MAAO,CAAA,YAAA,CAAA;AAAA,GAE3B;AAAA,EACA,gBAAkB,EAAA;AAAA,IAChB,OAAS,EAAA,YAAA;AAAA,IACT,UAAY,EAAA,cAAA;AAAA,IACZ,UAAY,EAAA,wDAAA;AAAA,GACd;AAAA,EACA,UAAY,EAAA,WAAA;AAAA,EACZ,UAAY,EAAA,wDAAA;AACd,CAAA,CAAA;AAEO,SAAS,kBAAkB,MAAuB,EAAA;AACvD,EAAwBC,6BAAA,CAAA,MAAA,EAAQ,WAAW,aAAa,CAAA,CAAA;AAC1D;;;;;;;"}
|
|
@@ -5,16 +5,16 @@ export default RichTable;
|
|
|
5
5
|
export declare const tableHelpers: {
|
|
6
6
|
states: {
|
|
7
7
|
selectedRow: {
|
|
8
|
-
onChangeArgsToValue: (
|
|
8
|
+
onChangeArgsToValue: (_rowKeys: string[], rows: any[]) => any;
|
|
9
9
|
};
|
|
10
10
|
selectedRows: {
|
|
11
|
-
onChangeArgsToValue: (
|
|
11
|
+
onChangeArgsToValue: (_rowKeys: string[], rows: any[]) => any[];
|
|
12
12
|
};
|
|
13
13
|
selectedRowKey: {
|
|
14
|
-
onChangeArgsToValue: (rowKeys: string[],
|
|
14
|
+
onChangeArgsToValue: (rowKeys: string[], _rows: any[]) => string;
|
|
15
15
|
};
|
|
16
16
|
selectedRowKeys: {
|
|
17
|
-
onChangeArgsToValue: (rowKeys: string[],
|
|
17
|
+
onChangeArgsToValue: (rowKeys: string[], _rows: any[]) => string[];
|
|
18
18
|
};
|
|
19
19
|
};
|
|
20
20
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as dataProp, o as onRowClickProp, a as rowActionsProp, c as commonProps } from '../common-prop-types-
|
|
2
|
-
import { d as deriveValueType, r as renderValue, b as buildFieldsPropType } from '../formatting-
|
|
1
|
+
import { d as dataProp, o as onRowClickProp, a as rowActionsProp, c as commonProps } from '../common-prop-types-82f3a4ed.esm.js';
|
|
2
|
+
import { d as deriveValueType, r as renderValue, b as buildFieldsPropType } from '../formatting-6f22c9d6.esm.js';
|
|
3
3
|
import { E as ErrorBoundary, g as isInteractable, d as mkShortId, r as registerComponentHelper } from '../utils-c32bd7ed.esm.js';
|
|
4
4
|
import { PlusOutlined, EllipsisOutlined } from '@ant-design/icons';
|
|
5
5
|
import { ProTable } from '@ant-design/pro-components';
|
|
@@ -417,22 +417,22 @@ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
|
417
417
|
const tableHelpers = {
|
|
418
418
|
states: {
|
|
419
419
|
selectedRow: {
|
|
420
|
-
onChangeArgsToValue: (
|
|
420
|
+
onChangeArgsToValue: (_rowKeys, rows) => {
|
|
421
421
|
return rows[0];
|
|
422
422
|
}
|
|
423
423
|
},
|
|
424
424
|
selectedRows: {
|
|
425
|
-
onChangeArgsToValue: (
|
|
425
|
+
onChangeArgsToValue: (_rowKeys, rows) => {
|
|
426
426
|
return rows;
|
|
427
427
|
}
|
|
428
428
|
},
|
|
429
429
|
selectedRowKey: {
|
|
430
|
-
onChangeArgsToValue: (rowKeys,
|
|
430
|
+
onChangeArgsToValue: (rowKeys, _rows) => {
|
|
431
431
|
return rowKeys[0];
|
|
432
432
|
}
|
|
433
433
|
},
|
|
434
434
|
selectedRowKeys: {
|
|
435
|
-
onChangeArgsToValue: (rowKeys,
|
|
435
|
+
onChangeArgsToValue: (rowKeys, _rows) => {
|
|
436
436
|
return rowKeys;
|
|
437
437
|
}
|
|
438
438
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../src/rich-table/RichTable.tsx","../../src/rich-table/index.tsx"],"sourcesContent":["import { EllipsisOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport { ActionType, ProColumns, ProTable } from \"@ant-design/pro-components\";\nimport {\n deriveFieldConfigs,\n NormalizedData,\n useNormalizedData,\n} from \"@plasmicapp/data-sources\";\nimport { Button, Dropdown } from \"antd\";\nimport type { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport type { GetRowKey } from \"antd/es/table/interface\";\nimport { createObjectCsvStringifier } from \"csv-writer-browser\";\nimport fastStringify from \"fast-stringify\";\nimport React, { ReactNode, useMemo, useRef } from \"react\";\nimport { useIsClient } from \"../common\";\nimport {\n BaseColumnConfig,\n deriveValueType,\n FieldfulProps,\n RowFunc,\n} from \"../field-mappings\";\nimport {\n deriveKeyOfRow,\n deriveRowKey,\n renderActions,\n RowAction,\n tagDataArray,\n useSortedFilteredData,\n} from \"../field-react-utils\";\nimport { renderValue } from \"../formatting\";\nimport { ErrorBoundary, isInteractable, mkShortId } from \"../utils\";\n\n// Avoid csv-stringify, it doesn't directly work in browser without Buffer polyfill.\n\nexport interface Action {\n type: \"edit\" | \"view\" | \"delete\" | \"custom\";\n label?: string;\n moreMenu?: boolean;\n}\n\nexport interface RichTableProps extends FieldfulProps<TableColumnConfig> {\n defaultSize?: SizeType;\n pagination?: boolean;\n\n canSelectRows?: \"none\" | \"click\" | \"single\" | \"multiple\";\n\n selectedRowKey?: string;\n selectedRowKeys?: string[];\n onRowSelectionChanged?: (rowKeys: string[], rows: any[]) => void;\n onRowClick?: (rowKey: string, row: any, event: React.MouseEvent) => void;\n\n rowKey?: string | GetRowKey<any>;\n rowActions?: RowAction[];\n\n title?: ReactNode;\n\n addHref?: string;\n\n actions?: Action[];\n customActionChildren?: ReactNode;\n\n pageSize?: number;\n\n hideSearch?: boolean;\n hideDensity?: boolean;\n hideColumnPicker?: boolean;\n hideExports?: boolean;\n hideSelectionBar?: boolean;\n\n scopeClassName?: string;\n themeResetClassName?: string;\n}\n\n// In this code, ColumnConfigs are Plasmic, while ColumnDefinitions are Ant.\nexport function RichTable(props: RichTableProps) {\n const {\n className,\n data: rawData = {\n data: [],\n schema: {\n id: \"inferred\",\n fields: [\n {\n id: \"id\",\n type: \"string\",\n readOnly: false,\n },\n ],\n },\n },\n // children,\n pagination = true,\n defaultSize,\n title,\n addHref,\n pageSize = 10,\n hideSearch,\n hideDensity = true,\n hideColumnPicker,\n hideExports,\n hideSelectionBar = true,\n rowKey,\n scopeClassName,\n } = props;\n const isClient = useIsClient();\n\n const normalizedData = useNormalizedData(isClient ? rawData : []);\n\n const data = useMemo(() => {\n if (!normalizedData?.data) {\n return normalizedData;\n }\n return { ...normalizedData, data: tagDataArray(normalizedData.data) };\n }, [normalizedData]);\n\n const { columnDefinitions, normalized } = useColumnDefinitions(data, props);\n\n const actionRef = useRef<ActionType>();\n\n const { finalData, search, setSearch, setSortState } = useSortedFilteredData(\n data,\n normalized\n );\n\n const rowSelectionProps = useRowSelectionProps(data, props);\n\n if (!isClient) {\n return null;\n }\n\n return (\n <div className={`${className} ${scopeClassName ?? \"\"}`}>\n <ErrorBoundary canvasEnvId={(props as any)[\"data-plasmic-canvas-envs\"]}>\n <ProTable\n ErrorBoundary={false}\n rowClassName={\n props.onRowClick || props.canSelectRows === \"click\"\n ? \"plasmic-table-row-clickable\"\n : undefined\n }\n actionRef={actionRef}\n columns={columnDefinitions}\n onChange={(_pagination, _filters, sorter, _extra) => {\n setSortState({ sorter: sorter as any });\n }}\n style={{\n width: \"100%\",\n }}\n cardProps={{\n ghost: true,\n }}\n {...rowSelectionProps}\n dataSource={finalData}\n rowKey={deriveRowKey(data, rowKey)}\n defaultSize={defaultSize}\n editable={{ type: \"multiple\" }}\n search={false}\n options={{\n setting: hideColumnPicker\n ? false\n : {\n listsHeight: 400,\n },\n reload: false,\n density: !hideDensity,\n }}\n pagination={\n pagination\n ? {\n pageSize,\n onChange: (page) => console.log(page),\n showSizeChanger: false,\n }\n : false\n }\n dateFormatter=\"string\"\n headerTitle={title}\n toolbar={{\n search: !hideSearch\n ? {\n value: search,\n onChange: (e) => setSearch(e.target.value),\n onSearch: () => {\n return;\n },\n placeholder: \"Search\",\n }\n : undefined,\n }}\n toolBarRender={() =>\n [\n addHref && (\n <Button\n key=\"button\"\n icon={<PlusOutlined />}\n type=\"primary\"\n href={addHref}\n >\n Add\n </Button>\n ),\n !hideExports && <ExportMenu data={data} />,\n ].filter((x) => !!x)\n }\n />\n </ErrorBoundary>\n {/*Always hide the weird pin left/right buttons for now, which also have render layout issues*/}\n <style\n dangerouslySetInnerHTML={{\n __html: `\n :where(.css-dev-only-do-not-override-1p704s4).ant-pro-table-column-setting-overlay .ant-tree-treenode:hover .ant-pro-table-column-setting-list-item-option {\n display: none;\n }\n .plasmic-table-row-clickable {\n cursor: pointer;\n }\n .ant-pro-table-list-toolbar-right {\n flex-wrap: initial;\n flex-shrink: 0;\n }\n .ant-pro-table, .ant-pro-table > .ant-pro-card, .ant-pro-table .ant-table-wrapper, .ant-pro-table .ant-spin-nested-loading, .ant-pro-table .ant-table-container {\n height: 100%;\n }\n .ant-pro-table .ant-spin-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n .ant-pro-table .ant-table {\n flex-grow: 1;\n min-height: 0;\n }\n .ant-pro-table .ant-pagination {\n flex-shrink: 0;\n }\n .ant-pro-table .ant-table-content {\n overflow: auto !important;\n height: 100%;\n }\n .ant-pro-table > .ant-pro-card > .ant-pro-card-body {\n display: flex;\n flex-direction: column;\n }\n .ant-pro-table .ant-table-wrapper {\n flex-grow: 1;\n min-height: 0;\n }\n .ant-pro-table .ant-table-thead > tr > th, .ant-pro-table .ant-table-thead > tr > td.ant-table-selection-column {\n position: sticky;\n top: 0;\n z-index: 2;\n }\n .ant-pro-table .ant-table-thead > tr > th.ant-table-cell-fix-left, .ant-pro-table .ant-table-thead > tr > th.ant-table-cell-fix-right {\n z-index: 3;\n }\n .ant-pro-table .ant-table-tbody > tr > td {\n z-index: 0;\n }\n .ant-pro-table .ant-table-tbody > tr > td.ant-table-cell-fix-left,.ant-pro-table .ant-table-tbody > tr > td.ant-table-cell-fix-right {\n z-index: 1;\n }\n ${\n scopeClassName && hideSelectionBar\n ? `\n .${scopeClassName} .ant-pro-table-alert {\n display: none;\n }\n `\n : \"\"\n }\n `,\n }}\n />\n </div>\n );\n}\n\ninterface StyleConfig {\n styles: Record<string, any>;\n align: \"left\" | \"center\" | \"right\";\n freeze: \"off\" | \"left\" | \"right\";\n}\n\nconst defaultColumnConfig = (): TableColumnConfig =>\n ({\n key: mkShortId(),\n isEditableExpr: () => false,\n disableSorting: false,\n sortByExpr: undefined,\n isHidden: false,\n formatting: {\n styles: {},\n align: \"left\",\n freeze: \"off\",\n },\n dataType: \"auto\" as const,\n } as const);\n\nexport type TableColumnConfig = BaseColumnConfig & {\n isEditableExpr: RowFunc<boolean>;\n disableSorting: boolean;\n sortByExpr?: RowFunc<any>;\n formatting: StyleConfig;\n};\n\nfunction useColumnDefinitions(\n data: NormalizedData | undefined,\n props: React.ComponentProps<typeof RichTable>\n) {\n const { fields, setControlContextData, rowActions } = props;\n return React.useMemo(() => {\n const schema = data?.schema;\n if (!data || !schema) {\n return { normalized: [], columnDefinitions: [] };\n }\n const { mergedFields, minimalFullLengthFields } =\n deriveFieldConfigs<TableColumnConfig>(fields ?? [], schema, (field) => ({\n ...defaultColumnConfig(),\n ...(field && {\n key: field.id,\n fieldId: field.id,\n title: field.label || field.id,\n expr: (currentItem) => currentItem[field.id],\n }),\n }));\n setControlContextData?.({ ...data, mergedFields, minimalFullLengthFields });\n const normalized = mergedFields;\n const columnDefinitions: ProColumns<any, any>[] = normalized\n .filter((cconfig) => !cconfig.isHidden)\n .map((cconfig, _columnIndex, _columnsArray) => {\n const columnDefinition: ProColumns<any, any> = {\n dataIndex: cconfig.fieldId,\n title: cconfig.title,\n // dataIndex: cconfig,\n key: cconfig.key,\n valueType: deriveValueType(cconfig),\n\n // To come later\n readonly: false,\n sorter: !cconfig.disableSorting,\n copyable: false,\n ellipsis: false,\n tip: undefined,\n formItemProps: {\n rules: [],\n },\n disable: false,\n valueEnum: undefined,\n search: undefined,\n hideInSearch: false,\n renderFormItem: (_, { defaultRender }) => {\n return defaultRender(_);\n },\n\n render: (_value: any, record: any, _rowIndex: any) => {\n return renderValue(record, cconfig);\n },\n };\n\n return columnDefinition;\n });\n const rowKey = props.rowKey;\n if (rowActions && rowActions.length > 0) {\n columnDefinitions.push({\n title: \"Actions\",\n valueType: \"option\",\n key: \"__plasmicActions\",\n fixed: \"right\",\n className: props.themeResetClassName,\n render: (_text, row) => [\n ...renderActions(rowActions, row, data, rowKey),\n ],\n });\n }\n return { normalized, columnDefinitions };\n }, [fields, data, setControlContextData, rowActions]);\n}\n\nfunction useRowSelectionProps(\n data: NormalizedData | undefined,\n props: React.ComponentProps<typeof RichTable>\n): Partial<React.ComponentProps<typeof ProTable>> {\n const {\n canSelectRows,\n selectedRowKey,\n selectedRowKeys,\n onRowSelectionChanged,\n rowKey,\n onRowClick,\n } = props;\n const deriveSelectedRowKeys = () => {\n if (\n !canSelectRows ||\n canSelectRows === \"none\" ||\n !deriveRowKey(data, rowKey)\n ) {\n return [];\n }\n\n if (canSelectRows === \"multiple\") {\n return selectedRowKeys ?? [];\n } else if (selectedRowKey) {\n return [selectedRowKey];\n } else {\n return [];\n }\n };\n\n const rowSelection: React.ComponentProps<typeof ProTable>[\"rowSelection\"] =\n canSelectRows && canSelectRows !== \"none\"\n ? {\n type:\n canSelectRows === \"single\" || canSelectRows === \"click\"\n ? \"radio\"\n : \"checkbox\",\n selectedRowKeys: deriveSelectedRowKeys(),\n onChange: (rowKeys, rows) => {\n onRowSelectionChanged?.(rowKeys as string[], rows);\n },\n alwaysShowAlert: true,\n ...(canSelectRows === \"click\" && {\n renderCell: () => null,\n columnWidth: 0,\n columnTitle: null,\n hideSelectAll: true,\n }),\n }\n : undefined;\n return {\n rowSelection,\n onRow: (row) => ({\n onClick: (event) => {\n const key = deriveKeyOfRow(row, deriveRowKey(data, rowKey));\n if (key != null && !isInteractable(event.target as HTMLElement)) {\n if (canSelectRows === \"click\") {\n onRowSelectionChanged?.([key], [row]);\n }\n onRowClick?.(key, row, event);\n }\n },\n }),\n };\n}\n\nfunction ExportMenu(props: { data: NormalizedData | undefined }) {\n const { data } = props;\n\n return (\n <Dropdown\n key=\"menu\"\n menu={{\n items: [\n {\n label: \"Download as CSV\",\n key: \"csv\",\n onClick: async () => {\n const writer = createObjectCsvStringifier({\n header:\n data?.schema?.fields.map((f) => ({\n id: f.id,\n title: f.id,\n })) ?? [],\n });\n const dataStr =\n writer.getHeaderString() +\n writer.stringifyRecords(data?.data as any);\n\n // const dataStr = stringify(data?.data as any, {\n // columns:\n // tryGetSchema(data)?.fields.map((f) => f.id) ?? [],\n // header: true,\n // });\n\n const filename = \"data.csv\";\n\n // Adapted from https://stackoverflow.com/a/68771795\n const blob = new Blob([dataStr], {\n type: \"text/csv;charset=utf-8;\",\n });\n if ((navigator as any).msSaveBlob) {\n // In case of IE 10+\n (navigator as any).msSaveBlob(blob, filename);\n } else {\n const link = document.createElement(\"a\");\n if (link.download !== undefined) {\n // Browsers that support HTML5 download attribute\n const url = URL.createObjectURL(blob);\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", filename);\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n },\n },\n {\n label: \"Download as JSON\",\n key: \"json\",\n onClick: () => {\n const dataStr = fastStringify(data?.data);\n const dataUri = `data:application/json;charset=utf-8, ${encodeURIComponent(\n dataStr\n )}`;\n\n const exportFileDefaultName = \"data.json\";\n\n const linkElement = document.createElement(\"a\");\n linkElement.setAttribute(\"href\", dataUri);\n linkElement.setAttribute(\"download\", exportFileDefaultName);\n linkElement.click();\n },\n },\n ],\n }}\n >\n <Button>\n <EllipsisOutlined />\n </Button>\n </Dropdown>\n );\n}\n","import { ComponentMeta } from \"@plasmicapp/host/registerComponent\";\nimport {\n commonProps,\n dataProp,\n onRowClickProp,\n rowActionsProp,\n} from \"../common-prop-types\";\nimport { buildFieldsPropType } from \"../field-mappings\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichTable, RichTableProps, TableColumnConfig } from \"./RichTable\";\n\nexport * from \"./RichTable\";\nexport default RichTable;\n\nexport const tableHelpers = {\n states: {\n selectedRow: {\n onChangeArgsToValue: (rowKeys: string[], rows: any[]) => {\n return rows[0];\n },\n },\n selectedRows: {\n onChangeArgsToValue: (rowKeys: string[], rows: any[]) => {\n return rows;\n },\n },\n selectedRowKey: {\n onChangeArgsToValue: (rowKeys: string[], rows: any[]) => {\n return rowKeys[0];\n },\n },\n selectedRowKeys: {\n onChangeArgsToValue: (rowKeys: string[], rows: any[]) => {\n return rowKeys;\n },\n },\n },\n};\n\nconst dataTableMeta: ComponentMeta<RichTableProps> = {\n name: \"hostless-rich-table\",\n displayName: \"Table\",\n defaultStyles: {\n width: \"stretch\",\n padding: \"16px\",\n maxHeight: \"100%\",\n },\n props: {\n data: dataProp(),\n\n fields: buildFieldsPropType<TableColumnConfig, RichTableProps>({\n fieldTypes: {\n disableSorting: {\n type: \"boolean\",\n displayName: \"Disable sorting?\",\n defaultValueHint: false,\n },\n },\n }),\n\n canSelectRows: {\n type: \"choice\",\n displayName: \"Select rows?\",\n options: [\n { label: \"No\", value: \"none\" },\n { label: \"By clicking a row\", value: \"click\" },\n { label: \"Using radio buttons\", value: \"single\" },\n { label: \"Using checkboxes\", value: \"multiple\" },\n ],\n defaultValueHint: \"none\",\n description:\n \"Lets user select table rows by clicking on a row, or using radio buttons, or checkboxes if multiple rows can be selected together. If you have interactive elements in your row and you don't want clicking on them to select the row, you may use radio buttons instead.\",\n },\n\n rowKey: {\n type: \"string\",\n displayName: \"Row key\",\n helpText:\n \"Column key to use as row key; can also be a function that takes in a row and returns a key value\",\n hidden: (ps) => !ps.canSelectRows || ps.canSelectRows === \"none\",\n },\n\n selectedRowKey: {\n type: \"string\",\n displayName: \"Selected Row Key\",\n hidden: (ps) =>\n ps.canSelectRows !== \"single\" && ps.canSelectRows !== \"click\",\n advanced: true,\n },\n selectedRowKeys: {\n type: \"array\",\n displayName: \"Selected Row Keys\",\n hidden: (ps) => ps.canSelectRows !== \"multiple\",\n advanced: true,\n },\n onRowSelectionChanged: {\n type: \"eventHandler\",\n displayName: \"On row selection changed\",\n argTypes: [\n { name: \"rowKeys\", type: \"object\" },\n { name: \"rows\", type: \"object\" },\n ],\n },\n\n onRowClick: onRowClickProp(),\n\n rowActions: rowActionsProp(),\n\n defaultSize: {\n displayName: \"Density\",\n type: \"choice\",\n options: [\n {\n value: \"large\",\n label: \"Larger\",\n },\n {\n value: \"middle\",\n label: \"Medium\",\n },\n {\n value: \"small\",\n label: \"Compact\",\n },\n ],\n defaultValueHint: \"large\",\n advanced: true,\n },\n\n ...commonProps(),\n\n hideExports: {\n type: \"boolean\",\n description: \"Hides the button for exporting table data to CSV\",\n advanced: true,\n },\n\n hideDensity: {\n type: \"boolean\",\n description: \"Hides the control for changing the density of the table\",\n advanced: true,\n defaultValueHint: true,\n },\n\n hideColumnPicker: {\n type: \"boolean\",\n description: \"Hides the control for reordering and pinning columns\",\n advanced: true,\n },\n\n hideSelectionBar: {\n type: \"boolean\",\n description: \"Hides the toolbar that allows the user to clear selection\",\n advanced: true,\n hidden: (ps) => !ps.canSelectRows || ps.canSelectRows === \"none\",\n defaultValueHint: true,\n },\n scopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"instance\",\n } as any,\n themeResetClassName: {\n type: \"themeResetClass\",\n targetAllTags: true,\n },\n },\n states: {\n selectedRowKey: {\n type: \"writable\",\n valueProp: \"selectedRowKey\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"text\",\n hidden: (ps) =>\n !(ps.canSelectRows === \"click\" || ps.canSelectRows === \"single\"),\n ...tableHelpers.states.selectedRowKey,\n },\n selectedRowKeys: {\n type: \"writable\",\n valueProp: \"selectedRowKeys\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"array\",\n hidden: (ps) => !(ps.canSelectRows === \"multiple\"),\n ...tableHelpers.states.selectedRowKeys,\n },\n selectedRow: {\n type: \"readonly\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"object\",\n hidden: (ps) =>\n !(ps.canSelectRows === \"click\" || ps.canSelectRows === \"single\"),\n ...tableHelpers.states.selectedRow,\n },\n selectedRows: {\n type: \"readonly\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"array\",\n hidden: (ps) => !(ps.canSelectRows === \"multiple\"),\n ...tableHelpers.states.selectedRows,\n },\n },\n componentHelpers: {\n helpers: tableHelpers,\n importName: \"tableHelpers\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-table\",\n },\n importName: \"RichTable\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-table\",\n};\n\nexport function registerRichTable(loader?: Registerable) {\n registerComponentHelper(loader, RichTable, dataTableMeta);\n}\n"],"names":["__spreadProps","__spreadValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../src/rich-table/RichTable.tsx","../../src/rich-table/index.tsx"],"sourcesContent":["import { EllipsisOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport { ActionType, ProColumns, ProTable } from \"@ant-design/pro-components\";\nimport {\n deriveFieldConfigs,\n NormalizedData,\n useNormalizedData,\n} from \"@plasmicapp/data-sources\";\nimport { Button, Dropdown } from \"antd\";\nimport type { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport type { GetRowKey } from \"antd/es/table/interface\";\nimport { createObjectCsvStringifier } from \"csv-writer-browser\";\nimport fastStringify from \"fast-stringify\";\nimport React, { ReactNode, useMemo, useRef } from \"react\";\nimport { useIsClient } from \"../common\";\nimport {\n BaseColumnConfig,\n deriveValueType,\n FieldfulProps,\n RowFunc,\n} from \"../field-mappings\";\nimport {\n deriveKeyOfRow,\n deriveRowKey,\n renderActions,\n RowAction,\n tagDataArray,\n useSortedFilteredData,\n} from \"../field-react-utils\";\nimport { renderValue } from \"../formatting\";\nimport { ErrorBoundary, isInteractable, mkShortId } from \"../utils\";\n\n// Avoid csv-stringify, it doesn't directly work in browser without Buffer polyfill.\n\nexport interface Action {\n type: \"edit\" | \"view\" | \"delete\" | \"custom\";\n label?: string;\n moreMenu?: boolean;\n}\n\nexport interface RichTableProps extends FieldfulProps<TableColumnConfig> {\n defaultSize?: SizeType;\n pagination?: boolean;\n\n canSelectRows?: \"none\" | \"click\" | \"single\" | \"multiple\";\n\n selectedRowKey?: string;\n selectedRowKeys?: string[];\n onRowSelectionChanged?: (rowKeys: string[], rows: any[]) => void;\n onRowClick?: (rowKey: string, row: any, event: React.MouseEvent) => void;\n\n rowKey?: string | GetRowKey<any>;\n rowActions?: RowAction[];\n\n title?: ReactNode;\n\n addHref?: string;\n\n actions?: Action[];\n customActionChildren?: ReactNode;\n\n pageSize?: number;\n\n hideSearch?: boolean;\n hideDensity?: boolean;\n hideColumnPicker?: boolean;\n hideExports?: boolean;\n hideSelectionBar?: boolean;\n\n scopeClassName?: string;\n themeResetClassName?: string;\n}\n\n// In this code, ColumnConfigs are Plasmic, while ColumnDefinitions are Ant.\nexport function RichTable(props: RichTableProps) {\n const {\n className,\n data: rawData = {\n data: [],\n schema: {\n id: \"inferred\",\n fields: [\n {\n id: \"id\",\n type: \"string\",\n readOnly: false,\n },\n ],\n },\n },\n // children,\n pagination = true,\n defaultSize,\n title,\n addHref,\n pageSize = 10,\n hideSearch,\n hideDensity = true,\n hideColumnPicker,\n hideExports,\n hideSelectionBar = true,\n rowKey,\n scopeClassName,\n } = props;\n const isClient = useIsClient();\n\n const normalizedData = useNormalizedData(isClient ? rawData : []);\n\n const data = useMemo(() => {\n if (!normalizedData?.data) {\n return normalizedData;\n }\n return { ...normalizedData, data: tagDataArray(normalizedData.data) };\n }, [normalizedData]);\n\n const { columnDefinitions, normalized } = useColumnDefinitions(data, props);\n\n const actionRef = useRef<ActionType>();\n\n const { finalData, search, setSearch, setSortState } = useSortedFilteredData(\n data,\n normalized\n );\n\n const rowSelectionProps = useRowSelectionProps(data, props);\n\n if (!isClient) {\n return null;\n }\n\n return (\n <div className={`${className} ${scopeClassName ?? \"\"}`}>\n <ErrorBoundary canvasEnvId={(props as any)[\"data-plasmic-canvas-envs\"]}>\n <ProTable\n ErrorBoundary={false}\n rowClassName={\n props.onRowClick || props.canSelectRows === \"click\"\n ? \"plasmic-table-row-clickable\"\n : undefined\n }\n actionRef={actionRef}\n columns={columnDefinitions}\n onChange={(_pagination, _filters, sorter, _extra) => {\n setSortState({ sorter: sorter as any });\n }}\n style={{\n width: \"100%\",\n }}\n cardProps={{\n ghost: true,\n }}\n {...rowSelectionProps}\n dataSource={finalData}\n rowKey={deriveRowKey(data, rowKey)}\n defaultSize={defaultSize}\n editable={{ type: \"multiple\" }}\n search={false}\n options={{\n setting: hideColumnPicker\n ? false\n : {\n listsHeight: 400,\n },\n reload: false,\n density: !hideDensity,\n }}\n pagination={\n pagination\n ? {\n pageSize,\n onChange: (page) => console.log(page),\n showSizeChanger: false,\n }\n : false\n }\n dateFormatter=\"string\"\n headerTitle={title}\n toolbar={{\n search: !hideSearch\n ? {\n value: search,\n onChange: (e) => setSearch(e.target.value),\n onSearch: () => {\n return;\n },\n placeholder: \"Search\",\n }\n : undefined,\n }}\n toolBarRender={() =>\n [\n addHref && (\n <Button\n key=\"button\"\n icon={<PlusOutlined />}\n type=\"primary\"\n href={addHref}\n >\n Add\n </Button>\n ),\n !hideExports && <ExportMenu data={data} />,\n ].filter((x) => !!x)\n }\n />\n </ErrorBoundary>\n {/*Always hide the weird pin left/right buttons for now, which also have render layout issues*/}\n <style\n dangerouslySetInnerHTML={{\n __html: `\n :where(.css-dev-only-do-not-override-1p704s4).ant-pro-table-column-setting-overlay .ant-tree-treenode:hover .ant-pro-table-column-setting-list-item-option {\n display: none;\n }\n .plasmic-table-row-clickable {\n cursor: pointer;\n }\n .ant-pro-table-list-toolbar-right {\n flex-wrap: initial;\n flex-shrink: 0;\n }\n .ant-pro-table, .ant-pro-table > .ant-pro-card, .ant-pro-table .ant-table-wrapper, .ant-pro-table .ant-spin-nested-loading, .ant-pro-table .ant-table-container {\n height: 100%;\n }\n .ant-pro-table .ant-spin-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n .ant-pro-table .ant-table {\n flex-grow: 1;\n min-height: 0;\n }\n .ant-pro-table .ant-pagination {\n flex-shrink: 0;\n }\n .ant-pro-table .ant-table-content {\n overflow: auto !important;\n height: 100%;\n }\n .ant-pro-table > .ant-pro-card > .ant-pro-card-body {\n display: flex;\n flex-direction: column;\n }\n .ant-pro-table .ant-table-wrapper {\n flex-grow: 1;\n min-height: 0;\n }\n .ant-pro-table .ant-table-thead > tr > th, .ant-pro-table .ant-table-thead > tr > td.ant-table-selection-column {\n position: sticky;\n top: 0;\n z-index: 2;\n }\n .ant-pro-table .ant-table-thead > tr > th.ant-table-cell-fix-left, .ant-pro-table .ant-table-thead > tr > th.ant-table-cell-fix-right {\n z-index: 3;\n }\n .ant-pro-table .ant-table-tbody > tr > td {\n z-index: 0;\n }\n .ant-pro-table .ant-table-tbody > tr > td.ant-table-cell-fix-left,.ant-pro-table .ant-table-tbody > tr > td.ant-table-cell-fix-right {\n z-index: 1;\n }\n ${\n scopeClassName && hideSelectionBar\n ? `\n .${scopeClassName} .ant-pro-table-alert {\n display: none;\n }\n `\n : \"\"\n }\n `,\n }}\n />\n </div>\n );\n}\n\ninterface StyleConfig {\n styles: Record<string, any>;\n align: \"left\" | \"center\" | \"right\";\n freeze: \"off\" | \"left\" | \"right\";\n}\n\nconst defaultColumnConfig = (): TableColumnConfig =>\n ({\n key: mkShortId(),\n isEditableExpr: () => false,\n disableSorting: false,\n sortByExpr: undefined,\n isHidden: false,\n formatting: {\n styles: {},\n align: \"left\",\n freeze: \"off\",\n },\n dataType: \"auto\" as const,\n } as const);\n\nexport type TableColumnConfig = BaseColumnConfig & {\n isEditableExpr: RowFunc<boolean>;\n disableSorting: boolean;\n sortByExpr?: RowFunc<any>;\n formatting: StyleConfig;\n};\n\nfunction useColumnDefinitions(\n data: NormalizedData | undefined,\n props: React.ComponentProps<typeof RichTable>\n) {\n const { fields, setControlContextData, rowActions } = props;\n return React.useMemo(() => {\n const schema = data?.schema;\n if (!data || !schema) {\n return { normalized: [], columnDefinitions: [] };\n }\n const { mergedFields, minimalFullLengthFields } =\n deriveFieldConfigs<TableColumnConfig>(fields ?? [], schema, (field) => ({\n ...defaultColumnConfig(),\n ...(field && {\n key: field.id,\n fieldId: field.id,\n title: field.label || field.id,\n expr: (currentItem) => currentItem[field.id],\n }),\n }));\n setControlContextData?.({ ...data, mergedFields, minimalFullLengthFields });\n const normalized = mergedFields;\n const columnDefinitions: ProColumns<any, any>[] = normalized\n .filter((cconfig) => !cconfig.isHidden)\n .map((cconfig, _columnIndex, _columnsArray) => {\n const columnDefinition: ProColumns<any, any> = {\n dataIndex: cconfig.fieldId,\n title: cconfig.title,\n // dataIndex: cconfig,\n key: cconfig.key,\n valueType: deriveValueType(cconfig),\n\n // To come later\n readonly: false,\n sorter: !cconfig.disableSorting,\n copyable: false,\n ellipsis: false,\n tip: undefined,\n formItemProps: {\n rules: [],\n },\n disable: false,\n valueEnum: undefined,\n search: undefined,\n hideInSearch: false,\n renderFormItem: (_, { defaultRender }) => {\n return defaultRender(_);\n },\n\n render: (_value: any, record: any, _rowIndex: any) => {\n return renderValue(record, cconfig);\n },\n };\n\n return columnDefinition;\n });\n const rowKey = props.rowKey;\n if (rowActions && rowActions.length > 0) {\n columnDefinitions.push({\n title: \"Actions\",\n valueType: \"option\",\n key: \"__plasmicActions\",\n fixed: \"right\",\n className: props.themeResetClassName,\n render: (_text, row) => [\n ...renderActions(rowActions, row, data, rowKey),\n ],\n });\n }\n return { normalized, columnDefinitions };\n }, [fields, data, setControlContextData, rowActions]);\n}\n\nfunction useRowSelectionProps(\n data: NormalizedData | undefined,\n props: React.ComponentProps<typeof RichTable>\n): Partial<React.ComponentProps<typeof ProTable>> {\n const {\n canSelectRows,\n selectedRowKey,\n selectedRowKeys,\n onRowSelectionChanged,\n rowKey,\n onRowClick,\n } = props;\n const deriveSelectedRowKeys = () => {\n if (\n !canSelectRows ||\n canSelectRows === \"none\" ||\n !deriveRowKey(data, rowKey)\n ) {\n return [];\n }\n\n if (canSelectRows === \"multiple\") {\n return selectedRowKeys ?? [];\n } else if (selectedRowKey) {\n return [selectedRowKey];\n } else {\n return [];\n }\n };\n\n const rowSelection: React.ComponentProps<typeof ProTable>[\"rowSelection\"] =\n canSelectRows && canSelectRows !== \"none\"\n ? {\n type:\n canSelectRows === \"single\" || canSelectRows === \"click\"\n ? \"radio\"\n : \"checkbox\",\n selectedRowKeys: deriveSelectedRowKeys(),\n onChange: (rowKeys, rows) => {\n onRowSelectionChanged?.(rowKeys as string[], rows);\n },\n alwaysShowAlert: true,\n ...(canSelectRows === \"click\" && {\n renderCell: () => null,\n columnWidth: 0,\n columnTitle: null,\n hideSelectAll: true,\n }),\n }\n : undefined;\n return {\n rowSelection,\n onRow: (row) => ({\n onClick: (event) => {\n const key = deriveKeyOfRow(row, deriveRowKey(data, rowKey));\n if (key != null && !isInteractable(event.target as HTMLElement)) {\n if (canSelectRows === \"click\") {\n onRowSelectionChanged?.([key], [row]);\n }\n onRowClick?.(key, row, event);\n }\n },\n }),\n };\n}\n\nfunction ExportMenu(props: { data: NormalizedData | undefined }) {\n const { data } = props;\n\n return (\n <Dropdown\n key=\"menu\"\n menu={{\n items: [\n {\n label: \"Download as CSV\",\n key: \"csv\",\n onClick: async () => {\n const writer = createObjectCsvStringifier({\n header:\n data?.schema?.fields.map((f) => ({\n id: f.id,\n title: f.id,\n })) ?? [],\n });\n const dataStr =\n writer.getHeaderString() +\n writer.stringifyRecords(data?.data as any);\n\n // const dataStr = stringify(data?.data as any, {\n // columns:\n // tryGetSchema(data)?.fields.map((f) => f.id) ?? [],\n // header: true,\n // });\n\n const filename = \"data.csv\";\n\n // Adapted from https://stackoverflow.com/a/68771795\n const blob = new Blob([dataStr], {\n type: \"text/csv;charset=utf-8;\",\n });\n if ((navigator as any).msSaveBlob) {\n // In case of IE 10+\n (navigator as any).msSaveBlob(blob, filename);\n } else {\n const link = document.createElement(\"a\");\n if (link.download !== undefined) {\n // Browsers that support HTML5 download attribute\n const url = URL.createObjectURL(blob);\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", filename);\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n },\n },\n {\n label: \"Download as JSON\",\n key: \"json\",\n onClick: () => {\n const dataStr = fastStringify(data?.data);\n const dataUri = `data:application/json;charset=utf-8, ${encodeURIComponent(\n dataStr\n )}`;\n\n const exportFileDefaultName = \"data.json\";\n\n const linkElement = document.createElement(\"a\");\n linkElement.setAttribute(\"href\", dataUri);\n linkElement.setAttribute(\"download\", exportFileDefaultName);\n linkElement.click();\n },\n },\n ],\n }}\n >\n <Button>\n <EllipsisOutlined />\n </Button>\n </Dropdown>\n );\n}\n","import { CodeComponentMeta } from \"@plasmicapp/host\";\nimport {\n commonProps,\n dataProp,\n onRowClickProp,\n rowActionsProp,\n} from \"../common-prop-types\";\nimport { buildFieldsPropType } from \"../field-mappings\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichTable, RichTableProps, TableColumnConfig } from \"./RichTable\";\n\nexport * from \"./RichTable\";\nexport default RichTable;\n\nexport const tableHelpers = {\n states: {\n selectedRow: {\n onChangeArgsToValue: (_rowKeys: string[], rows: any[]) => {\n return rows[0];\n },\n },\n selectedRows: {\n onChangeArgsToValue: (_rowKeys: string[], rows: any[]) => {\n return rows;\n },\n },\n selectedRowKey: {\n onChangeArgsToValue: (rowKeys: string[], _rows: any[]) => {\n return rowKeys[0];\n },\n },\n selectedRowKeys: {\n onChangeArgsToValue: (rowKeys: string[], _rows: any[]) => {\n return rowKeys;\n },\n },\n },\n};\n\nconst dataTableMeta: CodeComponentMeta<RichTableProps> = {\n name: \"hostless-rich-table\",\n displayName: \"Table\",\n defaultStyles: {\n width: \"stretch\",\n padding: \"16px\",\n maxHeight: \"100%\",\n },\n props: {\n data: dataProp(),\n\n fields: buildFieldsPropType<TableColumnConfig, RichTableProps>({\n fieldTypes: {\n disableSorting: {\n type: \"boolean\",\n displayName: \"Disable sorting?\",\n defaultValueHint: false,\n },\n },\n }),\n\n canSelectRows: {\n type: \"choice\",\n displayName: \"Select rows?\",\n options: [\n { label: \"No\", value: \"none\" },\n { label: \"By clicking a row\", value: \"click\" },\n { label: \"Using radio buttons\", value: \"single\" },\n { label: \"Using checkboxes\", value: \"multiple\" },\n ],\n defaultValueHint: \"none\",\n description:\n \"Lets user select table rows by clicking on a row, or using radio buttons, or checkboxes if multiple rows can be selected together. If you have interactive elements in your row and you don't want clicking on them to select the row, you may use radio buttons instead.\",\n },\n\n rowKey: {\n type: \"string\",\n displayName: \"Row key\",\n helpText:\n \"Column key to use as row key; can also be a function that takes in a row and returns a key value\",\n hidden: (ps) => !ps.canSelectRows || ps.canSelectRows === \"none\",\n },\n\n selectedRowKey: {\n type: \"string\",\n displayName: \"Selected Row Key\",\n hidden: (ps) =>\n ps.canSelectRows !== \"single\" && ps.canSelectRows !== \"click\",\n advanced: true,\n },\n selectedRowKeys: {\n type: \"array\",\n displayName: \"Selected Row Keys\",\n hidden: (ps) => ps.canSelectRows !== \"multiple\",\n advanced: true,\n },\n onRowSelectionChanged: {\n type: \"eventHandler\",\n displayName: \"On row selection changed\",\n argTypes: [\n { name: \"rowKeys\", type: \"object\" },\n { name: \"rows\", type: \"object\" },\n ],\n },\n\n onRowClick: onRowClickProp(),\n\n rowActions: rowActionsProp(),\n\n defaultSize: {\n displayName: \"Density\",\n type: \"choice\",\n options: [\n {\n value: \"large\",\n label: \"Larger\",\n },\n {\n value: \"middle\",\n label: \"Medium\",\n },\n {\n value: \"small\",\n label: \"Compact\",\n },\n ],\n defaultValueHint: \"large\",\n advanced: true,\n },\n\n ...commonProps(),\n\n hideExports: {\n type: \"boolean\",\n description: \"Hides the button for exporting table data to CSV\",\n advanced: true,\n },\n\n hideDensity: {\n type: \"boolean\",\n description: \"Hides the control for changing the density of the table\",\n advanced: true,\n defaultValueHint: true,\n },\n\n hideColumnPicker: {\n type: \"boolean\",\n description: \"Hides the control for reordering and pinning columns\",\n advanced: true,\n },\n\n hideSelectionBar: {\n type: \"boolean\",\n description: \"Hides the toolbar that allows the user to clear selection\",\n advanced: true,\n hidden: (ps) => !ps.canSelectRows || ps.canSelectRows === \"none\",\n defaultValueHint: true,\n },\n scopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"instance\",\n } as any,\n themeResetClassName: {\n type: \"themeResetClass\",\n targetAllTags: true,\n },\n },\n states: {\n selectedRowKey: {\n type: \"writable\",\n valueProp: \"selectedRowKey\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"text\",\n hidden: (ps) =>\n !(ps.canSelectRows === \"click\" || ps.canSelectRows === \"single\"),\n ...tableHelpers.states.selectedRowKey,\n },\n selectedRowKeys: {\n type: \"writable\",\n valueProp: \"selectedRowKeys\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"array\",\n hidden: (ps) => !(ps.canSelectRows === \"multiple\"),\n ...tableHelpers.states.selectedRowKeys,\n },\n selectedRow: {\n type: \"readonly\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"object\",\n hidden: (ps) =>\n !(ps.canSelectRows === \"click\" || ps.canSelectRows === \"single\"),\n ...tableHelpers.states.selectedRow,\n },\n selectedRows: {\n type: \"readonly\",\n onChangeProp: \"onRowSelectionChanged\",\n variableType: \"array\",\n hidden: (ps) => !(ps.canSelectRows === \"multiple\"),\n ...tableHelpers.states.selectedRows,\n },\n },\n componentHelpers: {\n helpers: tableHelpers,\n importName: \"tableHelpers\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-table\",\n },\n importName: \"RichTable\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-table\",\n};\n\nexport function registerRichTable(loader?: Registerable) {\n registerComponentHelper(loader, RichTable, dataTableMeta);\n}\n"],"names":["__spreadProps","__spreadValues"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatting-0acc57f5.esm.js","sources":["../src/field-mappings.tsx","../src/formatting.tsx"],"sourcesContent":["import { QueryResult, TableSchema } from \"@plasmicapp/data-sources\";\nimport { ContextDependentConfig } from \"@plasmicapp/host\";\nimport { PropType } from \"@plasmicapp/host/registerComponent\";\nimport deepGet from \"lodash/get\";\nimport { isOneOf, withoutFalsey } from \"./utils\";\n\nexport interface AutoSettings {\n dataType: \"auto\";\n}\n\ninterface _SharedNumberSettings {\n notation?: \"standard\" | \"scientific\" | \"engineering\" | \"compact\";\n signDisplay?: \"auto\" | \"always\" | \"exceptZero\";\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n locale?: string;\n}\nexport interface DecimalSettings extends _SharedNumberSettings {\n dataType: \"number\";\n}\nexport interface PercentSettings extends _SharedNumberSettings {\n dataType: \"percent\";\n}\nexport interface CurrencySettings extends _SharedNumberSettings {\n dataType: \"currency\";\n currency?: string;\n currencyDisplay?: \"symbol\" | \"narrowSymbol\" | \"code\" | \"name\";\n}\nexport const DEFAULT_CURRENCY_SETTINGS: CurrencySettings = {\n dataType: \"currency\",\n currency: \"USD\",\n currencyDisplay: \"narrowSymbol\",\n};\n\nexport type NumberSettings =\n | DecimalSettings\n | PercentSettings\n | CurrencySettings;\nexport const NUMBER_TYPES = [\"number\", \"percent\", \"currency\"] as const;\n\nexport interface DateTimeSettings {\n dataType: \"datetime\";\n locale?: string;\n dateStyle?: \"none\" | \"full\" | \"long\" | \"medium\" | \"short\";\n timeStyle?: \"none\" | \"full\" | \"long\" | \"medium\" | \"short\";\n hour12?: boolean;\n timeZone?: string;\n}\nexport const DEFAULT_DATETIME_SETTINGS: DateTimeSettings = {\n dataType: \"datetime\",\n locale: \"en-US\",\n dateStyle: \"short\",\n timeStyle: \"short\",\n hour12: true,\n};\n\nexport interface RelativeDateTimeSettings {\n dataType: \"relative-datetime\";\n locale?: string;\n numeric?: \"always\" | \"auto\";\n style?: \"long\" | \"short\" | \"narrow\";\n unit?: \"year\" | \"month\" | \"week\" | \"day\" | \"hour\" | \"minute\" | \"second\";\n}\nexport const DEFAULT_RELATIVE_DATETIME_SETTINGS: RelativeDateTimeSettings = {\n dataType: \"relative-datetime\",\n locale: \"en-US\",\n numeric: \"always\",\n style: \"long\",\n unit: \"day\",\n};\nexport const DATETIME_TYPES = [\"datetime\", \"relative-datetime\"] as const;\n\nexport interface BooleanSettings {\n dataType: \"boolean\";\n showAs?: \"text\" | \"checkbox\" | \"switch\";\n}\nexport const DEFAULT_BOOLEAN_SETTINGS: BooleanSettings = {\n dataType: \"boolean\",\n showAs: \"checkbox\",\n};\n\nexport interface StringSettings {\n dataType: \"string\";\n}\n\nexport type RowFunc<Result> = (row: Record<string, unknown>) => Result;\nexport type CellFunc<Result> = (\n row: Record<string, unknown>,\n value: unknown\n) => Result;\n\n/**\n * Exprs are for things that can must re-evaluate from row to row.\n *\n * Literal values are for things that are column-level. (But in Plasmic Studio, as with all props, you can still use a dynamic value.)\n */\n\ninterface _BaseColumnConfig {\n key: string;\n fieldId?: string;\n title?: string;\n isHidden: boolean;\n expr?: CellFunc<any>;\n}\n\nexport type BaseColumnConfig = _BaseColumnConfig &\n (\n | AutoSettings\n | NumberSettings\n | StringSettings\n | BooleanSettings\n | DateTimeSettings\n | RelativeDateTimeSettings\n );\n\nexport function deriveValueType(cconfig: BaseColumnConfig) {\n return cconfig.dataType === \"auto\"\n ? undefined\n : cconfig.dataType === \"string\"\n ? \"text\"\n : cconfig.dataType === \"number\"\n ? \"digit\"\n : cconfig.dataType === \"boolean\"\n ? \"switch\"\n : undefined;\n}\n\nexport interface ControlContextData<ColumnConfig extends BaseColumnConfig> {\n data: unknown[];\n schema?: TableSchema;\n mergedFields: ColumnConfig[];\n minimalFullLengthFields: Partial<ColumnConfig>[];\n}\n\nexport interface FieldfulProps<ColumnConfig extends BaseColumnConfig> {\n className?: string;\n data?: QueryResult;\n fields?: Partial<ColumnConfig>[];\n setControlContextData?: (ctx: ControlContextData<ColumnConfig>) => void;\n}\n\n// Hacky \"unique\" string values\nexport const NoneField = \"||NoneField||\";\nexport const CustomField = \"\";\n\ninterface FieldSubpropsOpts<ColumnConfig extends BaseColumnConfig> {\n fieldTypes?: Record<string, PropType<any>>;\n canChangeField?: boolean;\n canPickNoneField?: boolean;\n noTitle?: boolean;\n noDataType?: boolean;\n hiddenFieldId?: (\n ps: Record<string, unknown>,\n ctx: ControlContextData<ColumnConfig>,\n extras: { path: (string | number)[] }\n ) => boolean;\n}\n\nexport function getFieldSubprops<ColumnConfig extends BaseColumnConfig>(\n opts: FieldSubpropsOpts<ColumnConfig>\n): Record<string, PropType<any>> {\n return {\n key: {\n type: \"string\",\n hidden: () => true,\n },\n fieldId: {\n type: \"choice\",\n displayName: \"Field name\",\n readOnly: !opts.canChangeField,\n options: (_props, ctx: ControlContextData<BaseColumnConfig>) =>\n withoutFalsey([\n opts.canPickNoneField && { value: NoneField, label: \"None\" },\n ...(ctx?.schema?.fields ?? []).map((f) => ({\n value: f.id,\n label: f.label ?? f.id,\n })),\n { value: CustomField, label: \"Custom value\" },\n ]),\n hidden: (\n ps,\n ctx: ControlContextData<ColumnConfig>,\n { path: _controlPath }\n ) => {\n // If this is change-able.\n if (opts.canChangeField) {\n return false;\n }\n return true;\n // If there's a user-set fieldId\n if (deepGet(ps, _controlPath)) {\n return false;\n }\n return opts.hiddenFieldId?.(ps, ctx, { path: _controlPath }) ?? true;\n },\n },\n title: {\n type: \"string\",\n displayName: \"Title\",\n defaultValueHint: getDefaultValueHint(\"title\"),\n hidden: () => !!opts.noTitle,\n },\n expr: {\n ...rowDataType(\"Custom value\"),\n hidden: (\n ps,\n ctx: ControlContextData<BaseColumnConfig>,\n { item, path: _controlPath }\n ) => {\n return false;\n // HIDE if this is unset.\n if (!item) {\n return true;\n }\n // SHOW if this is change-able *and* user chose \"Custom\".\n if (opts.canChangeField) {\n return false;\n }\n return true;\n },\n },\n isHidden: {\n type: \"boolean\",\n displayName: \"Is hidden\",\n defaultValueHint: getDefaultValueHint(\"isHidden\"),\n },\n ...(!opts.noDataType\n ? {\n dataType: {\n type: \"choice\",\n displayName: \"Data type\",\n options: [\n {\n value: \"auto\",\n label: \"Auto\",\n },\n {\n value: \"number\",\n label: \"Number\",\n },\n {\n value: \"percent\",\n label: \"Percentage\",\n },\n {\n value: \"currency\",\n label: \"Currency\",\n },\n {\n value: \"string\",\n label: \"String\",\n },\n {\n value: \"boolean\",\n label: \"Boolean\",\n },\n {\n value: \"datetime\",\n label: \"Date / Time\",\n },\n {\n value: \"relative-datetime\",\n label: \"Date / Time relative to now\",\n },\n ],\n defaultValueHint: getDefaultValueHint(\"dataType\"),\n },\n currency: {\n displayName: \"Currency\",\n description: \"Must be a valid currency code\",\n type: \"string\",\n defaultValueHint: \"USD\",\n hidden: (ps, ctx, { item }) => item.dataType !== \"currency\",\n },\n locale: {\n displayName: \"Locale\",\n description: \"Must be a valid locale code\",\n type: \"string\",\n defaultValueHint: \"en-US\",\n hidden: (ps, ctx, { item }) =>\n !isOneOf(item.dataType, NUMBER_TYPES) &&\n !isOneOf(item.dataType, DATETIME_TYPES),\n },\n notation: {\n displayName: \"Notation\",\n type: \"choice\",\n options: [\n {\n value: \"standard\",\n label: \"Standard\",\n },\n {\n value: \"scientific\",\n label: \"Scientific notation (like 1E3)\",\n },\n {\n value: \"compact\",\n label: \"Compact (like 10K)\",\n },\n ],\n defaultValueHint: \"standard\",\n hidden: (ps, ctx, { item }) =>\n !isOneOf(item.dataType, NUMBER_TYPES),\n },\n signDisplay: {\n type: \"choice\",\n displayName: \"Number sign\",\n options: [\n {\n value: \"auto\",\n label: \"Only for negative numbers (10, -10)\",\n },\n {\n value: \"exceptZero\",\n label: \"Positive or negative (+10, -10)\",\n },\n ],\n defaultValueHint: \"auto\",\n hidden: (ps, ctx, { item }) =>\n !isOneOf(item.dataType, NUMBER_TYPES),\n },\n maximumFractionDigits: {\n type: \"number\",\n displayName: \"Max decimal places\",\n defaultValueHint: 3,\n min: 0,\n max: 20,\n hidden: (ps, ctx, { item }) =>\n !isOneOf(item.dataType, NUMBER_TYPES),\n },\n minimumFractionDigits: {\n type: \"number\",\n displayName: \"Min decimal places\",\n defaultValueHint: 0,\n min: 0,\n max: 20,\n hidden: (ps, ctx, { item }) =>\n !isOneOf(item.dataType, NUMBER_TYPES),\n },\n showAs: {\n type: \"choice\",\n options: [\n {\n value: \"checkbox\",\n label: \"Checkboxes\",\n },\n {\n value: \"switch\",\n label: \"Toggle switches\",\n },\n {\n value: \"text\",\n label: \"Text\",\n },\n ],\n displayName: \"Show as\",\n defaultValueHint: \"checkbox\",\n hidden: (ps, ctx, { item }) => item.dataType !== \"boolean\",\n },\n dateStyle: {\n displayName: \"Date style\",\n type: \"choice\",\n options: [\n {\n value: \"none\",\n label: \"None (don't display date)\",\n },\n {\n value: \"short\",\n label: \"Short (like 12/25/2023)\",\n },\n {\n value: \"medium\",\n label: \"Medium (like Dec 25, 2023)\",\n },\n {\n value: \"long\",\n label: \"Long (like December 25, 2023)\",\n },\n {\n value: \"full\",\n label: \"Full (like Monday, December 25, 2023)\",\n },\n ],\n defaultValueHint: DEFAULT_DATETIME_SETTINGS.dateStyle,\n hidden: (ps, ctx, { item }) => item.dataType !== \"datetime\",\n },\n timeStyle: {\n displayName: \"Time style\",\n type: \"choice\",\n options: [\n {\n value: \"none\",\n label: \"None (don't display time)\",\n },\n {\n value: \"short\",\n label: \"Short (like 4:00 PM)\",\n },\n {\n value: \"medium\",\n label: \"Medium (like 4:00:00 PM)\",\n },\n {\n value: \"long\",\n label: \"Long (like 4:00:00 PM PST)\",\n },\n {\n value: \"full\",\n label: \"Full (like 4:00:00 PM Pacific Standard Time)\",\n },\n ],\n defaultValueHint: DEFAULT_DATETIME_SETTINGS.timeStyle,\n hidden: (ps, ctx, { item }) => item.dataType !== \"datetime\",\n },\n hour12: {\n displayName: \"Use AM/PM?\",\n description: \"Whether to use AM/PM or 24-hour clock\",\n type: \"boolean\",\n defaultValueHint: DEFAULT_DATETIME_SETTINGS.hour12,\n hidden: (ps, ctx, { item }) => item.dataType !== \"datetime\",\n },\n numeric: {\n type: \"choice\",\n displayName: \"Use numbers?\",\n options: [\n { value: \"always\", label: \"Always use numbers\" },\n {\n value: \"auto\",\n label: \"Use words like 'Yesterday' or 'Tomorrow'\",\n },\n ],\n defaultValueHint: DEFAULT_RELATIVE_DATETIME_SETTINGS.numeric,\n hidden: (ps, ctx, { item }) =>\n item.dataType !== \"relative-datetime\",\n },\n unit: {\n type: \"choice\",\n displayName: \"Time unit\",\n options: [\n {\n value: \"second\",\n label: \"Seconds\",\n },\n {\n value: \"minute\",\n label: \"Minutes\",\n },\n {\n value: \"hour\",\n label: \"Hours\",\n },\n {\n value: \"day\",\n label: \"Days\",\n },\n {\n value: \"week\",\n label: \"Weeks\",\n },\n {\n value: \"month\",\n label: \"Months\",\n },\n {\n value: \"year\",\n label: \"Years\",\n },\n ],\n defaultValueHint: DEFAULT_RELATIVE_DATETIME_SETTINGS.unit,\n hidden: (ps, ctx, { item }) =>\n item.dataType !== \"relative-datetime\",\n },\n }\n : {}),\n ...opts.fieldTypes,\n };\n}\n\nfunction getDefaultValueHint<ColumnConfig extends BaseColumnConfig>(\n field: keyof ColumnConfig\n) {\n return (\n _props: any,\n contextData: ControlContextData<ColumnConfig> | null,\n { item }: any\n ): any => {\n if (item?.fieldId) {\n const fieldSetting = contextData?.mergedFields.find(\n (f) => f.fieldId === item.fieldId\n );\n return fieldSetting?.[field];\n }\n return undefined;\n };\n}\n\nconst rowDataType = (displayName: string, control?: any) =>\n ({\n type: \"function\" as any,\n displayName,\n control,\n argNames: [\"currentItem\", \"currentValue\"],\n argValues: (_props: any, ctx: any, { item }: any) => {\n const row = ctx?.data?.[0];\n const cell = item.fieldId ? row?.[item.fieldId] : undefined;\n return [row, cell];\n },\n } as any);\n\nexport function buildFieldsPropType<\n ColumnConfig extends BaseColumnConfig,\n Props extends FieldfulProps<ColumnConfig>\n>({\n advanced,\n displayName,\n minimalValue = (_props, contextData) => contextData?.minimalFullLengthFields,\n ...opts\n}: {\n advanced?: boolean;\n displayName?: string;\n minimalValue?: ContextDependentConfig<Props, any>;\n} & FieldSubpropsOpts<ColumnConfig>): PropType<Props> {\n return {\n type: \"array\",\n advanced,\n displayName,\n hidden: (ps) => !ps.data,\n unstable__keyFunc: (x) => x.key,\n unstable__minimalValue: minimalValue,\n unstable__canDelete: (ps, _props, ctx, { item }) => {\n if (opts.canChangeField) {\n return true;\n }\n if (!ctx?.schema) {\n // still loading...\n return false;\n }\n if (\n item.fieldId &&\n ctx.schema.fields.some((f) => f.id === item.fieldId)\n ) {\n return false;\n }\n return true;\n },\n itemType: {\n type: \"object\",\n nameFunc: (_item: any) => {\n // Prefer to show the field ID when available, since there's no other indication what field you're edtiing if you relabeled it.\n return _item.fieldId || _item.title || \"Custom value\";\n },\n fields: getFieldSubprops(opts),\n },\n };\n}\n","import { parseDate } from \"@plasmicpkgs/luxon-parser\";\nimport { Checkbox, Switch } from \"antd\";\nimport React from \"react\";\nimport {\n BaseColumnConfig,\n BooleanSettings,\n DateTimeSettings,\n DATETIME_TYPES,\n DEFAULT_BOOLEAN_SETTINGS,\n DEFAULT_CURRENCY_SETTINGS,\n DEFAULT_DATETIME_SETTINGS,\n DEFAULT_RELATIVE_DATETIME_SETTINGS,\n NumberSettings,\n NUMBER_TYPES,\n RelativeDateTimeSettings,\n} from \"./field-mappings\";\nimport { isOneOf, maybe } from \"./utils\";\n\nexport function maybeRenderValue(\n record: any,\n cconfig: BaseColumnConfig | undefined\n) {\n return cconfig ? renderValue(record, cconfig) : undefined;\n}\n\nexport function multiRenderValue(\n record: any,\n cconfigs: BaseColumnConfig[] | undefined\n) {\n return cconfigs\n ?.flatMap((cc) =>\n cc.isHidden ? [] : [` • `, <>{renderValue(record, cc)}</>]\n )\n .slice(1);\n}\n\nexport function maybeRenderString(\n record: any,\n cconfig: BaseColumnConfig | undefined\n) {\n return cconfig && !cconfig.isHidden\n ? maybe(getFieldValue(record, cconfig), asString)\n : undefined;\n}\n\nfunction getFieldValue(record: any, cconfig: BaseColumnConfig) {\n let value = cconfig.fieldId ? record[cconfig.fieldId] : undefined;\n\n if (cconfig.expr) {\n value = cconfig.expr(record, value);\n }\n\n return value;\n}\n\nexport function getFieldAggregateValue(\n record: any,\n cconfigs: BaseColumnConfig[] | undefined,\n separator = \", \"\n) {\n if (!cconfigs?.length) return undefined;\n\n return cconfigs?.length\n ? cconfigs.map((item) => getFieldValue(record, item)).join(separator)\n : undefined;\n}\n\nexport function renderValue(record: any, cconfig: BaseColumnConfig) {\n const value = getFieldValue(record, cconfig);\n\n if (value == null) {\n return \"\";\n }\n\n if (cconfig.dataType === \"auto\") {\n return renderAuto(value);\n } else {\n const coerced = coerceValue(value, cconfig.dataType);\n if (\n isOneOf(cconfig.dataType, NUMBER_TYPES) &&\n typeof coerced === \"number\"\n ) {\n return renderNumber(coerced, cconfig as NumberSettings);\n } else if (cconfig.dataType === \"boolean\" && typeof coerced === \"boolean\") {\n return renderBoolean(coerced, cconfig);\n } else if (cconfig.dataType === \"datetime\" && coerced instanceof Date) {\n return renderDate(coerced, cconfig);\n } else if (\n cconfig.dataType === \"relative-datetime\" &&\n coerced instanceof Date\n ) {\n return renderRelativeDate(coerced, cconfig);\n }\n return asString(value);\n }\n}\n\nfunction renderAuto(value: unknown): React.ReactNode {\n if (typeof value === \"number\") {\n return renderNumber(value, { dataType: \"number\" });\n } else if (typeof value === \"boolean\") {\n return renderBoolean(value, DEFAULT_BOOLEAN_SETTINGS);\n } else if (value instanceof Date) {\n return renderDate(value, DEFAULT_DATETIME_SETTINGS);\n } else {\n const coerced = tryCoerceAuto(value);\n if (coerced === CANNOT_COERCE) {\n return asString(value);\n } else {\n return renderAuto(coerced);\n }\n }\n}\n\nfunction tryCoerceAuto(value: unknown) {\n for (const dataType of [\n \"number\",\n \"datetime\",\n ] as BaseColumnConfig[\"dataType\"][]) {\n const coerced = coerceValue(value, dataType);\n if (coerced !== CANNOT_COERCE) {\n return coerced;\n }\n }\n return CANNOT_COERCE;\n}\n\nfunction renderNumber(value: number, cconfig: NumberSettings) {\n if (cconfig.dataType === \"number\") {\n return new Intl.NumberFormat(cconfig.locale, cconfig).format(value);\n } else if (cconfig.dataType === \"percent\") {\n return new Intl.NumberFormat(cconfig.locale, {\n ...cconfig,\n style: \"percent\",\n }).format(value);\n } else if (cconfig.dataType === \"currency\") {\n return new Intl.NumberFormat(cconfig.locale, {\n ...DEFAULT_CURRENCY_SETTINGS,\n ...cconfig,\n style: \"currency\",\n }).format(value);\n } else {\n throw new Error(`Unexpected dataType ${(cconfig as any).dataType}`);\n }\n}\n\nfunction renderDate(value: Date, cconfig: DateTimeSettings) {\n const opts = {\n ...DEFAULT_DATETIME_SETTINGS,\n ...cconfig,\n };\n if (opts.dateStyle === \"none\") {\n delete opts[\"dateStyle\"];\n }\n if (opts.timeStyle === \"none\") {\n delete opts[\"timeStyle\"];\n }\n return new Intl.DateTimeFormat(cconfig.locale, opts as any).format(value);\n}\n\nconst SECOND_MS = 1000;\nconst MINUTE_MS = 60 * SECOND_MS;\nconst HOUR_MS = 60 * MINUTE_MS;\nconst DAY_MS = 24 * HOUR_MS;\nconst WEEK_MS = 7 * DAY_MS;\nconst UNIT_TO_MS = {\n second: SECOND_MS,\n minute: MINUTE_MS,\n hour: HOUR_MS,\n day: DAY_MS,\n week: WEEK_MS,\n} as const;\nconst UNITS_BY_MS = Object.keys(UNIT_TO_MS) as (keyof typeof UNIT_TO_MS)[];\n\nfunction renderRelativeDate(value: Date, cconfig: RelativeDateTimeSettings) {\n const opts = {\n ...DEFAULT_RELATIVE_DATETIME_SETTINGS,\n ...cconfig,\n };\n const unit = cconfig.unit ?? \"day\";\n const formatter = new Intl.RelativeTimeFormat(cconfig.locale, opts);\n if (isOneOf(unit, UNITS_BY_MS)) {\n // for \"exact\" units, we can do it by just calcluating the difference\n // by ms\n const diff = value.getTime() - new Date().getTime();\n return formatter.format(Math.round(diff / UNIT_TO_MS[unit]), unit);\n } else {\n // otherwise we need to calculate by the specific unit\n if (unit === \"year\") {\n const diff = value.getFullYear() - new Date().getFullYear();\n return formatter.format(diff, unit);\n } else if (unit === \"month\") {\n const months = (d: Date) => d.getFullYear() * 12 + d.getMonth() + 1;\n const diff = months(value) - months(new Date());\n return formatter.format(diff, unit);\n } else {\n throw new Error(`Unexpected relative time unit ${unit}`);\n }\n }\n}\n\nfunction renderBoolean(value: boolean, cconfig: BooleanSettings) {\n const showAs = cconfig.showAs ?? DEFAULT_BOOLEAN_SETTINGS.showAs;\n if (showAs === \"checkbox\") {\n return <Checkbox checked={value} />;\n } else if (showAs === \"switch\") {\n return <Switch checked={value} />;\n } else {\n return value ? \"true\" : \"false\";\n }\n}\n\nconst CANNOT_COERCE = Symbol(\"plasmic-cannot-coerce\");\nfunction coerceValue(value: unknown, dataType: BaseColumnConfig[\"dataType\"]) {\n if (value == null) {\n return null;\n }\n try {\n if (isOneOf(dataType, NUMBER_TYPES)) {\n if (typeof value === \"number\") {\n return value;\n } else if (typeof value === \"string\") {\n const maybeNumber = +value;\n if (!isNaN(maybeNumber)) {\n return maybeNumber;\n }\n }\n } else if (isOneOf(dataType, DATETIME_TYPES)) {\n if (value instanceof Date) {\n return value;\n } else if (typeof value === \"number\") {\n return new Date(value);\n } else if (typeof value === \"string\") {\n // We don't want to simply use Date because it's too loose and varies across platforms.\n // It'll parse even things like \"42\" and \"iPhone 8\" as dates!\n //\n // After a bunch of research, I couldn't find a great simple way to recognize a bunch of common date formats.\n // Closest such resource I could find was this list of formats:\n // https://gist.github.com/brandonjp/ac259099ba95868c4826fc0f58f9e7b4\n // But for now it's probably better to stick to one of the \"standard\" computer formats rather than try to recognize various \"humanized\" date time formats.\n // We could try to expand this in the future.\n //\n // As far as libraries go:\n // dayjs has very buggy and long-neglected support for parsing.\n // Temporal doesn't handle general parsing by format.\n // Luxon is maintained and decent, though it doesn't accept a whole list of formats.\n //\n // Right now we also don't know anything about performance.\n const parsed = parseDate(value);\n return parsed ? parsed : CANNOT_COERCE;\n }\n } else if (dataType === \"boolean\") {\n if (value === true || value === false) {\n return value;\n } else if (typeof value === \"number\") {\n return value !== 0;\n } else if (typeof value === \"string\") {\n return value.toLowerCase() === \"true\";\n }\n } else if (dataType === \"string\") {\n return asString(value);\n } else if (dataType === \"auto\") {\n return value;\n }\n } catch (err) {\n // Ignore error; just fail to coerce\n }\n\n return CANNOT_COERCE;\n}\n\nfunction asString(value: unknown) {\n if (value == null) {\n return \"\";\n } else if (typeof value === \"string\") {\n return value;\n } else if (typeof value === \"object\") {\n if (\"toString\" in value && typeof value.toString === \"function\") {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n } else {\n return `${value}`;\n }\n}\n"],"names":["__spreadValues","_a","__spreadProps"],"mappings":"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"}
|