UNPKG

@davebaol/angular-formio-editor

Version:

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

135 lines 14.2 kB
var _this = this; import { __values } from "tslib"; /* This is heavily inspired by https://github.com/schnittstabil/merge-options */ var _a = Object.prototype, hasOwnProperty = _a.hasOwnProperty, toString = _a.toString; var propertyIsEnumerable = Object.propertyIsEnumerable; var globalThis = this; var defaultMergeOpts = { ignoreUndefined: false }; var isPlainObject = function (value) { if (toString.call(value) !== '[object Object]') { return false; } var prototype = Object.getPrototypeOf(value); return prototype === null || prototype === Object.prototype; }; var ɵ0 = isPlainObject; var defineProperty = function (obj, name, value) { Object.defineProperty(obj, name, { value: value, writable: true, enumerable: true, configurable: true }); }; var ɵ1 = defineProperty; var getEnumerableOwnPropertyKeys = function (value) { var e_1, _a; var keys = []; for (var key in value) { if (hasOwnProperty.call(value, key)) { keys.push(key); } } if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(value); try { for (var symbols_1 = __values(symbols), symbols_1_1 = symbols_1.next(); !symbols_1_1.done; symbols_1_1 = symbols_1.next()) { var symbol = symbols_1_1.value; if (propertyIsEnumerable.call(value, symbol)) { keys.push(symbol); } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (symbols_1_1 && !symbols_1_1.done && (_a = symbols_1.return)) _a.call(symbols_1); } finally { if (e_1) throw e_1.error; } } } return keys; }; var ɵ2 = getEnumerableOwnPropertyKeys; export var clone = function (value) { if (Array.isArray(value)) { return cloneArray(value); } if (isPlainObject(value)) { return clonePlainObject(value); } return value; }; var cloneArray = function (array) { var result = array.slice(0, 0); getEnumerableOwnPropertyKeys(array).forEach(function (key) { defineProperty(result, key, clone(array[key])); }); return result; }; var ɵ3 = cloneArray; var clonePlainObject = function (obj) { var result = Object.getPrototypeOf(obj) === null ? Object.create(null) : {}; getEnumerableOwnPropertyKeys(obj).forEach(function (key) { defineProperty(result, key, clone(obj[key])); }); return result; }; var ɵ4 = clonePlainObject; var mergeKeys = function (merged, source, keys, config) { keys.forEach(function (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; }; var ɵ5 = mergeKeys; // tslint:disable-next-line:variable-name var _merge = function (merged, source, config) { if (!isPlainObject(source) || !isPlainObject(merged)) { return clone(source); } return mergeKeys(merged, source, getEnumerableOwnPropertyKeys(source), config); }; var ɵ6 = _merge; export var merge = function () { var e_2, _a; var options = []; for (var _i = 0; _i < arguments.length; _i++) { options[_i] = arguments[_i]; } var config = _merge(clone(defaultMergeOpts), (_this !== globalThis && _this) || {}, defaultMergeOpts); var merged = { _: {} }; try { for (var options_1 = __values(options), options_1_1 = options_1.next(); !options_1_1.done; options_1_1 = options_1.next()) { var option = options_1_1.value; if (option === undefined) { continue; } if (!isPlainObject(option)) { throw new TypeError('`' + option + '` is not a plain Object'); } merged = _merge(merged, { _: option }, config); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (options_1_1 && !options_1_1.done && (_a = options_1.return)) _a.call(options_1); } finally { if (e_2) throw e_2.error; } } return merged._; }; export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUtdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF2ZWJhb2wvYW5ndWxhci1mb3JtaW8tZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2Nsb25lLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGlCQTJIQTs7QUE5SEE7O0VBRUU7QUFDSSxJQUFBLHFCQUErQyxFQUE3QyxrQ0FBYyxFQUFFLHNCQUE2QixDQUFDO0FBQzlDLElBQUEsa0RBQW9CLENBQVk7QUFDeEMsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLElBQU0sZ0JBQWdCLEdBQUcsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFJcEQsSUFBTSxhQUFhLEdBQUcsVUFBQyxLQUFVO0lBQy9CLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxpQkFBaUIsRUFBRTtRQUM5QyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxPQUFPLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUM7QUFDOUQsQ0FBQyxDQUFDOztBQUVGLElBQU0sY0FBYyxHQUFHLFVBQUMsR0FBVyxFQUFFLElBQWlCLEVBQUUsS0FBVTtJQUNoRSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUU7UUFDL0IsS0FBSyxPQUFBO1FBQ0wsUUFBUSxFQUFFLElBQUk7UUFDZCxVQUFVLEVBQUUsSUFBSTtRQUNoQixZQUFZLEVBQUUsSUFBSTtLQUNuQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7O0FBRUYsSUFBTSw0QkFBNEIsR0FBRyxVQUFDLEtBQWE7O0lBQ2pELElBQU0sSUFBSSxHQUFrQixFQUFFLENBQUM7SUFFL0IsS0FBSyxJQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUU7UUFDdkIsSUFBSSxjQUFjLENBQUMs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LENBQUM7U0FDaEQ7Ozs7Ozs7OztJQUVELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gIFRoaXMgaXMgaGVhdmlseSBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vc2Nobml0dHN0YWJpbC9tZXJnZS1vcHRpb25zXHJcbiovXHJcbmNvbnN0IHsgaGFzT3duUHJvcGVydHksIHRvU3RyaW5nIH0gPSBPYmplY3QucHJvdG90eXBlO1xyXG5jb25zdCB7IHByb3BlcnR5SXNFbnVtZXJhYmxlIH0gPSBPYmplY3Q7XHJcbmNvbnN0IGdsb2JhbFRoaXMgPSB0aGlzO1xyXG5jb25zdCBkZWZhdWx0TWVyZ2VPcHRzID0geyBpZ25vcmVVbmRlZmluZWQ6IGZhbHNlIH07XHJcblxyXG50eXBlIHByb3BlcnR5S2V5ID0gc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sO1xyXG5cclxuY29uc3QgaXNQbGFpbk9iamVjdCA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgaWYgKHRvU3RyaW5nLmNhbGwodmFsdWUpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcclxuICByZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcclxufTtcclxuXHJcbmNvbnN0IGRlZmluZVByb3BlcnR5ID0gKG9iajogb2JqZWN0LCBuYW1lOiBwcm9wZXJ0eUtleSwgdmFsdWU6IGFueSkgPT4ge1xyXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIG5hbWUsIHtcclxuICAgIHZhbHVlLFxyXG4gICAgd3JpdGFibGU6IHRydWUsXHJcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCBnZXRFbnVtZXJhYmxlT3duUHJvcGVydHlLZXlzID0gKHZhbHVlOiBvYmplY3QpID0+IHtcclxuICBjb25zdCBrZXlzOiBwcm9wZXJ0eUtleVtdID0gW107XHJcblxyXG4gIGZvciAoY29uc3Qga2V5IGluIHZhbHVlKSB7XHJcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xyXG4gICAgICBrZXlzLnB1c2goa2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XHJcbiAgICBjb25zdCBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh2YWx1ZSk7XHJcblxyXG4gICAgZm9yIChjb25zdCBzeW1ib2wgb2Ygc3ltYm9scykge1xyXG4gICAgICBpZiAocHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgc3ltYm9sKSkge1xyXG4gICAgICAgIGtleXMucHVzaChzeW1ib2wpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4ga2V5cztcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjbG9uZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICByZXR1cm4gY2xvbmVBcnJheSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcclxuICAgIHJldHVybiBjbG9uZVBsYWluT2JqZWN0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHJldHVybiB2YWx1ZTtcclxufTtcclxuXHJcbmNvbnN0IGNsb25lQXJyYXkgPSAoYXJyYXk6IGFueVtdKSA9PiB7XHJcbiAgY29uc3QgcmVzdWx0ID0gYXJyYXkuc2xpY2UoMCwgMCk7XHJcblxyXG4gIGdldEVudW1lcmFibGVPd25Qcm9wZXJ0eUtleXMoYXJyYXkpLmZvckVhY2goa2V5ID0+IHtcclxuICAgIGRlZmluZVByb3BlcnR5KHJlc3VsdCwga2V5LCBjbG9uZShhcnJheVtrZXldKSk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG5jb25zdCBjbG9uZVBsYWluT2JqZWN0ID0gKG9iajogb2JqZWN0KSA9PiB7XHJcbiAgY29uc3QgcmVzdWx0OiBvYmplY3QgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcclxuXHJcbiAgZ2V0RW51bWVyYWJsZU93blByb3BlcnR5S2V5cyhvYmopLmZvckVhY2goa2V5ID0+IHtcclxuICAgIGRlZmluZVByb3BlcnR5KHJlc3VsdCwga2V5LCBjbG9uZShvYmpba2V5XSkpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuY29uc3QgbWVyZ2VLZXlzID0gKG1lcmdlZCwgc291cmNlLCBrZXlzOiBwcm9wZXJ0eUtleVtdLCBjb25maWcpID0+IHtcclxuICBrZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgIGlmICh0eXBlb2Ygc291cmNlW2tleV0gPT09ICd1bmRlZmluZWQnICYmIGNvbmZpZy5pZ25vcmVVbmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERvIG5vdCByZWN1cnNlIGludG8gcHJvdG90eXBlIGNoYWluIG9mIG1lcmdlZFxyXG4gICAgaWYgKGtleSBpbiBtZXJnZWQgJiYgbWVyZ2VkW2tleV0gIT09IE9iamVjdC5nZXRQcm90b3R5cGVPZihtZXJnZWQpKSB7XHJcbiAgICAgIGRlZmluZVByb3BlcnR5KG1lcmdlZCwga2V5LCBfbWVyZ2UobWVyZ2VkW2tleV0sIHNvdXJjZVtrZXldLCBjb25maWcpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlZmluZVByb3BlcnR5KG1lcmdlZCwga2V5LCBjbG9uZShzb3VyY2Vba2V5XSkpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gbWVyZ2VkO1xyXG59O1xyXG5cclxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcclxuY29uc3QgX21lcmdlID0gKG1lcmdlZCwgc291cmNlLCBjb25maWcpID0+IHtcclxuICBpZiAoIWlzUGxhaW5PYmplY3Qoc291cmNlKSB8fCAhaXNQbGFpbk9iamVjdChtZXJnZWQpKSB7XHJcbiAgICByZXR1cm4gY2xvbmUoc291cmNlKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBtZXJnZUtleXMobWVyZ2VkLCBzb3VyY2UsIGdldEVudW1lcmFibGVPd25Qcm9wZXJ0eUtleXMoc291cmNlKSwgY29uZmlnKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBtZXJnZSA9ICguLi5vcHRpb25zOiBhbnlbXSkgPT4ge1xyXG4gIGNvbnN0IGNvbmZpZyA9IF9tZXJnZShjbG9uZShkZWZhdWx0TWVyZ2VPcHRzKSwgKHRoaXMgIT09IGdsb2JhbFRoaXMgJiYgdGhpcykgfHwge30sIGRlZmF1bHRNZXJnZU9wdHMpO1xyXG4gIGxldCBtZXJnZWQgPSB7IF86IHt9IH07XHJcblxyXG4gIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcclxuICAgIGlmIChvcHRpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWlzUGxhaW5PYmplY3Qob3B0aW9uKSkge1xyXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgJyArIG9wdGlvbiArICdgIGlzIG5vdCBhIHBsYWluIE9iamVjdCcpO1xyXG4gICAgfVxyXG5cclxuICAgIG1lcmdlZCA9IF9tZXJnZShtZXJnZWQsIHsgXzogb3B0aW9uIH0sIGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbWVyZ2VkLl87XHJcbn07XHJcbiJdfQ==