@panneau/core 1.0.3-alpha.1 → 1.0.3

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,25 +58,21 @@ 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
@@ -90,22 +83,19 @@ var _excluded = ["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,12 +108,11 @@ 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
-
111
+ field: column
112
+ } : column,
113
+ _ref$field = _ref.field,
114
+ fieldName = _ref$field === void 0 ? null : _ref$field,
115
+ otherProps = _objectWithoutProperties(_ref, _excluded);
127
116
  return _objectSpread(_objectSpread({}, fieldName !== null ? getColumnFromField(fields.find(function (it) {
128
117
  return it.name === fieldName;
129
118
  }) || null) : null), otherProps);
@@ -137,18 +126,14 @@ var getComponentFromName = function getComponentFromName() {
137
126
  var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
138
127
  var components = arguments.length > 1 ? arguments[1] : undefined;
139
128
  var defaultComponent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
140
-
141
129
  if (components === null || name === null) {
142
130
  return defaultComponent;
143
131
  }
144
-
145
132
  var pascalName = pascalCase(name);
146
133
  var component = components[pascalName] || components[name] || defaultComponent;
147
-
148
134
  if (!component) {
149
135
  console.warn('Could not find component from name', name, pascalName, components);
150
136
  }
151
-
152
137
  return component;
153
138
  };
154
139
 
@@ -156,11 +141,9 @@ var getDefinitionFromId = function getDefinitionFromId() {
156
141
  var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
157
142
  var items = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
158
143
  var defaultObject = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
159
-
160
144
  if (items === null || id === null || isArray(items) && items.length === 0) {
161
145
  return defaultObject;
162
146
  }
163
-
164
147
  var pascalId = pascalCase(id);
165
148
  return items.find(function (i) {
166
149
  return i.id === pascalId;
@@ -171,9 +154,9 @@ var getDefinitionFromId = function getDefinitionFromId() {
171
154
 
172
155
  var getDisplayName = function getDisplayName(_ref) {
173
156
  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;
157
+ displayName = _ref$displayName === void 0 ? null : _ref$displayName,
158
+ _ref$name = _ref.name,
159
+ name = _ref$name === void 0 ? null : _ref$name;
177
160
  return displayName || name || 'Component';
178
161
  };
179
162
 
@@ -182,16 +165,13 @@ var getFieldByName = function getFieldByName(fields, name) {
182
165
  if (foundField !== null) {
183
166
  return foundField;
184
167
  }
185
-
186
168
  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
-
169
+ fieldName = _it$name === void 0 ? null : _it$name,
170
+ _it$fields = it.fields,
171
+ subFields = _it$fields === void 0 ? [] : _it$fields;
191
172
  if (name !== null && fieldName === name) {
192
173
  return it;
193
174
  }
194
-
195
175
  return getFieldByName(subFields, name);
196
176
  }, null);
197
177
  };
@@ -201,30 +181,26 @@ var getFieldFromPath = function getFieldFromPath(path, fields, fieldManager) {
201
181
  if (foundField === null) {
202
182
  return null;
203
183
  }
204
-
205
184
  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;
185
+ type = _foundField$type === void 0 ? null : _foundField$type,
186
+ _foundField$fields = foundField.fields,
187
+ fieldFields = _foundField$fields === void 0 ? null : _foundField$fields,
188
+ _foundField$field = foundField.field,
189
+ field = _foundField$field === void 0 ? null : _foundField$field;
211
190
  var finalType = field !== null ? field.type || type : type;
212
-
213
191
  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
-
192
+ _ref$fields = _ref.fields,
193
+ subFields = _ref$fields === void 0 ? null : _ref$fields,
194
+ _ref$settings = _ref.settings,
195
+ settings = _ref$settings === void 0 ? null : _ref$settings,
196
+ _ref$itemsField = _ref.itemsField,
197
+ itemsField = _ref$itemsField === void 0 ? null : _ref$itemsField;
221
198
  if (itemsField !== null && key.match(/^[0-9]+$/)) {
222
199
  return _objectSpread(_objectSpread({}, itemsField), {}, {
223
200
  name: path.join('/'),
224
201
  listItems: true
225
202
  });
226
203
  }
227
-
228
204
  return getFieldByName([].concat(_toConsumableArray(fieldFields || []), _toConsumableArray(subFields || []), _toConsumableArray(settings || [])), key);
229
205
  }, {
230
206
  fields: fields
@@ -233,11 +209,9 @@ var getFieldFromPath = function getFieldFromPath(path, fields, fieldManager) {
233
209
 
234
210
  var getFileName = function getFileName() {
235
211
  var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
236
-
237
212
  if (url === null || typeof url.match === 'undefined') {
238
213
  return null;
239
214
  }
240
-
241
215
  return url.match(/([^/]+)(\?.*)?$/)[1] || url;
242
216
  };
243
217
 
@@ -252,22 +226,19 @@ var getSelectOptions = function getSelectOptions(options) {
252
226
  return options.map(function (it) {
253
227
  if (isObject(it)) {
254
228
  var _it$label = it.label,
255
- label = _it$label === void 0 ? null : _it$label,
256
- value = it.value;
257
-
229
+ label = _it$label === void 0 ? null : _it$label,
230
+ value = it.value;
258
231
  if (label === null) {
259
232
  return {
260
233
  value: value,
261
234
  label: capitalize("".concat(value))
262
235
  };
263
236
  }
264
-
265
237
  return {
266
238
  value: value,
267
239
  label: "".concat(label)
268
240
  };
269
241
  }
270
-
271
242
  return {
272
243
  value: it,
273
244
  label: capitalize("".concat(it))
@@ -279,33 +250,62 @@ var isMessage = function isMessage(message) {
279
250
  return isObject(message) && typeof message.defaultMessage !== 'undefined';
280
251
  };
281
252
 
253
+ /**
254
+ * Locale loader
255
+ */
256
+ var loaders = {};
257
+ var events = new EventEmitter();
258
+ function loadPackage(name, loader) {
259
+ if (typeof loaders[name] === 'undefined') {
260
+ loaders[name] = {
261
+ loader: loader().then(function (response) {
262
+ loaders[name].loader = null;
263
+ loaders[name].loaded = true;
264
+ loaders[name].resource = response;
265
+ events.emit("loaded:".concat(name), response);
266
+ return response;
267
+ }),
268
+ loaded: false,
269
+ resource: null
270
+ };
271
+ }
272
+ return new Promise(function (resolve) {
273
+ var _ref = loaders[name] || {},
274
+ _ref$loaded = _ref.loaded,
275
+ loaded = _ref$loaded === void 0 ? false : _ref$loaded,
276
+ resource = _ref.resource;
277
+ if (loaded === true) {
278
+ resolve(resource);
279
+ } else {
280
+ events.once("loaded:".concat(name), function (response) {
281
+ resolve(response);
282
+ });
283
+ }
284
+ });
285
+ }
286
+
282
287
  var setValue = function setValue(value, keyParts, fieldValue) {
283
288
  var key = keyParts.shift();
284
289
  var isArray = key.match(/^[0-9]+$/) !== null;
285
-
286
290
  if (value !== null || fieldValue !== null) {
287
291
  if (isArray) {
288
292
  var index = parseInt(key, 10);
289
293
  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
294
  return newArrayValue.length > 0 ? newArrayValue : null;
291
295
  }
292
-
293
296
  return _objectSpread(_objectSpread({}, value), {}, _defineProperty({}, key, keyParts.length > 0 ? setValue(value !== null ? value[key] || null : null, keyParts, fieldValue) : fieldValue));
294
297
  }
295
-
296
298
  return null;
297
299
  };
298
300
 
299
301
  var slug = function slug(str) {
300
302
  var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
301
303
  var toSlug;
302
-
303
304
  if (separator === '-') {
304
305
  toSlug = paramCase(str);
305
306
  } else {
306
307
  toSlug = snakeCase$1(str);
307
308
  }
308
-
309
309
  return slugify(toSlug, {
310
310
  lower: true
311
311
  });
@@ -317,13 +317,11 @@ var validateFields = function validateFields(fields, value) {
317
317
  if (field.type === 'fields' && field.fields) {
318
318
  return validateFields(field.fields, value);
319
319
  }
320
-
321
320
  var val = value && value[field.name] ? value[field.name] : false;
322
321
  return !(field.required && !val);
323
322
  }
324
-
325
323
  return acc;
326
324
  }, true);
327
325
  };
328
326
 
329
- export { convertStyleToString, createNullableOnChange, createUseEvent, flattenComponents, getColumnsWithFields, getComponent, getComponentFromName, getDefinitionFromId, getDisplayName, getFieldByName, getFieldFromPath, getFileName, getPathValue, getSelectOptions, isMessage, setValue as setFieldValue, slug, validateFields };
327
+ export { convertStyleToString, createNullableOnChange, createUseEvent, flattenComponents, getColumnsWithFields, getComponent, getComponentFromName, getDefinitionFromId, getDisplayName, getFieldByName, getFieldFromPath, getFileName, getPathValue, getSelectOptions, isMessage, loadPackage, setValue as setFieldValue, slug, validateFields };