UNPKG

@davebaol/angular-formio-editor

Version:

Angular component integrating Form.io builder and renderer with a json editor

107 lines 13 kB
/* This is heavily inspired by https://github.com/schnittstabil/merge-options */ const { hasOwnProperty, toString } = Object.prototype; const { propertyIsEnumerable } = Object; const globalThis = this; const defaultMergeOpts = { ignoreUndefined: false }; const isPlainObject = (value) => { if (toString.call(value) !== '[object Object]') { return false; } const prototype = Object.getPrototypeOf(value); return prototype === null || prototype === Object.prototype; }; const ɵ0 = isPlainObject; const defineProperty = (obj, name, value) => { Object.defineProperty(obj, name, { value, writable: true, enumerable: true, configurable: true }); }; const ɵ1 = defineProperty; const getEnumerableOwnPropertyKeys = (value) => { const keys = []; for (const key in value) { if (hasOwnProperty.call(value, key)) { keys.push(key); } } if (Object.getOwnPropertySymbols) { const symbols = Object.getOwnPropertySymbols(value); for (const symbol of symbols) { if (propertyIsEnumerable.call(value, symbol)) { keys.push(symbol); } } } return keys; }; const ɵ2 = getEnumerableOwnPropertyKeys; export const clone = (value) => { if (Array.isArray(value)) { return cloneArray(value); } if (isPlainObject(value)) { return clonePlainObject(value); } return value; }; const cloneArray = (array) => { const result = array.slice(0, 0); getEnumerableOwnPropertyKeys(array).forEach(key => { defineProperty(result, key, clone(array[key])); }); return result; }; const ɵ3 = cloneArray; const clonePlainObject = (obj) => { const result = Object.getPrototypeOf(obj) === null ? Object.create(null) : {}; getEnumerableOwnPropertyKeys(obj).forEach(key => { defineProperty(result, key, clone(obj[key])); }); return result; }; const ɵ4 = clonePlainObject; const mergeKeys = (merged, source, keys, config) => { keys.forEach(key => { if (typeof source[key] === 'undefined' && config.ignoreUndefined) { return; } // Do not recurse into prototype chain of merged if (key in merged && merged[key] !== Object.getPrototypeOf(merged)) { defineProperty(merged, key, _merge(merged[key], source[key], config)); } else { defineProperty(merged, key, clone(source[key])); } }); return merged; }; const ɵ5 = mergeKeys; // tslint:disable-next-line:variable-name const _merge = (merged, source, config) => { if (!isPlainObject(source) || !isPlainObject(merged)) { return clone(source); } return mergeKeys(merged, source, getEnumerableOwnPropertyKeys(source), config); }; const ɵ6 = _merge; export const merge = (...options) => { const config = _merge(clone(defaultMergeOpts), (this !== globalThis && this) || {}, defaultMergeOpts); let merged = { _: {} }; for (const option of options) { if (option === undefined) { continue; } if (!isPlainObject(option)) { throw new TypeError('`' + option + '` is not a plain Object'); } merged = _merge(merged, { _: option }, config); } return merged._; }; export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUtdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF2ZWJhb2wvYW5ndWxhci1mb3JtaW8tZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2Nsb25lLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFO0FBQ0YsTUFBTSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0FBQ3RELE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLE1BQU0sQ0FBQztBQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUlwRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO0lBQ25DLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxpQkFBaUIsRUFBRTtRQUM5QyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxPQUFPLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUM7QUFDOUQsQ0FBQyxDQUFDOztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBVyxFQUFFLElBQWlCLEVBQUUsS0FBVSxFQUFFLEVBQUU7SUFDcEUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO1FBQy9CLEtBQUs7UUFDTCxRQUFRLEVBQUUsSUFBSTtRQUNkLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQzs7QUFFRixNQUFNLDRCQUE0QixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDckQsTUFBTSxJQUFJLEdBQWtCLEVBQUUsQ0FBQztJQUUvQixLQUFLLE1B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SUFFRCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICBUaGlzIGlzIGhlYXZpbHkgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3NjaG5pdHRzdGFiaWwvbWVyZ2Utb3B0aW9uc1xyXG4qL1xyXG5jb25zdCB7IGhhc093blByb3BlcnR5LCB0b1N0cmluZyB9ID0gT2JqZWN0LnByb3RvdHlwZTtcclxuY29uc3QgeyBwcm9wZXJ0eUlzRW51bWVyYWJsZSB9ID0gT2JqZWN0O1xyXG5jb25zdCBnbG9iYWxUaGlzID0gdGhpcztcclxuY29uc3QgZGVmYXVsdE1lcmdlT3B0cyA9IHsgaWdub3JlVW5kZWZpbmVkOiBmYWxzZSB9O1xyXG5cclxudHlwZSBwcm9wZXJ0eUtleSA9IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbDtcclxuXHJcbmNvbnN0IGlzUGxhaW5PYmplY3QgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gIGlmICh0b1N0cmluZy5jYWxsKHZhbHVlKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XHJcbiAgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGU7XHJcbn07XHJcblxyXG5jb25zdCBkZWZpbmVQcm9wZXJ0eSA9IChvYmo6IG9iamVjdCwgbmFtZTogcHJvcGVydHlLZXksIHZhbHVlOiBhbnkpID0+IHtcclxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBuYW1lLCB7XHJcbiAgICB2YWx1ZSxcclxuICAgIHdyaXRhYmxlOiB0cnVlLFxyXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0RW51bWVyYWJsZU93blByb3BlcnR5S2V5cyA9ICh2YWx1ZTogb2JqZWN0KSA9PiB7XHJcbiAgY29uc3Qga2V5czogcHJvcGVydHlLZXlbXSA9IFtdO1xyXG5cclxuICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZSkge1xyXG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcclxuICAgICAga2V5cy5wdXNoKGtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xyXG4gICAgY29uc3Qgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsdWUpO1xyXG5cclxuICAgIGZvciAoY29uc3Qgc3ltYm9sIG9mIHN5bWJvbHMpIHtcclxuICAgICAgaWYgKHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsIHN5bWJvbCkpIHtcclxuICAgICAgICBrZXlzLnB1c2goc3ltYm9sKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGtleXM7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY2xvbmUgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgcmV0dXJuIGNsb25lQXJyYXkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XHJcbiAgICByZXR1cm4gY2xvbmVQbGFpbk9iamVjdCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdmFsdWU7XHJcbn07XHJcblxyXG5jb25zdCBjbG9uZUFycmF5ID0gKGFycmF5OiBhbnlbXSkgPT4ge1xyXG4gIGNvbnN0IHJlc3VsdCA9IGFycmF5LnNsaWNlKDAsIDApO1xyXG5cclxuICBnZXRFbnVtZXJhYmxlT3duUHJvcGVydHlLZXlzKGFycmF5KS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICBkZWZpbmVQcm9wZXJ0eShyZXN1bHQsIGtleSwgY2xvbmUoYXJyYXlba2V5XSkpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuY29uc3QgY2xvbmVQbGFpbk9iamVjdCA9IChvYmo6IG9iamVjdCkgPT4ge1xyXG4gIGNvbnN0IHJlc3VsdDogb2JqZWN0ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKG51bGwpIDoge307XHJcblxyXG4gIGdldEVudW1lcmFibGVPd25Qcm9wZXJ0eUtleXMob2JqKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICBkZWZpbmVQcm9wZXJ0eShyZXN1bHQsIGtleSwgY2xvbmUob2JqW2tleV0pKTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuXHJcbmNvbnN0IG1lcmdlS2V5cyA9IChtZXJnZWQsIHNvdXJjZSwga2V5czogcHJvcGVydHlLZXlbXSwgY29uZmlnKSA9PiB7XHJcbiAga2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICBpZiAodHlwZW9mIHNvdXJjZVtrZXldID09PSAndW5kZWZpbmVkJyAmJiBjb25maWcuaWdub3JlVW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBEbyBub3QgcmVjdXJzZSBpbnRvIHByb3RvdHlwZSBjaGFpbiBvZiBtZXJnZWRcclxuICAgIGlmIChrZXkgaW4gbWVyZ2VkICYmIG1lcmdlZFtrZXldICE9PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobWVyZ2VkKSkge1xyXG4gICAgICBkZWZpbmVQcm9wZXJ0eShtZXJnZWQsIGtleSwgX21lcmdlKG1lcmdlZFtrZXldLCBzb3VyY2Vba2V5XSwgY29uZmlnKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkZWZpbmVQcm9wZXJ0eShtZXJnZWQsIGtleSwgY2xvbmUoc291cmNlW2tleV0pKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIG1lcmdlZDtcclxufTtcclxuXHJcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXHJcbmNvbnN0IF9tZXJnZSA9IChtZXJnZWQsIHNvdXJjZSwgY29uZmlnKSA9PiB7XHJcbiAgaWYgKCFpc1BsYWluT2JqZWN0KHNvdXJjZSkgfHwgIWlzUGxhaW5PYmplY3QobWVyZ2VkKSkge1xyXG4gICAgcmV0dXJuIGNsb25lKHNvdXJjZSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbWVyZ2VLZXlzKG1lcmdlZCwgc291cmNlLCBnZXRFbnVtZXJhYmxlT3duUHJvcGVydHlLZXlzKHNvdXJjZSksIGNvbmZpZyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbWVyZ2UgPSAoLi4ub3B0aW9uczogYW55W10pID0+IHtcclxuICBjb25zdCBjb25maWcgPSBfbWVyZ2UoY2xvbmUoZGVmYXVsdE1lcmdlT3B0cyksICh0aGlzICE9PSBnbG9iYWxUaGlzICYmIHRoaXMpIHx8IHt9LCBkZWZhdWx0TWVyZ2VPcHRzKTtcclxuICBsZXQgbWVyZ2VkID0geyBfOiB7fSB9O1xyXG5cclxuICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XHJcbiAgICBpZiAob3B0aW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgY29udGludWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KG9wdGlvbikpIHtcclxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYCcgKyBvcHRpb24gKyAnYCBpcyBub3QgYSBwbGFpbiBPYmplY3QnKTtcclxuICAgIH1cclxuXHJcbiAgICBtZXJnZWQgPSBfbWVyZ2UobWVyZ2VkLCB7IF86IG9wdGlvbiB9LCBjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG1lcmdlZC5fO1xyXG59O1xyXG4iXX0=