@plasmicpkgs/plasmic-rich-components 1.0.36

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/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 Plasmic
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ Table component to consume query data
@@ -0,0 +1,23 @@
1
+ import type { ManyRowsResult, TableSchema } from "@plasmicapp/data-sources";
2
+ import type { SizeType } from "antd/es/config-provider/SizeContext";
3
+ import React from "react";
4
+ export declare type QueryResult = Partial<ManyRowsResult<any>> & {
5
+ error?: any;
6
+ isLoading?: boolean;
7
+ };
8
+ export interface DataTableProps {
9
+ className?: string;
10
+ data?: QueryResult;
11
+ columns?: string[];
12
+ children?: React.ReactNode;
13
+ size?: SizeType;
14
+ pagination?: boolean;
15
+ onSelect?: (record: any) => void;
16
+ setControlContextData?: (schema: TableSchema) => void;
17
+ }
18
+ export declare function DataTable(props: DataTableProps): JSX.Element;
19
+ export default DataTable;
20
+ export interface TableValueProps {
21
+ className?: string;
22
+ }
23
+ export declare function TableValue(props: TableValueProps): JSX.Element;
@@ -0,0 +1,7 @@
1
+ import registerComponent from "@plasmicapp/host/registerComponent";
2
+ import { DataTable } from "./DataTable";
3
+ export * from "./DataTable";
4
+ export default DataTable;
5
+ export declare function registerAll(loader?: {
6
+ registerComponent: typeof registerComponent;
7
+ }): void;
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+
2
+ 'use strict'
3
+
4
+ if (process.env.NODE_ENV === 'production') {
5
+ module.exports = require('./plasmic-rich-components.cjs.production.min.js')
6
+ } else {
7
+ module.exports = require('./plasmic-rich-components.cjs.development.js')
8
+ }
@@ -0,0 +1,190 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
+
7
+ var registerComponent = _interopDefault(require('@plasmicapp/host/registerComponent'));
8
+ var host = require('@plasmicapp/host');
9
+ var antd = require('antd');
10
+ var React = _interopDefault(require('react'));
11
+
12
+ function tryGetSchema(data) {
13
+ var _data, _data2;
14
+ if ((_data = data) != null && _data.schema) {
15
+ return data.schema;
16
+ }
17
+ if (Array.isArray(data)) {
18
+ data = {
19
+ data: data
20
+ };
21
+ }
22
+ if (!((_data2 = data) != null && _data2.data) || !Array.isArray(data.data) || data.data.length === 0) {
23
+ return undefined;
24
+ }
25
+ var fieldMap = {};
26
+ data.data.forEach(function (entry) {
27
+ if (entry && typeof entry === "object") {
28
+ Array.from(Object.entries(entry)).forEach(function (_ref) {
29
+ var k = _ref[0],
30
+ v = _ref[1];
31
+ var inferredType = typeof v === "string" ? "string" : typeof v === "boolean" ? "boolean" : typeof v === "number" ? "number" : "unknown";
32
+ if (fieldMap[k] && fieldMap[k] !== inferredType) {
33
+ fieldMap[k] = "unknown";
34
+ } else {
35
+ fieldMap[k] = inferredType;
36
+ }
37
+ });
38
+ }
39
+ });
40
+ return {
41
+ id: "inferred",
42
+ fields: Object.entries(fieldMap).map(function (_ref2) {
43
+ var f = _ref2[0],
44
+ t = _ref2[1];
45
+ return {
46
+ id: f,
47
+ type: t,
48
+ readOnly: false
49
+ };
50
+ })
51
+ };
52
+ }
53
+ function DataTable(props) {
54
+ var className = props.className,
55
+ data = props.data,
56
+ children = props.children,
57
+ size = props.size,
58
+ columns = props.columns,
59
+ onSelect = props.onSelect,
60
+ pagination = props.pagination,
61
+ setControlContextData = props.setControlContextData;
62
+ var columnDefinitions = React.useMemo(function () {
63
+ var _ref3;
64
+ var schema = tryGetSchema(data);
65
+ if (!schema) {
66
+ return [];
67
+ }
68
+ setControlContextData == null ? void 0 : setControlContextData(schema);
69
+ return ((_ref3 = columns && columns.length > 0 ? columns : undefined) != null ? _ref3 : schema.fields.map(function (f) {
70
+ return f.id;
71
+ })).map(function (columnId, columnIndex, columnsArray) {
72
+ var _schema$fields$find;
73
+ var columnDefinition = {
74
+ columnIndex: columnIndex,
75
+ title: ((_schema$fields$find = schema.fields.find(function (f) {
76
+ return f.id === columnId;
77
+ })) == null ? void 0 : _schema$fields$find.label) || columnId,
78
+ dataIndex: columnId,
79
+ key: columnId,
80
+ render: function render(value, record, rowIndex) {
81
+ return React.createElement(host.DataProvider, {
82
+ name: "currentRow",
83
+ data: record
84
+ }, React.createElement(host.DataProvider, {
85
+ name: "currentRowIndex",
86
+ data: rowIndex
87
+ }, React.createElement(host.DataProvider, {
88
+ name: "currentColumn",
89
+ data: value
90
+ }, children && (typeof children === "object" ? (Array.isArray(children) ? children : [children]).map(function (child) {
91
+ return host.repeatedElement(rowIndex * columnsArray.length + columnIndex, child);
92
+ }) : children))));
93
+ }
94
+ };
95
+ return columnDefinition;
96
+ });
97
+ }, [children, columns, data, setControlContextData]);
98
+ return React.createElement(antd.Table, {
99
+ className: className,
100
+ columns: columnDefinitions,
101
+ dataSource: data == null ? void 0 : data.data,
102
+ size: size,
103
+ onRow: function onRow(record) {
104
+ return {
105
+ onMouseUp: function onMouseUp() {
106
+ return onSelect == null ? void 0 : onSelect(record.id);
107
+ }
108
+ };
109
+ },
110
+ pagination: pagination ? undefined : pagination,
111
+ rowKey: "id"
112
+ });
113
+ }
114
+ function TableValue(props) {
115
+ var _column$toString;
116
+ var className = props.className;
117
+ var column = host.useSelector("currentColumn");
118
+ return React.createElement("div", {
119
+ className: className
120
+ }, (_column$toString = column == null ? void 0 : column.toString()) != null ? _column$toString : "");
121
+ }
122
+
123
+ var dataTableValueMeta = {
124
+ name: "hostless-plasmic-rich-components-value",
125
+ displayName: "Table Value",
126
+ parentComponentName: "hostless-plasmic-rich-components",
127
+ props: {},
128
+ importName: "TableValue",
129
+ importPath: ""
130
+ };
131
+ var dataTableMeta = {
132
+ name: "hostless-plasmic-rich-components",
133
+ displayName: "Data Table",
134
+ props: {
135
+ data: {
136
+ type: "dataSourceOpData",
137
+ description: "The data to display in the table"
138
+ },
139
+ children: {
140
+ type: "slot",
141
+ defaultValue: {
142
+ type: "component",
143
+ name: "hostless-plasmic-rich-components-value"
144
+ }
145
+ },
146
+ size: {
147
+ type: "choice",
148
+ options: ["large", "middle", "small"],
149
+ defaultValueHint: "large"
150
+ },
151
+ pagination: {
152
+ type: "boolean",
153
+ defaultValueHint: true
154
+ },
155
+ columns: {
156
+ type: "choice",
157
+ options: function options(_props, schema) {
158
+ if (!schema) {
159
+ return [];
160
+ }
161
+ return schema.fields.map(function (f) {
162
+ return {
163
+ label: f.label || f.id,
164
+ value: f.id
165
+ };
166
+ });
167
+ },
168
+ multiSelect: true
169
+ }
170
+ },
171
+ importName: "TableWrapper",
172
+ importPath: "DataTable"
173
+ };
174
+ function registerAll(loader) {
175
+ var _registerComponent = function _registerComponent(Component, defaultMeta) {
176
+ if (loader) {
177
+ loader.registerComponent(Component, defaultMeta);
178
+ } else {
179
+ registerComponent(Component, defaultMeta);
180
+ }
181
+ };
182
+ _registerComponent(DataTable, dataTableMeta);
183
+ _registerComponent(TableValue, dataTableValueMeta);
184
+ }
185
+
186
+ exports.DataTable = DataTable;
187
+ exports.TableValue = TableValue;
188
+ exports.default = DataTable;
189
+ exports.registerAll = registerAll;
190
+ //# sourceMappingURL=plasmic-rich-components.cjs.development.js.map
@@ -0,0 +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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"}
@@ -0,0 +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)};
2
+ //# sourceMappingURL=plasmic-rich-components.cjs.production.min.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,182 @@
1
+ import registerComponent from '@plasmicapp/host/registerComponent';
2
+ import { DataProvider, repeatedElement, useSelector } from '@plasmicapp/host';
3
+ import { Table } from 'antd';
4
+ import React from 'react';
5
+
6
+ function tryGetSchema(data) {
7
+ var _data, _data2;
8
+ if ((_data = data) != null && _data.schema) {
9
+ return data.schema;
10
+ }
11
+ if (Array.isArray(data)) {
12
+ data = {
13
+ data: data
14
+ };
15
+ }
16
+ if (!((_data2 = data) != null && _data2.data) || !Array.isArray(data.data) || data.data.length === 0) {
17
+ return undefined;
18
+ }
19
+ var fieldMap = {};
20
+ data.data.forEach(function (entry) {
21
+ if (entry && typeof entry === "object") {
22
+ Array.from(Object.entries(entry)).forEach(function (_ref) {
23
+ var k = _ref[0],
24
+ v = _ref[1];
25
+ var inferredType = typeof v === "string" ? "string" : typeof v === "boolean" ? "boolean" : typeof v === "number" ? "number" : "unknown";
26
+ if (fieldMap[k] && fieldMap[k] !== inferredType) {
27
+ fieldMap[k] = "unknown";
28
+ } else {
29
+ fieldMap[k] = inferredType;
30
+ }
31
+ });
32
+ }
33
+ });
34
+ return {
35
+ id: "inferred",
36
+ fields: Object.entries(fieldMap).map(function (_ref2) {
37
+ var f = _ref2[0],
38
+ t = _ref2[1];
39
+ return {
40
+ id: f,
41
+ type: t,
42
+ readOnly: false
43
+ };
44
+ })
45
+ };
46
+ }
47
+ function DataTable(props) {
48
+ var className = props.className,
49
+ data = props.data,
50
+ children = props.children,
51
+ size = props.size,
52
+ columns = props.columns,
53
+ onSelect = props.onSelect,
54
+ pagination = props.pagination,
55
+ setControlContextData = props.setControlContextData;
56
+ var columnDefinitions = React.useMemo(function () {
57
+ var _ref3;
58
+ var schema = tryGetSchema(data);
59
+ if (!schema) {
60
+ return [];
61
+ }
62
+ setControlContextData == null ? void 0 : setControlContextData(schema);
63
+ return ((_ref3 = columns && columns.length > 0 ? columns : undefined) != null ? _ref3 : schema.fields.map(function (f) {
64
+ return f.id;
65
+ })).map(function (columnId, columnIndex, columnsArray) {
66
+ var _schema$fields$find;
67
+ var columnDefinition = {
68
+ columnIndex: columnIndex,
69
+ title: ((_schema$fields$find = schema.fields.find(function (f) {
70
+ return f.id === columnId;
71
+ })) == null ? void 0 : _schema$fields$find.label) || columnId,
72
+ dataIndex: columnId,
73
+ key: columnId,
74
+ render: function render(value, record, rowIndex) {
75
+ return React.createElement(DataProvider, {
76
+ name: "currentRow",
77
+ data: record
78
+ }, React.createElement(DataProvider, {
79
+ name: "currentRowIndex",
80
+ data: rowIndex
81
+ }, React.createElement(DataProvider, {
82
+ name: "currentColumn",
83
+ data: value
84
+ }, children && (typeof children === "object" ? (Array.isArray(children) ? children : [children]).map(function (child) {
85
+ return repeatedElement(rowIndex * columnsArray.length + columnIndex, child);
86
+ }) : children))));
87
+ }
88
+ };
89
+ return columnDefinition;
90
+ });
91
+ }, [children, columns, data, setControlContextData]);
92
+ return React.createElement(Table, {
93
+ className: className,
94
+ columns: columnDefinitions,
95
+ dataSource: data == null ? void 0 : data.data,
96
+ size: size,
97
+ onRow: function onRow(record) {
98
+ return {
99
+ onMouseUp: function onMouseUp() {
100
+ return onSelect == null ? void 0 : onSelect(record.id);
101
+ }
102
+ };
103
+ },
104
+ pagination: pagination ? undefined : pagination,
105
+ rowKey: "id"
106
+ });
107
+ }
108
+ function TableValue(props) {
109
+ var _column$toString;
110
+ var className = props.className;
111
+ var column = useSelector("currentColumn");
112
+ return React.createElement("div", {
113
+ className: className
114
+ }, (_column$toString = column == null ? void 0 : column.toString()) != null ? _column$toString : "");
115
+ }
116
+
117
+ var dataTableValueMeta = {
118
+ name: "hostless-plasmic-rich-components-value",
119
+ displayName: "Table Value",
120
+ parentComponentName: "hostless-plasmic-rich-components",
121
+ props: {},
122
+ importName: "TableValue",
123
+ importPath: ""
124
+ };
125
+ var dataTableMeta = {
126
+ name: "hostless-plasmic-rich-components",
127
+ displayName: "Data Table",
128
+ props: {
129
+ data: {
130
+ type: "dataSourceOpData",
131
+ description: "The data to display in the table"
132
+ },
133
+ children: {
134
+ type: "slot",
135
+ defaultValue: {
136
+ type: "component",
137
+ name: "hostless-plasmic-rich-components-value"
138
+ }
139
+ },
140
+ size: {
141
+ type: "choice",
142
+ options: ["large", "middle", "small"],
143
+ defaultValueHint: "large"
144
+ },
145
+ pagination: {
146
+ type: "boolean",
147
+ defaultValueHint: true
148
+ },
149
+ columns: {
150
+ type: "choice",
151
+ options: function options(_props, schema) {
152
+ if (!schema) {
153
+ return [];
154
+ }
155
+ return schema.fields.map(function (f) {
156
+ return {
157
+ label: f.label || f.id,
158
+ value: f.id
159
+ };
160
+ });
161
+ },
162
+ multiSelect: true
163
+ }
164
+ },
165
+ importName: "TableWrapper",
166
+ importPath: "DataTable"
167
+ };
168
+ function registerAll(loader) {
169
+ var _registerComponent = function _registerComponent(Component, defaultMeta) {
170
+ if (loader) {
171
+ loader.registerComponent(Component, defaultMeta);
172
+ } else {
173
+ registerComponent(Component, defaultMeta);
174
+ }
175
+ };
176
+ _registerComponent(DataTable, dataTableMeta);
177
+ _registerComponent(TableValue, dataTableValueMeta);
178
+ }
179
+
180
+ export default DataTable;
181
+ export { DataTable, TableValue, registerAll };
182
+ //# sourceMappingURL=plasmic-rich-components.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plasmic-rich-components.esm.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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"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@plasmicpkgs/plasmic-rich-components",
3
+ "version": "1.0.36",
4
+ "description": "Table component to consume query data",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "module": "dist/plasmic-rich-components.esm.js",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "size-limit": [
12
+ {
13
+ "path": "dist/plasmic-rich-components.cjs.production.min.js",
14
+ "limit": "10 KB"
15
+ },
16
+ {
17
+ "path": "dist/plasmic-rich-components.esm.js",
18
+ "limit": "10 KB"
19
+ }
20
+ ],
21
+ "scripts": {
22
+ "build": "tsdx build",
23
+ "start": "tsdx watch",
24
+ "test": "tsdx test --passWithNoTests",
25
+ "lint": "tsdx lint",
26
+ "prepare": "if-env PREPARE_NO_BUILD=true || yarn build",
27
+ "size": "size-limit",
28
+ "analyze": "size-limit --why"
29
+ },
30
+ "devDependencies": {
31
+ "@plasmicapp/data-sources": "0.1.54",
32
+ "@plasmicapp/host": "1.0.91",
33
+ "@size-limit/preset-small-lib": "^4.11.0",
34
+ "@types/node": "^14.0.26",
35
+ "size-limit": "^4.11.0",
36
+ "tsdx": "^0.14.1",
37
+ "tslib": "^2.2.0",
38
+ "typescript": "^3.9.7"
39
+ },
40
+ "peerDependencies": {
41
+ "@plasmicapp/data-sources": ">=0.1.0",
42
+ "@plasmicapp/host": ">=1.0.0",
43
+ "react": ">=16.8.0",
44
+ "react-dom": ">=16.8.0"
45
+ },
46
+ "publishConfig": {
47
+ "access": "public"
48
+ },
49
+ "gitHead": "dff00ecdf8a21a7e4744bcfd80efc4d5478fd00d"
50
+ }