@webiny/react-properties 0.0.0-unstable.1e66d121db → 0.0.0-unstable.611c5af35e

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/Properties.js CHANGED
@@ -1,26 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.Property = exports.Properties = void 0;
11
9
  exports.useParentProperty = useParentProperty;
12
10
  exports.useProperties = useProperties;
13
-
14
11
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
15
-
16
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
-
18
13
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
-
20
14
  var _react = _interopRequireWildcard(require("react"));
21
-
22
15
  var _utils = require("./utils");
23
-
24
16
  function removeByParent(id, properties) {
25
17
  return properties.filter(function (prop) {
26
18
  return prop.parent === id;
@@ -30,18 +22,14 @@ function removeByParent(id, properties) {
30
22
  }));
31
23
  }, properties);
32
24
  }
33
-
34
25
  var PropertiesContext = /*#__PURE__*/(0, _react.createContext)(undefined);
35
-
36
26
  var Properties = function Properties(_ref) {
37
27
  var onChange = _ref.onChange,
38
- children = _ref.children;
39
-
28
+ children = _ref.children;
40
29
  var _useState = (0, _react.useState)([]),
41
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
42
- properties = _useState2[0],
43
- setProperties = _useState2[1];
44
-
30
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
31
+ properties = _useState2[0],
32
+ setProperties = _useState2[1];
45
33
  (0, _react.useEffect)(function () {
46
34
  if (onChange) {
47
35
  onChange(properties);
@@ -60,31 +48,25 @@ var Properties = function Properties(_ref) {
60
48
  var index = properties.findIndex(function (prop) {
61
49
  return prop.id === property.id;
62
50
  });
63
-
64
51
  if (index > -1) {
65
52
  return [].concat((0, _toConsumableArray2.default)(properties.slice(0, index)), [(0, _objectSpread2.default)((0, _objectSpread2.default)({}, properties[index]), property)], (0, _toConsumableArray2.default)(properties.slice(index + 1)));
66
53
  }
67
-
68
54
  if (options.after) {
69
55
  var _index = properties.findIndex(function (prop) {
70
56
  return prop.id === options.after;
71
57
  });
72
-
73
58
  if (_index > -1) {
74
59
  return [].concat((0, _toConsumableArray2.default)(properties.slice(0, _index + 1)), [property], (0, _toConsumableArray2.default)(properties.slice(_index + 1)));
75
60
  }
76
61
  }
77
-
78
62
  if (options.before) {
79
63
  var _index2 = properties.findIndex(function (prop) {
80
64
  return prop.id === options.before;
81
65
  });
82
-
83
66
  if (_index2 > -1) {
84
67
  return [].concat((0, _toConsumableArray2.default)(properties.slice(0, _index2)), [property], (0, _toConsumableArray2.default)(properties.slice(_index2)));
85
68
  }
86
69
  }
87
-
88
70
  return [].concat((0, _toConsumableArray2.default)(properties), [property]);
89
71
  });
90
72
  },
@@ -100,12 +82,10 @@ var Properties = function Properties(_ref) {
100
82
  var toReplace = properties.findIndex(function (prop) {
101
83
  return prop.id === id;
102
84
  });
103
-
104
85
  if (toReplace > -1) {
105
86
  // Replace the property and remove all remaining child properties.
106
87
  return removeByParent(id, [].concat((0, _toConsumableArray2.default)(properties.slice(0, toReplace)), [property], (0, _toConsumableArray2.default)(properties.slice(toReplace + 1))));
107
88
  }
108
-
109
89
  return properties;
110
90
  });
111
91
  }
@@ -115,53 +95,44 @@ var Properties = function Properties(_ref) {
115
95
  value: context
116
96
  }, children);
117
97
  };
118
-
119
98
  exports.Properties = Properties;
120
-
121
99
  function useProperties() {
122
100
  var properties = (0, _react.useContext)(PropertiesContext);
123
-
124
101
  if (!properties) {
125
102
  throw Error("Properties context provider is missing!");
126
103
  }
127
-
128
104
  return properties;
129
105
  }
130
-
131
106
  var PropertyContext = /*#__PURE__*/(0, _react.createContext)(undefined);
132
-
133
107
  function useParentProperty() {
134
108
  return (0, _react.useContext)(PropertyContext);
135
109
  }
136
-
137
110
  var Property = function Property(_ref2) {
138
111
  var id = _ref2.id,
139
- name = _ref2.name,
140
- value = _ref2.value,
141
- children = _ref2.children,
142
- _ref2$after = _ref2.after,
143
- after = _ref2$after === void 0 ? undefined : _ref2$after,
144
- _ref2$before = _ref2.before,
145
- before = _ref2$before === void 0 ? undefined : _ref2$before,
146
- _ref2$replace = _ref2.replace,
147
- replace = _ref2$replace === void 0 ? undefined : _ref2$replace,
148
- _ref2$remove = _ref2.remove,
149
- remove = _ref2$remove === void 0 ? false : _ref2$remove,
150
- _ref2$array = _ref2.array,
151
- array = _ref2$array === void 0 ? false : _ref2$array;
112
+ name = _ref2.name,
113
+ value = _ref2.value,
114
+ children = _ref2.children,
115
+ _ref2$after = _ref2.after,
116
+ after = _ref2$after === void 0 ? undefined : _ref2$after,
117
+ _ref2$before = _ref2.before,
118
+ before = _ref2$before === void 0 ? undefined : _ref2$before,
119
+ _ref2$replace = _ref2.replace,
120
+ replace = _ref2$replace === void 0 ? undefined : _ref2$replace,
121
+ _ref2$remove = _ref2.remove,
122
+ remove = _ref2$remove === void 0 ? false : _ref2$remove,
123
+ _ref2$array = _ref2.array,
124
+ array = _ref2$array === void 0 ? false : _ref2$array;
152
125
  var uniqueId = (0, _react.useMemo)(function () {
153
126
  return id || (0, _utils.getUniqueId)();
154
127
  }, []);
155
128
  var parent = useParentProperty();
156
129
  var properties = useProperties();
157
-
158
130
  if (!properties) {
159
131
  throw Error("<Properties> provider is missing higher in the hierarchy!");
160
132
  }
161
-
162
133
  var addProperty = properties.addProperty,
163
- removeProperty = properties.removeProperty,
164
- replaceProperty = properties.replaceProperty;
134
+ removeProperty = properties.removeProperty,
135
+ replaceProperty = properties.replaceProperty;
165
136
  var property = {
166
137
  id: uniqueId,
167
138
  name: name,
@@ -174,12 +145,10 @@ var Property = function Property(_ref2) {
174
145
  removeProperty(uniqueId);
175
146
  return;
176
147
  }
177
-
178
148
  if (replace) {
179
149
  replaceProperty(replace, property);
180
150
  return;
181
151
  }
182
-
183
152
  addProperty(property, {
184
153
  after: after,
185
154
  before: before
@@ -188,14 +157,11 @@ var Property = function Property(_ref2) {
188
157
  removeProperty(uniqueId);
189
158
  };
190
159
  }, []);
191
-
192
160
  if (children) {
193
161
  return /*#__PURE__*/_react.default.createElement(PropertyContext.Provider, {
194
162
  value: property
195
163
  }, children);
196
164
  }
197
-
198
165
  return null;
199
166
  };
200
-
201
167
  exports.Property = Property;
package/Properties.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["removeByParent","id","properties","filter","prop","parent","reduce","acc","item","PropertiesContext","createContext","undefined","Properties","onChange","children","useState","setProperties","useEffect","context","useMemo","getObject","toObject","addProperty","property","options","index","findIndex","slice","after","before","removeProperty","replaceProperty","toReplace","useProperties","useContext","Error","PropertyContext","useParentProperty","Property","name","value","replace","remove","array","uniqueId","getUniqueId"],"sources":["Properties.tsx"],"sourcesContent":["import React, { createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport { getUniqueId, toObject } from \"./utils\";\n\nexport interface Property {\n id: string;\n parent: string;\n name: string;\n value: unknown;\n array?: boolean;\n}\n\nfunction removeByParent(id: string, properties: Property[]): Property[] {\n return properties\n .filter(prop => prop.parent === id)\n .reduce((acc, item) => {\n return removeByParent(\n item.id,\n acc.filter(prop => prop.id !== item.id)\n );\n }, properties);\n}\n\ninterface AddPropertyOptions {\n after?: string;\n before?: string;\n}\n\ninterface PropertiesContext {\n properties: Property[];\n getObject<T = unknown>(): T;\n addProperty(property: Property, options?: AddPropertyOptions): void;\n removeProperty(id: string): void;\n replaceProperty(id: string, property: Property): void;\n}\n\nconst PropertiesContext = createContext<PropertiesContext | undefined>(undefined);\n\ninterface PropertiesProps {\n onChange?(properties: Property[]): void;\n}\n\nexport const Properties: React.FC<PropertiesProps> = ({ onChange, children }) => {\n const [properties, setProperties] = useState<Property[]>([]);\n\n useEffect(() => {\n if (onChange) {\n onChange(properties);\n }\n }, [properties]);\n\n const context: PropertiesContext = useMemo(\n () => ({\n properties,\n getObject<T>() {\n return toObject(properties) as T;\n },\n addProperty(property, options = {}) {\n setProperties(properties => {\n // If a property with this ID already exists, merge the two properties.\n const index = properties.findIndex(prop => prop.id === property.id);\n if (index > -1) {\n return [\n ...properties.slice(0, index),\n { ...properties[index], ...property },\n ...properties.slice(index + 1)\n ];\n }\n\n if (options.after) {\n const index = properties.findIndex(prop => prop.id === options.after);\n if (index > -1) {\n return [\n ...properties.slice(0, index + 1),\n property,\n ...properties.slice(index + 1)\n ];\n }\n }\n\n if (options.before) {\n const index = properties.findIndex(prop => prop.id === options.before);\n if (index > -1) {\n return [\n ...properties.slice(0, index),\n property,\n ...properties.slice(index)\n ];\n }\n }\n\n return [...properties, property];\n });\n },\n removeProperty(id) {\n setProperties(properties => {\n return removeByParent(\n id,\n properties.filter(prop => prop.id !== id)\n );\n });\n },\n replaceProperty(id, property) {\n setProperties(properties => {\n const toReplace = properties.findIndex(prop => prop.id === id);\n\n if (toReplace > -1) {\n // Replace the property and remove all remaining child properties.\n return removeByParent(id, [\n ...properties.slice(0, toReplace),\n property,\n ...properties.slice(toReplace + 1)\n ]);\n }\n return properties;\n });\n }\n }),\n [properties]\n );\n\n return <PropertiesContext.Provider value={context}>{children}</PropertiesContext.Provider>;\n};\n\nexport function useProperties() {\n const properties = useContext(PropertiesContext);\n if (!properties) {\n throw Error(\"Properties context provider is missing!\");\n }\n\n return properties;\n}\n\ninterface PropertyProps {\n id?: string;\n name: string;\n value?: unknown;\n array?: boolean;\n after?: string;\n before?: string;\n replace?: string;\n remove?: boolean;\n}\n\nconst PropertyContext = createContext<Property | undefined>(undefined);\n\nexport function useParentProperty() {\n return useContext(PropertyContext);\n}\n\nexport const Property: React.FC<PropertyProps> = ({\n id,\n name,\n value,\n children,\n after = undefined,\n before = undefined,\n replace = undefined,\n remove = false,\n array = false\n}) => {\n const uniqueId = useMemo(() => id || getUniqueId(), []);\n const parent = useParentProperty();\n const properties = useProperties();\n\n if (!properties) {\n throw Error(\"<Properties> provider is missing higher in the hierarchy!\");\n }\n\n const { addProperty, removeProperty, replaceProperty } = properties;\n const property = { id: uniqueId, name, value, parent: parent ? parent.id : \"\", array };\n\n useEffect(() => {\n if (remove) {\n removeProperty(uniqueId);\n return;\n }\n\n if (replace) {\n replaceProperty(replace, property);\n return;\n }\n\n addProperty(property, { after, before });\n\n return () => {\n removeProperty(uniqueId);\n };\n }, []);\n\n if (children) {\n return <PropertyContext.Provider value={property}>{children}</PropertyContext.Provider>;\n }\n\n return null;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["removeByParent","id","properties","filter","prop","parent","reduce","acc","item","PropertiesContext","createContext","undefined","Properties","onChange","children","useState","setProperties","useEffect","context","useMemo","getObject","toObject","addProperty","property","options","index","findIndex","slice","after","before","removeProperty","replaceProperty","toReplace","useProperties","useContext","Error","PropertyContext","useParentProperty","Property","name","value","replace","remove","array","uniqueId","getUniqueId"],"sources":["Properties.tsx"],"sourcesContent":["import React, { createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport { getUniqueId, toObject } from \"./utils\";\n\nexport interface Property {\n id: string;\n parent: string;\n name: string;\n value: unknown;\n array?: boolean;\n}\n\nfunction removeByParent(id: string, properties: Property[]): Property[] {\n return properties\n .filter(prop => prop.parent === id)\n .reduce((acc, item) => {\n return removeByParent(\n item.id,\n acc.filter(prop => prop.id !== item.id)\n );\n }, properties);\n}\n\ninterface AddPropertyOptions {\n after?: string;\n before?: string;\n}\n\ninterface PropertiesContext {\n properties: Property[];\n getObject<T = unknown>(): T;\n addProperty(property: Property, options?: AddPropertyOptions): void;\n removeProperty(id: string): void;\n replaceProperty(id: string, property: Property): void;\n}\n\nconst PropertiesContext = createContext<PropertiesContext | undefined>(undefined);\n\ninterface PropertiesProps {\n onChange?(properties: Property[]): void;\n}\n\nexport const Properties: React.FC<PropertiesProps> = ({ onChange, children }) => {\n const [properties, setProperties] = useState<Property[]>([]);\n\n useEffect(() => {\n if (onChange) {\n onChange(properties);\n }\n }, [properties]);\n\n const context: PropertiesContext = useMemo(\n () => ({\n properties,\n getObject<T>() {\n return toObject(properties) as T;\n },\n addProperty(property, options = {}) {\n setProperties(properties => {\n // If a property with this ID already exists, merge the two properties.\n const index = properties.findIndex(prop => prop.id === property.id);\n if (index > -1) {\n return [\n ...properties.slice(0, index),\n { ...properties[index], ...property },\n ...properties.slice(index + 1)\n ];\n }\n\n if (options.after) {\n const index = properties.findIndex(prop => prop.id === options.after);\n if (index > -1) {\n return [\n ...properties.slice(0, index + 1),\n property,\n ...properties.slice(index + 1)\n ];\n }\n }\n\n if (options.before) {\n const index = properties.findIndex(prop => prop.id === options.before);\n if (index > -1) {\n return [\n ...properties.slice(0, index),\n property,\n ...properties.slice(index)\n ];\n }\n }\n\n return [...properties, property];\n });\n },\n removeProperty(id) {\n setProperties(properties => {\n return removeByParent(\n id,\n properties.filter(prop => prop.id !== id)\n );\n });\n },\n replaceProperty(id, property) {\n setProperties(properties => {\n const toReplace = properties.findIndex(prop => prop.id === id);\n\n if (toReplace > -1) {\n // Replace the property and remove all remaining child properties.\n return removeByParent(id, [\n ...properties.slice(0, toReplace),\n property,\n ...properties.slice(toReplace + 1)\n ]);\n }\n return properties;\n });\n }\n }),\n [properties]\n );\n\n return <PropertiesContext.Provider value={context}>{children}</PropertiesContext.Provider>;\n};\n\nexport function useProperties() {\n const properties = useContext(PropertiesContext);\n if (!properties) {\n throw Error(\"Properties context provider is missing!\");\n }\n\n return properties;\n}\n\ninterface PropertyProps {\n id?: string;\n name: string;\n value?: unknown;\n array?: boolean;\n after?: string;\n before?: string;\n replace?: string;\n remove?: boolean;\n}\n\nconst PropertyContext = createContext<Property | undefined>(undefined);\n\nexport function useParentProperty() {\n return useContext(PropertyContext);\n}\n\nexport const Property: React.FC<PropertyProps> = ({\n id,\n name,\n value,\n children,\n after = undefined,\n before = undefined,\n replace = undefined,\n remove = false,\n array = false\n}) => {\n const uniqueId = useMemo(() => id || getUniqueId(), []);\n const parent = useParentProperty();\n const properties = useProperties();\n\n if (!properties) {\n throw Error(\"<Properties> provider is missing higher in the hierarchy!\");\n }\n\n const { addProperty, removeProperty, replaceProperty } = properties;\n const property = { id: uniqueId, name, value, parent: parent ? parent.id : \"\", array };\n\n useEffect(() => {\n if (remove) {\n removeProperty(uniqueId);\n return;\n }\n\n if (replace) {\n replaceProperty(replace, property);\n return;\n }\n\n addProperty(property, { after, before });\n\n return () => {\n removeProperty(uniqueId);\n };\n }, []);\n\n if (children) {\n return <PropertyContext.Provider value={property}>{children}</PropertyContext.Provider>;\n }\n\n return null;\n};\n"],"mappings":"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"}
package/index.js CHANGED
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  var _utils = require("./utils");
8
-
9
7
  Object.keys(_utils).forEach(function (key) {
10
8
  if (key === "default" || key === "__esModule") return;
11
9
  if (key in exports && exports[key] === _utils[key]) return;
@@ -16,9 +14,7 @@ Object.keys(_utils).forEach(function (key) {
16
14
  }
17
15
  });
18
16
  });
19
-
20
17
  var _Properties = require("./Properties");
21
-
22
18
  Object.keys(_Properties).forEach(function (key) {
23
19
  if (key === "default" || key === "__esModule") return;
24
20
  if (key in exports && exports[key] === _Properties[key]) return;
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./utils\";\nexport * from \"./Properties\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./utils\";\nexport * from \"./Properties\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/react-properties",
3
- "version": "0.0.0-unstable.1e66d121db",
3
+ "version": "0.0.0-unstable.611c5af35e",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,16 +10,16 @@
10
10
  "author": "Webiny Ltd",
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "@babel/runtime": "7.19.0",
13
+ "@babel/runtime": "7.20.1",
14
14
  "@types/react": "17.0.39",
15
15
  "nanoid": "3.3.4",
16
16
  "react": "17.0.2"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@testing-library/react": "^12.1.5",
20
- "@webiny/cli": "^0.0.0-unstable.1e66d121db",
21
- "@webiny/project-utils": "^0.0.0-unstable.1e66d121db",
22
- "@webiny/react-composition": "^0.0.0-unstable.1e66d121db"
20
+ "@webiny/cli": "^0.0.0-unstable.611c5af35e",
21
+ "@webiny/project-utils": "^0.0.0-unstable.611c5af35e",
22
+ "@webiny/react-composition": "^0.0.0-unstable.611c5af35e"
23
23
  },
24
24
  "publishConfig": {
25
25
  "access": "public",
@@ -29,5 +29,5 @@
29
29
  "build": "yarn webiny run build",
30
30
  "watch": "yarn webiny run watch"
31
31
  },
32
- "gitHead": "b670bf27c5039de1a2b0be764a09ba4cb94ad5e2"
32
+ "gitHead": "cdeed09317c2c0e07cb0d4d88f9ac38a214ddc22"
33
33
  }
package/utils.js CHANGED
@@ -1,23 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.getUniqueId = getUniqueId;
9
8
  exports.toObject = toObject;
10
-
11
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
-
13
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
-
15
11
  var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
16
-
17
12
  var _nanoid = require("nanoid");
18
-
19
13
  var nanoid = (0, _nanoid.customAlphabet)("1234567890abcdef", 6);
20
-
21
14
  function buildRoots(roots, properties) {
22
15
  var obj = roots.reduce(function (acc, item) {
23
16
  var isArray = item.array === true || roots.filter(function (r) {
@@ -27,12 +20,10 @@ function buildRoots(roots, properties) {
27
20
  }, {});
28
21
  roots.forEach(function (root) {
29
22
  var isArray = root.array === true || Array.isArray(obj[root.name]);
30
-
31
23
  if (root.value !== undefined) {
32
24
  obj[root.name] = isArray ? [].concat((0, _toConsumableArray2.default)(obj[root.name]), [root.value]) : root.value;
33
25
  return;
34
26
  }
35
-
36
27
  var nextRoots = properties.filter(function (p) {
37
28
  return p.parent === root.id;
38
29
  });
@@ -41,14 +32,12 @@ function buildRoots(roots, properties) {
41
32
  });
42
33
  return obj;
43
34
  }
44
-
45
35
  function toObject(properties) {
46
36
  var roots = properties.filter(function (prop) {
47
37
  return prop.parent === "";
48
38
  });
49
39
  return buildRoots(roots, properties);
50
40
  }
51
-
52
41
  function getUniqueId() {
53
42
  return nanoid();
54
43
  }
package/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["nanoid","customAlphabet","buildRoots","roots","properties","obj","reduce","acc","item","isArray","array","filter","r","name","length","forEach","root","Array","value","undefined","nextRoots","p","parent","id","toObject","prop","getUniqueId"],"sources":["utils.ts"],"sourcesContent":["import { customAlphabet } from \"nanoid\";\nconst nanoid = customAlphabet(\"1234567890abcdef\", 6);\nimport { Property } from \"./Properties\";\n\nfunction buildRoots(roots: Property[], properties: Property[]) {\n const obj: Record<string, unknown> = roots.reduce((acc, item) => {\n const isArray = item.array === true || roots.filter(r => r.name === item.name).length > 1;\n return { ...acc, [item.name]: isArray ? [] : {} };\n }, {});\n\n roots.forEach(root => {\n const isArray = root.array === true || Array.isArray(obj[root.name]);\n if (root.value !== undefined) {\n obj[root.name] = isArray ? [...(obj[root.name] as Array<any>), root.value] : root.value;\n return;\n }\n\n const nextRoots = properties.filter(p => p.parent === root.id);\n const value = buildRoots(nextRoots, properties);\n obj[root.name] = isArray ? [...(obj[root.name] as Property[]), value] : value;\n });\n\n return obj;\n}\n\nexport function toObject<T = unknown>(properties: Property[]): T {\n const roots = properties.filter(prop => prop.parent === \"\");\n return buildRoots(roots, properties) as T;\n}\n\nexport function getUniqueId() {\n return nanoid();\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;;AACA,IAAMA,MAAM,GAAG,IAAAC,sBAAA,EAAe,kBAAf,EAAmC,CAAnC,CAAf;;AAGA,SAASC,UAAT,CAAoBC,KAApB,EAAuCC,UAAvC,EAA+D;EAC3D,IAAMC,GAA4B,GAAGF,KAAK,CAACG,MAAN,CAAa,UAACC,GAAD,EAAMC,IAAN,EAAe;IAC7D,IAAMC,OAAO,GAAGD,IAAI,CAACE,KAAL,KAAe,IAAf,IAAuBP,KAAK,CAACQ,MAAN,CAAa,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACC,IAAF,KAAWL,IAAI,CAACK,IAApB;IAAA,CAAd,EAAwCC,MAAxC,GAAiD,CAAxF;IACA,mEAAYP,GAAZ,yCAAkBC,IAAI,CAACK,IAAvB,EAA8BJ,OAAO,GAAG,EAAH,GAAQ,EAA7C;EACH,CAHoC,EAGlC,EAHkC,CAArC;EAKAN,KAAK,CAACY,OAAN,CAAc,UAAAC,IAAI,EAAI;IAClB,IAAMP,OAAO,GAAGO,IAAI,CAACN,KAAL,KAAe,IAAf,IAAuBO,KAAK,CAACR,OAAN,CAAcJ,GAAG,CAACW,IAAI,CAACH,IAAN,CAAjB,CAAvC;;IACA,IAAIG,IAAI,CAACE,KAAL,KAAeC,SAAnB,EAA8B;MAC1Bd,GAAG,CAACW,IAAI,CAACH,IAAN,CAAH,GAAiBJ,OAAO,8CAAQJ,GAAG,CAACW,IAAI,CAACH,IAAN,CAAX,IAAuCG,IAAI,CAACE,KAA5C,KAAqDF,IAAI,CAACE,KAAlF;MACA;IACH;;IAED,IAAME,SAAS,GAAGhB,UAAU,CAACO,MAAX,CAAkB,UAAAU,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAF,KAAaN,IAAI,CAACO,EAAtB;IAAA,CAAnB,CAAlB;IACA,IAAML,KAAK,GAAGhB,UAAU,CAACkB,SAAD,EAAYhB,UAAZ,CAAxB;IACAC,GAAG,CAACW,IAAI,CAACH,IAAN,CAAH,GAAiBJ,OAAO,8CAAQJ,GAAG,CAACW,IAAI,CAACH,IAAN,CAAX,IAAuCK,KAAvC,KAAgDA,KAAxE;EACH,CAVD;EAYA,OAAOb,GAAP;AACH;;AAEM,SAASmB,QAAT,CAA+BpB,UAA/B,EAA0D;EAC7D,IAAMD,KAAK,GAAGC,UAAU,CAACO,MAAX,CAAkB,UAAAc,IAAI;IAAA,OAAIA,IAAI,CAACH,MAAL,KAAgB,EAApB;EAAA,CAAtB,CAAd;EACA,OAAOpB,UAAU,CAACC,KAAD,EAAQC,UAAR,CAAjB;AACH;;AAEM,SAASsB,WAAT,GAAuB;EAC1B,OAAO1B,MAAM,EAAb;AACH"}
1
+ {"version":3,"names":["nanoid","customAlphabet","buildRoots","roots","properties","obj","reduce","acc","item","isArray","array","filter","r","name","length","forEach","root","Array","value","undefined","nextRoots","p","parent","id","toObject","prop","getUniqueId"],"sources":["utils.ts"],"sourcesContent":["import { customAlphabet } from \"nanoid\";\nconst nanoid = customAlphabet(\"1234567890abcdef\", 6);\nimport { Property } from \"./Properties\";\n\nfunction buildRoots(roots: Property[], properties: Property[]) {\n const obj: Record<string, unknown> = roots.reduce((acc, item) => {\n const isArray = item.array === true || roots.filter(r => r.name === item.name).length > 1;\n return { ...acc, [item.name]: isArray ? [] : {} };\n }, {});\n\n roots.forEach(root => {\n const isArray = root.array === true || Array.isArray(obj[root.name]);\n if (root.value !== undefined) {\n obj[root.name] = isArray ? [...(obj[root.name] as Array<any>), root.value] : root.value;\n return;\n }\n\n const nextRoots = properties.filter(p => p.parent === root.id);\n const value = buildRoots(nextRoots, properties);\n obj[root.name] = isArray ? [...(obj[root.name] as Property[]), value] : value;\n });\n\n return obj;\n}\n\nexport function toObject<T = unknown>(properties: Property[]): T {\n const roots = properties.filter(prop => prop.parent === \"\");\n return buildRoots(roots, properties) as T;\n}\n\nexport function getUniqueId() {\n return nanoid();\n}\n"],"mappings":";;;;;;;;;;;AAAA;AACA,IAAMA,MAAM,GAAG,IAAAC,sBAAc,EAAC,kBAAkB,EAAE,CAAC,CAAC;AAGpD,SAASC,UAAU,CAACC,KAAiB,EAAEC,UAAsB,EAAE;EAC3D,IAAMC,GAA4B,GAAGF,KAAK,CAACG,MAAM,CAAC,UAACC,GAAG,EAAEC,IAAI,EAAK;IAC7D,IAAMC,OAAO,GAAGD,IAAI,CAACE,KAAK,KAAK,IAAI,IAAIP,KAAK,CAACQ,MAAM,CAAC,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACC,IAAI,KAAKL,IAAI,CAACK,IAAI;IAAA,EAAC,CAACC,MAAM,GAAG,CAAC;IACzF,mEAAYP,GAAG,yCAAGC,IAAI,CAACK,IAAI,EAAGJ,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;EACnD,CAAC,EAAE,CAAC,CAAC,CAAC;EAENN,KAAK,CAACY,OAAO,CAAC,UAAAC,IAAI,EAAI;IAClB,IAAMP,OAAO,GAAGO,IAAI,CAACN,KAAK,KAAK,IAAI,IAAIO,KAAK,CAACR,OAAO,CAACJ,GAAG,CAACW,IAAI,CAACH,IAAI,CAAC,CAAC;IACpE,IAAIG,IAAI,CAACE,KAAK,KAAKC,SAAS,EAAE;MAC1Bd,GAAG,CAACW,IAAI,CAACH,IAAI,CAAC,GAAGJ,OAAO,8CAAQJ,GAAG,CAACW,IAAI,CAACH,IAAI,CAAC,IAAiBG,IAAI,CAACE,KAAK,KAAIF,IAAI,CAACE,KAAK;MACvF;IACJ;IAEA,IAAME,SAAS,GAAGhB,UAAU,CAACO,MAAM,CAAC,UAAAU,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAM,KAAKN,IAAI,CAACO,EAAE;IAAA,EAAC;IAC9D,IAAML,KAAK,GAAGhB,UAAU,CAACkB,SAAS,EAAEhB,UAAU,CAAC;IAC/CC,GAAG,CAACW,IAAI,CAACH,IAAI,CAAC,GAAGJ,OAAO,8CAAQJ,GAAG,CAACW,IAAI,CAACH,IAAI,CAAC,IAAiBK,KAAK,KAAIA,KAAK;EACjF,CAAC,CAAC;EAEF,OAAOb,GAAG;AACd;AAEO,SAASmB,QAAQ,CAAcpB,UAAsB,EAAK;EAC7D,IAAMD,KAAK,GAAGC,UAAU,CAACO,MAAM,CAAC,UAAAc,IAAI;IAAA,OAAIA,IAAI,CAACH,MAAM,KAAK,EAAE;EAAA,EAAC;EAC3D,OAAOpB,UAAU,CAACC,KAAK,EAAEC,UAAU,CAAC;AACxC;AAEO,SAASsB,WAAW,GAAG;EAC1B,OAAO1B,MAAM,EAAE;AACnB"}