@panneau/core 1.0.3-alpha.1 → 1.0.3-alpha.12

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/es/utils.js CHANGED
@@ -13,6 +13,7 @@ import isArray from 'lodash/isArray';
13
13
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
14
14
  import get from 'lodash/get';
15
15
  import capitalize from 'lodash/capitalize';
16
+ import EventEmitter from 'wolfy87-eventemitter';
16
17
  import slugify from 'slugify';
17
18
 
18
19
  var convertStyleToString = function convertStyleToString(style) {
@@ -25,17 +26,14 @@ var createNullableOnChange = function createNullableOnChange() {
25
26
  var onChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
26
27
  return function (newValue) {
27
28
  var nullableValue = newValue;
28
-
29
29
  if (isObject(newValue)) {
30
30
  var allNull = Object.keys(newValue).reduce(function (acc, key) {
31
31
  return acc && newValue[key] === null;
32
32
  }, true);
33
-
34
33
  if (allNull) {
35
34
  nullableValue = null;
36
35
  }
37
36
  }
38
-
39
37
  if (onChange !== null) {
40
38
  onChange(nullableValue);
41
39
  }
@@ -49,7 +47,6 @@ var createUseEvent = function createUseEvent(eventsManager) {
49
47
  if (enabled && eventsManager !== null) {
50
48
  eventsManager.subscribe(event, callback);
51
49
  }
52
-
53
50
  return function () {
54
51
  if (enabled && eventsManager !== null) {
55
52
  eventsManager.unsubscribe(event, callback);
@@ -61,51 +58,44 @@ var createUseEvent = function createUseEvent(eventsManager) {
61
58
 
62
59
  var flattenComponents = function flattenComponents(components) {
63
60
  var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
64
-
65
61
  if (components === null) {
66
62
  return null;
67
63
  }
68
-
69
64
  return Object.keys(components).reduce(function (newMap, key) {
70
65
  return ReactIs.isValidElementType(components[key]) ? _objectSpread(_objectSpread({}, newMap), {}, _defineProperty({}, prefix !== null ? "".concat(prefix, ".").concat(key) : key, components[key])) : _objectSpread(_objectSpread({}, newMap), flattenComponents(components[key], key));
71
66
  }, {});
72
67
  };
73
68
 
74
69
  var _excluded$1 = ["component"];
75
-
76
70
  var getComponent = function getComponent(component) {
77
71
  var _ref = isObject(component) ? component : {
78
- component: component
79
- };
80
- _ref.component;
81
- var props = _objectWithoutProperties(_ref, _excluded$1);
82
-
72
+ component: component
73
+ };
74
+ _ref.component;
75
+ var props = _objectWithoutProperties(_ref, _excluded$1);
83
76
  return {
84
77
  name: component,
85
78
  props: props
86
79
  };
87
80
  };
88
81
 
89
- var _excluded = ["field"];
82
+ var _excluded = ["id", "field"];
90
83
  var getColumnFromField = function getColumnFromField(field) {
91
84
  if (field === null) {
92
85
  return null;
93
- } // eslint-disable-next-line camelcase
94
-
95
-
86
+ }
87
+ // eslint-disable-next-line camelcase
96
88
  var name = field.name,
97
- _field$components = field.components;
98
- _field$components = _field$components === void 0 ? {} : _field$components;
99
- var _field$components$dis = _field$components.display,
100
- display = _field$components$dis === void 0 ? null : _field$components$dis,
101
- label = field.label;
102
-
89
+ _field$components = field.components,
90
+ _field$components2 = _field$components === void 0 ? {} : _field$components,
91
+ _field$components2$di = _field$components2.display,
92
+ display = _field$components2$di === void 0 ? null : _field$components2$di,
93
+ label = field.label;
103
94
  var _getComponent = getComponent(display),
104
- _getComponent$name = _getComponent.name,
105
- componentName = _getComponent$name === void 0 ? null : _getComponent$name,
106
- _getComponent$props = _getComponent.props,
107
- componentProps = _getComponent$props === void 0 ? null : _getComponent$props;
108
-
95
+ _getComponent$name = _getComponent.name,
96
+ componentName = _getComponent$name === void 0 ? null : _getComponent$name,
97
+ _getComponent$props = _getComponent.props,
98
+ componentProps = _getComponent$props === void 0 ? null : _getComponent$props;
109
99
  return _objectSpread(_objectSpread({}, componentProps), {}, {
110
100
  id: name,
111
101
  label: label,
@@ -118,15 +108,19 @@ var getColumnsWithFields = function getColumnsWithFields(resource, columns) {
118
108
  var fields = resource.fields;
119
109
  var newColumns = columns !== null ? columns.map(function (column) {
120
110
  var _ref = isString(column) ? {
121
- field: column
122
- } : column,
123
- _ref$field = _ref.field,
124
- fieldName = _ref$field === void 0 ? null : _ref$field,
125
- otherProps = _objectWithoutProperties(_ref, _excluded);
126
-
127
- return _objectSpread(_objectSpread({}, fieldName !== null ? getColumnFromField(fields.find(function (it) {
111
+ field: column
112
+ } : column,
113
+ _ref$id = _ref.id,
114
+ colId = _ref$id === void 0 ? null : _ref$id,
115
+ _ref$field = _ref.field,
116
+ colField = _ref$field === void 0 ? null : _ref$field,
117
+ otherProps = _objectWithoutProperties(_ref, _excluded);
118
+ var fieldName = colField || colId;
119
+ return _objectSpread(_objectSpread(_objectSpread({}, fieldName !== null ? getColumnFromField(fields.find(function (it) {
128
120
  return it.name === fieldName;
129
- }) || null) : null), otherProps);
121
+ }) || null) : null), otherProps), {}, {
122
+ id: colId
123
+ });
130
124
  }).filter(function (it) {
131
125
  return it !== null;
132
126
  }) : [];
@@ -137,18 +131,14 @@ var getComponentFromName = function getComponentFromName() {
137
131
  var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
138
132
  var components = arguments.length > 1 ? arguments[1] : undefined;
139
133
  var defaultComponent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
140
-
141
134
  if (components === null || name === null) {
142
135
  return defaultComponent;
143
136
  }
144
-
145
137
  var pascalName = pascalCase(name);
146
138
  var component = components[pascalName] || components[name] || defaultComponent;
147
-
148
139
  if (!component) {
149
140
  console.warn('Could not find component from name', name, pascalName, components);
150
141
  }
151
-
152
142
  return component;
153
143
  };
154
144
 
@@ -156,11 +146,9 @@ var getDefinitionFromId = function getDefinitionFromId() {
156
146
  var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
157
147
  var items = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
158
148
  var defaultObject = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
159
-
160
149
  if (items === null || id === null || isArray(items) && items.length === 0) {
161
150
  return defaultObject;
162
151
  }
163
-
164
152
  var pascalId = pascalCase(id);
165
153
  return items.find(function (i) {
166
154
  return i.id === pascalId;
@@ -171,9 +159,9 @@ var getDefinitionFromId = function getDefinitionFromId() {
171
159
 
172
160
  var getDisplayName = function getDisplayName(_ref) {
173
161
  var _ref$displayName = _ref.displayName,
174
- displayName = _ref$displayName === void 0 ? null : _ref$displayName,
175
- _ref$name = _ref.name,
176
- name = _ref$name === void 0 ? null : _ref$name;
162
+ displayName = _ref$displayName === void 0 ? null : _ref$displayName,
163
+ _ref$name = _ref.name,
164
+ name = _ref$name === void 0 ? null : _ref$name;
177
165
  return displayName || name || 'Component';
178
166
  };
179
167
 
@@ -182,16 +170,13 @@ var getFieldByName = function getFieldByName(fields, name) {
182
170
  if (foundField !== null) {
183
171
  return foundField;
184
172
  }
185
-
186
173
  var _it$name = it.name,
187
- fieldName = _it$name === void 0 ? null : _it$name,
188
- _it$fields = it.fields,
189
- subFields = _it$fields === void 0 ? [] : _it$fields;
190
-
174
+ fieldName = _it$name === void 0 ? null : _it$name,
175
+ _it$fields = it.fields,
176
+ subFields = _it$fields === void 0 ? [] : _it$fields;
191
177
  if (name !== null && fieldName === name) {
192
178
  return it;
193
179
  }
194
-
195
180
  return getFieldByName(subFields, name);
196
181
  }, null);
197
182
  };
@@ -201,30 +186,26 @@ var getFieldFromPath = function getFieldFromPath(path, fields, fieldManager) {
201
186
  if (foundField === null) {
202
187
  return null;
203
188
  }
204
-
205
189
  var _foundField$type = foundField.type,
206
- type = _foundField$type === void 0 ? null : _foundField$type,
207
- _foundField$fields = foundField.fields,
208
- fieldFields = _foundField$fields === void 0 ? null : _foundField$fields,
209
- _foundField$field = foundField.field,
210
- field = _foundField$field === void 0 ? null : _foundField$field;
190
+ type = _foundField$type === void 0 ? null : _foundField$type,
191
+ _foundField$fields = foundField.fields,
192
+ fieldFields = _foundField$fields === void 0 ? null : _foundField$fields,
193
+ _foundField$field = foundField.field,
194
+ field = _foundField$field === void 0 ? null : _foundField$field;
211
195
  var finalType = field !== null ? field.type || type : type;
212
-
213
196
  var _ref = finalType !== null ? fieldManager.getDefinition(finalType) : foundField,
214
- _ref$fields = _ref.fields,
215
- subFields = _ref$fields === void 0 ? null : _ref$fields,
216
- _ref$settings = _ref.settings,
217
- settings = _ref$settings === void 0 ? null : _ref$settings,
218
- _ref$itemsField = _ref.itemsField,
219
- itemsField = _ref$itemsField === void 0 ? null : _ref$itemsField;
220
-
197
+ _ref$fields = _ref.fields,
198
+ subFields = _ref$fields === void 0 ? null : _ref$fields,
199
+ _ref$settings = _ref.settings,
200
+ settings = _ref$settings === void 0 ? null : _ref$settings,
201
+ _ref$itemsField = _ref.itemsField,
202
+ itemsField = _ref$itemsField === void 0 ? null : _ref$itemsField;
221
203
  if (itemsField !== null && key.match(/^[0-9]+$/)) {
222
204
  return _objectSpread(_objectSpread({}, itemsField), {}, {
223
205
  name: path.join('/'),
224
206
  listItems: true
225
207
  });
226
208
  }
227
-
228
209
  return getFieldByName([].concat(_toConsumableArray(fieldFields || []), _toConsumableArray(subFields || []), _toConsumableArray(settings || [])), key);
229
210
  }, {
230
211
  fields: fields
@@ -233,11 +214,9 @@ var getFieldFromPath = function getFieldFromPath(path, fields, fieldManager) {
233
214
 
234
215
  var getFileName = function getFileName() {
235
216
  var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
236
-
237
217
  if (url === null || typeof url.match === 'undefined') {
238
218
  return null;
239
219
  }
240
-
241
220
  return url.match(/([^/]+)(\?.*)?$/)[1] || url;
242
221
  };
243
222
 
@@ -252,22 +231,19 @@ var getSelectOptions = function getSelectOptions(options) {
252
231
  return options.map(function (it) {
253
232
  if (isObject(it)) {
254
233
  var _it$label = it.label,
255
- label = _it$label === void 0 ? null : _it$label,
256
- value = it.value;
257
-
234
+ label = _it$label === void 0 ? null : _it$label,
235
+ value = it.value;
258
236
  if (label === null) {
259
237
  return {
260
238
  value: value,
261
239
  label: capitalize("".concat(value))
262
240
  };
263
241
  }
264
-
265
242
  return {
266
243
  value: value,
267
244
  label: "".concat(label)
268
245
  };
269
246
  }
270
-
271
247
  return {
272
248
  value: it,
273
249
  label: capitalize("".concat(it))
@@ -279,33 +255,62 @@ var isMessage = function isMessage(message) {
279
255
  return isObject(message) && typeof message.defaultMessage !== 'undefined';
280
256
  };
281
257
 
258
+ /**
259
+ * Locale loader
260
+ */
261
+ var loaders = {};
262
+ var events = new EventEmitter();
263
+ function loadPackage(name, loader) {
264
+ if (typeof loaders[name] === 'undefined') {
265
+ loaders[name] = {
266
+ loader: loader().then(function (response) {
267
+ loaders[name].loader = null;
268
+ loaders[name].loaded = true;
269
+ loaders[name].resource = response;
270
+ events.emit("loaded:".concat(name), response);
271
+ return response;
272
+ }),
273
+ loaded: false,
274
+ resource: null
275
+ };
276
+ }
277
+ return new Promise(function (resolve) {
278
+ var _ref = loaders[name] || {},
279
+ _ref$loaded = _ref.loaded,
280
+ loaded = _ref$loaded === void 0 ? false : _ref$loaded,
281
+ resource = _ref.resource;
282
+ if (loaded === true) {
283
+ resolve(resource);
284
+ } else {
285
+ events.once("loaded:".concat(name), function (response) {
286
+ resolve(response);
287
+ });
288
+ }
289
+ });
290
+ }
291
+
282
292
  var setValue = function setValue(value, keyParts, fieldValue) {
283
293
  var key = keyParts.shift();
284
294
  var isArray = key.match(/^[0-9]+$/) !== null;
285
-
286
295
  if (value !== null || fieldValue !== null) {
287
296
  if (isArray) {
288
297
  var index = parseInt(key, 10);
289
298
  var newArrayValue = fieldValue !== null ? [].concat(_toConsumableArray(value.slice(0, index)), [keyParts.length > 0 ? setValue(value !== null ? value[index] || null : null, keyParts, fieldValue) : fieldValue], _toConsumableArray(value.slice(index + 1))) : [].concat(_toConsumableArray(value.slice(0, index)), _toConsumableArray(value.slice(index + 1)));
290
299
  return newArrayValue.length > 0 ? newArrayValue : null;
291
300
  }
292
-
293
301
  return _objectSpread(_objectSpread({}, value), {}, _defineProperty({}, key, keyParts.length > 0 ? setValue(value !== null ? value[key] || null : null, keyParts, fieldValue) : fieldValue));
294
302
  }
295
-
296
303
  return null;
297
304
  };
298
305
 
299
306
  var slug = function slug(str) {
300
307
  var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
301
308
  var toSlug;
302
-
303
309
  if (separator === '-') {
304
310
  toSlug = paramCase(str);
305
311
  } else {
306
312
  toSlug = snakeCase$1(str);
307
313
  }
308
-
309
314
  return slugify(toSlug, {
310
315
  lower: true
311
316
  });
@@ -317,13 +322,11 @@ var validateFields = function validateFields(fields, value) {
317
322
  if (field.type === 'fields' && field.fields) {
318
323
  return validateFields(field.fields, value);
319
324
  }
320
-
321
325
  var val = value && value[field.name] ? value[field.name] : false;
322
326
  return !(field.required && !val);
323
327
  }
324
-
325
328
  return acc;
326
329
  }, true);
327
330
  };
328
331
 
329
- export { convertStyleToString, createNullableOnChange, createUseEvent, flattenComponents, getColumnsWithFields, getComponent, getComponentFromName, getDefinitionFromId, getDisplayName, getFieldByName, getFieldFromPath, getFileName, getPathValue, getSelectOptions, isMessage, setValue as setFieldValue, slug, validateFields };
332
+ export { convertStyleToString, createNullableOnChange, createUseEvent, flattenComponents, getColumnsWithFields, getComponent, getComponentFromName, getDefinitionFromId, getDisplayName, getFieldByName, getFieldFromPath, getFileName, getPathValue, getSelectOptions, isMessage, loadPackage, setValue as setFieldValue, slug, validateFields };