@plasmicpkgs/plasmic-rich-components 1.0.246 → 1.0.248

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/index.js +7 -5
  3. package/dist/index.js.map +1 -1
  4. package/dist/plasmic-rich-components.esm.js +7 -5
  5. package/dist/plasmic-rich-components.esm.js.map +1 -1
  6. package/package.json +3 -3
  7. package/skinny/{common-prop-types-758ece78.esm.js → common-prop-types-336da74d.esm.js} +3 -3
  8. package/skinny/{common-prop-types-758ece78.esm.js.map → common-prop-types-336da74d.esm.js.map} +1 -1
  9. package/skinny/{common-prop-types-691f4a06.cjs.js → common-prop-types-65645309.cjs.js} +3 -3
  10. package/skinny/{common-prop-types-691f4a06.cjs.js.map → common-prop-types-65645309.cjs.js.map} +1 -1
  11. package/skinny/{field-react-utils-2bbbadc7.cjs.js → field-react-utils-7955a3c8.cjs.js} +3 -3
  12. package/skinny/{field-react-utils-2bbbadc7.cjs.js.map → field-react-utils-7955a3c8.cjs.js.map} +1 -1
  13. package/skinny/{field-react-utils-46bb1f20.esm.js → field-react-utils-b98cfd0e.esm.js} +3 -3
  14. package/skinny/{field-react-utils-46bb1f20.esm.js.map → field-react-utils-b98cfd0e.esm.js.map} +1 -1
  15. package/skinny/{formatting-b434487b.esm.js → formatting-8501a0f4.esm.js} +4 -5
  16. package/skinny/{formatting-b434487b.esm.js.map → formatting-8501a0f4.esm.js.map} +1 -1
  17. package/skinny/{formatting-c37b4133.cjs.js → formatting-bef072c7.cjs.js} +4 -5
  18. package/skinny/{formatting-c37b4133.cjs.js.map → formatting-bef072c7.cjs.js.map} +1 -1
  19. package/skinny/rich-calendar/index.cjs.js +3 -3
  20. package/skinny/rich-calendar/index.cjs.js.map +1 -1
  21. package/skinny/rich-calendar/index.esm.js +3 -3
  22. package/skinny/rich-calendar/index.esm.js.map +1 -1
  23. package/skinny/rich-details/index.cjs.js +2 -2
  24. package/skinny/rich-details/index.esm.js +2 -2
  25. package/skinny/rich-layout/index.cjs.js +1 -1
  26. package/skinny/rich-layout/index.cjs.js.map +1 -1
  27. package/skinny/rich-layout/index.esm.js +1 -1
  28. package/skinny/rich-layout/index.esm.js.map +1 -1
  29. package/skinny/rich-list/index.cjs.js +4 -4
  30. package/skinny/rich-list/index.cjs.js.map +1 -1
  31. package/skinny/rich-list/index.esm.js +4 -4
  32. package/skinny/rich-list/index.esm.js.map +1 -1
  33. package/skinny/rich-table/index.cjs.js +4 -4
  34. package/skinny/rich-table/index.cjs.js.map +1 -1
  35. package/skinny/rich-table/index.esm.js +4 -4
  36. package/skinny/rich-table/index.esm.js.map +1 -1
  37. package/skinny/{utils-da451c58.cjs.js → utils-48c0c8b4.cjs.js} +5 -2
  38. package/skinny/{utils-da451c58.cjs.js.map → utils-48c0c8b4.cjs.js.map} +1 -1
  39. package/skinny/{utils-546b05e4.esm.js → utils-725ca0d1.esm.js} +5 -2
  40. package/skinny/{utils-546b05e4.esm.js.map → utils-725ca0d1.esm.js.map} +1 -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 NormalizedData,\n deriveFieldConfigs,\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 FieldfulProps,\n RowFunc,\n deriveValueType,\n} from \"../field-mappings\";\nimport {\n RowAction,\n deriveKeyOfRow,\n deriveRowKey,\n renderActions,\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 // @ts-expect-error: https://github.com/ant-design/ant-design/issues/47886\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 {/* @ts-expect-error: https://github.com/ant-design/ant-design/issues/47886 */}\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":"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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 NormalizedData,\n deriveFieldConfigs,\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 FieldfulProps,\n RowFunc,\n deriveValueType,\n} from \"../field-mappings\";\nimport {\n RowAction,\n deriveKeyOfRow,\n deriveRowKey,\n renderActions,\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 // @ts-expect-error: https://github.com/ant-design/ant-design/issues/47886\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 {/* @ts-expect-error: https://github.com/ant-design/ant-design/issues/47886 */}\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":"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"}
@@ -1,6 +1,6 @@
1
- import { d as dataProp, o as onRowClickProp, a as rowActionsProp, c as commonProps } from '../common-prop-types-758ece78.esm.js';
2
- import { d as deriveValueType, r as renderValue, b as buildFieldsPropType } from '../formatting-b434487b.esm.js';
3
- import { E as ErrorBoundary, g as isInteractable, d as mkShortId, r as registerComponentHelper } from '../utils-546b05e4.esm.js';
1
+ import { d as dataProp, o as onRowClickProp, a as rowActionsProp, c as commonProps } from '../common-prop-types-336da74d.esm.js';
2
+ import { d as deriveValueType, r as renderValue, b as buildFieldsPropType } from '../formatting-8501a0f4.esm.js';
3
+ import { E as ErrorBoundary, g as isInteractable, d as mkShortId, r as registerComponentHelper } from '../utils-725ca0d1.esm.js';
4
4
  import { PlusOutlined, EllipsisOutlined } from '@ant-design/icons';
5
5
  import { ProTable } from '@ant-design/pro-components';
6
6
  import { useNormalizedData, deriveFieldConfigs } from '@plasmicapp/data-sources';
@@ -9,7 +9,7 @@ import { createObjectCsvStringifier } from 'csv-writer-browser';
9
9
  import fastStringify from 'fast-stringify';
10
10
  import React, { useMemo, useRef } from 'react';
11
11
  import { u as useIsClient } from '../common-8cca2977.esm.js';
12
- import { t as tagDataArray, u as useSortedFilteredData, r as renderActions, d as deriveKeyOfRow, a as deriveRowKey } from '../field-react-utils-46bb1f20.esm.js';
12
+ import { t as tagDataArray, u as useSortedFilteredData, r as renderActions, d as deriveKeyOfRow, a as deriveRowKey } from '../field-react-utils-b98cfd0e.esm.js';
13
13
  import '@plasmicpkgs/luxon-parser';
14
14
  import 'lodash/get';
15
15
  import '@plasmicapp/host/registerComponent';
@@ -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 NormalizedData,\n deriveFieldConfigs,\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 FieldfulProps,\n RowFunc,\n deriveValueType,\n} from \"../field-mappings\";\nimport {\n RowAction,\n deriveKeyOfRow,\n deriveRowKey,\n renderActions,\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 // @ts-expect-error: https://github.com/ant-design/ant-design/issues/47886\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 {/* @ts-expect-error: https://github.com/ant-design/ant-design/issues/47886 */}\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
+ {"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 NormalizedData,\n deriveFieldConfigs,\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 FieldfulProps,\n RowFunc,\n deriveValueType,\n} from \"../field-mappings\";\nimport {\n RowAction,\n deriveKeyOfRow,\n deriveRowKey,\n renderActions,\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 // @ts-expect-error: https://github.com/ant-design/ant-design/issues/47886\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 {/* @ts-expect-error: https://github.com/ant-design/ant-design/issues/47886 */}\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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"}
@@ -15,6 +15,9 @@ var dayjs__default = /*#__PURE__*/_interopDefault(dayjs);
15
15
  var customParseFormat__default = /*#__PURE__*/_interopDefault(customParseFormat);
16
16
  var React__default = /*#__PURE__*/_interopDefault(React);
17
17
 
18
+ var __defProp = Object.defineProperty;
19
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
20
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
18
21
  function registerComponentHelper(loader, component, meta) {
19
22
  if (loader) {
20
23
  loader.registerComponent(component, meta);
@@ -103,7 +106,7 @@ function withoutFalsey(xs) {
103
106
  class ErrorBoundary extends React__default.default.Component {
104
107
  constructor() {
105
108
  super(...arguments);
106
- this.state = { hasError: false, errorInfo: "" };
109
+ __publicField(this, "state", { hasError: false, errorInfo: "" });
107
110
  }
108
111
  static getDerivedStateFromError(error) {
109
112
  return { hasError: true, errorInfo: error.message };
@@ -144,4 +147,4 @@ exports.maybe = maybe;
144
147
  exports.mkShortId = mkShortId;
145
148
  exports.registerComponentHelper = registerComponentHelper;
146
149
  exports.withoutFalsey = withoutFalsey;
147
- //# sourceMappingURL=utils-da451c58.cjs.js.map
150
+ //# sourceMappingURL=utils-48c0c8b4.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-da451c58.cjs.js","sources":["../src/utils.tsx"],"sourcesContent":["import {\n CodeComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n GlobalContextMeta,\n default as registerGlobalContext,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport { parseDate } from \"@plasmicpkgs/luxon-parser\";\nimport dayjs from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n\nexport function ensureNumber(x: number | string): number {\n return x as number;\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n throw new Error(\"Expected non-null or non-undefined value\");\n }\n return x;\n}\n\nexport function isOneOf<T, U extends T>(elem: T, arr: readonly U[]): elem is U {\n return arr.includes(elem as any);\n}\n\nexport function maybe<T, U>(\n x: T | undefined | null,\n f: (y: T) => U\n): U | undefined {\n if (x === undefined || x === null) {\n return undefined;\n }\n return f(x);\n}\n\n/**\n *\n * @param str iso string\n * @param extendedOnly boolean for extended mode (i.e. time)\n * @returns Returns true for strings in ISO 8601 format\n */\nexport function isValidIsoDate(str: string | undefined, extendedOnly = false) {\n if (!str) {\n return false;\n }\n if (typeof str !== \"string\") {\n return false;\n }\n if (str.includes(\" \")) {\n return false;\n } // spaces not supported\n if (str.length === 10) {\n if (extendedOnly) {\n return false;\n }\n dayjs.extend(customParseFormat);\n return dayjs(str, \"YYYY-MM-DD\", true).isValid();\n }\n if (!dayjs(str).isValid()) {\n return false;\n } // should be a valid dayjs date\n if (isNaN(new Date(str).getTime())) {\n return false;\n } // should be a valid js date\n return true;\n}\n\nexport function isLikeDate(value: unknown) {\n const parsed = parseDate(value);\n return parsed ? true : false;\n}\n\nexport function isLikeImage(value: unknown) {\n return typeof value === \"string\"\n ? value.match(/\\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i)\n : false;\n}\n\nexport function isLikeColor(value: unknown) {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const hex =\n /^#?([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[0-9a-fA-F]{4}([0-9a-fA-F]{4})?)$/;\n const rgba =\n /^rgba?\\((\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*(,\\s*(1|0?(\\.\\d+)?))?\\s*)\\)$/;\n const cssNamed =\n /^(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen)$/;\n const hsla =\n /^hsla?\\((\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n const cmyk =\n /^cmyka?\\((\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n const hsv =\n /^hsva?\\((\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n\n if (\n value.match(hex) ||\n value.match(rgba) ||\n value.match(cssNamed) ||\n value.match(hsla) ||\n value.match(cmyk) ||\n value.match(hsv)\n ) {\n return true;\n }\n\n return false;\n}\n\n// Some heuristics to avoid selecting a row when\n// the object clicked is interactable -- like button, anchor,\n// input, etc. This won't be bulletproof, so just some\n// heuristics!\nexport function isInteractable(target: HTMLElement) {\n if ([\"A\", \"BUTTON\", \"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(target.tagName)) {\n return true;\n }\n if (target.contentEditable === \"true\") {\n return true;\n }\n\n return false;\n}\n\nexport function ensureArray<T>(xs: T | T[]): T[] {\n return Array.isArray(xs) ? xs : [xs];\n}\n\nexport const tuple = <T extends any[]>(...args: T): T => args;\n\nexport interface HasId {\n id: string;\n}\n\nexport function mkIdMap<T extends HasId>(xs: ReadonlyArray<T>): Map<string, T> {\n return new Map(xs.map((x) => tuple(x.id, x) as [string, T]));\n}\n\nexport const mkShortId = () => `${Math.random()}`;\n\nexport function withoutNils<T>(xs: Array<T | undefined | null>): T[] {\n return xs.filter((x): x is T => x != null);\n}\n\nexport type Falsey = null | undefined | false | \"\" | 0 | 0n;\nexport type Truthy<T> = T extends Falsey ? never : T;\n\nexport function withoutFalsey<T>(xs: Array<T | Falsey>): T[] {\n return xs.filter((x): x is T => !!x);\n}\n\n/**\n *\n * Forked from: https://github.com/ant-design/pro-components/blob/master/packages/utils/src/components/ErrorBoundary/index.tsx\n *\n */\nimport { Result } from \"antd\";\nimport type { ErrorInfo } from \"react\";\n\ninterface ErrorBoundaryProps {\n children?: React.ReactNode;\n canvasEnvId?: number;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n errorInfo: string;\n}\nexport class ErrorBoundary extends React.Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n state = { hasError: false, errorInfo: \"\" };\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, errorInfo: error.message };\n }\n\n componentDidCatch(error: any, errorInfo: ErrorInfo) {\n // You can also log the error to an error reporting service\n // eslint-disable-next-line no-console\n console.log(error, errorInfo);\n }\n\n componentDidUpdate(\n prevProps: Readonly<ErrorBoundaryProps>,\n prevState: Readonly<ErrorBoundaryState>\n ) {\n if (\n prevProps.canvasEnvId !== this.props.canvasEnvId &&\n prevState.hasError\n ) {\n this.setState({ hasError: false });\n }\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return (\n <Result\n status=\"error\"\n title=\"Something went wrong.\"\n extra={this.state.errorInfo}\n />\n );\n }\n return this.props.children;\n }\n}\n"],"names":["registerComponent","dayjs","customParseFormat","parseDate","React","Result"],"mappings":"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"}
1
+ {"version":3,"file":"utils-48c0c8b4.cjs.js","sources":["../src/utils.tsx"],"sourcesContent":["import {\n CodeComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n GlobalContextMeta,\n default as registerGlobalContext,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport { parseDate } from \"@plasmicpkgs/luxon-parser\";\nimport dayjs from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n\nexport function ensureNumber(x: number | string): number {\n return x as number;\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n throw new Error(\"Expected non-null or non-undefined value\");\n }\n return x;\n}\n\nexport function isOneOf<T, U extends T>(elem: T, arr: readonly U[]): elem is U {\n return arr.includes(elem as any);\n}\n\nexport function maybe<T, U>(\n x: T | undefined | null,\n f: (y: T) => U\n): U | undefined {\n if (x === undefined || x === null) {\n return undefined;\n }\n return f(x);\n}\n\n/**\n *\n * @param str iso string\n * @param extendedOnly boolean for extended mode (i.e. time)\n * @returns Returns true for strings in ISO 8601 format\n */\nexport function isValidIsoDate(str: string | undefined, extendedOnly = false) {\n if (!str) {\n return false;\n }\n if (typeof str !== \"string\") {\n return false;\n }\n if (str.includes(\" \")) {\n return false;\n } // spaces not supported\n if (str.length === 10) {\n if (extendedOnly) {\n return false;\n }\n dayjs.extend(customParseFormat);\n return dayjs(str, \"YYYY-MM-DD\", true).isValid();\n }\n if (!dayjs(str).isValid()) {\n return false;\n } // should be a valid dayjs date\n if (isNaN(new Date(str).getTime())) {\n return false;\n } // should be a valid js date\n return true;\n}\n\nexport function isLikeDate(value: unknown) {\n const parsed = parseDate(value);\n return parsed ? true : false;\n}\n\nexport function isLikeImage(value: unknown) {\n return typeof value === \"string\"\n ? value.match(/\\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i)\n : false;\n}\n\nexport function isLikeColor(value: unknown) {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const hex =\n /^#?([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[0-9a-fA-F]{4}([0-9a-fA-F]{4})?)$/;\n const rgba =\n /^rgba?\\((\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*(,\\s*(1|0?(\\.\\d+)?))?\\s*)\\)$/;\n const cssNamed =\n /^(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen)$/;\n const hsla =\n /^hsla?\\((\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n const cmyk =\n /^cmyka?\\((\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n const hsv =\n /^hsva?\\((\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n\n if (\n value.match(hex) ||\n value.match(rgba) ||\n value.match(cssNamed) ||\n value.match(hsla) ||\n value.match(cmyk) ||\n value.match(hsv)\n ) {\n return true;\n }\n\n return false;\n}\n\n// Some heuristics to avoid selecting a row when\n// the object clicked is interactable -- like button, anchor,\n// input, etc. This won't be bulletproof, so just some\n// heuristics!\nexport function isInteractable(target: HTMLElement) {\n if ([\"A\", \"BUTTON\", \"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(target.tagName)) {\n return true;\n }\n if (target.contentEditable === \"true\") {\n return true;\n }\n\n return false;\n}\n\nexport function ensureArray<T>(xs: T | T[]): T[] {\n return Array.isArray(xs) ? xs : [xs];\n}\n\nexport const tuple = <T extends any[]>(...args: T): T => args;\n\nexport interface HasId {\n id: string;\n}\n\nexport function mkIdMap<T extends HasId>(xs: ReadonlyArray<T>): Map<string, T> {\n return new Map(xs.map((x) => tuple(x.id, x) as [string, T]));\n}\n\nexport const mkShortId = () => `${Math.random()}`;\n\nexport function withoutNils<T>(xs: Array<T | undefined | null>): T[] {\n return xs.filter((x): x is T => x != null);\n}\n\nexport type Falsey = null | undefined | false | \"\" | 0 | 0n;\nexport type Truthy<T> = T extends Falsey ? never : T;\n\nexport function withoutFalsey<T>(xs: Array<T | Falsey>): T[] {\n return xs.filter((x): x is T => !!x);\n}\n\n/**\n *\n * Forked from: https://github.com/ant-design/pro-components/blob/master/packages/utils/src/components/ErrorBoundary/index.tsx\n *\n */\nimport { Result } from \"antd\";\nimport type { ErrorInfo } from \"react\";\n\ninterface ErrorBoundaryProps {\n children?: React.ReactNode;\n canvasEnvId?: number;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n errorInfo: string;\n}\nexport class ErrorBoundary extends React.Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n state = { hasError: false, errorInfo: \"\" };\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, errorInfo: error.message };\n }\n\n componentDidCatch(error: any, errorInfo: ErrorInfo) {\n // You can also log the error to an error reporting service\n // eslint-disable-next-line no-console\n console.log(error, errorInfo);\n }\n\n componentDidUpdate(\n prevProps: Readonly<ErrorBoundaryProps>,\n prevState: Readonly<ErrorBoundaryState>\n ) {\n if (\n prevProps.canvasEnvId !== this.props.canvasEnvId &&\n prevState.hasError\n ) {\n this.setState({ hasError: false });\n }\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return (\n <Result\n status=\"error\"\n title=\"Something went wrong.\"\n extra={this.state.errorInfo}\n />\n );\n }\n return this.props.children;\n }\n}\n"],"names":["registerComponent","dayjs","customParseFormat","parseDate","React","Result"],"mappings":"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"}
@@ -6,6 +6,9 @@ import customParseFormat from 'dayjs/plugin/customParseFormat';
6
6
  import React from 'react';
7
7
  import { Result } from 'antd';
8
8
 
9
+ var __defProp = Object.defineProperty;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
9
12
  function registerComponentHelper(loader, component, meta) {
10
13
  if (loader) {
11
14
  loader.registerComponent(component, meta);
@@ -94,7 +97,7 @@ function withoutFalsey(xs) {
94
97
  class ErrorBoundary extends React.Component {
95
98
  constructor() {
96
99
  super(...arguments);
97
- this.state = { hasError: false, errorInfo: "" };
100
+ __publicField(this, "state", { hasError: false, errorInfo: "" });
98
101
  }
99
102
  static getDerivedStateFromError(error) {
100
103
  return { hasError: true, errorInfo: error.message };
@@ -123,4 +126,4 @@ class ErrorBoundary extends React.Component {
123
126
  }
124
127
 
125
128
  export { ErrorBoundary as E, isLikeDate as a, isLikeColor as b, ensureArray as c, mkShortId as d, ensure as e, isLikeImage as f, isInteractable as g, isOneOf as h, isValidIsoDate as i, maybe as m, registerComponentHelper as r, withoutFalsey as w };
126
- //# sourceMappingURL=utils-546b05e4.esm.js.map
129
+ //# sourceMappingURL=utils-725ca0d1.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-546b05e4.esm.js","sources":["../src/utils.tsx"],"sourcesContent":["import {\n CodeComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n GlobalContextMeta,\n default as registerGlobalContext,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport { parseDate } from \"@plasmicpkgs/luxon-parser\";\nimport dayjs from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n\nexport function ensureNumber(x: number | string): number {\n return x as number;\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n throw new Error(\"Expected non-null or non-undefined value\");\n }\n return x;\n}\n\nexport function isOneOf<T, U extends T>(elem: T, arr: readonly U[]): elem is U {\n return arr.includes(elem as any);\n}\n\nexport function maybe<T, U>(\n x: T | undefined | null,\n f: (y: T) => U\n): U | undefined {\n if (x === undefined || x === null) {\n return undefined;\n }\n return f(x);\n}\n\n/**\n *\n * @param str iso string\n * @param extendedOnly boolean for extended mode (i.e. time)\n * @returns Returns true for strings in ISO 8601 format\n */\nexport function isValidIsoDate(str: string | undefined, extendedOnly = false) {\n if (!str) {\n return false;\n }\n if (typeof str !== \"string\") {\n return false;\n }\n if (str.includes(\" \")) {\n return false;\n } // spaces not supported\n if (str.length === 10) {\n if (extendedOnly) {\n return false;\n }\n dayjs.extend(customParseFormat);\n return dayjs(str, \"YYYY-MM-DD\", true).isValid();\n }\n if (!dayjs(str).isValid()) {\n return false;\n } // should be a valid dayjs date\n if (isNaN(new Date(str).getTime())) {\n return false;\n } // should be a valid js date\n return true;\n}\n\nexport function isLikeDate(value: unknown) {\n const parsed = parseDate(value);\n return parsed ? true : false;\n}\n\nexport function isLikeImage(value: unknown) {\n return typeof value === \"string\"\n ? value.match(/\\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i)\n : false;\n}\n\nexport function isLikeColor(value: unknown) {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const hex =\n /^#?([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[0-9a-fA-F]{4}([0-9a-fA-F]{4})?)$/;\n const rgba =\n /^rgba?\\((\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*(,\\s*(1|0?(\\.\\d+)?))?\\s*)\\)$/;\n const cssNamed =\n /^(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen)$/;\n const hsla =\n /^hsla?\\((\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n const cmyk =\n /^cmyka?\\((\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n const hsv =\n /^hsva?\\((\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n\n if (\n value.match(hex) ||\n value.match(rgba) ||\n value.match(cssNamed) ||\n value.match(hsla) ||\n value.match(cmyk) ||\n value.match(hsv)\n ) {\n return true;\n }\n\n return false;\n}\n\n// Some heuristics to avoid selecting a row when\n// the object clicked is interactable -- like button, anchor,\n// input, etc. This won't be bulletproof, so just some\n// heuristics!\nexport function isInteractable(target: HTMLElement) {\n if ([\"A\", \"BUTTON\", \"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(target.tagName)) {\n return true;\n }\n if (target.contentEditable === \"true\") {\n return true;\n }\n\n return false;\n}\n\nexport function ensureArray<T>(xs: T | T[]): T[] {\n return Array.isArray(xs) ? xs : [xs];\n}\n\nexport const tuple = <T extends any[]>(...args: T): T => args;\n\nexport interface HasId {\n id: string;\n}\n\nexport function mkIdMap<T extends HasId>(xs: ReadonlyArray<T>): Map<string, T> {\n return new Map(xs.map((x) => tuple(x.id, x) as [string, T]));\n}\n\nexport const mkShortId = () => `${Math.random()}`;\n\nexport function withoutNils<T>(xs: Array<T | undefined | null>): T[] {\n return xs.filter((x): x is T => x != null);\n}\n\nexport type Falsey = null | undefined | false | \"\" | 0 | 0n;\nexport type Truthy<T> = T extends Falsey ? never : T;\n\nexport function withoutFalsey<T>(xs: Array<T | Falsey>): T[] {\n return xs.filter((x): x is T => !!x);\n}\n\n/**\n *\n * Forked from: https://github.com/ant-design/pro-components/blob/master/packages/utils/src/components/ErrorBoundary/index.tsx\n *\n */\nimport { Result } from \"antd\";\nimport type { ErrorInfo } from \"react\";\n\ninterface ErrorBoundaryProps {\n children?: React.ReactNode;\n canvasEnvId?: number;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n errorInfo: string;\n}\nexport class ErrorBoundary extends React.Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n state = { hasError: false, errorInfo: \"\" };\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, errorInfo: error.message };\n }\n\n componentDidCatch(error: any, errorInfo: ErrorInfo) {\n // You can also log the error to an error reporting service\n // eslint-disable-next-line no-console\n console.log(error, errorInfo);\n }\n\n componentDidUpdate(\n prevProps: Readonly<ErrorBoundaryProps>,\n prevState: Readonly<ErrorBoundaryState>\n ) {\n if (\n prevProps.canvasEnvId !== this.props.canvasEnvId &&\n prevState.hasError\n ) {\n this.setState({ hasError: false });\n }\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return (\n <Result\n status=\"error\"\n title=\"Something went wrong.\"\n extra={this.state.errorInfo}\n />\n );\n }\n return this.props.children;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils-725ca0d1.esm.js","sources":["../src/utils.tsx"],"sourcesContent":["import {\n CodeComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n GlobalContextMeta,\n default as registerGlobalContext,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport { parseDate } from \"@plasmicpkgs/luxon-parser\";\nimport dayjs from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: CodeComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n\nexport function ensureNumber(x: number | string): number {\n return x as number;\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n throw new Error(\"Expected non-null or non-undefined value\");\n }\n return x;\n}\n\nexport function isOneOf<T, U extends T>(elem: T, arr: readonly U[]): elem is U {\n return arr.includes(elem as any);\n}\n\nexport function maybe<T, U>(\n x: T | undefined | null,\n f: (y: T) => U\n): U | undefined {\n if (x === undefined || x === null) {\n return undefined;\n }\n return f(x);\n}\n\n/**\n *\n * @param str iso string\n * @param extendedOnly boolean for extended mode (i.e. time)\n * @returns Returns true for strings in ISO 8601 format\n */\nexport function isValidIsoDate(str: string | undefined, extendedOnly = false) {\n if (!str) {\n return false;\n }\n if (typeof str !== \"string\") {\n return false;\n }\n if (str.includes(\" \")) {\n return false;\n } // spaces not supported\n if (str.length === 10) {\n if (extendedOnly) {\n return false;\n }\n dayjs.extend(customParseFormat);\n return dayjs(str, \"YYYY-MM-DD\", true).isValid();\n }\n if (!dayjs(str).isValid()) {\n return false;\n } // should be a valid dayjs date\n if (isNaN(new Date(str).getTime())) {\n return false;\n } // should be a valid js date\n return true;\n}\n\nexport function isLikeDate(value: unknown) {\n const parsed = parseDate(value);\n return parsed ? true : false;\n}\n\nexport function isLikeImage(value: unknown) {\n return typeof value === \"string\"\n ? value.match(/\\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i)\n : false;\n}\n\nexport function isLikeColor(value: unknown) {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const hex =\n /^#?([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[0-9a-fA-F]{4}([0-9a-fA-F]{4})?)$/;\n const rgba =\n /^rgba?\\((\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*(,\\s*(1|0?(\\.\\d+)?))?\\s*)\\)$/;\n const cssNamed =\n /^(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen)$/;\n const hsla =\n /^hsla?\\((\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n const cmyk =\n /^cmyka?\\((\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n const hsv =\n /^hsva?\\((\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?%\\s*,\\s*\\d+(\\.\\d+)?%\\s*(,\\s*(1|0?\\.\\d+))?\\s*)\\)$/;\n\n if (\n value.match(hex) ||\n value.match(rgba) ||\n value.match(cssNamed) ||\n value.match(hsla) ||\n value.match(cmyk) ||\n value.match(hsv)\n ) {\n return true;\n }\n\n return false;\n}\n\n// Some heuristics to avoid selecting a row when\n// the object clicked is interactable -- like button, anchor,\n// input, etc. This won't be bulletproof, so just some\n// heuristics!\nexport function isInteractable(target: HTMLElement) {\n if ([\"A\", \"BUTTON\", \"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(target.tagName)) {\n return true;\n }\n if (target.contentEditable === \"true\") {\n return true;\n }\n\n return false;\n}\n\nexport function ensureArray<T>(xs: T | T[]): T[] {\n return Array.isArray(xs) ? xs : [xs];\n}\n\nexport const tuple = <T extends any[]>(...args: T): T => args;\n\nexport interface HasId {\n id: string;\n}\n\nexport function mkIdMap<T extends HasId>(xs: ReadonlyArray<T>): Map<string, T> {\n return new Map(xs.map((x) => tuple(x.id, x) as [string, T]));\n}\n\nexport const mkShortId = () => `${Math.random()}`;\n\nexport function withoutNils<T>(xs: Array<T | undefined | null>): T[] {\n return xs.filter((x): x is T => x != null);\n}\n\nexport type Falsey = null | undefined | false | \"\" | 0 | 0n;\nexport type Truthy<T> = T extends Falsey ? never : T;\n\nexport function withoutFalsey<T>(xs: Array<T | Falsey>): T[] {\n return xs.filter((x): x is T => !!x);\n}\n\n/**\n *\n * Forked from: https://github.com/ant-design/pro-components/blob/master/packages/utils/src/components/ErrorBoundary/index.tsx\n *\n */\nimport { Result } from \"antd\";\nimport type { ErrorInfo } from \"react\";\n\ninterface ErrorBoundaryProps {\n children?: React.ReactNode;\n canvasEnvId?: number;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n errorInfo: string;\n}\nexport class ErrorBoundary extends React.Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n state = { hasError: false, errorInfo: \"\" };\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, errorInfo: error.message };\n }\n\n componentDidCatch(error: any, errorInfo: ErrorInfo) {\n // You can also log the error to an error reporting service\n // eslint-disable-next-line no-console\n console.log(error, errorInfo);\n }\n\n componentDidUpdate(\n prevProps: Readonly<ErrorBoundaryProps>,\n prevState: Readonly<ErrorBoundaryState>\n ) {\n if (\n prevProps.canvasEnvId !== this.props.canvasEnvId &&\n prevState.hasError\n ) {\n this.setState({ hasError: false });\n }\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return (\n <Result\n status=\"error\"\n title=\"Something went wrong.\"\n extra={this.state.errorInfo}\n />\n );\n }\n return this.props.children;\n }\n}\n"],"names":[],"mappings":"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"}