@plasmicpkgs/plasmic-rich-components 1.0.42 → 1.0.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/common.d.ts +2 -0
- package/dist/field-mappings.d.ts +53 -0
- package/dist/index.d.ts +2 -7
- package/dist/plasmic-rich-components.cjs.development.js +797 -112
- package/dist/plasmic-rich-components.cjs.development.js.map +1 -1
- package/dist/plasmic-rich-components.cjs.production.min.js +1 -1
- package/dist/plasmic-rich-components.cjs.production.min.js.map +1 -1
- package/dist/plasmic-rich-components.esm.js +798 -112
- package/dist/plasmic-rich-components.esm.js.map +1 -1
- package/dist/rich-layout/RichLayout.d.ts +16 -0
- package/dist/rich-layout/index.d.ts +5 -0
- package/dist/rich-table/RichTable.d.ts +35 -0
- package/dist/rich-table/index.d.ts +5 -0
- package/dist/utils.d.ts +24 -0
- package/package.json +17 -6
- package/dist/DataTable.d.ts +0 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plasmic-rich-components.cjs.development.js","sources":["../src/DataTable.tsx","../src/index.tsx"],"sourcesContent":["import type {\n ManyRowsResult,\n TableFieldType,\n TableSchema,\n} from \"@plasmicapp/data-sources\";\nimport { DataProvider, repeatedElement, useSelector } from \"@plasmicapp/host\";\nimport { Table } from \"antd\";\nimport type { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport React from \"react\";\n\nexport type QueryResult = Partial<ManyRowsResult<any>> & {\n error?: any;\n isLoading?: boolean;\n};\n\nexport interface DataTableProps {\n className?: string;\n data?: QueryResult;\n columns?: string[];\n children?: React.ReactNode;\n size?: SizeType;\n pagination?: boolean;\n onSelect?: (record: any) => void;\n setControlContextData?: (schema: TableSchema) => void;\n}\n\nfunction tryGetSchema(data?: QueryResult): TableSchema | undefined {\n if (data?.schema) {\n return data.schema;\n }\n if (Array.isArray(data)) {\n data = { data };\n }\n if (!data?.data || !Array.isArray(data.data) || data.data.length === 0) {\n return undefined;\n }\n const fieldMap: Record<string, TableFieldType> = {};\n data.data.forEach((entry: any) => {\n if (entry && typeof entry === \"object\") {\n Array.from(Object.entries(entry)).forEach(([k, v]) => {\n const inferredType: TableFieldType =\n typeof v === \"string\"\n ? \"string\"\n : typeof v === \"boolean\"\n ? \"boolean\"\n : typeof v === \"number\"\n ? \"number\"\n : \"unknown\";\n if (fieldMap[k] && fieldMap[k] !== inferredType) {\n fieldMap[k] = \"unknown\";\n } else {\n fieldMap[k] = inferredType;\n }\n });\n }\n });\n return {\n id: \"inferred\",\n fields: Object.entries(fieldMap).map(([f, t]) => ({\n id: f,\n type: t,\n readOnly: false,\n })),\n };\n}\n\nexport function DataTable(props: DataTableProps) {\n const {\n className,\n data,\n children,\n size,\n columns,\n onSelect,\n pagination,\n setControlContextData,\n } = props;\n\n const columnDefinitions = React.useMemo(() => {\n const schema = tryGetSchema(data);\n if (!schema) {\n return [];\n }\n setControlContextData?.(schema);\n return (\n (columns && columns.length > 0 ? columns : undefined) ??\n schema.fields.map((f) => f.id)\n ).map((columnId, columnIndex, columnsArray) => {\n const columnDefinition = {\n columnIndex,\n title: schema.fields.find((f) => f.id === columnId)?.label || columnId,\n dataIndex: columnId,\n key: columnId,\n render: (value: any, record: any, rowIndex: any) => {\n return (\n <DataProvider name=\"currentRow\" data={record}>\n <DataProvider name=\"currentRowIndex\" data={rowIndex}>\n <DataProvider name=\"currentColumn\" data={value}>\n {children &&\n (typeof children === \"object\"\n ? (Array.isArray(children)\n ? children\n : [children]\n ).map((child) =>\n repeatedElement(\n rowIndex * columnsArray.length + columnIndex,\n child\n )\n )\n : children)}\n </DataProvider>\n </DataProvider>\n </DataProvider>\n );\n },\n };\n\n return columnDefinition;\n });\n }, [children, columns, data, setControlContextData]);\n\n return (\n <Table\n className={className}\n columns={columnDefinitions}\n dataSource={data?.data}\n size={size}\n onRow={(record) => {\n return {\n onMouseUp: () => {\n return onSelect?.(record.id);\n },\n };\n }}\n pagination={pagination ? undefined : pagination}\n rowKey={\"id\"}\n />\n );\n}\n\nexport default DataTable;\n\nexport interface TableValueProps {\n className?: string;\n}\n\nexport function TableValue(props: TableValueProps) {\n const { className } = props;\n const column = useSelector(\"currentColumn\");\n return <div className={className}>{column?.toString() ?? \"\"}</div>;\n}\n","import registerComponent, {\n ComponentMeta,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n DataTable,\n DataTableProps,\n TableValue,\n TableValueProps,\n} from \"./DataTable\";\n\nexport * from \"./DataTable\";\nexport default DataTable;\n\nconst dataTableValueMeta: ComponentMeta<TableValueProps> = {\n name: \"hostless-plasmic-rich-components-value\",\n displayName: \"Table Value\",\n parentComponentName: \"hostless-plasmic-rich-components\",\n props: {},\n importName: \"TableValue\",\n importPath: \"\",\n};\n\nconst dataTableMeta: ComponentMeta<DataTableProps> = {\n name: \"hostless-plasmic-rich-components\",\n displayName: \"Data Table\",\n props: {\n data: {\n type: \"dataSourceOpData\" as any,\n description: \"The data to display in the table\",\n },\n\n children: {\n type: \"slot\",\n defaultValue: {\n type: \"component\",\n name: \"hostless-plasmic-rich-components-value\",\n },\n },\n\n size: {\n type: \"choice\",\n options: [\"large\", \"middle\", \"small\"],\n defaultValueHint: \"large\",\n },\n\n pagination: {\n type: \"boolean\",\n defaultValueHint: true,\n },\n\n columns: {\n type: \"choice\",\n options: (_props, schema) => {\n if (!schema) {\n return [];\n }\n return schema.fields.map((f) => ({\n label: f.label || f.id,\n value: f.id,\n }));\n },\n multiSelect: true,\n },\n },\n\n importName: \"TableWrapper\",\n importPath: \"DataTable\",\n};\n\nexport function registerAll(loader?: {\n registerComponent: typeof registerComponent;\n}) {\n const _registerComponent = <T extends React.ComponentType<any>>(\n Component: T,\n defaultMeta: ComponentMeta<React.ComponentProps<T>>\n ) => {\n if (loader) {\n loader.registerComponent(Component, defaultMeta);\n } else {\n registerComponent(Component, defaultMeta);\n }\n };\n\n _registerComponent(DataTable, dataTableMeta);\n _registerComponent(TableValue, dataTableValueMeta);\n}\n"],"names":["tryGetSchema","data","schema","Array","isArray","length","undefined","fieldMap","forEach","entry","from","Object","entries","k","v","inferredType","id","fields","map","f","t","type","readOnly","DataTable","props","className","children","size","columns","onSelect","pagination","setControlContextData","columnDefinitions","React","useMemo","columnId","columnIndex","columnsArray","columnDefinition","title","find","label","dataIndex","key","render","value","record","rowIndex","DataProvider","name","child","repeatedElement","Table","dataSource","onRow","onMouseUp","rowKey","TableValue","column","useSelector","toString","dataTableValueMeta","displayName","parentComponentName","importName","importPath","dataTableMeta","description","defaultValue","options","defaultValueHint","_props","multiSelect","registerAll","loader","_registerComponent","Component","defaultMeta","registerComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plasmic-rich-components.cjs.development.js","sources":["../src/common.ts","../src/utils.ts","../src/rich-layout/RichLayout.tsx","../src/rich-layout/index.tsx","../src/field-mappings.ts","../src/rich-table/RichTable.tsx","../src/rich-table/index.tsx","../src/index.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport function capitalize(text: string) {\n return text.slice(0, 1).toUpperCase() + text.slice(1);\n}\n","import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\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: ComponentMeta<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: ComponentMeta<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","import { LogoutOutlined } from \"@ant-design/icons\";\nimport type { MenuDataItem, ProLayoutProps } from \"@ant-design/pro-components\";\nimport { ProLayout } from \"@ant-design/pro-components\";\nimport { Dropdown } from \"antd\";\nimport React, { ReactNode } from \"react\";\n\ninterface NavMenuItem extends Omit<MenuDataItem, \"routes\"> {\n routes?: NavMenuItem[];\n}\n\nexport interface RichLayoutProps extends ProLayoutProps {\n navMenuItems?: NavMenuItem[];\n rootUrl?: string;\n actionsChildren?: ReactNode;\n footerChildren?: ReactNode;\n avatarLabel?: string;\n avatarImage?: string;\n showAvatarMenu?: boolean;\n}\n\nexport function RichLayout({\n children,\n navMenuItems,\n rootUrl = \"/\",\n actionsChildren,\n footerChildren,\n avatarLabel,\n avatarImage,\n showAvatarMenu,\n className,\n ...layoutProps\n}: RichLayoutProps) {\n const { pathname } = location;\n return (\n <div className={className}>\n <ProLayout\n {...layoutProps}\n // This is always needed if you want layout mix to have effect and look any different from layout side - not clear why this should ever be false.\n splitMenus={layoutProps.layout === \"mix\"}\n route={{\n path: rootUrl,\n routes: navMenuItems,\n }}\n location={{\n pathname,\n }}\n menu={{\n // collapsedShowGroupTitle: true,\n defaultOpenAll: true,\n // hideMenuWhenCollapsed: true,\n }}\n avatarProps={\n showAvatarMenu && false\n ? {\n src: avatarImage,\n size: \"small\",\n title: avatarLabel,\n render: (_props, dom) => {\n return (\n <Dropdown\n menu={{\n items: [\n {\n key: \"logout\",\n icon: <LogoutOutlined />,\n label: \"Sign out\",\n },\n ],\n }}\n >\n {dom}\n </Dropdown>\n );\n },\n }\n : undefined\n }\n actionsRender={(_props) => {\n return [actionsChildren];\n }}\n menuFooterRender={(props) => {\n if (props?.collapsed) return undefined;\n return footerChildren;\n }}\n onMenuHeaderClick={(e) => console.log(e)}\n menuItemRender={(item, dom) => <a href={item.path}>{dom}</a>}\n headerTitleRender={(logo, title, _) => {\n return (\n <a href={rootUrl}>\n {logo}\n {title}\n </a>\n );\n }}\n >\n {children}\n </ProLayout>\n </div>\n );\n}\n","import {\n ComponentMeta,\n JSONLikeType,\n} from \"@plasmicapp/host/registerComponent\";\nimport { capitalize } from \"../common\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichLayout, RichLayoutProps } from \"./RichLayout\";\n\nexport * from \"./RichLayout\";\nexport default RichLayout;\n\nfunction generateNavMenuType(\n remainingDepth: number,\n displayName?: string,\n defaultValue?: any[]\n): object & JSONLikeType<any> {\n return {\n displayName: displayName ? displayName : \"Nested items\",\n type: \"array\",\n defaultValue,\n itemType: {\n type: \"object\",\n nameFunc: (item: any) =>\n item.name || (!displayName ? \"Unnamed nested item\" : \"Unnamed item\"),\n fields: {\n path: \"string\",\n name: \"string\",\n ...(remainingDepth === 0\n ? {}\n : {\n routes: generateNavMenuType(remainingDepth - 1),\n }),\n },\n },\n } as const;\n}\n\nconst richLayoutMeta: ComponentMeta<RichLayoutProps> = {\n name: \"hostless-rich-layout\",\n displayName: \"Rich Layout\",\n props: {\n children: \"slot\",\n actionsChildren: \"slot\",\n title: {\n displayName: \"Title\",\n type: \"string\",\n defaultValue: \"App title\",\n },\n logo: {\n displayName: \"Logo\",\n type: \"imageUrl\",\n defaultValue: \"https://www.plasmic.app/favicon.ico\",\n },\n navMenuItems: generateNavMenuType(2, \"Nav menu items\", [\n {\n path: \"/welcome\",\n name: \"Welcome\",\n // icon: <SmileFilled />,\n // component: \"./Welcome\",\n },\n {\n path: \"/admin\",\n name: \"Admin\",\n // icon: <CrownFilled />,\n // access: \"canAdmin\",\n // component: \"./Admin\",\n routes: [\n {\n path: \"/admin/sub-page1\",\n name: \"Sub page 1\",\n // icon: \"https://gw.alipayobjects.com/zos/antfincdn/upvrAjAPQX/Logo_Tech%252520UI.svg\",\n // component: \"./Welcome\",\n },\n {\n path: \"/admin/sub-page2\",\n name: \"Sub page 2\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n {\n path: \"/admin/sub-page3\",\n name: \"Sub page 3\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n ],\n },\n {\n name: \"List\",\n // icon: <TabletFilled />,\n path: \"/list\",\n // component: \"./ListTableList\",\n routes: [\n {\n path: \"/list/sub-page\",\n name: \"Page group\",\n // icon: <CrownFilled />,\n routes: [\n {\n path: \"sub-sub-page1\",\n name: \"Sub sub page 1\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n {\n path: \"sub-sub-page2\",\n name: \"Sub sub page 2\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n {\n path: \"sub-sub-page3\",\n name: \"Sub sub page 3\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n ],\n },\n {\n path: \"/list/sub-page2\",\n name: \"Sub page 2\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n {\n path: \"/list/sub-page3\",\n name: \"Sub page 3\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n ],\n },\n {\n path: \"https://ant.design\",\n name: \"Extern link\",\n // icon: <ChromeFilled />,\n },\n ]),\n\n layout: {\n displayName: \"Layout\",\n type: \"choice\",\n options: [\"side\", \"top\", \"mix\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValue: \"mix\",\n },\n\n // Advanced, show later\n\n /*\n siderMenuType: {\n displayName: \"Sidebar mode\",\n type: \"choice\",\n options: [\"sub\", \"group\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValue: \"sub\",\n },\n contentWidth: {\n displayName: \"Content width\",\n type: \"choice\",\n options: [\"Fluid\", \"Fixed\"],\n defaultValueHint: \"Fluid\",\n },\n navTheme: {\n displayName: \"Theme\",\n type: \"choice\",\n options: [\n { value: \"realDark\", label: \"Dark\" },\n { value: \"light\", label: \"Light\" },\n ],\n },\n colorPrimary: {\n displayName: \"Primary color\",\n type: \"color\",\n },\n fixedHeader: {\n displayName: \"Sticky header\",\n type: \"boolean\",\n defaultValue: true,\n },\n fixSiderbar: {\n displayName: \"Sticky sidebar\",\n type: \"boolean\",\n defaultValue: true,\n },\n showAvatarMenu: {\n displayName: \"Show avatar\",\n type: \"boolean\",\n defaultValue: true,\n },\n avatarLabel: {\n displayName: \"Avatar label\",\n type: \"string\",\n defaultValue: \"User Name\",\n },\n avatarImage: {\n displayName: \"Avatar image\",\n type: \"imageUrl\",\n defaultValue:\n \"https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg\",\n },\n */\n menu: {\n displayName: \"Menu\",\n type: \"object\",\n fields: {\n defaultOpenAll: {\n displayName: \"Default open all\",\n type: \"boolean\",\n },\n hideMenuWhenCollapsed: {\n // displayName: \"\",\n type: \"boolean\",\n },\n },\n },\n },\n\n defaultStyles: {\n width: \"stretch\",\n height: \"stretch\",\n },\n\n importName: \"RichLayout\",\n importPath:\n \"@plasmicpkgs/plasmic-rich-components/dist/rich-layout/RichLayout\",\n};\n\nexport function registerRichLayout(loader?: Registerable) {\n registerComponentHelper(loader, RichLayout, richLayoutMeta);\n}\n","import { TableFieldSchema, TableSchema } from \"@plasmicapp/data-sources\";\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 const withoutNils = <T>(xs: Array<T | undefined | null>): T[] =>\n xs.filter((x): x is T => x != null);\n\ninterface AutoSettings {\n dataType: \"auto\";\n}\n\ninterface NumberSettings {\n dataType: \"number\";\n decimalPlacesExpr: RowFunc<number>;\n showThousandsSeparator: boolean;\n}\n\ninterface BooleanSettings {\n dataType: \"boolean\";\n showFalseAs: \"empty\" | \"dash\" | \"cross\";\n}\n\ninterface StringSettings {\n dataType: \"string\";\n}\n\ninterface StyleConfig {\n styles: {};\n align: \"left\" | \"center\" | \"right\";\n freeze: \"off\" | \"left\" | \"right\";\n}\n\ntype RowFunc<Result> = (row: Record<string, unknown>) => Result;\n\n/**\n * Exprs are for things that can must re-evaluate from row to row.\n *\n * Literal values are for things that are column-level. (But in Plasmic Studio, as with all props, you can still use a dynamic value.)\n */\nexport type ColumnConfig = {\n key: string;\n fieldId?: string;\n title?: string;\n expr?: RowFunc<any>;\n isEditableExpr: RowFunc<boolean>;\n disableSorting: boolean;\n sortByExpr?: RowFunc<any>;\n isHidden: boolean;\n formatting: StyleConfig;\n} & (AutoSettings | NumberSettings | StringSettings | BooleanSettings);\n\nexport type PartialColumnConfig = Omit<Partial<ColumnConfig>, \"key\"> & {\n key: string;\n};\n\nconst defaultColumnConfig = (): ColumnConfig =>\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 \"auto\",\n } as const);\n\nexport function deriveFieldConfigs(\n specifiedFieldsPartial: PartialColumnConfig[],\n schema: TableSchema | undefined\n): {\n mergedFields: ColumnConfig[];\n minimalFullLengthFields: PartialColumnConfig[];\n} {\n // Ugly: when adding a new item to an array from Plasmic Studio UI, no way to specify default values for the new item,\n // so we have to do it here. The only one we need is the random key.\n for (const field of specifiedFieldsPartial) {\n if (!field.key) {\n field.key = mkShortId();\n }\n }\n\n const schemaFields = schema?.fields ?? [];\n const fieldById = mkIdMap(schemaFields);\n const specifiedFieldIds = new Set(\n withoutNils(specifiedFieldsPartial.map((f) => f.fieldId))\n );\n function defaultColumnConfigForField(field: TableFieldSchema): ColumnConfig {\n return {\n ...defaultColumnConfig(),\n fieldId: field.id,\n title: field.label || field.id,\n expr: (currentItem) => currentItem[field.id],\n };\n }\n const keptSpecifiedFields = specifiedFieldsPartial.flatMap(\n (f): ColumnConfig[] => {\n const fieldId = f.fieldId;\n if (!fieldId) {\n return [{ ...defaultColumnConfig(), ...f }] as ColumnConfig[];\n }\n const field = fieldById.get(fieldId);\n\n // Drop configs with fieldIds no longer in the data.\n if (!field) {\n return [];\n }\n\n return [\n {\n ...defaultColumnConfigForField(field),\n ...f,\n },\n ] as ColumnConfig[];\n }\n );\n const newVirtualFields = schemaFields\n .filter((f) => !specifiedFieldIds.has(f.id))\n .map(\n (f): ColumnConfig => ({\n ...defaultColumnConfigForField(f),\n })\n );\n const mergedFields = [...keptSpecifiedFields, ...newVirtualFields];\n const minimalFullLengthFields: PartialColumnConfig[] = [\n ...specifiedFieldsPartial,\n ...newVirtualFields.map((f) => ({ key: f.key, fieldId: f.fieldId })),\n ];\n return { mergedFields, minimalFullLengthFields };\n}\n","import { EllipsisOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport {\n ActionType,\n ProColumns,\n ProTable,\n TableDropdown,\n} from \"@ant-design/pro-components\";\nimport {\n ManyRowsResult,\n TableFieldType,\n TableSchema,\n} from \"@plasmicapp/data-sources\";\nimport { DataProvider } from \"@plasmicapp/host\";\nimport { Button, Dropdown } from \"antd\";\nimport { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport { stringify } from \"csv-stringify/sync\";\nimport fastStringify from \"fast-stringify\";\nimport React, { ReactNode, useRef, useState } from \"react\";\nimport { useIsClient } from \"../common\";\nimport {\n ColumnConfig,\n deriveFieldConfigs,\n PartialColumnConfig,\n} from \"../field-mappings\";\n\nexport type QueryResult = Partial<ManyRowsResult<any>> & {\n error?: any;\n isLoading?: boolean;\n};\n\nexport interface Action {\n type: \"edit\" | \"view\" | \"delete\" | \"custom\";\n label?: string;\n moreMenu?: boolean;\n}\n\nexport interface ControlContextData {\n data: unknown[];\n schema?: TableSchema;\n mergedFields: ColumnConfig[];\n minimalFullLengthFields: PartialColumnConfig[];\n}\n\nexport interface RichTableProps {\n className?: string;\n data?: QueryResult;\n fields?: PartialColumnConfig[];\n // children?: React.ReactNode;\n defaultSize?: SizeType;\n pagination?: boolean;\n onSelect?: (record: any) => void;\n setControlContextData?: (ctx: ControlContextData) => void;\n title?: ReactNode;\n\n addHref?: string;\n\n actions?: Action[];\n customActionChildren?: ReactNode;\n\n showSearch?: boolean;\n\n pageSize?: number;\n}\n\nfunction tryGetSchema(data?: QueryResult): TableSchema | undefined {\n if (data?.schema) {\n return data.schema;\n }\n if (Array.isArray(data)) {\n data = { data };\n }\n if (!data?.data || !Array.isArray(data.data) || data.data.length === 0) {\n return undefined;\n }\n const fieldMap: Record<string, TableFieldType> = {};\n data.data.forEach((entry: any) => {\n if (entry && typeof entry === \"object\") {\n Array.from(Object.entries(entry)).forEach(([k, v]) => {\n const inferredType: TableFieldType =\n typeof v === \"string\"\n ? \"string\"\n : typeof v === \"boolean\"\n ? \"boolean\"\n : typeof v === \"number\"\n ? \"number\"\n : \"unknown\";\n if (fieldMap[k] && fieldMap[k] !== inferredType) {\n fieldMap[k] = \"unknown\";\n } else {\n fieldMap[k] = inferredType;\n }\n });\n }\n });\n return {\n id: \"inferred\",\n fields: Object.entries(fieldMap).map(([f, t]) => ({\n id: f,\n type: t,\n readOnly: false,\n })),\n };\n}\n\nfunction normalizeData(\n rawData: unknown\n): { data: Record<string, unknown>[]; schema?: TableSchema } | undefined {\n if (!rawData || typeof rawData !== \"object\") {\n return undefined;\n }\n const obj = Array.isArray(rawData) ? { data: rawData } : rawData!;\n if (!(\"data\" in obj)) {\n return undefined;\n }\n const objWithData = obj as { data: unknown[] };\n if (!Array.isArray(objWithData.data) || objWithData.data.length === 0) {\n return undefined;\n }\n // Make TS happy.\n const normed = { ...objWithData, data: objWithData.data };\n const schema = tryGetSchema(rawData as any);\n if (!schema) {\n return undefined;\n }\n return { ...normed, schema };\n}\n\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 defaultSize,\n fields,\n setControlContextData,\n title,\n addHref,\n actions,\n customActionChildren,\n showSearch = true,\n pageSize = 20,\n } = props;\n\n const data = normalizeData(rawData);\n\n const [search, setSearch] = useState(\"\");\n\n const { columnDefinitions } = React.useMemo(() => {\n const schema = tryGetSchema(data);\n if (!data || !schema) {\n return { normalized: [], columnDefinitions: [] };\n }\n const { mergedFields, minimalFullLengthFields } = deriveFieldConfigs(\n fields ?? [],\n schema\n );\n setControlContextData?.({ ...data, mergedFields, minimalFullLengthFields });\n const normalized = mergedFields;\n const columnDefinitions = normalized\n .filter((cconfig) => !cconfig.isHidden)\n .map((cconfig, _columnIndex, _columnsArray) => {\n const columnDefinition: ProColumns<any> = {\n dataIndex: cconfig.fieldId,\n title: cconfig.title,\n // dataIndex: cconfig,\n key: cconfig.key,\n valueType:\n cconfig.dataType === \"auto\"\n ? undefined\n : cconfig.dataType === \"string\"\n ? \"text\"\n : cconfig.dataType === \"number\"\n ? \"digit\"\n : cconfig.dataType === \"boolean\"\n ? \"switch\"\n : undefined,\n\n // To come later\n readonly: false,\n sorter: true,\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 (\n <DataProvider name=\"currentRow\" data={record}>\n <DataProvider name=\"currentRowIndex\" data={rowIndex}>\n <DataProvider name=\"currentColumn\" data={value}>\n {cconfig.expr ? cconfig.expr(record) : record}\n {/*{showChildren &&*/}\n {/* children &&*/}\n {/* (typeof children === \"object\"*/}\n {/* ? (Array.isArray(children) ? children : [children]).map(*/}\n {/* (child) =>*/}\n {/* repeatedElement(*/}\n {/* rowIndex * columnsArray.length + columnIndex,*/}\n {/* child*/}\n {/* )*/}\n {/* )*/}\n {/* : children)}*/}\n </DataProvider>\n </DataProvider>\n </DataProvider>\n );\n },\n };\n\n return columnDefinition;\n });\n if (actions && actions.length > 0) {\n columnDefinitions.push({\n title: \"Actions\",\n valueType: \"option\",\n key: \"__plasmicActions\",\n render: (_text, record, _, action) => [\n ...actions\n .filter((_action) => !_action.moreMenu)\n .map((_action, aindex) =>\n _action.type === \"edit\" ? (\n <a\n key={aindex}\n onClick={() => {\n action?.startEditable?.(record.id);\n }}\n >\n Edit\n </a>\n ) : _action.type === \"view\" ? (\n <a key={aindex} href={record.url}>\n View\n </a>\n ) : _action.type === \"delete\" ? (\n <a\n key={aindex}\n onClick={() => {\n // TODO delete\n }}\n >\n Delete\n </a>\n ) : (\n customActionChildren\n )\n ),\n <TableDropdown\n key=\"actionGroup\"\n onSelect={() => action?.reload()}\n menus={actions\n .filter((_action) => !!_action.moreMenu)\n .map((_action, aindex) => ({\n key: \"\" + aindex,\n name: _action.label ?? _action.type,\n }))}\n />,\n ],\n });\n }\n return { normalized, columnDefinitions };\n }, [fields, data, setControlContextData, Math.random()]);\n\n const actionRef = useRef<ActionType>();\n\n const isClient = useIsClient();\n if (!isClient) {\n return null;\n }\n // return <NestedTest {...{ fields }} />;\n return (\n <>\n <ProTable\n actionRef={actionRef}\n className={className}\n columns={columnDefinitions}\n dataSource={data?.data?.filter((row) =>\n fastStringify(Object.values(row)).toLowerCase().includes(search)\n )}\n rowKey={\"id\"}\n defaultSize={defaultSize}\n // request={() =>\n // Promise.resolve({\n // data: data?.data?.filter((row) =>\n // fastStringify(row).toLowerCase().includes(search)\n // ),\n // success: true,\n // })\n // }\n editable={{ type: \"multiple\" }}\n search={false}\n options={{\n setting: {\n listsHeight: 400,\n },\n }}\n pagination={{\n pageSize,\n onChange: (page) => console.log(page),\n }}\n dateFormatter=\"string\"\n headerTitle={title}\n toolbar={{\n search: showSearch\n ? {\n value: search,\n onChange: (e) => setSearch(e.target.value),\n onSearch: () => {},\n placeholder: \"Search\",\n }\n : undefined,\n }}\n toolBarRender={() => [\n addHref && (\n <Button\n key=\"button\"\n icon={<PlusOutlined />}\n type=\"primary\"\n href={addHref}\n >\n Add\n </Button>\n ),\n <Dropdown\n key=\"menu\"\n menu={{\n items: [\n {\n label: \"Download as CSV\",\n key: \"csv\",\n onClick: () => {\n const dataStr = stringify(data?.data as any, {\n columns:\n tryGetSchema(data)?.fields.map((f) => f.id) ?? [],\n header: true,\n });\n\n const filename = \"data.csv\";\n\n // Adapted from https://stackoverflow.com/a/68771795\n const blob = new Blob([dataStr], {\n type: \"text/csv;charset=utf-8;\",\n });\n if ((navigator as any).msSaveBlob) {\n // In case of IE 10+\n (navigator as any).msSaveBlob(blob, filename);\n } else {\n const link = document.createElement(\"a\");\n if (link.download !== undefined) {\n // Browsers that support HTML5 download attribute\n const url = URL.createObjectURL(blob);\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", filename);\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n },\n },\n {\n label: \"Download as JSON\",\n key: \"json\",\n onClick: () => {\n const dataStr = fastStringify(data?.data);\n const dataUri = `data:application/json;charset=utf-8, ${encodeURIComponent(\n dataStr\n )}`;\n\n const exportFileDefaultName = \"data.json\";\n\n const linkElement = document.createElement(\"a\");\n linkElement.setAttribute(\"href\", dataUri);\n linkElement.setAttribute(\"download\", exportFileDefaultName);\n linkElement.click();\n },\n },\n ],\n }}\n >\n <Button>\n <EllipsisOutlined />\n </Button>\n </Dropdown>,\n ]}\n />\n {/*Always hide the weird pin left/right buttons for now, which also have render layout issues*/}\n <style>\n {`\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 .ant-pro-table-list-toolbar-right {\n flex-wrap: initial;\n flex-shrink: 0;\n }\n `}\n </style>\n </>\n );\n}\n","import {\n ComponentMeta,\n ControlExtras,\n} from \"@plasmicapp/host/registerComponent\";\nimport { ColumnConfig } from \"../field-mappings\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { ControlContextData, RichTable, RichTableProps } from \"./RichTable\";\n\nexport * from \"./RichTable\";\nexport default RichTable;\n\nfunction ensureNumber(x: number | string): number {\n return x as number;\n}\n\nconst rowDataType = (displayName: string, control?: any) =>\n ({\n type: \"function\" as any,\n displayName,\n control,\n argNames: [\"currentItem\"],\n argValues: (_props: any, ctx: any) => [ctx?.data?.[0]],\n } as any);\n\nfunction getDefaultValueHint(field: keyof ColumnConfig) {\n return (\n _props: RichTableProps,\n contextData: ControlContextData | null,\n { path }: ControlExtras\n ): any => contextData?.mergedFields[ensureNumber(path.slice(-2)[0])][field];\n}\n\nconst dataTableMeta: ComponentMeta<RichTableProps> = {\n name: \"hostless-rich-table\",\n displayName: \"Rich Table\",\n props: {\n data: {\n type: \"dataSourceOpData\" as any,\n description: \"The data to display in the table\",\n },\n\n defaultSize: {\n type: \"choice\",\n options: [\"large\", \"middle\", \"small\"],\n defaultValueHint: \"large\",\n },\n\n // TODO\n // pagination: {\n // type: \"boolean\",\n // defaultValueHint: true,\n // },\n\n pageSize: {\n type: \"number\",\n defaultValueHint: 20,\n },\n\n fields: {\n type: \"array\",\n unstable__keyFunc: (x) => x.key,\n unstable__minimalValue: (_props, contextData) =>\n contextData?.minimalFullLengthFields,\n unstable__canDelete: (_item: any, _props, ctx, { path }) =>\n !ctx?.mergedFields[ensureNumber(path.slice(-1)[0])].fieldId,\n itemType: {\n type: \"object\",\n nameFunc: (_item: any, _props, ctx, { path }) =>\n ctx?.mergedFields[ensureNumber(path.slice(-1)[0])].title,\n fields: {\n key: {\n type: \"string\",\n hidden: () => true,\n },\n fieldId: {\n type: \"choice\",\n displayName: \"Field name\",\n readOnly: true,\n options: (_props, ctx) =>\n (ctx?.schema?.fields ?? []).map((f) => f.id),\n hidden: (_props, ctx, { path: _controlPath }) =>\n !(_controlPath.slice(-1)[0] in (ctx?.schema?.fields ?? {})),\n },\n title: {\n type: \"string\",\n displayName: \"Title\",\n defaultValueHint: getDefaultValueHint(\"title\"),\n },\n dataType: {\n type: \"choice\",\n displayName: \"Data type\",\n options: [\"auto\", \"number\", \"string\", \"boolean\"],\n defaultValueHint: getDefaultValueHint(\"dataType\"),\n },\n expr: rowDataType(\"Customize data\"),\n // TODO\n // isEditableExpr: rowDataType(\"Is editable\", {\n // type: \"boolean\",\n // defaultValueHint: false,\n // }),\n // disableSorting: {\n // type: \"boolean\",\n // displayName: \"Disable sorting\",\n // defaultValueHint: getDefaultValueHint(\"disableSorting\"),\n // },\n // sortByExpr: rowDataType(\"Sort by\"),\n isHidden: {\n type: \"boolean\",\n displayName: \"Is hidden\",\n defaultValueHint: getDefaultValueHint(\"isHidden\"),\n },\n },\n },\n },\n },\n importName: \"RichTable\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/dist/rich-table/RichTable\",\n};\n\nexport function registerRichTable(loader?: Registerable) {\n registerComponentHelper(loader, RichTable, dataTableMeta);\n}\n","import { registerRichLayout } from \"./rich-layout\";\nimport { registerRichTable } from \"./rich-table\";\nimport { Registerable } from \"./utils\";\n\nexport function registerAll(loader?: Registerable) {\n registerRichLayout(loader);\n registerRichTable(loader);\n}\n"],"names":["useIsClient","useState","loaded","setLoaded","useEffect","capitalize","text","slice","toUpperCase","registerComponentHelper","loader","component","meta","registerComponent","RichLayout","children","navMenuItems","rootUrl","actionsChildren","footerChildren","avatarLabel","avatarImage","showAvatarMenu","className","layoutProps","location","pathname","React","ProLayout","splitMenus","layout","route","path","routes","menu","defaultOpenAll","avatarProps","src","size","title","render","_props","dom","Dropdown","items","key","icon","LogoutOutlined","label","undefined","actionsRender","menuFooterRender","props","collapsed","onMenuHeaderClick","e","console","log","menuItemRender","item","href","headerTitleRender","logo","_","generateNavMenuType","remainingDepth","displayName","defaultValue","type","itemType","nameFunc","name","fields","richLayoutMeta","options","map","value","hideMenuWhenCollapsed","defaultStyles","width","height","importName","importPath","registerRichLayout","tuple","args","mkIdMap","xs","Map","x","id","mkShortId","Math","random","withoutNils","filter","defaultColumnConfig","isEditableExpr","disableSorting","sortByExpr","isHidden","formatting","styles","align","freeze","dataType","deriveFieldConfigs","specifiedFieldsPartial","schema","field","schemaFields","fieldById","specifiedFieldIds","Set","f","fieldId","defaultColumnConfigForField","expr","currentItem","keptSpecifiedFields","flatMap","get","newVirtualFields","has","mergedFields","minimalFullLengthFields","tryGetSchema","data","Array","isArray","length","fieldMap","forEach","entry","from","Object","entries","k","v","inferredType","t","readOnly","normalizeData","rawData","obj","objWithData","normed","RichTable","defaultSize","setControlContextData","addHref","actions","customActionChildren","showSearch","pageSize","search","setSearch","useMemo","normalized","columnDefinitions","cconfig","_columnIndex","_columnsArray","columnDefinition","dataIndex","valueType","readonly","sorter","copyable","ellipsis","tip","formItemProps","rules","disable","valueEnum","hideInSearch","renderFormItem","defaultRender","record","rowIndex","DataProvider","push","_text","action","_action","moreMenu","aindex","onClick","startEditable","url","TableDropdown","onSelect","reload","menus","actionRef","useRef","isClient","ProTable","columns","dataSource","row","fastStringify","values","toLowerCase","includes","rowKey","editable","setting","listsHeight","pagination","onChange","page","dateFormatter","headerTitle","toolbar","target","onSearch","placeholder","toolBarRender","Button","PlusOutlined","dataStr","stringify","header","filename","blob","Blob","navigator","msSaveBlob","link","document","createElement","download","URL","createObjectURL","setAttribute","style","visibility","body","appendChild","click","removeChild","dataUri","encodeURIComponent","exportFileDefaultName","linkElement","EllipsisOutlined","ensureNumber","rowDataType","control","argNames","argValues","ctx","getDefaultValueHint","contextData","dataTableMeta","description","defaultValueHint","unstable__keyFunc","unstable__minimalValue","unstable__canDelete","_item","hidden","_controlPath","registerRichTable","registerAll"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAEgBA,WAAW;EACzB,gBAA4BC,cAAQ,CAAC,KAAK,CAAC;IAApCC,MAAM;IAAEC,SAAS;EACxBC,eAAS,CAAC;IACRD,SAAS,CAAC,IAAI,CAAC;GAChB,CAAC;EACF,OAAOD,MAAM;AACf;SAEgBG,UAAU,CAACC,IAAY;EACrC,OAAOA,IAAI,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,EAAE,GAAGF,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC;AACvD;;SC2BgBE,uBAAuB,CACrCC,MAAgC,EAChCC,SAAY,EACZC,IAA4C;EAE5C,IAAIF,MAAM,EAAE;IACVA,MAAM,CAACG,iBAAiB,CAACF,SAAS,EAAEC,IAAI,CAAC;GAC1C,MAAM;IACLC,iBAAiB,CAACF,SAAS,EAAEC,IAAI,CAAC;;AAEtC;;;ACjDA,SAoBgBE,UAAU;MACxBC,QAAQ,QAARA,QAAQ;IACRC,YAAY,QAAZA,YAAY;IAAA,oBACZC,OAAO;IAAPA,OAAO,6BAAG,GAAG;IACbC,eAAe,QAAfA,eAAe;IACfC,cAAc,QAAdA,cAAc;IACdC,WAAW,QAAXA,WAAW;IACXC,WAAW,QAAXA,WAAW;IACXC,cAAc,QAAdA,cAAc;IACdC,SAAS,QAATA,SAAS;IACNC,WAAW;EAEd,gBAAqBC,QAAQ;IAArBC,QAAQ,aAARA,QAAQ;EAChB,OACEC;IAAKJ,SAAS,EAAEA;KACdI,6BAACC,uBAAS,oBACJJ,WAAW;;IAEfK,UAAU,EAAEL,WAAW,CAACM,MAAM,KAAK,KAAK;IACxCC,KAAK,EAAE;MACLC,IAAI,EAAEf,OAAO;MACbgB,MAAM,EAAEjB;KACT;IACDS,QAAQ,EAAE;MACRC,QAAQ,EAARA;KACD;IACDQ,IAAI,EAAE;;MAEJC,cAAc,EAAE;KAEjB;IACDC,WAAW,EACTd,cAAc,IAAI,KAAK,GACnB;MACEe,GAAG,EAAEhB,WAAW;MAChBiB,IAAI,EAAE,OAAO;MACbC,KAAK,EAAEnB,WAAW;MAClBoB,MAAM,EAAE,gBAACC,MAAM,EAAEC,GAAG;QAClB,OACEf,6BAACgB,aAAQ;UACPT,IAAI,EAAE;YACJU,KAAK,EAAE,CACL;cACEC,GAAG,EAAE,QAAQ;cACbC,IAAI,EAAEnB,6BAACoB,oBAAc,OAAG;cACxBC,KAAK,EAAE;aACR;;WAIJN,GAAG,CACK;;KAGhB,GACDO,SAAS;IAEfC,aAAa,EAAE,uBAACT,MAAM;MACpB,OAAO,CAACvB,eAAe,CAAC;KACzB;IACDiC,gBAAgB,EAAE,0BAACC,KAAK;MACtB,IAAIA,KAAK,YAALA,KAAK,CAAEC,SAAS,EAAE,OAAOJ,SAAS;MACtC,OAAO9B,cAAc;KACtB;IACDmC,iBAAiB,EAAE,2BAACC,CAAC;MAAA,OAAKC,OAAO,CAACC,GAAG,CAACF,CAAC,CAAC;;IACxCG,cAAc,EAAE,wBAACC,IAAI,EAAEjB,GAAG;MAAA,OAAKf;QAAGiC,IAAI,EAAED,IAAI,CAAC3B;SAAOU,GAAG,CAAK;;IAC5DmB,iBAAiB,EAAE,2BAACC,IAAI,EAAEvB,KAAK,EAAEwB,CAAC;MAChC,OACEpC;QAAGiC,IAAI,EAAE3C;SACN6C,IAAI,EACJvB,KAAK,CACJ;;MAIPxB,QAAQ,CACC,CACR;AAEV;;ACxFA,SAASiD,mBAAmB,CAC1BC,cAAsB,EACtBC,WAAoB,EACpBC,YAAoB;EAEpB,OAAO;IACLD,WAAW,EAAEA,WAAW,GAAGA,WAAW,GAAG,cAAc;IACvDE,IAAI,EAAE,OAAO;IACbD,YAAY,EAAZA,YAAY;IACZE,QAAQ,EAAE;MACRD,IAAI,EAAE,QAAQ;MACdE,QAAQ,EAAE,kBAACX,IAAS;QAAA,OAClBA,IAAI,CAACY,IAAI,KAAK,CAACL,WAAW,GAAG,qBAAqB,GAAG,cAAc,CAAC;;MACtEM,MAAM;QACJxC,IAAI,EAAE,QAAQ;QACduC,IAAI,EAAE;SACFN,cAAc,KAAK,CAAC,GACpB,EAAE,GACF;QACEhC,MAAM,EAAE+B,mBAAmB,CAACC,cAAc,GAAG,CAAC;OAC/C;;GAGD;AACZ;AAEA,IAAMQ,cAAc,GAAmC;EACrDF,IAAI,EAAE,sBAAsB;EAC5BL,WAAW,EAAE,aAAa;EAC1Bd,KAAK,EAAE;IACLrC,QAAQ,EAAE,MAAM;IAChBG,eAAe,EAAE,MAAM;IACvBqB,KAAK,EAAE;MACL2B,WAAW,EAAE,OAAO;MACpBE,IAAI,EAAE,QAAQ;MACdD,YAAY,EAAE;KACf;IACDL,IAAI,EAAE;MACJI,WAAW,EAAE,MAAM;MACnBE,IAAI,EAAE,UAAU;MAChBD,YAAY,EAAE;KACf;IACDnD,YAAY,eAAEgD,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CACrD;MACEhC,IAAI,EAAE,UAAU;MAChBuC,IAAI,EAAE;KAGP,EACD;MACEvC,IAAI,EAAE,QAAQ;MACduC,IAAI,EAAE,OAAO;;;;MAIbtC,MAAM,EAAE,CACN;QACED,IAAI,EAAE,kBAAkB;QACxBuC,IAAI,EAAE;OAGP,EACD;QACEvC,IAAI,EAAE,kBAAkB;QACxBuC,IAAI,EAAE;OAGP,EACD;QACEvC,IAAI,EAAE,kBAAkB;QACxBuC,IAAI,EAAE;OAGP;KAEJ,EACD;MACEA,IAAI,EAAE,MAAM;;MAEZvC,IAAI,EAAE,OAAO;;MAEbC,MAAM,EAAE,CACN;QACED,IAAI,EAAE,gBAAgB;QACtBuC,IAAI,EAAE,YAAY;;QAElBtC,MAAM,EAAE,CACN;UACED,IAAI,EAAE,eAAe;UACrBuC,IAAI,EAAE;SAGP,EACD;UACEvC,IAAI,EAAE,eAAe;UACrBuC,IAAI,EAAE;SAGP,EACD;UACEvC,IAAI,EAAE,eAAe;UACrBuC,IAAI,EAAE;SAGP;OAEJ,EACD;QACEvC,IAAI,EAAE,iBAAiB;QACvBuC,IAAI,EAAE;OAGP,EACD;QACEvC,IAAI,EAAE,iBAAiB;QACvBuC,IAAI,EAAE;OAGP;KAEJ,EACD;MACEvC,IAAI,EAAE,oBAAoB;MAC1BuC,IAAI,EAAE;KAEP,CACF,CAAC;IAEFzC,MAAM,EAAE;MACNoC,WAAW,EAAE,QAAQ;MACrBE,IAAI,EAAE,QAAQ;MACdM,OAAO,eAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAACC,GAAG,CAAC,UAACC,KAAK;QAAA,OAAM;UAC9CA,KAAK,EAALA,KAAK;UACL5B,KAAK,EAAE3C,UAAU,CAACuE,KAAK;SACxB;OAAC,CAAC;MACHT,YAAY,EAAE;KACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2DDjC,IAAI,EAAE;MACJgC,WAAW,EAAE,MAAM;MACnBE,IAAI,EAAE,QAAQ;MACdI,MAAM,EAAE;QACNrC,cAAc,EAAE;UACd+B,WAAW,EAAE,kBAAkB;UAC/BE,IAAI,EAAE;SACP;QACDS,qBAAqB,EAAE;;UAErBT,IAAI,EAAE;;;;GAIb;EAEDU,aAAa,EAAE;IACbC,KAAK,EAAE,SAAS;IAChBC,MAAM,EAAE;GACT;EAEDC,UAAU,EAAE,YAAY;EACxBC,UAAU,EACR;CACH;AAED,SAAgBC,kBAAkB,CAACzE,MAAqB;EACtDD,uBAAuB,CAACC,MAAM,EAAEI,UAAU,EAAE2D,cAAc,CAAC;AAC7D;;ACxOO,IAAMW,KAAK,GAAG,SAARA,KAAK;EAAA,kCAAwBC,IAAO;IAAPA,IAAO;;EAAA,OAAQA,IAAI;AAAA;AAM7D,SAAgBC,OAAO,CAAkBC,EAAoB;EAC3D,OAAO,IAAIC,GAAG,CAACD,EAAE,CAACZ,GAAG,CAAC,UAACc,CAAC;IAAA,OAAKL,KAAK,CAACK,CAAC,CAACC,EAAE,EAAED,CAAC,CAAgB;IAAC,CAAC;AAC9D;AAEA,AAAO,IAAME,SAAS,GAAG,SAAZA,SAAS;EAAA,YAAYC,IAAI,CAACC,MAAM,EAAE;AAAA,CAAE;AAEjD,AAAO,IAAMC,WAAW,GAAG,SAAdA,WAAW,CAAOP,EAA+B;EAAA,OAC5DA,EAAE,CAACQ,MAAM,CAAC,UAACN,CAAC;IAAA,OAAaA,CAAC,IAAI,IAAI;IAAC;AAAA;AAkDrC,IAAMO,mBAAmB,GAAG,SAAtBA,mBAAmB;EAAA,OACtB;IACCnD,GAAG,EAAE8C,SAAS,EAAE;IAChBM,cAAc,EAAE;MAAA,OAAM,KAAK;;IAC3BC,cAAc,EAAE,KAAK;IACrBC,UAAU,EAAElD,SAAS;IACrBmD,QAAQ,EAAE,KAAK;IACfC,UAAU,EAAE;MACVC,MAAM,EAAE,EAAE;MACVC,KAAK,EAAE,MAAM;MACbC,MAAM,EAAE;KACT;IACDC,QAAQ,EAAE;GACD;AAAA,CAAA;AAEb,SAAgBC,kBAAkB,CAChCC,sBAA6C,EAC7CC,MAA+B;;;;EAO/B,qDAAoBD,sBAAsB,wCAAE;IAAA,IAAjCE,KAAK;IACd,IAAI,CAACA,KAAK,CAAChE,GAAG,EAAE;MACdgE,KAAK,CAAChE,GAAG,GAAG8C,SAAS,EAAE;;;EAI3B,IAAMmB,YAAY,qBAAGF,MAAM,oBAANA,MAAM,CAAEpC,MAAM,6BAAI,EAAE;EACzC,IAAMuC,SAAS,GAAGzB,OAAO,CAACwB,YAAY,CAAC;EACvC,IAAME,iBAAiB,GAAG,IAAIC,GAAG,CAC/BnB,WAAW,CAACa,sBAAsB,CAAChC,GAAG,CAAC,UAACuC,CAAC;IAAA,OAAKA,CAAC,CAACC,OAAO;IAAC,CAAC,CAC1D;EACD,SAASC,2BAA2B,CAACP,KAAuB;IAC1D,oBACKb,mBAAmB,EAAE;MACxBmB,OAAO,EAAEN,KAAK,CAACnB,EAAE;MACjBnD,KAAK,EAAEsE,KAAK,CAAC7D,KAAK,IAAI6D,KAAK,CAACnB,EAAE;MAC9B2B,IAAI,EAAE,cAACC,WAAW;QAAA,OAAKA,WAAW,CAACT,KAAK,CAACnB,EAAE,CAAC;;;;EAGhD,IAAM6B,mBAAmB,GAAGZ,sBAAsB,CAACa,OAAO,CACxD,UAACN,CAAC;IACA,IAAMC,OAAO,GAAGD,CAAC,CAACC,OAAO;IACzB,IAAI,CAACA,OAAO,EAAE;MACZ,OAAO,cAAMnB,mBAAmB,EAAE,EAAKkB,CAAC,EAAqB;;IAE/D,IAAML,KAAK,GAAGE,SAAS,CAACU,GAAG,CAACN,OAAO,CAAC;;IAGpC,IAAI,CAACN,KAAK,EAAE;MACV,OAAO,EAAE;;IAGX,OAAO,cAEAO,2BAA2B,CAACP,KAAK,CAAC,EAClCK,CAAC,EAEW;GACpB,CACF;EACD,IAAMQ,gBAAgB,GAAGZ,YAAY,CAClCf,MAAM,CAAC,UAACmB,CAAC;IAAA,OAAK,CAACF,iBAAiB,CAACW,GAAG,CAACT,CAAC,CAACxB,EAAE,CAAC;IAAC,CAC3Cf,GAAG,CACF,UAACuC,CAAC;IAAA,oBACGE,2BAA2B,CAACF,CAAC,CAAC;GACjC,CACH;EACH,IAAMU,YAAY,aAAOL,mBAAmB,EAAKG,gBAAgB,CAAC;EAClE,IAAMG,uBAAuB,aACxBlB,sBAAsB,EACtBe,gBAAgB,CAAC/C,GAAG,CAAC,UAACuC,CAAC;IAAA,OAAM;MAAErE,GAAG,EAAEqE,CAAC,CAACrE,GAAG;MAAEsE,OAAO,EAAED,CAAC,CAACC;KAAS;GAAC,CAAC,CACrE;EACD,OAAO;IAAES,YAAY,EAAZA,YAAY;IAAEC,uBAAuB,EAAvBA;GAAyB;AAClD;;AC9EA,SAASC,YAAY,CAACC,IAAkB;;EACtC,aAAIA,IAAI,aAAJ,MAAMnB,MAAM,EAAE;IAChB,OAAOmB,IAAI,CAACnB,MAAM;;EAEpB,IAAIoB,KAAK,CAACC,OAAO,CAACF,IAAI,CAAC,EAAE;IACvBA,IAAI,GAAG;MAAEA,IAAI,EAAJA;KAAM;;EAEjB,IAAI,YAACA,IAAI,aAAJ,OAAMA,IAAI,KAAI,CAACC,KAAK,CAACC,OAAO,CAACF,IAAI,CAACA,IAAI,CAAC,IAAIA,IAAI,CAACA,IAAI,CAACG,MAAM,KAAK,CAAC,EAAE;IACtE,OAAOjF,SAAS;;EAElB,IAAMkF,QAAQ,GAAmC,EAAE;EACnDJ,IAAI,CAACA,IAAI,CAACK,OAAO,CAAC,UAACC,KAAU;IAC3B,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtCL,KAAK,CAACM,IAAI,CAACC,MAAM,CAACC,OAAO,CAACH,KAAK,CAAC,CAAC,CAACD,OAAO,CAAC;YAAEK,CAAC;UAAEC,CAAC;QAC9C,IAAMC,YAAY,GAChB,OAAOD,CAAC,KAAK,QAAQ,GACjB,QAAQ,GACR,OAAOA,CAAC,KAAK,SAAS,GACtB,SAAS,GACT,OAAOA,CAAC,KAAK,QAAQ,GACrB,QAAQ,GACR,SAAS;QACf,IAAIP,QAAQ,CAACM,CAAC,CAAC,IAAIN,QAAQ,CAACM,CAAC,CAAC,KAAKE,YAAY,EAAE;UAC/CR,QAAQ,CAACM,CAAC,CAAC,GAAG,SAAS;SACxB,MAAM;UACLN,QAAQ,CAACM,CAAC,CAAC,GAAGE,YAAY;;OAE7B,CAAC;;GAEL,CAAC;EACF,OAAO;IACLjD,EAAE,EAAE,UAAU;IACdlB,MAAM,EAAE+D,MAAM,CAACC,OAAO,CAACL,QAAQ,CAAC,CAACxD,GAAG,CAAC;MAAA,IAAEuC,CAAC;QAAE0B,CAAC;MAAA,OAAO;QAChDlD,EAAE,EAAEwB,CAAC;QACL9C,IAAI,EAAEwE,CAAC;QACPC,QAAQ,EAAE;OACX;KAAC;GACH;AACH;AAEA,SAASC,aAAa,CACpBC,OAAgB;EAEhB,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAC3C,OAAO9F,SAAS;;EAElB,IAAM+F,GAAG,GAAGhB,KAAK,CAACC,OAAO,CAACc,OAAO,CAAC,GAAG;IAAEhB,IAAI,EAAEgB;GAAS,GAAGA,OAAQ;EACjE,IAAI,EAAE,MAAM,IAAIC,GAAG,CAAC,EAAE;IACpB,OAAO/F,SAAS;;EAElB,IAAMgG,WAAW,GAAGD,GAA0B;EAC9C,IAAI,CAAChB,KAAK,CAACC,OAAO,CAACgB,WAAW,CAAClB,IAAI,CAAC,IAAIkB,WAAW,CAAClB,IAAI,CAACG,MAAM,KAAK,CAAC,EAAE;IACrE,OAAOjF,SAAS;;;EAGlB,IAAMiG,MAAM,gBAAQD,WAAW;IAAElB,IAAI,EAAEkB,WAAW,CAAClB;IAAM;EACzD,IAAMnB,MAAM,GAAGkB,YAAY,CAACiB,OAAc,CAAC;EAC3C,IAAI,CAACnC,MAAM,EAAE;IACX,OAAO3D,SAAS;;EAElB,oBAAYiG,MAAM;IAAEtC,MAAM,EAANA;;AACtB;AAEA,SAAgBuC,SAAS,CAAC/F,KAAqB;;EAC7C,IACE7B,SAAS,GAwBP6B,KAAK,CAxBP7B,SAAS;IAAA,cAwBP6B,KAAK,CAvBP2E,IAAI;IAAEgB,OAAO,4BAAG;MACdhB,IAAI,EAAE,EAAE;MACRnB,MAAM,EAAE;QACNlB,EAAE,EAAE,UAAU;QACdlB,MAAM,EAAE,CACN;UACEkB,EAAE,EAAE,IAAI;UACRtB,IAAI,EAAE,QAAQ;UACdyE,QAAQ,EAAE;SACX;;KAGN;IAEDO,WAAW,GASThG,KAAK,CATPgG,WAAW;IACX5E,MAAM,GAQJpB,KAAK,CARPoB,MAAM;IACN6E,qBAAqB,GAOnBjG,KAAK,CAPPiG,qBAAqB;IACrB9G,KAAK,GAMHa,KAAK,CANPb,KAAK;IACL+G,OAAO,GAKLlG,KAAK,CALPkG,OAAO;IACPC,OAAO,GAILnG,KAAK,CAJPmG,OAAO;IACPC,oBAAoB,GAGlBpG,KAAK,CAHPoG,oBAAoB;IAAA,oBAGlBpG,KAAK,CAFPqG,UAAU;IAAVA,UAAU,kCAAG,IAAI;IAAA,kBAEfrG,KAAK,CADPsG,QAAQ;IAARA,QAAQ,gCAAG,EAAE;EAGf,IAAM3B,IAAI,GAAGe,aAAa,CAACC,OAAO,CAAC;EAEnC,gBAA4B9I,cAAQ,CAAC,EAAE,CAAC;IAAjC0J,MAAM;IAAEC,SAAS;EAExB,qBAA8BjI,cAAK,CAACkI,OAAO,CAAC;MAC1C,IAAMjD,MAAM,GAAGkB,YAAY,CAACC,IAAI,CAAC;MACjC,IAAI,CAACA,IAAI,IAAI,CAACnB,MAAM,EAAE;QACpB,OAAO;UAAEkD,UAAU,EAAE,EAAE;UAAEC,iBAAiB,EAAE;SAAI;;MAElD,0BAAkDrD,kBAAkB,CAClElC,MAAM,WAANA,MAAM,GAAI,EAAE,EACZoC,MAAM,CACP;QAHOgB,YAAY,uBAAZA,YAAY;QAAEC,uBAAuB,uBAAvBA,uBAAuB;MAI7CwB,qBAAqB,oBAArBA,qBAAqB,cAAQtB,IAAI;QAAEH,YAAY,EAAZA,YAAY;QAAEC,uBAAuB,EAAvBA;SAA0B;MAC3E,IAAMiC,UAAU,GAAGlC,YAAY;MAC/B,IAAMmC,iBAAiB,GAAGD,UAAU,CACjC/D,MAAM,CAAC,UAACiE,OAAO;QAAA,OAAK,CAACA,OAAO,CAAC5D,QAAQ;QAAC,CACtCzB,GAAG,CAAC,UAACqF,OAAO,EAAEC,YAAY,EAAEC,aAAa;QACxC,IAAMC,gBAAgB,GAAoB;UACxCC,SAAS,EAAEJ,OAAO,CAAC7C,OAAO;UAC1B5E,KAAK,EAAEyH,OAAO,CAACzH,KAAK;;UAEpBM,GAAG,EAAEmH,OAAO,CAACnH,GAAG;UAChBwH,SAAS,EACPL,OAAO,CAACvD,QAAQ,KAAK,MAAM,GACvBxD,SAAS,GACT+G,OAAO,CAACvD,QAAQ,KAAK,QAAQ,GAC7B,MAAM,GACNuD,OAAO,CAACvD,QAAQ,KAAK,QAAQ,GAC7B,OAAO,GACPuD,OAAO,CAACvD,QAAQ,KAAK,SAAS,GAC9B,QAAQ,GACRxD,SAAS;;UAGfqH,QAAQ,EAAE,KAAK;UACfC,MAAM,EAAE,IAAI;UACZC,QAAQ,EAAE,KAAK;UACfC,QAAQ,EAAE,KAAK;UACfC,GAAG,EAAEzH,SAAS;UACd0H,aAAa,EAAE;YACbC,KAAK,EAAE;WACR;UACDC,OAAO,EAAE,KAAK;UACdC,SAAS,EAAE7H,SAAS;UACpB0G,MAAM,EAAE1G,SAAS;UACjB8H,YAAY,EAAE,KAAK;UACnBC,cAAc,EAAE,wBAACjH,CAAC;gBAAIkH,aAAa,SAAbA,aAAa;YACjC,OAAOA,aAAa,CAAClH,CAAC,CAAC;WACxB;UAEDvB,MAAM,EAAE,gBAACoC,KAAU,EAAEsG,MAAW,EAAEC,QAAa;YAC7C,OACExJ,6BAACyJ,iBAAY;cAAC7G,IAAI,EAAC,YAAY;cAACwD,IAAI,EAAEmD;eACpCvJ,6BAACyJ,iBAAY;cAAC7G,IAAI,EAAC,iBAAiB;cAACwD,IAAI,EAAEoD;eACzCxJ,6BAACyJ,iBAAY;cAAC7G,IAAI,EAAC,eAAe;cAACwD,IAAI,EAAEnD;eACtCoF,OAAO,CAAC3C,IAAI,GAAG2C,OAAO,CAAC3C,IAAI,CAAC6D,MAAM,CAAC,GAAGA,MAAM,CAYhC,CACF,CACF;;SAGpB;QAED,OAAOf,gBAAgB;OACxB,CAAC;MACJ,IAAIZ,OAAO,IAAIA,OAAO,CAACrB,MAAM,GAAG,CAAC,EAAE;QACjC6B,iBAAiB,CAACsB,IAAI,CAAC;UACrB9I,KAAK,EAAE,SAAS;UAChB8H,SAAS,EAAE,QAAQ;UACnBxH,GAAG,EAAE,kBAAkB;UACvBL,MAAM,EAAE,gBAAC8I,KAAK,EAAEJ,MAAM,EAAEnH,CAAC,EAAEwH,MAAM;YAAA,iBAC5BhC,OAAO,CACPxD,MAAM,CAAC,UAACyF,OAAO;cAAA,OAAK,CAACA,OAAO,CAACC,QAAQ;cAAC,CACtC9G,GAAG,CAAC,UAAC6G,OAAO,EAAEE,MAAM;cAAA,OACnBF,OAAO,CAACpH,IAAI,KAAK,MAAM,GACrBzC;gBACEkB,GAAG,EAAE6I,MAAM;gBACXC,OAAO,EAAE;kBACPJ,MAAM,oBAANA,MAAM,CAAEK,aAAa,oBAArBL,MAAM,CAAEK,aAAa,CAAGV,MAAM,CAACxF,EAAE,CAAC;;wBAIlC,GACF8F,OAAO,CAACpH,IAAI,KAAK,MAAM,GACzBzC;gBAAGkB,GAAG,EAAE6I,MAAM;gBAAE9H,IAAI,EAAEsH,MAAM,CAACW;wBAEzB,GACFL,OAAO,CAACpH,IAAI,KAAK,QAAQ,GAC3BzC;gBACEkB,GAAG,EAAE6I,MAAM;gBACXC,OAAO,EAAE;;;0BAKP,GAEJnC,oBACD;cACF,GACH7H,6BAACmK,2BAAa;cACZjJ,GAAG,EAAC,aAAa;cACjBkJ,QAAQ,EAAE;gBAAA,OAAMR,MAAM,oBAANA,MAAM,CAAES,MAAM,EAAE;;cAChCC,KAAK,EAAE1C,OAAO,CACXxD,MAAM,CAAC,UAACyF,OAAO;gBAAA,OAAK,CAAC,CAACA,OAAO,CAACC,QAAQ;gBAAC,CACvC9G,GAAG,CAAC,UAAC6G,OAAO,EAAEE,MAAM;gBAAA;gBAAA,OAAM;kBACzB7I,GAAG,EAAE,EAAE,GAAG6I,MAAM;kBAChBnH,IAAI,mBAAEiH,OAAO,CAACxI,KAAK,4BAAIwI,OAAO,CAACpH;iBAChC;eAAC;cACJ;;SAEL,CAAC;;MAEJ,OAAO;QAAE0F,UAAU,EAAVA,UAAU;QAAEC,iBAAiB,EAAjBA;OAAmB;KACzC,EAAE,CAACvF,MAAM,EAAEuD,IAAI,EAAEsB,qBAAqB,EAAEzD,IAAI,CAACC,MAAM,EAAE,CAAC,CAAC;IA1HhDkE,iBAAiB,kBAAjBA,iBAAiB;EA4HzB,IAAMmC,SAAS,GAAGC,YAAM,EAAc;EAEtC,IAAMC,QAAQ,GAAGpM,WAAW,EAAE;EAC9B,IAAI,CAACoM,QAAQ,EAAE;IACb,OAAO,IAAI;;;EAGb,OACEzK,4DACEA,6BAAC0K,sBAAQ;IACPH,SAAS,EAAEA,SAAS;IACpB3K,SAAS,EAAEA,SAAS;IACpB+K,OAAO,EAAEvC,iBAAiB;IAC1BwC,UAAU,EAAExE,IAAI,kCAAJA,IAAI,CAAEA,IAAI,qBAAV,WAAYhC,MAAM,CAAC,UAACyG,GAAG;MAAA,OACjCC,aAAa,CAAClE,MAAM,CAACmE,MAAM,CAACF,GAAG,CAAC,CAAC,CAACG,WAAW,EAAE,CAACC,QAAQ,CAACjD,MAAM,CAAC;MACjE;IACDkD,MAAM,EAAE,IAAI;IACZzD,WAAW,EAAEA,WAAW;;;;;;;;;IASxB0D,QAAQ,EAAE;MAAE1I,IAAI,EAAE;KAAY;IAC9BuF,MAAM,EAAE,KAAK;IACbjF,OAAO,EAAE;MACPqI,OAAO,EAAE;QACPC,WAAW,EAAE;;KAEhB;IACDC,UAAU,EAAE;MACVvD,QAAQ,EAARA,QAAQ;MACRwD,QAAQ,EAAE,kBAACC,IAAI;QAAA,OAAK3J,OAAO,CAACC,GAAG,CAAC0J,IAAI,CAAC;;KACtC;IACDC,aAAa,EAAC,QAAQ;IACtBC,WAAW,EAAE9K,KAAK;IAClB+K,OAAO,EAAE;MACP3D,MAAM,EAAEF,UAAU,GACd;QACE7E,KAAK,EAAE+E,MAAM;QACbuD,QAAQ,EAAE,kBAAC3J,CAAC;UAAA,OAAKqG,SAAS,CAACrG,CAAC,CAACgK,MAAM,CAAC3I,KAAK,CAAC;;QAC1C4I,QAAQ,EAAE,sBAAQ;QAClBC,WAAW,EAAE;OACd,GACDxK;KACL;IACDyK,aAAa,EAAE;MAAA,OAAM,CACnBpE,OAAO,IACL3H,6BAACgM,WAAM;QACL9K,GAAG,EAAC,QAAQ;QACZC,IAAI,EAAEnB,6BAACiM,kBAAY,OAAG;QACtBxJ,IAAI,EAAC,SAAS;QACdR,IAAI,EAAE0F;eAIT,EACD3H,6BAACgB,aAAQ;QACPE,GAAG,EAAC,MAAM;QACVX,IAAI,EAAE;UACJU,KAAK,EAAE,CACL;YACEI,KAAK,EAAE,iBAAiB;YACxBH,GAAG,EAAE,KAAK;YACV8I,OAAO,EAAE;;cACP,IAAMkC,OAAO,GAAGC,cAAS,CAAC/F,IAAI,oBAAJA,IAAI,CAAEA,IAAW,EAAE;gBAC3CuE,OAAO,4CACLxE,YAAY,CAACC,IAAI,CAAC,qBAAlB,cAAoBvD,MAAM,CAACG,GAAG,CAAC,UAACuC,CAAC;kBAAA,OAAKA,CAAC,CAACxB,EAAE;kBAAC,oCAAI,EAAE;gBACnDqI,MAAM,EAAE;eACT,CAAC;cAEF,IAAMC,QAAQ,GAAG,UAAU;;cAG3B,IAAMC,IAAI,GAAG,IAAIC,IAAI,CAAC,CAACL,OAAO,CAAC,EAAE;gBAC/BzJ,IAAI,EAAE;eACP,CAAC;cACF,IAAK+J,SAAiB,CAACC,UAAU,EAAE;;gBAEhCD,SAAiB,CAACC,UAAU,CAACH,IAAI,EAAED,QAAQ,CAAC;eAC9C,MAAM;gBACL,IAAMK,IAAI,GAAGC,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC;gBACxC,IAAIF,IAAI,CAACG,QAAQ,KAAKvL,SAAS,EAAE;;kBAE/B,IAAM4I,GAAG,GAAG4C,GAAG,CAACC,eAAe,CAACT,IAAI,CAAC;kBACrCI,IAAI,CAACM,YAAY,CAAC,MAAM,EAAE9C,GAAG,CAAC;kBAC9BwC,IAAI,CAACM,YAAY,CAAC,UAAU,EAAEX,QAAQ,CAAC;kBACvCK,IAAI,CAACO,KAAK,CAACC,UAAU,GAAG,QAAQ;kBAChCP,QAAQ,CAACQ,IAAI,CAACC,WAAW,CAACV,IAAI,CAAC;kBAC/BA,IAAI,CAACW,KAAK,EAAE;kBACZV,QAAQ,CAACQ,IAAI,CAACG,WAAW,CAACZ,IAAI,CAAC;;;;WAItC,EACD;YACErL,KAAK,EAAE,kBAAkB;YACzBH,GAAG,EAAE,MAAM;YACX8I,OAAO,EAAE;cACP,IAAMkC,OAAO,GAAGpB,aAAa,CAAC1E,IAAI,oBAAJA,IAAI,CAAEA,IAAI,CAAC;cACzC,IAAMmH,OAAO,6CAA2CC,kBAAkB,CACxEtB,OAAO,CACN;cAEH,IAAMuB,qBAAqB,GAAG,WAAW;cAEzC,IAAMC,WAAW,GAAGf,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC;cAC/Cc,WAAW,CAACV,YAAY,CAAC,MAAM,EAAEO,OAAO,CAAC;cACzCG,WAAW,CAACV,YAAY,CAAC,UAAU,EAAES,qBAAqB,CAAC;cAC3DC,WAAW,CAACL,KAAK,EAAE;;WAEtB;;SAILrN,6BAACgM,WAAM,QACLhM,6BAAC2N,sBAAgB,OAAG,CACb,CACA,CACZ;;IACD,EAEF3N,oYAUQ,CACP;AAEP;;AC1ZA,SAAS4N,YAAY,CAAC9J,CAAkB;EACtC,OAAOA,CAAW;AACpB;AAEA,IAAM+J,WAAW,GAAG,SAAdA,WAAW,CAAItL,WAAmB,EAAEuL,OAAa;EAAA,OACpD;IACCrL,IAAI,EAAE,UAAiB;IACvBF,WAAW,EAAXA,WAAW;IACXuL,OAAO,EAAPA,OAAO;IACPC,QAAQ,EAAE,CAAC,aAAa,CAAC;IACzBC,SAAS,EAAE,mBAAClN,MAAW,EAAEmN,GAAQ;MAAA;MAAA,OAAK,CAACA,GAAG,iCAAHA,GAAG,CAAE7H,IAAI,qBAAT,UAAY,CAAC,CAAC,CAAC;;GAC/C;AAAA,CAAA;AAEX,SAAS8H,mBAAmB,CAAChJ,KAAyB;EACpD,OAAO,UACLpE,MAAsB,EACtBqN,WAAsC;IAAA,IACpC9N,IAAI,QAAJA,IAAI;IAAA,OACE8N,WAAW,oBAAXA,WAAW,CAAElI,YAAY,CAAC2H,YAAY,CAACvN,IAAI,CAACzB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACsG,KAAK,CAAC;;AAC7E;AAEA,IAAMkJ,aAAa,GAAkC;EACnDxL,IAAI,EAAE,qBAAqB;EAC3BL,WAAW,EAAE,YAAY;EACzBd,KAAK,EAAE;IACL2E,IAAI,EAAE;MACJ3D,IAAI,EAAE,kBAAyB;MAC/B4L,WAAW,EAAE;KACd;IAED5G,WAAW,EAAE;MACXhF,IAAI,EAAE,QAAQ;MACdM,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;MACrCuL,gBAAgB,EAAE;KACnB;;;;;;IAQDvG,QAAQ,EAAE;MACRtF,IAAI,EAAE,QAAQ;MACd6L,gBAAgB,EAAE;KACnB;IAEDzL,MAAM,EAAE;MACNJ,IAAI,EAAE,OAAO;MACb8L,iBAAiB,EAAE,2BAACzK,CAAC;QAAA,OAAKA,CAAC,CAAC5C,GAAG;;MAC/BsN,sBAAsB,EAAE,gCAAC1N,MAAM,EAAEqN,WAAW;QAAA,OAC1CA,WAAW,oBAAXA,WAAW,CAAEjI,uBAAuB;;MACtCuI,mBAAmB,EAAE,6BAACC,KAAU,EAAE5N,MAAM,EAAEmN,GAAG;QAAA,IAAI5N,IAAI,SAAJA,IAAI;QAAA,OACnD,EAAC4N,GAAG,YAAHA,GAAG,CAAEhI,YAAY,CAAC2H,YAAY,CAACvN,IAAI,CAACzB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC4G,OAAO;;MAC7D9C,QAAQ,EAAE;QACRD,IAAI,EAAE,QAAQ;QACdE,QAAQ,EAAE,kBAAC+L,KAAU,EAAE5N,MAAM,EAAEmN,GAAG;UAAA,IAAI5N,IAAI,SAAJA,IAAI;UAAA,OACxC4N,GAAG,oBAAHA,GAAG,CAAEhI,YAAY,CAAC2H,YAAY,CAACvN,IAAI,CAACzB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACgC,KAAK;;QAC1DiC,MAAM,EAAE;UACN3B,GAAG,EAAE;YACHuB,IAAI,EAAE,QAAQ;YACdkM,MAAM,EAAE;cAAA,OAAM,IAAI;;WACnB;UACDnJ,OAAO,EAAE;YACP/C,IAAI,EAAE,QAAQ;YACdF,WAAW,EAAE,YAAY;YACzB2E,QAAQ,EAAE,IAAI;YACdnE,OAAO,EAAE,iBAACjC,MAAM,EAAEmN,GAAG;cAAA;cAAA,OACnB,uBAACA,GAAG,mCAAHA,GAAG,CAAEhJ,MAAM,qBAAX,YAAapC,MAAM,iCAAI,EAAE,EAAEG,GAAG,CAAC,UAACuC,CAAC;gBAAA,OAAKA,CAAC,CAACxB,EAAE;gBAAC;;YAC9C4K,MAAM,EAAE,gBAAC7N,MAAM,EAAEmN,GAAG;cAAA;cAAA,IAAUW,YAAY,SAAlBvO,IAAI;cAAA,OAC1B,EAAEuO,YAAY,CAAChQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,4BAAKqP,GAAG,oCAAHA,GAAG,CAAEhJ,MAAM,qBAAX,aAAapC,MAAM,kCAAI,EAAE,CAAC,CAAC;;WAC9D;UACDjC,KAAK,EAAE;YACL6B,IAAI,EAAE,QAAQ;YACdF,WAAW,EAAE,OAAO;YACpB+L,gBAAgB,eAAEJ,mBAAmB,CAAC,OAAO;WAC9C;UACDpJ,QAAQ,EAAE;YACRrC,IAAI,EAAE,QAAQ;YACdF,WAAW,EAAE,WAAW;YACxBQ,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;YAChDuL,gBAAgB,eAAEJ,mBAAmB,CAAC,UAAU;WACjD;UACDxI,IAAI,eAAEmI,WAAW,CAAC,gBAAgB,CAAC;;;;;;;;;;;;UAYnCpJ,QAAQ,EAAE;YACRhC,IAAI,EAAE,SAAS;YACfF,WAAW,EAAE,WAAW;YACxB+L,gBAAgB,eAAEJ,mBAAmB,CAAC,UAAU;;;;;GAKzD;EACD5K,UAAU,EAAE,WAAW;EACvBC,UAAU,EAAE;CACb;AAED,SAAgBsL,iBAAiB,CAAC9P,MAAqB;EACrDD,uBAAuB,CAACC,MAAM,EAAEyI,SAAS,EAAE4G,aAAa,CAAC;AAC3D;;SCrHgBU,WAAW,CAAC/P,MAAqB;EAC/CyE,kBAAkB,CAACzE,MAAM,CAAC;EAC1B8P,iBAAiB,CAAC9P,MAAM,CAAC;AAC3B;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("@plasmicapp/host/registerComponent")),a=require("@plasmicapp/host"),n=require("antd"),r=e(require("react"));function o(e){var t=e.className,o=e.data,l=e.children,i=e.size,u=e.columns,s=e.onSelect,c=e.pagination,p=e.setControlContextData,d=r.useMemo((function(){var e,t=function(e){var t,a;if(null!=(t=e)&&t.schema)return e.schema;if(Array.isArray(e)&&(e={data:e}),null!=(a=e)&&a.data&&Array.isArray(e.data)&&0!==e.data.length){var n={};return e.data.forEach((function(e){e&&"object"==typeof e&&Array.from(Object.entries(e)).forEach((function(e){var t=e[0],a=e[1],r="string"==typeof a?"string":"boolean"==typeof a?"boolean":"number"==typeof a?"number":"unknown";n[t]=n[t]&&n[t]!==r?"unknown":r}))})),{id:"inferred",fields:Object.entries(n).map((function(e){return{id:e[0],type:e[1],readOnly:!1}}))}}}(o);return t?(null==p||p(t),(null!=(e=u&&u.length>0?u:void 0)?e:t.fields.map((function(e){return e.id}))).map((function(e,n,o){var i;return{columnIndex:n,title:(null==(i=t.fields.find((function(t){return t.id===e})))?void 0:i.label)||e,dataIndex:e,key:e,render:function(e,t,i){return r.createElement(a.DataProvider,{name:"currentRow",data:t},r.createElement(a.DataProvider,{name:"currentRowIndex",data:i},r.createElement(a.DataProvider,{name:"currentColumn",data:e},l&&("object"==typeof l?(Array.isArray(l)?l:[l]).map((function(e){return a.repeatedElement(i*o.length+n,e)})):l))))}}}))):[]}),[l,u,o,p]);return r.createElement(n.Table,{className:t,columns:d,dataSource:null==o?void 0:o.data,size:i,onRow:function(e){return{onMouseUp:function(){return null==s?void 0:s(e.id)}}},pagination:c?void 0:c,rowKey:"id"})}function l(e){var t,n=e.className,o=a.useSelector("currentColumn");return r.createElement("div",{className:n},null!=(t=null==o?void 0:o.toString())?t:"")}var i={name:"hostless-plasmic-rich-components-value",displayName:"Table Value",parentComponentName:"hostless-plasmic-rich-components",props:{},importName:"TableValue",importPath:""},u={name:"hostless-plasmic-rich-components",displayName:"Data Table",props:{data:{type:"dataSourceOpData",description:"The data to display in the table"},children:{type:"slot",defaultValue:{type:"component",name:"hostless-plasmic-rich-components-value"}},size:{type:"choice",options:["large","middle","small"],defaultValueHint:"large"},pagination:{type:"boolean",defaultValueHint:!0},columns:{type:"choice",options:function(e,t){return t?t.fields.map((function(e){return{label:e.label||e.id,value:e.id}})):[]},multiSelect:!0}},importName:"TableWrapper",importPath:"DataTable"};exports.DataTable=o,exports.TableValue=l,exports.default=o,exports.registerAll=function(e){var a=function(a,n){e?e.registerComponent(a,n):t(a,n)};a(o,u),a(l,i)};
|
|
1
|
+
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),n=e(t),a=e(require("@plasmicapp/host/registerComponent"));require("@plasmicapp/host/registerGlobalContext");var r=require("@ant-design/icons"),i=require("@ant-design/pro-components"),l=require("antd"),o=require("@plasmicapp/host"),u=require("csv-stringify/sync"),d=e(require("fast-stringify"));function s(){return(s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function p(e,t,n){e?e.registerComponent(t,n):a(t,n)}var m=["children","navMenuItems","rootUrl","actionsChildren","footerChildren","avatarLabel","avatarImage","showAvatarMenu","className"];function f(e){var t=e.children,a=e.navMenuItems,r=e.rootUrl,l=void 0===r?"/":r,o=e.actionsChildren,u=e.footerChildren,d=e.className,s=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t.indexOf(n=i[a])>=0||(r[n]=e[n]);return r}(e,m),c=location;return n.createElement("div",{className:d},n.createElement(i.ProLayout,Object.assign({},s,{splitMenus:"mix"===s.layout,route:{path:l,routes:a},location:{pathname:c.pathname},menu:{defaultOpenAll:!0},avatarProps:void 0,actionsRender:function(e){return[o]},menuFooterRender:function(e){if(null==e||!e.collapsed)return u},onMenuHeaderClick:function(e){return console.log(e)},menuItemRender:function(e,t){return n.createElement("a",{href:e.path},t)},headerTitleRender:function(e,t,a){return n.createElement("a",{href:l},e,t)}}),t))}function y(e,t,n){return{displayName:t||"Nested items",type:"array",defaultValue:n,itemType:{type:"object",nameFunc:function(e){return e.name||(t?"Unnamed item":"Unnamed nested item")},fields:s({path:"string",name:"string"},0===e?{}:{routes:y(e-1)})}}}var h={name:"hostless-rich-layout",displayName:"Rich Layout",props:{children:"slot",actionsChildren:"slot",title:{displayName:"Title",type:"string",defaultValue:"App title"},logo:{displayName:"Logo",type:"imageUrl",defaultValue:"https://www.plasmic.app/favicon.ico"},navMenuItems:y(2,"Nav menu items",[{path:"/welcome",name:"Welcome"},{path:"/admin",name:"Admin",routes:[{path:"/admin/sub-page1",name:"Sub page 1"},{path:"/admin/sub-page2",name:"Sub page 2"},{path:"/admin/sub-page3",name:"Sub page 3"}]},{name:"List",path:"/list",routes:[{path:"/list/sub-page",name:"Page group",routes:[{path:"sub-sub-page1",name:"Sub sub page 1"},{path:"sub-sub-page2",name:"Sub sub page 2"},{path:"sub-sub-page3",name:"Sub sub page 3"}]},{path:"/list/sub-page2",name:"Sub page 2"},{path:"/list/sub-page3",name:"Sub page 3"}]},{path:"https://ant.design",name:"Extern link"}]),layout:{displayName:"Layout",type:"choice",options:["side","top","mix"].map((function(e){return{value:e,label:(t=e,t.slice(0,1).toUpperCase()+t.slice(1))};var t})),defaultValue:"mix"},menu:{displayName:"Menu",type:"object",fields:{defaultOpenAll:{displayName:"Default open all",type:"boolean"},hideMenuWhenCollapsed:{type:"boolean"}}}},defaultStyles:{width:"stretch",height:"stretch"},importName:"RichLayout",importPath:"@plasmicpkgs/plasmic-rich-components/dist/rich-layout/RichLayout"},v=function(){return""+Math.random()},b=function(){return{key:v(),isEditableExpr:function(){return!1},disableSorting:!1,sortByExpr:void 0,isHidden:!1,formatting:{styles:{},align:"left",freeze:"off"},dataType:"auto"}};function g(e){var t,n;if(null!=(t=e)&&t.schema)return e.schema;if(Array.isArray(e)&&(e={data:e}),null!=(n=e)&&n.data&&Array.isArray(e.data)&&0!==e.data.length){var a={};return e.data.forEach((function(e){e&&"object"==typeof e&&Array.from(Object.entries(e)).forEach((function(e){var t=e[0],n=e[1],r="string"==typeof n?"string":"boolean"==typeof n?"boolean":"number"==typeof n?"number":"unknown";a[t]=a[t]&&a[t]!==r?"unknown":r}))})),{id:"inferred",fields:Object.entries(a).map((function(e){return{id:e[0],type:e[1],readOnly:!1}}))}}}function S(e){var a,p=e.className,m=e.data,f=e.defaultSize,y=e.fields,h=e.setControlContextData,S=e.title,k=e.addHref,E=e.actions,w=e.customActionChildren,A=e.showSearch,C=void 0===A||A,I=e.pageSize,N=void 0===I?20:I,O=function(e){if(e&&"object"==typeof e){var t=Array.isArray(e)?{data:e}:e;if("data"in t){var n=t;if(Array.isArray(n.data)&&0!==n.data.length){var a=s({},n,{data:n.data}),r=g(e);if(r)return s({},a,{schema:r})}}}}(void 0===m?{data:[],schema:{id:"inferred",fields:[{id:"id",type:"string",readOnly:!1}]}}:m),j=t.useState(""),x=j[0],F=j[1],T=n.useMemo((function(){var e=g(O);if(!O||!e)return{normalized:[],columnDefinitions:[]};var t=function(e,t){for(var n,a,r=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return c(e,void 0);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,void 0):void 0}}(e))){n&&(e=n);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(a=r()).done;){var i=a.value;i.key||(i.key=v())}var l=null!=(n=null==t?void 0:t.fields)?n:[],o=new Map(l.map((function(e){return function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t}(e.id,e)}))),u=new Set(e.map((function(e){return e.fieldId})).filter((function(e){return null!=e})));function d(e){return s({},b(),{fieldId:e.id,title:e.label||e.id,expr:function(t){return t[e.id]}})}var p=e.flatMap((function(e){var t=e.fieldId;if(!t)return[s({},b(),e)];var n=o.get(t);return n?[s({},d(n),e)]:[]})),m=l.filter((function(e){return!u.has(e.id)})).map((function(e){return s({},d(e))}));return{mergedFields:[].concat(p,m),minimalFullLengthFields:[].concat(e,m.map((function(e){return{key:e.key,fieldId:e.fieldId}})))}}(null!=y?y:[],e),a=t.mergedFields;null==h||h(s({},O,{mergedFields:a,minimalFullLengthFields:t.minimalFullLengthFields}));var r=a,l=r.filter((function(e){return!e.isHidden})).map((function(e,t,a){return{dataIndex:e.fieldId,title:e.title,key:e.key,valueType:"auto"===e.dataType?void 0:"string"===e.dataType?"text":"number"===e.dataType?"digit":"boolean"===e.dataType?"switch":void 0,readonly:!1,sorter:!0,copyable:!1,ellipsis:!1,tip:void 0,formItemProps:{rules:[]},disable:!1,valueEnum:void 0,search:void 0,hideInSearch:!1,renderFormItem:function(e,t){return(0,t.defaultRender)(e)},render:function(t,a,r){return n.createElement(o.DataProvider,{name:"currentRow",data:a},n.createElement(o.DataProvider,{name:"currentRowIndex",data:r},n.createElement(o.DataProvider,{name:"currentColumn",data:t},e.expr?e.expr(a):a)))}}}));return E&&E.length>0&&l.push({title:"Actions",valueType:"option",key:"__plasmicActions",render:function(e,t,a,r){return[].concat(E.filter((function(e){return!e.moreMenu})).map((function(e,a){return"edit"===e.type?n.createElement("a",{key:a,onClick:function(){null==r||null==r.startEditable||r.startEditable(t.id)}},"Edit"):"view"===e.type?n.createElement("a",{key:a,href:t.url},"View"):"delete"===e.type?n.createElement("a",{key:a,onClick:function(){}},"Delete"):w})),[n.createElement(i.TableDropdown,{key:"actionGroup",onSelect:function(){return null==r?void 0:r.reload()},menus:E.filter((function(e){return!!e.moreMenu})).map((function(e,t){var n;return{key:""+t,name:null!=(n=e.label)?n:e.type}}))})])}}),{normalized:r,columnDefinitions:l}}),[y,O,h,Math.random()]).columnDefinitions,R=t.useRef();return function(){var e=t.useState(!1),n=e[0],a=e[1];return t.useEffect((function(){a(!0)})),n}()?n.createElement(n.Fragment,null,n.createElement(i.ProTable,{actionRef:R,className:p,columns:T,dataSource:null==O||null==(a=O.data)?void 0:a.filter((function(e){return d(Object.values(e)).toLowerCase().includes(x)})),rowKey:"id",defaultSize:f,editable:{type:"multiple"},search:!1,options:{setting:{listsHeight:400}},pagination:{pageSize:N,onChange:function(e){return console.log(e)}},dateFormatter:"string",headerTitle:S,toolbar:{search:C?{value:x,onChange:function(e){return F(e.target.value)},onSearch:function(){},placeholder:"Search"}:void 0},toolBarRender:function(){return[k&&n.createElement(l.Button,{key:"button",icon:n.createElement(r.PlusOutlined,null),type:"primary",href:k},"Add"),n.createElement(l.Dropdown,{key:"menu",menu:{items:[{label:"Download as CSV",key:"csv",onClick:function(){var e,t,n=u.stringify(null==O?void 0:O.data,{columns:null!=(e=null==(t=g(O))?void 0:t.fields.map((function(e){return e.id})))?e:[],header:!0}),a=new Blob([n],{type:"text/csv;charset=utf-8;"});if(navigator.msSaveBlob)navigator.msSaveBlob(a,"data.csv");else{var r=document.createElement("a");if(void 0!==r.download){var i=URL.createObjectURL(a);r.setAttribute("href",i),r.setAttribute("download","data.csv"),r.style.visibility="hidden",document.body.appendChild(r),r.click(),document.body.removeChild(r)}}}},{label:"Download as JSON",key:"json",onClick:function(){var e=d(null==O?void 0:O.data),t="data:application/json;charset=utf-8, "+encodeURIComponent(e),n=document.createElement("a");n.setAttribute("href",t),n.setAttribute("download","data.json"),n.click()}}]}},n.createElement(l.Button,null,n.createElement(r.EllipsisOutlined,null)))]}}),n.createElement("style",null,"\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 .ant-pro-table-list-toolbar-right {\n flex-wrap: initial;\n flex-shrink: 0;\n }\n ")):null}var k=function(e,t){return{type:"function",displayName:e,control:t,argNames:["currentItem"],argValues:function(e,t){var n;return[null==t||null==(n=t.data)?void 0:n[0]]}}};function E(e){return function(t,n,a){return null==n?void 0:n.mergedFields[a.path.slice(-2)[0]][e]}}var w={name:"hostless-rich-table",displayName:"Rich Table",props:{data:{type:"dataSourceOpData",description:"The data to display in the table"},defaultSize:{type:"choice",options:["large","middle","small"],defaultValueHint:"large"},pageSize:{type:"number",defaultValueHint:20},fields:{type:"array",unstable__keyFunc:function(e){return e.key},unstable__minimalValue:function(e,t){return null==t?void 0:t.minimalFullLengthFields},unstable__canDelete:function(e,t,n,a){return!(null!=n&&n.mergedFields[a.path.slice(-1)[0]].fieldId)},itemType:{type:"object",nameFunc:function(e,t,n,a){return null==n?void 0:n.mergedFields[a.path.slice(-1)[0]].title},fields:{key:{type:"string",hidden:function(){return!0}},fieldId:{type:"choice",displayName:"Field name",readOnly:!0,options:function(e,t){var n,a;return(null!=(n=null==t||null==(a=t.schema)?void 0:a.fields)?n:[]).map((function(e){return e.id}))},hidden:function(e,t,n){var a,r;return!(n.path.slice(-1)[0]in(null!=(a=null==t||null==(r=t.schema)?void 0:r.fields)?a:{}))}},title:{type:"string",displayName:"Title",defaultValueHint:E("title")},dataType:{type:"choice",displayName:"Data type",options:["auto","number","string","boolean"],defaultValueHint:E("dataType")},expr:k("Customize data"),isHidden:{type:"boolean",displayName:"Is hidden",defaultValueHint:E("isHidden")}}}}},importName:"RichTable",importPath:"@plasmicpkgs/plasmic-rich-components/dist/rich-table/RichTable"};exports.registerAll=function(e){!function(e){p(e,f,h)}(e),function(e){p(e,S,w)}(e)};
|
|
2
2
|
//# sourceMappingURL=plasmic-rich-components.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plasmic-rich-components.cjs.production.min.js","sources":["../src/DataTable.tsx","../src/index.tsx"],"sourcesContent":["import type {\n ManyRowsResult,\n TableFieldType,\n TableSchema,\n} from \"@plasmicapp/data-sources\";\nimport { DataProvider, repeatedElement, useSelector } from \"@plasmicapp/host\";\nimport { Table } from \"antd\";\nimport type { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport React from \"react\";\n\nexport type QueryResult = Partial<ManyRowsResult<any>> & {\n error?: any;\n isLoading?: boolean;\n};\n\nexport interface DataTableProps {\n className?: string;\n data?: QueryResult;\n columns?: string[];\n children?: React.ReactNode;\n size?: SizeType;\n pagination?: boolean;\n onSelect?: (record: any) => void;\n setControlContextData?: (schema: TableSchema) => void;\n}\n\nfunction tryGetSchema(data?: QueryResult): TableSchema | undefined {\n if (data?.schema) {\n return data.schema;\n }\n if (Array.isArray(data)) {\n data = { data };\n }\n if (!data?.data || !Array.isArray(data.data) || data.data.length === 0) {\n return undefined;\n }\n const fieldMap: Record<string, TableFieldType> = {};\n data.data.forEach((entry: any) => {\n if (entry && typeof entry === \"object\") {\n Array.from(Object.entries(entry)).forEach(([k, v]) => {\n const inferredType: TableFieldType =\n typeof v === \"string\"\n ? \"string\"\n : typeof v === \"boolean\"\n ? \"boolean\"\n : typeof v === \"number\"\n ? \"number\"\n : \"unknown\";\n if (fieldMap[k] && fieldMap[k] !== inferredType) {\n fieldMap[k] = \"unknown\";\n } else {\n fieldMap[k] = inferredType;\n }\n });\n }\n });\n return {\n id: \"inferred\",\n fields: Object.entries(fieldMap).map(([f, t]) => ({\n id: f,\n type: t,\n readOnly: false,\n })),\n };\n}\n\nexport function DataTable(props: DataTableProps) {\n const {\n className,\n data,\n children,\n size,\n columns,\n onSelect,\n pagination,\n setControlContextData,\n } = props;\n\n const columnDefinitions = React.useMemo(() => {\n const schema = tryGetSchema(data);\n if (!schema) {\n return [];\n }\n setControlContextData?.(schema);\n return (\n (columns && columns.length > 0 ? columns : undefined) ??\n schema.fields.map((f) => f.id)\n ).map((columnId, columnIndex, columnsArray) => {\n const columnDefinition = {\n columnIndex,\n title: schema.fields.find((f) => f.id === columnId)?.label || columnId,\n dataIndex: columnId,\n key: columnId,\n render: (value: any, record: any, rowIndex: any) => {\n return (\n <DataProvider name=\"currentRow\" data={record}>\n <DataProvider name=\"currentRowIndex\" data={rowIndex}>\n <DataProvider name=\"currentColumn\" data={value}>\n {children &&\n (typeof children === \"object\"\n ? (Array.isArray(children)\n ? children\n : [children]\n ).map((child) =>\n repeatedElement(\n rowIndex * columnsArray.length + columnIndex,\n child\n )\n )\n : children)}\n </DataProvider>\n </DataProvider>\n </DataProvider>\n );\n },\n };\n\n return columnDefinition;\n });\n }, [children, columns, data, setControlContextData]);\n\n return (\n <Table\n className={className}\n columns={columnDefinitions}\n dataSource={data?.data}\n size={size}\n onRow={(record) => {\n return {\n onMouseUp: () => {\n return onSelect?.(record.id);\n },\n };\n }}\n pagination={pagination ? undefined : pagination}\n rowKey={\"id\"}\n />\n );\n}\n\nexport default DataTable;\n\nexport interface TableValueProps {\n className?: string;\n}\n\nexport function TableValue(props: TableValueProps) {\n const { className } = props;\n const column = useSelector(\"currentColumn\");\n return <div className={className}>{column?.toString() ?? \"\"}</div>;\n}\n","import registerComponent, {\n ComponentMeta,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n DataTable,\n DataTableProps,\n TableValue,\n TableValueProps,\n} from \"./DataTable\";\n\nexport * from \"./DataTable\";\nexport default DataTable;\n\nconst dataTableValueMeta: ComponentMeta<TableValueProps> = {\n name: \"hostless-plasmic-rich-components-value\",\n displayName: \"Table Value\",\n parentComponentName: \"hostless-plasmic-rich-components\",\n props: {},\n importName: \"TableValue\",\n importPath: \"\",\n};\n\nconst dataTableMeta: ComponentMeta<DataTableProps> = {\n name: \"hostless-plasmic-rich-components\",\n displayName: \"Data Table\",\n props: {\n data: {\n type: \"dataSourceOpData\" as any,\n description: \"The data to display in the table\",\n },\n\n children: {\n type: \"slot\",\n defaultValue: {\n type: \"component\",\n name: \"hostless-plasmic-rich-components-value\",\n },\n },\n\n size: {\n type: \"choice\",\n options: [\"large\", \"middle\", \"small\"],\n defaultValueHint: \"large\",\n },\n\n pagination: {\n type: \"boolean\",\n defaultValueHint: true,\n },\n\n columns: {\n type: \"choice\",\n options: (_props, schema) => {\n if (!schema) {\n return [];\n }\n return schema.fields.map((f) => ({\n label: f.label || f.id,\n value: f.id,\n }));\n },\n multiSelect: true,\n },\n },\n\n importName: \"TableWrapper\",\n importPath: \"DataTable\",\n};\n\nexport function registerAll(loader?: {\n registerComponent: typeof registerComponent;\n}) {\n const _registerComponent = <T extends React.ComponentType<any>>(\n Component: T,\n defaultMeta: ComponentMeta<React.ComponentProps<T>>\n ) => {\n if (loader) {\n loader.registerComponent(Component, defaultMeta);\n } else {\n registerComponent(Component, defaultMeta);\n }\n };\n\n _registerComponent(DataTable, dataTableMeta);\n _registerComponent(TableValue, dataTableValueMeta);\n}\n"],"names":["DataTable","props","className","data","children","size","columns","onSelect","pagination","setControlContextData","columnDefinitions","React","useMemo","schema","_data","Array","isArray","_data2","length","fieldMap","forEach","entry","from","Object","entries","k","v","inferredType","id","fields","map","type","readOnly","tryGetSchema","undefined","f","columnId","columnIndex","columnsArray","title","find","_schema$fields$find","label","dataIndex","key","render","value","record","rowIndex","DataProvider","name","child","repeatedElement","Table","dataSource","onRow","onMouseUp","rowKey","TableValue","column","useSelector","toString","dataTableValueMeta","displayName","parentComponentName","importName","importPath","dataTableMeta","description","defaultValue","options","defaultValueHint","_props","multiSelect","loader","_registerComponent","Component","defaultMeta","registerComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plasmic-rich-components.cjs.production.min.js","sources":["../src/utils.ts","../src/rich-layout/RichLayout.tsx","../src/rich-layout/index.tsx","../src/common.ts","../src/field-mappings.ts","../src/rich-table/RichTable.tsx","../src/rich-table/index.tsx","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\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: ComponentMeta<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: ComponentMeta<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","import { LogoutOutlined } from \"@ant-design/icons\";\nimport type { MenuDataItem, ProLayoutProps } from \"@ant-design/pro-components\";\nimport { ProLayout } from \"@ant-design/pro-components\";\nimport { Dropdown } from \"antd\";\nimport React, { ReactNode } from \"react\";\n\ninterface NavMenuItem extends Omit<MenuDataItem, \"routes\"> {\n routes?: NavMenuItem[];\n}\n\nexport interface RichLayoutProps extends ProLayoutProps {\n navMenuItems?: NavMenuItem[];\n rootUrl?: string;\n actionsChildren?: ReactNode;\n footerChildren?: ReactNode;\n avatarLabel?: string;\n avatarImage?: string;\n showAvatarMenu?: boolean;\n}\n\nexport function RichLayout({\n children,\n navMenuItems,\n rootUrl = \"/\",\n actionsChildren,\n footerChildren,\n avatarLabel,\n avatarImage,\n showAvatarMenu,\n className,\n ...layoutProps\n}: RichLayoutProps) {\n const { pathname } = location;\n return (\n <div className={className}>\n <ProLayout\n {...layoutProps}\n // This is always needed if you want layout mix to have effect and look any different from layout side - not clear why this should ever be false.\n splitMenus={layoutProps.layout === \"mix\"}\n route={{\n path: rootUrl,\n routes: navMenuItems,\n }}\n location={{\n pathname,\n }}\n menu={{\n // collapsedShowGroupTitle: true,\n defaultOpenAll: true,\n // hideMenuWhenCollapsed: true,\n }}\n avatarProps={\n showAvatarMenu && false\n ? {\n src: avatarImage,\n size: \"small\",\n title: avatarLabel,\n render: (_props, dom) => {\n return (\n <Dropdown\n menu={{\n items: [\n {\n key: \"logout\",\n icon: <LogoutOutlined />,\n label: \"Sign out\",\n },\n ],\n }}\n >\n {dom}\n </Dropdown>\n );\n },\n }\n : undefined\n }\n actionsRender={(_props) => {\n return [actionsChildren];\n }}\n menuFooterRender={(props) => {\n if (props?.collapsed) return undefined;\n return footerChildren;\n }}\n onMenuHeaderClick={(e) => console.log(e)}\n menuItemRender={(item, dom) => <a href={item.path}>{dom}</a>}\n headerTitleRender={(logo, title, _) => {\n return (\n <a href={rootUrl}>\n {logo}\n {title}\n </a>\n );\n }}\n >\n {children}\n </ProLayout>\n </div>\n );\n}\n","import {\n ComponentMeta,\n JSONLikeType,\n} from \"@plasmicapp/host/registerComponent\";\nimport { capitalize } from \"../common\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichLayout, RichLayoutProps } from \"./RichLayout\";\n\nexport * from \"./RichLayout\";\nexport default RichLayout;\n\nfunction generateNavMenuType(\n remainingDepth: number,\n displayName?: string,\n defaultValue?: any[]\n): object & JSONLikeType<any> {\n return {\n displayName: displayName ? displayName : \"Nested items\",\n type: \"array\",\n defaultValue,\n itemType: {\n type: \"object\",\n nameFunc: (item: any) =>\n item.name || (!displayName ? \"Unnamed nested item\" : \"Unnamed item\"),\n fields: {\n path: \"string\",\n name: \"string\",\n ...(remainingDepth === 0\n ? {}\n : {\n routes: generateNavMenuType(remainingDepth - 1),\n }),\n },\n },\n } as const;\n}\n\nconst richLayoutMeta: ComponentMeta<RichLayoutProps> = {\n name: \"hostless-rich-layout\",\n displayName: \"Rich Layout\",\n props: {\n children: \"slot\",\n actionsChildren: \"slot\",\n title: {\n displayName: \"Title\",\n type: \"string\",\n defaultValue: \"App title\",\n },\n logo: {\n displayName: \"Logo\",\n type: \"imageUrl\",\n defaultValue: \"https://www.plasmic.app/favicon.ico\",\n },\n navMenuItems: generateNavMenuType(2, \"Nav menu items\", [\n {\n path: \"/welcome\",\n name: \"Welcome\",\n // icon: <SmileFilled />,\n // component: \"./Welcome\",\n },\n {\n path: \"/admin\",\n name: \"Admin\",\n // icon: <CrownFilled />,\n // access: \"canAdmin\",\n // component: \"./Admin\",\n routes: [\n {\n path: \"/admin/sub-page1\",\n name: \"Sub page 1\",\n // icon: \"https://gw.alipayobjects.com/zos/antfincdn/upvrAjAPQX/Logo_Tech%252520UI.svg\",\n // component: \"./Welcome\",\n },\n {\n path: \"/admin/sub-page2\",\n name: \"Sub page 2\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n {\n path: \"/admin/sub-page3\",\n name: \"Sub page 3\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n ],\n },\n {\n name: \"List\",\n // icon: <TabletFilled />,\n path: \"/list\",\n // component: \"./ListTableList\",\n routes: [\n {\n path: \"/list/sub-page\",\n name: \"Page group\",\n // icon: <CrownFilled />,\n routes: [\n {\n path: \"sub-sub-page1\",\n name: \"Sub sub page 1\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n {\n path: \"sub-sub-page2\",\n name: \"Sub sub page 2\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n {\n path: \"sub-sub-page3\",\n name: \"Sub sub page 3\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n ],\n },\n {\n path: \"/list/sub-page2\",\n name: \"Sub page 2\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n {\n path: \"/list/sub-page3\",\n name: \"Sub page 3\",\n // icon: <CrownFilled />,\n // component: \"./Welcome\",\n },\n ],\n },\n {\n path: \"https://ant.design\",\n name: \"Extern link\",\n // icon: <ChromeFilled />,\n },\n ]),\n\n layout: {\n displayName: \"Layout\",\n type: \"choice\",\n options: [\"side\", \"top\", \"mix\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValue: \"mix\",\n },\n\n // Advanced, show later\n\n /*\n siderMenuType: {\n displayName: \"Sidebar mode\",\n type: \"choice\",\n options: [\"sub\", \"group\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValue: \"sub\",\n },\n contentWidth: {\n displayName: \"Content width\",\n type: \"choice\",\n options: [\"Fluid\", \"Fixed\"],\n defaultValueHint: \"Fluid\",\n },\n navTheme: {\n displayName: \"Theme\",\n type: \"choice\",\n options: [\n { value: \"realDark\", label: \"Dark\" },\n { value: \"light\", label: \"Light\" },\n ],\n },\n colorPrimary: {\n displayName: \"Primary color\",\n type: \"color\",\n },\n fixedHeader: {\n displayName: \"Sticky header\",\n type: \"boolean\",\n defaultValue: true,\n },\n fixSiderbar: {\n displayName: \"Sticky sidebar\",\n type: \"boolean\",\n defaultValue: true,\n },\n showAvatarMenu: {\n displayName: \"Show avatar\",\n type: \"boolean\",\n defaultValue: true,\n },\n avatarLabel: {\n displayName: \"Avatar label\",\n type: \"string\",\n defaultValue: \"User Name\",\n },\n avatarImage: {\n displayName: \"Avatar image\",\n type: \"imageUrl\",\n defaultValue:\n \"https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg\",\n },\n */\n menu: {\n displayName: \"Menu\",\n type: \"object\",\n fields: {\n defaultOpenAll: {\n displayName: \"Default open all\",\n type: \"boolean\",\n },\n hideMenuWhenCollapsed: {\n // displayName: \"\",\n type: \"boolean\",\n },\n },\n },\n },\n\n defaultStyles: {\n width: \"stretch\",\n height: \"stretch\",\n },\n\n importName: \"RichLayout\",\n importPath:\n \"@plasmicpkgs/plasmic-rich-components/dist/rich-layout/RichLayout\",\n};\n\nexport function registerRichLayout(loader?: Registerable) {\n registerComponentHelper(loader, RichLayout, richLayoutMeta);\n}\n","import { useEffect, useState } from \"react\";\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport function capitalize(text: string) {\n return text.slice(0, 1).toUpperCase() + text.slice(1);\n}\n","import { TableFieldSchema, TableSchema } from \"@plasmicapp/data-sources\";\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 const withoutNils = <T>(xs: Array<T | undefined | null>): T[] =>\n xs.filter((x): x is T => x != null);\n\ninterface AutoSettings {\n dataType: \"auto\";\n}\n\ninterface NumberSettings {\n dataType: \"number\";\n decimalPlacesExpr: RowFunc<number>;\n showThousandsSeparator: boolean;\n}\n\ninterface BooleanSettings {\n dataType: \"boolean\";\n showFalseAs: \"empty\" | \"dash\" | \"cross\";\n}\n\ninterface StringSettings {\n dataType: \"string\";\n}\n\ninterface StyleConfig {\n styles: {};\n align: \"left\" | \"center\" | \"right\";\n freeze: \"off\" | \"left\" | \"right\";\n}\n\ntype RowFunc<Result> = (row: Record<string, unknown>) => Result;\n\n/**\n * Exprs are for things that can must re-evaluate from row to row.\n *\n * Literal values are for things that are column-level. (But in Plasmic Studio, as with all props, you can still use a dynamic value.)\n */\nexport type ColumnConfig = {\n key: string;\n fieldId?: string;\n title?: string;\n expr?: RowFunc<any>;\n isEditableExpr: RowFunc<boolean>;\n disableSorting: boolean;\n sortByExpr?: RowFunc<any>;\n isHidden: boolean;\n formatting: StyleConfig;\n} & (AutoSettings | NumberSettings | StringSettings | BooleanSettings);\n\nexport type PartialColumnConfig = Omit<Partial<ColumnConfig>, \"key\"> & {\n key: string;\n};\n\nconst defaultColumnConfig = (): ColumnConfig =>\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 \"auto\",\n } as const);\n\nexport function deriveFieldConfigs(\n specifiedFieldsPartial: PartialColumnConfig[],\n schema: TableSchema | undefined\n): {\n mergedFields: ColumnConfig[];\n minimalFullLengthFields: PartialColumnConfig[];\n} {\n // Ugly: when adding a new item to an array from Plasmic Studio UI, no way to specify default values for the new item,\n // so we have to do it here. The only one we need is the random key.\n for (const field of specifiedFieldsPartial) {\n if (!field.key) {\n field.key = mkShortId();\n }\n }\n\n const schemaFields = schema?.fields ?? [];\n const fieldById = mkIdMap(schemaFields);\n const specifiedFieldIds = new Set(\n withoutNils(specifiedFieldsPartial.map((f) => f.fieldId))\n );\n function defaultColumnConfigForField(field: TableFieldSchema): ColumnConfig {\n return {\n ...defaultColumnConfig(),\n fieldId: field.id,\n title: field.label || field.id,\n expr: (currentItem) => currentItem[field.id],\n };\n }\n const keptSpecifiedFields = specifiedFieldsPartial.flatMap(\n (f): ColumnConfig[] => {\n const fieldId = f.fieldId;\n if (!fieldId) {\n return [{ ...defaultColumnConfig(), ...f }] as ColumnConfig[];\n }\n const field = fieldById.get(fieldId);\n\n // Drop configs with fieldIds no longer in the data.\n if (!field) {\n return [];\n }\n\n return [\n {\n ...defaultColumnConfigForField(field),\n ...f,\n },\n ] as ColumnConfig[];\n }\n );\n const newVirtualFields = schemaFields\n .filter((f) => !specifiedFieldIds.has(f.id))\n .map(\n (f): ColumnConfig => ({\n ...defaultColumnConfigForField(f),\n })\n );\n const mergedFields = [...keptSpecifiedFields, ...newVirtualFields];\n const minimalFullLengthFields: PartialColumnConfig[] = [\n ...specifiedFieldsPartial,\n ...newVirtualFields.map((f) => ({ key: f.key, fieldId: f.fieldId })),\n ];\n return { mergedFields, minimalFullLengthFields };\n}\n","import { EllipsisOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport {\n ActionType,\n ProColumns,\n ProTable,\n TableDropdown,\n} from \"@ant-design/pro-components\";\nimport {\n ManyRowsResult,\n TableFieldType,\n TableSchema,\n} from \"@plasmicapp/data-sources\";\nimport { DataProvider } from \"@plasmicapp/host\";\nimport { Button, Dropdown } from \"antd\";\nimport { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport { stringify } from \"csv-stringify/sync\";\nimport fastStringify from \"fast-stringify\";\nimport React, { ReactNode, useRef, useState } from \"react\";\nimport { useIsClient } from \"../common\";\nimport {\n ColumnConfig,\n deriveFieldConfigs,\n PartialColumnConfig,\n} from \"../field-mappings\";\n\nexport type QueryResult = Partial<ManyRowsResult<any>> & {\n error?: any;\n isLoading?: boolean;\n};\n\nexport interface Action {\n type: \"edit\" | \"view\" | \"delete\" | \"custom\";\n label?: string;\n moreMenu?: boolean;\n}\n\nexport interface ControlContextData {\n data: unknown[];\n schema?: TableSchema;\n mergedFields: ColumnConfig[];\n minimalFullLengthFields: PartialColumnConfig[];\n}\n\nexport interface RichTableProps {\n className?: string;\n data?: QueryResult;\n fields?: PartialColumnConfig[];\n // children?: React.ReactNode;\n defaultSize?: SizeType;\n pagination?: boolean;\n onSelect?: (record: any) => void;\n setControlContextData?: (ctx: ControlContextData) => void;\n title?: ReactNode;\n\n addHref?: string;\n\n actions?: Action[];\n customActionChildren?: ReactNode;\n\n showSearch?: boolean;\n\n pageSize?: number;\n}\n\nfunction tryGetSchema(data?: QueryResult): TableSchema | undefined {\n if (data?.schema) {\n return data.schema;\n }\n if (Array.isArray(data)) {\n data = { data };\n }\n if (!data?.data || !Array.isArray(data.data) || data.data.length === 0) {\n return undefined;\n }\n const fieldMap: Record<string, TableFieldType> = {};\n data.data.forEach((entry: any) => {\n if (entry && typeof entry === \"object\") {\n Array.from(Object.entries(entry)).forEach(([k, v]) => {\n const inferredType: TableFieldType =\n typeof v === \"string\"\n ? \"string\"\n : typeof v === \"boolean\"\n ? \"boolean\"\n : typeof v === \"number\"\n ? \"number\"\n : \"unknown\";\n if (fieldMap[k] && fieldMap[k] !== inferredType) {\n fieldMap[k] = \"unknown\";\n } else {\n fieldMap[k] = inferredType;\n }\n });\n }\n });\n return {\n id: \"inferred\",\n fields: Object.entries(fieldMap).map(([f, t]) => ({\n id: f,\n type: t,\n readOnly: false,\n })),\n };\n}\n\nfunction normalizeData(\n rawData: unknown\n): { data: Record<string, unknown>[]; schema?: TableSchema } | undefined {\n if (!rawData || typeof rawData !== \"object\") {\n return undefined;\n }\n const obj = Array.isArray(rawData) ? { data: rawData } : rawData!;\n if (!(\"data\" in obj)) {\n return undefined;\n }\n const objWithData = obj as { data: unknown[] };\n if (!Array.isArray(objWithData.data) || objWithData.data.length === 0) {\n return undefined;\n }\n // Make TS happy.\n const normed = { ...objWithData, data: objWithData.data };\n const schema = tryGetSchema(rawData as any);\n if (!schema) {\n return undefined;\n }\n return { ...normed, schema };\n}\n\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 defaultSize,\n fields,\n setControlContextData,\n title,\n addHref,\n actions,\n customActionChildren,\n showSearch = true,\n pageSize = 20,\n } = props;\n\n const data = normalizeData(rawData);\n\n const [search, setSearch] = useState(\"\");\n\n const { columnDefinitions } = React.useMemo(() => {\n const schema = tryGetSchema(data);\n if (!data || !schema) {\n return { normalized: [], columnDefinitions: [] };\n }\n const { mergedFields, minimalFullLengthFields } = deriveFieldConfigs(\n fields ?? [],\n schema\n );\n setControlContextData?.({ ...data, mergedFields, minimalFullLengthFields });\n const normalized = mergedFields;\n const columnDefinitions = normalized\n .filter((cconfig) => !cconfig.isHidden)\n .map((cconfig, _columnIndex, _columnsArray) => {\n const columnDefinition: ProColumns<any> = {\n dataIndex: cconfig.fieldId,\n title: cconfig.title,\n // dataIndex: cconfig,\n key: cconfig.key,\n valueType:\n cconfig.dataType === \"auto\"\n ? undefined\n : cconfig.dataType === \"string\"\n ? \"text\"\n : cconfig.dataType === \"number\"\n ? \"digit\"\n : cconfig.dataType === \"boolean\"\n ? \"switch\"\n : undefined,\n\n // To come later\n readonly: false,\n sorter: true,\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 (\n <DataProvider name=\"currentRow\" data={record}>\n <DataProvider name=\"currentRowIndex\" data={rowIndex}>\n <DataProvider name=\"currentColumn\" data={value}>\n {cconfig.expr ? cconfig.expr(record) : record}\n {/*{showChildren &&*/}\n {/* children &&*/}\n {/* (typeof children === \"object\"*/}\n {/* ? (Array.isArray(children) ? children : [children]).map(*/}\n {/* (child) =>*/}\n {/* repeatedElement(*/}\n {/* rowIndex * columnsArray.length + columnIndex,*/}\n {/* child*/}\n {/* )*/}\n {/* )*/}\n {/* : children)}*/}\n </DataProvider>\n </DataProvider>\n </DataProvider>\n );\n },\n };\n\n return columnDefinition;\n });\n if (actions && actions.length > 0) {\n columnDefinitions.push({\n title: \"Actions\",\n valueType: \"option\",\n key: \"__plasmicActions\",\n render: (_text, record, _, action) => [\n ...actions\n .filter((_action) => !_action.moreMenu)\n .map((_action, aindex) =>\n _action.type === \"edit\" ? (\n <a\n key={aindex}\n onClick={() => {\n action?.startEditable?.(record.id);\n }}\n >\n Edit\n </a>\n ) : _action.type === \"view\" ? (\n <a key={aindex} href={record.url}>\n View\n </a>\n ) : _action.type === \"delete\" ? (\n <a\n key={aindex}\n onClick={() => {\n // TODO delete\n }}\n >\n Delete\n </a>\n ) : (\n customActionChildren\n )\n ),\n <TableDropdown\n key=\"actionGroup\"\n onSelect={() => action?.reload()}\n menus={actions\n .filter((_action) => !!_action.moreMenu)\n .map((_action, aindex) => ({\n key: \"\" + aindex,\n name: _action.label ?? _action.type,\n }))}\n />,\n ],\n });\n }\n return { normalized, columnDefinitions };\n }, [fields, data, setControlContextData, Math.random()]);\n\n const actionRef = useRef<ActionType>();\n\n const isClient = useIsClient();\n if (!isClient) {\n return null;\n }\n // return <NestedTest {...{ fields }} />;\n return (\n <>\n <ProTable\n actionRef={actionRef}\n className={className}\n columns={columnDefinitions}\n dataSource={data?.data?.filter((row) =>\n fastStringify(Object.values(row)).toLowerCase().includes(search)\n )}\n rowKey={\"id\"}\n defaultSize={defaultSize}\n // request={() =>\n // Promise.resolve({\n // data: data?.data?.filter((row) =>\n // fastStringify(row).toLowerCase().includes(search)\n // ),\n // success: true,\n // })\n // }\n editable={{ type: \"multiple\" }}\n search={false}\n options={{\n setting: {\n listsHeight: 400,\n },\n }}\n pagination={{\n pageSize,\n onChange: (page) => console.log(page),\n }}\n dateFormatter=\"string\"\n headerTitle={title}\n toolbar={{\n search: showSearch\n ? {\n value: search,\n onChange: (e) => setSearch(e.target.value),\n onSearch: () => {},\n placeholder: \"Search\",\n }\n : undefined,\n }}\n toolBarRender={() => [\n addHref && (\n <Button\n key=\"button\"\n icon={<PlusOutlined />}\n type=\"primary\"\n href={addHref}\n >\n Add\n </Button>\n ),\n <Dropdown\n key=\"menu\"\n menu={{\n items: [\n {\n label: \"Download as CSV\",\n key: \"csv\",\n onClick: () => {\n const dataStr = stringify(data?.data as any, {\n columns:\n tryGetSchema(data)?.fields.map((f) => f.id) ?? [],\n header: true,\n });\n\n const filename = \"data.csv\";\n\n // Adapted from https://stackoverflow.com/a/68771795\n const blob = new Blob([dataStr], {\n type: \"text/csv;charset=utf-8;\",\n });\n if ((navigator as any).msSaveBlob) {\n // In case of IE 10+\n (navigator as any).msSaveBlob(blob, filename);\n } else {\n const link = document.createElement(\"a\");\n if (link.download !== undefined) {\n // Browsers that support HTML5 download attribute\n const url = URL.createObjectURL(blob);\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", filename);\n link.style.visibility = \"hidden\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n },\n },\n {\n label: \"Download as JSON\",\n key: \"json\",\n onClick: () => {\n const dataStr = fastStringify(data?.data);\n const dataUri = `data:application/json;charset=utf-8, ${encodeURIComponent(\n dataStr\n )}`;\n\n const exportFileDefaultName = \"data.json\";\n\n const linkElement = document.createElement(\"a\");\n linkElement.setAttribute(\"href\", dataUri);\n linkElement.setAttribute(\"download\", exportFileDefaultName);\n linkElement.click();\n },\n },\n ],\n }}\n >\n <Button>\n <EllipsisOutlined />\n </Button>\n </Dropdown>,\n ]}\n />\n {/*Always hide the weird pin left/right buttons for now, which also have render layout issues*/}\n <style>\n {`\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 .ant-pro-table-list-toolbar-right {\n flex-wrap: initial;\n flex-shrink: 0;\n }\n `}\n </style>\n </>\n );\n}\n","import {\n ComponentMeta,\n ControlExtras,\n} from \"@plasmicapp/host/registerComponent\";\nimport { ColumnConfig } from \"../field-mappings\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { ControlContextData, RichTable, RichTableProps } from \"./RichTable\";\n\nexport * from \"./RichTable\";\nexport default RichTable;\n\nfunction ensureNumber(x: number | string): number {\n return x as number;\n}\n\nconst rowDataType = (displayName: string, control?: any) =>\n ({\n type: \"function\" as any,\n displayName,\n control,\n argNames: [\"currentItem\"],\n argValues: (_props: any, ctx: any) => [ctx?.data?.[0]],\n } as any);\n\nfunction getDefaultValueHint(field: keyof ColumnConfig) {\n return (\n _props: RichTableProps,\n contextData: ControlContextData | null,\n { path }: ControlExtras\n ): any => contextData?.mergedFields[ensureNumber(path.slice(-2)[0])][field];\n}\n\nconst dataTableMeta: ComponentMeta<RichTableProps> = {\n name: \"hostless-rich-table\",\n displayName: \"Rich Table\",\n props: {\n data: {\n type: \"dataSourceOpData\" as any,\n description: \"The data to display in the table\",\n },\n\n defaultSize: {\n type: \"choice\",\n options: [\"large\", \"middle\", \"small\"],\n defaultValueHint: \"large\",\n },\n\n // TODO\n // pagination: {\n // type: \"boolean\",\n // defaultValueHint: true,\n // },\n\n pageSize: {\n type: \"number\",\n defaultValueHint: 20,\n },\n\n fields: {\n type: \"array\",\n unstable__keyFunc: (x) => x.key,\n unstable__minimalValue: (_props, contextData) =>\n contextData?.minimalFullLengthFields,\n unstable__canDelete: (_item: any, _props, ctx, { path }) =>\n !ctx?.mergedFields[ensureNumber(path.slice(-1)[0])].fieldId,\n itemType: {\n type: \"object\",\n nameFunc: (_item: any, _props, ctx, { path }) =>\n ctx?.mergedFields[ensureNumber(path.slice(-1)[0])].title,\n fields: {\n key: {\n type: \"string\",\n hidden: () => true,\n },\n fieldId: {\n type: \"choice\",\n displayName: \"Field name\",\n readOnly: true,\n options: (_props, ctx) =>\n (ctx?.schema?.fields ?? []).map((f) => f.id),\n hidden: (_props, ctx, { path: _controlPath }) =>\n !(_controlPath.slice(-1)[0] in (ctx?.schema?.fields ?? {})),\n },\n title: {\n type: \"string\",\n displayName: \"Title\",\n defaultValueHint: getDefaultValueHint(\"title\"),\n },\n dataType: {\n type: \"choice\",\n displayName: \"Data type\",\n options: [\"auto\", \"number\", \"string\", \"boolean\"],\n defaultValueHint: getDefaultValueHint(\"dataType\"),\n },\n expr: rowDataType(\"Customize data\"),\n // TODO\n // isEditableExpr: rowDataType(\"Is editable\", {\n // type: \"boolean\",\n // defaultValueHint: false,\n // }),\n // disableSorting: {\n // type: \"boolean\",\n // displayName: \"Disable sorting\",\n // defaultValueHint: getDefaultValueHint(\"disableSorting\"),\n // },\n // sortByExpr: rowDataType(\"Sort by\"),\n isHidden: {\n type: \"boolean\",\n displayName: \"Is hidden\",\n defaultValueHint: getDefaultValueHint(\"isHidden\"),\n },\n },\n },\n },\n },\n importName: \"RichTable\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/dist/rich-table/RichTable\",\n};\n\nexport function registerRichTable(loader?: Registerable) {\n registerComponentHelper(loader, RichTable, dataTableMeta);\n}\n","import { registerRichLayout } from \"./rich-layout\";\nimport { registerRichTable } from \"./rich-table\";\nimport { Registerable } from \"./utils\";\n\nexport function registerAll(loader?: Registerable) {\n registerRichLayout(loader);\n registerRichTable(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","RichLayout","children","navMenuItems","_ref$rootUrl","rootUrl","actionsChildren","footerChildren","className","layoutProps","location","React","ProLayout","splitMenus","layout","route","path","routes","pathname","menu","defaultOpenAll","avatarProps","undefined","actionsRender","_props","menuFooterRender","props","collapsed","onMenuHeaderClick","e","console","log","menuItemRender","item","dom","href","headerTitleRender","logo","title","_","generateNavMenuType","remainingDepth","displayName","defaultValue","type","itemType","nameFunc","name","fields","richLayoutMeta","options","map","value","label","text","slice","toUpperCase","hideMenuWhenCollapsed","defaultStyles","width","height","importName","importPath","mkShortId","Math","random","defaultColumnConfig","key","isEditableExpr","disableSorting","sortByExpr","isHidden","formatting","styles","align","freeze","dataType","tryGetSchema","data","_data","schema","Array","isArray","_data2","length","fieldMap","forEach","entry","from","Object","entries","k","v","inferredType","id","readOnly","RichTable","_props$data","defaultSize","setControlContextData","addHref","actions","customActionChildren","_props$showSearch","showSearch","_props$pageSize","pageSize","rawData","obj","objWithData","normed","normalizeData","useState","search","setSearch","columnDefinitions","useMemo","normalized","specifiedFieldsPartial","field","schemaFields","fieldById","Map","x","args","tuple","specifiedFieldIds","Set","f","fieldId","filter","defaultColumnConfigForField","expr","currentItem","keptSpecifiedFields","flatMap","get","newVirtualFields","has","mergedFields","minimalFullLengthFields","deriveFieldConfigs","cconfig","_columnIndex","_columnsArray","dataIndex","valueType","readonly","sorter","copyable","ellipsis","tip","formItemProps","rules","disable","valueEnum","hideInSearch","renderFormItem","defaultRender","render","record","rowIndex","DataProvider","push","_text","action","_action","moreMenu","aindex","onClick","startEditable","url","TableDropdown","onSelect","reload","menus","actionRef","useRef","loaded","setLoaded","useEffect","useIsClient","ProTable","columns","dataSource","_data$data","row","fastStringify","values","toLowerCase","includes","rowKey","editable","setting","listsHeight","pagination","onChange","page","dateFormatter","headerTitle","toolbar","target","onSearch","placeholder","toolBarRender","Button","icon","PlusOutlined","Dropdown","items","dataStr","stringify","_tryGetSchema","header","blob","Blob","navigator","msSaveBlob","link","document","createElement","download","URL","createObjectURL","setAttribute","style","visibility","body","appendChild","click","removeChild","dataUri","encodeURIComponent","linkElement","EllipsisOutlined","rowDataType","control","argNames","argValues","ctx","_ctx$data","getDefaultValueHint","contextData","dataTableMeta","description","defaultValueHint","unstable__keyFunc","unstable__minimalValue","unstable__canDelete","_item","hidden","_ctx$schema","_ctx$schema2","registerRichLayout","registerRichTable"],"mappings":"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"}
|