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