@lenne.tech/ng-base 0.3.1 → 0.3.5

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.
Files changed (36) hide show
  1. package/bundles/lenne.tech-ng-base-src-lib-base.umd.js +568 -444
  2. package/bundles/lenne.tech-ng-base-src-lib-base.umd.js.map +1 -1
  3. package/bundles/lenne.tech-ng-base.umd.js +568 -444
  4. package/bundles/lenne.tech-ng-base.umd.js.map +1 -1
  5. package/esm2015/lib/base/classes/helper.class.js +19 -1
  6. package/esm2015/lib/base/directives/match-height.directive.js +50 -29
  7. package/esm2015/lib/base/factories/apollo-options.factory.js +3 -2
  8. package/esm2015/lib/base/public-api.js +2 -1
  9. package/esm2015/lib/base/services/image.service.js +99 -0
  10. package/esm2015/lib/base/services/scroll.service.js +16 -112
  11. package/esm2015/lib/base/services/seo.service.js +70 -14
  12. package/esm2015/src/lib/base/classes/helper.class.js +19 -1
  13. package/esm2015/src/lib/base/directives/match-height.directive.js +50 -29
  14. package/esm2015/src/lib/base/factories/apollo-options.factory.js +3 -2
  15. package/esm2015/src/lib/base/public-api.js +2 -1
  16. package/esm2015/src/lib/base/services/image.service.js +99 -0
  17. package/esm2015/src/lib/base/services/scroll.service.js +16 -112
  18. package/esm2015/src/lib/base/services/seo.service.js +70 -14
  19. package/fesm2015/lenne.tech-ng-base-src-lib-base.js +493 -402
  20. package/fesm2015/lenne.tech-ng-base-src-lib-base.js.map +1 -1
  21. package/fesm2015/lenne.tech-ng-base.js +493 -402
  22. package/fesm2015/lenne.tech-ng-base.js.map +1 -1
  23. package/lib/base/classes/helper.class.d.ts +7 -0
  24. package/lib/base/directives/match-height.directive.d.ts +10 -6
  25. package/lib/base/public-api.d.ts +1 -0
  26. package/lib/base/services/image.service.d.ts +24 -0
  27. package/lib/base/services/scroll.service.d.ts +6 -23
  28. package/lib/base/services/seo.service.d.ts +36 -3
  29. package/package.json +1 -1
  30. package/src/lib/base/classes/helper.class.d.ts +7 -0
  31. package/src/lib/base/directives/match-height.directive.d.ts +10 -6
  32. package/src/lib/base/lenne.tech-ng-base-src-lib-base.metadata.json +1 -1
  33. package/src/lib/base/public-api.d.ts +1 -0
  34. package/src/lib/base/services/image.service.d.ts +24 -0
  35. package/src/lib/base/services/scroll.service.d.ts +6 -23
  36. package/src/lib/base/services/seo.service.d.ts +36 -3
@@ -268,5 +268,23 @@ export class Helper {
268
268
  }
269
269
  return result;
270
270
  }
271
+ /**
272
+ * Check if propertie is type of HTMLCollection or NodeList
273
+ * See https://stackoverflow.com/a/7238344
274
+ *
275
+ * @param nodes
276
+ */
277
+ static isNodeList(nodes) {
278
+ try {
279
+ const stringRepr = Object.prototype.toString.call(nodes);
280
+ return (typeof nodes === 'object' &&
281
+ /^\[object (HTMLCollection|NodeList|Object)\]$/.test(stringRepr) &&
282
+ typeof nodes.length === 'number' &&
283
+ (nodes.length === 0 || (typeof nodes[0] === 'object' && nodes[0].nodeType > 0)));
284
+ }
285
+ catch (e) {
286
+ return false;
287
+ }
288
+ }
271
289
  }
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvY2xhc3Nlcy9oZWxwZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sTUFBTTtJQUNqQjs7T0FFRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQTZCLE9BQVksRUFBRSxNQUE4QjtRQUNwRixPQUFPLENBQUMsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2pELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDL0IsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUNoQyxPQUFPLEtBQUssQ0FBQzt5QkFDZDtxQkFDRjtpQkFDRjtxQkFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEVBQUU7b0JBQ2pDLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxLQUFJLEVBQUUsQ0FBVSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBUSxFQUFFLFVBQWtDLEVBQUU7UUFDN0QsU0FBUztRQUNULE1BQU0sTUFBTSxtQkFDVixRQUFRLEVBQUUsS0FBSyxJQUNaLE9BQU8sQ0FDWCxD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LElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFzQixFQUFFLENBQXNCLEVBQUUsUUFBaUIsSUFBSTtRQUNsRixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksS0FBSyxFQUFFO1lBQ1QsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2FBQ3JCO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFuZGFyZCB9IGZyb20gJy4vc3RhbmRhcmQuY2xhc3MnO1xuXG4vKipcbiAqIEhlbHBlciBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgSGVscGVyIHtcbiAgLyoqXG4gICAqIFNpbXBsZSBmaWx0ZXIgZnVuY3Rpb24gZm9yIHBsYWluIG9iamVjdHNcbiAgICovXG4gIHN0YXRpYyBmaWx0ZXI8VCA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KG9iamVjdHM6IFRbXSwgZmlsdGVyOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogVFtdIHtcbiAgICByZXR1cm4gKG9iamVjdHM/LmZpbHRlcigoZWxlbWVudCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyKSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50W2tleV0pKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGVsZW1lbnRba2V5XSkge1xuICAgICAgICAgICAgaWYgKCFlbGVtZW50W2tleV0uaW5jbHVkcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50W2tleV0gIT09IHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KSB8fCBbXSkgYXMgYW55W107XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0byBhIHVybC91cmkgY29uZm9ybSBzdHJpbmdcbiAgICogT25seTpcbiAgICogLSBsb3dlciBjYXNlXG4gICAqIC0gY2hhcnMsIG51bWJlcnMgYW5kIGh5cGhlbnNcbiAgICovXG4gIHN0YXRpYyB1cmxTdHJpbmcoc3RyOiBhbnksIG9wdGlvbnM6IHsgYWxsb3dBbGw/OiBib29sZWFuIH0gPSB7fSk6IHN0cmluZyB7XG4gICAgLy8gQ29uZmlnXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgYWxsb3dBbGw6IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8gVG8gc3RyaW5nXG4gICAgc3RyID0gc3RyICsgJyc7XG5cbiAgICAvLyBUcmltXG4gICAgc3RyID0gc3RyLnRyaW0oKTtcblxuICAgIC8vIExvd2VyIGNhc2VcbiAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghY29uZmlnLmFsbG93QWxsKSB7XG4gICAgICAvLyBSZXBsYWNlIHNwYWNlc1xuICAgICAgc3RyID0gc3RyLnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICctJyk7XG5cbiAgICAgIC8vIFJlcGxhY2Ugc29tZSBzcGVjaWFsIGNoYXJzXG4gICAgICBzdHIgPSBzdHIucmVwbGFjZSgnw6QnLCAnYWUnKTtcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKCfDticsICdvZScpO1xuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoJ8O8JywgJ3VlJyk7XG4gICAgICBzdHIgPSBzdHIucmVwbGFjZSgnw58nLCAnc3MnKTtcblxuICAgICAgLy8gUmVtb3ZlIG90aGVyIHNwZWNpYWwgY2hhcnNcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9bXmEtekEtWjAtOS1dL2csICcnKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdXJsIGNvbmZvcm0gc3RyaW5nXG4gICAgcmV0dXJuIGVuY29kZVVSSShzdHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbXBsZSBtYXAgZnVuY3Rpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFwPFQgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBzb3VyY2U6IFBhcnRpYWw8VD4gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIHRhcmdldDogVCxcbiAgICBvcHRpb25zOiB7IGZ1bmNBbGxvd2VkPzogYm9vbGVhbjsgZGF0ZVN0cmluZ1RvRGF0ZT86IGJvb2xlYW4gfCBzdHJpbmdbXSB9ID0ge31cbiAgKTogVCB7XG4gICAgLy8gU2V0IGNvbmZpZ1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGZ1bmNBbGxvd2VkOiBmYWxzZSxcbiAgICAgIGRhdGVTdHJpbmdUb0RhdGU6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBDaGVjayBzb3VyY2VcbiAgICBpZiAoIXNvdXJjZSB8fCB0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHByb3BlcnRpZXNcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0YXJnZXQpKSB7XG4gICAgICBpZiAoc291cmNlW2tleV0gIT09IHVuZGVmaW5lZCAmJiAoY29uZmlnLmZ1bmNBbGxvd2VkIHx8IHR5cGVvZiAoc291cmNlW2tleV0gIT09ICdmdW5jdGlvbicpKSkge1xuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVtrZXldID09PSAnc3RyaW5nJyAmJiBjb25maWcuZGF0ZVN0cmluZ1RvRGF0ZSkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5kYXRlU3RyaW5nVG9EYXRlKSkge1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5kYXRlU3RyaW5nVG9EYXRlLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBIZWxwZXIucGFyc2VEYXRlKHNvdXJjZVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBIZWxwZXIucGFyc2VEYXRlKHNvdXJjZVtrZXldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiB0YXJnZXRcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBPYmplY3Qgb3IgT2JqZWN0cyBvZiBzcGVjaWZpZWQgdHlwZSB3aXRoIHNwZWNpZmllZCBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hcHM8VCBleHRlbmRzIFN0YW5kYXJkPihcbiAgICBkYXRhOiBQYXJ0aWFsPFQ+IHwgUGFydGlhbDxUPltdIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSxcbiAgICB0YXJnZXRDbGFzczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVFxuICApOiBUW10ge1xuICAgIC8vIENoZWNrIGRhdGFcbiAgICBpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGFycmF5XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICBkYXRhID0gW2RhdGFdO1xuICAgIH1cblxuICAgIC8vIE1hcFxuICAgIHJldHVybiAoZGF0YSBhcyBhbnkpLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICByZXR1cm4gKHRhcmdldENsYXNzIGFzIGFueSkubWFwKGl0ZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBwbGFpbiBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UGxhaW5QYXJhbWV0ZXIocGFyYW1ldGVyOiBzdHJpbmcpIHtcbiAgICBpZiAoIXBhcmFtZXRlcikge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtZXRlcj8uc3BsaXQoJz8nKT8uc2hpZnQoKT8uc3BsaXQoJyMnKT8uc2hpZnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgSUQgb2YgYW4gdXJsIHBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRQYXJhbWV0ZXJJZChwYXJhbWV0ZXI6IHN0cmluZykge1xuICAgIGlmICghcGFyYW1ldGVyKSB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgIH1cbiAgICByZXR1cm4gSGVscGVyLmdldFBsYWluUGFyYW1ldGVyKHBhcmFtZXRlcik/LnNwbGl0KCctJykucG9wKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVsYXkobXM6IG51bWJlcikge1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZXAgZnJlZXplXG4gICAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvZnJlZXplI1doYXRfaXNfc2hhbGxvd19mcmVlemVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVlcEZyZWV6ZShvYmplY3Q6IGFueSwgcHJlcGFyZWRPYmplY3RzID0gW10pIHtcbiAgICAvLyBQcmV2ZW50IGluZmluaXQgcmVncmVzc1xuICAgIGlmIChwcmVwYXJlZE9iamVjdHMuaW5jbHVkZXMob2JqZWN0IGFzIG5ldmVyKSkge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gICAgcHJlcGFyZWRPYmplY3RzLnB1c2gob2JqZWN0IGFzIG5ldmVyKTtcblxuICAgIC8vIFJldHJpZXZlIHRoZSBwcm9wZXJ0eSBuYW1lcyBkZWZpbmVkIG9uIG9iamVjdFxuICAgIGNvbnN0IHByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7XG5cbiAgICAvLyBGcmVlemUgcHJvcGVydGllcyBiZWZvcmUgZnJlZXppbmcgc2VsZlxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBwcm9wTmFtZXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBIZWxwZXIuZGVlcEZyZWV6ZSh2YWx1ZSwgcHJlcGFyZWRPYmplY3RzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShvYmplY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhbiB1bmlxdWUgaWRlbnRpZmllciB3aXRoIDI0IGNoYXJhY3RlcnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VUlEKCk6IHN0cmluZyB7XG4gICAgbGV0IGR0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdXVpZCA9ICd4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgKGMpID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgICBjb25zdCByID0gKGR0ICsgTWF0aC5yYW5kb20oKSAqIDE2KSAlIDE2IHwgMDtcbiAgICAgIGR0ID0gTWF0aC5mbG9vcihkdCAvIDE2KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgICByZXR1cm4gKGMgPT09ICd4JyA/IHIgOiAociAmIDB4MykgfCAweDgpLnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdXVpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBkYXRlIHN0cmluZyB0byBkYXRlIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwYXJzZURhdGUoZGF0ZVN0cmluZzogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVJU08gPSAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0oPzpcXC5cXGQqKSkoPzpafChcXCt8LSkoW1xcZHw6XSopKT8kLztcbiAgICBjb25zdCByZU1zQWpheCA9IC9eXFwvRGF0ZVxcKChkfC18LiopXFwpW1xcL3xcXFxcXSQvO1xuICAgIGlmICh0eXBlb2YgZGF0ZVN0cmluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGlzb0V4ZWMgPSByZUlTTy5leGVjKGRhdGVTdHJpbmcpO1xuICAgICAgaWYgKGlzb0V4ZWMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgICAgY29uc3QgbXNBamF4RXhlYyA9IHJlTXNBamF4LmV4ZWMoZGF0ZVN0cmluZyk7XG4gICAgICBpZiAobXNBamF4RXhlYykge1xuICAgICAgICBjb25zdCBjbGVhbmVkID0gbXNBamF4RXhlY1sxXS5zcGxpdCgvWy0rLC5dLyk7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShjbGVhbmVkWzBdID8gK2NsZWFuZWRbMF0gOiAwIC0gK2NsZWFuZWRbMV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0ZVN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYnJvd3NlciBuYW1lIGFuZCB2ZXJzaW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEJyb3dzZXIoKSB7XG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBsZXQgZGF0YSA9IHVzZXJBZ2VudC5tYXRjaCgvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cXC8pKVxcLz9cXHMqKFxcZCspL2kpIHx8IFtdO1xuICAgIGxldCB2ZXJzaW9uO1xuICAgIGlmICgvdHJpZGVudC9pLnRlc3QoZGF0YVsxXSkpIHtcbiAgICAgIHZlcnNpb24gPSAvXFxicnZbIDpdKyhcXGQrKS9nLmV4ZWModXNlckFnZW50KSB8fCBbXTtcbiAgICAgIHJldHVybiB7IG5hbWU6ICdJRScsIHZlcnNpb246IHZlcnNpb25bMV0gfHwgJycgfTtcbiAgICB9XG4gICAgaWYgKGRhdGFbMV0gPT09ICdDaHJvbWUnKSB7XG4gICAgICB2ZXJzaW9uID0gdXNlckFnZW50Lm1hdGNoKC9cXGJPUFJ8RWRnZVxcLyhcXGQrKS8pO1xuICAgICAgaWYgKHZlcnNpb24gIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyBuYW1lOiAnT3BlcmEnLCB2ZXJzaW9uOiB2ZXJzaW9uWzFdIH07XG4gICAgICB9XG4gICAgfVxuICAgIGRhdGEgPSBkYXRhWzJdID8gW2RhdGFbMV0sIGRhdGFbMl1dIDogW25hdmlnYXRvci5hcHBOYW1lLCBuYXZpZ2F0b3IuYXBwVmVyc2lvbiwgJy0/J107XG4gICAgdmVyc2lvbiA9IHVzZXJBZ2VudC5tYXRjaCgvdmVyc2lvblxcLyhcXGQrKS9pKTtcbiAgICBpZiAodmVyc2lvbiAhPT0gbnVsbCkge1xuICAgICAgZGF0YS5zcGxpY2UoMSwgMSwgdmVyc2lvblsxXSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBkYXRhWzBdLFxuICAgICAgdmVyc2lvbjogZGF0YVsxXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZmlyc3QgcGFyYW1ldGVyIGlzIGEgZGVlcCBzdWJzZXQgb2Ygc2Vjb25kIHBhcmFtZXRlclxuICAgKiBIaW50OiBmdW5jdGlvbnMgd2lsbCBiZSBpZ25vcmVkXG4gICAqL1xuICBzdGF0aWMgaXNTdWJzZXQoYTogYW55LCBiOiBhbnkpIHtcbiAgICAvLyBFcXVhbFxuICAgIGlmIChhID09PSBiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBEaWZmZXJlbnQgdHlwZVxuICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGFycmF5XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGEpKSB7XG4gICAgICAgIGlmIChIZWxwZXIuaXNTdWJzZXQodmFsdWUsIGJba2V5XSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3Mgb2JqZWN0XG4gICAgaWYgKHR5cGVvZiBhID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgcGxhaW4gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBsYWluKSkge1xuICAgICAgICBpZiAoSGVscGVyLmlzU3Vic2V0KHZhbHVlLCBiW2tleV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBFbHNlXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAoaGF2ZSBlcXVhbCBwcm9wZXJ0aWVzKVxuICAgKiBIaW50OiBmdW5jdGlvbnMgd2lsbCBiZSBpZ25vcmVkXG4gICAqL1xuICBzdGF0aWMgaXNFcXVhbChhOiBhbnksIGI6IGFueSkge1xuICAgIHJldHVybiBIZWxwZXIuaXNTdWJzZXQoYSwgYikgJiYgSGVscGVyLmlzU3Vic2V0KGIsIGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcnN0IGxldmVsIGRpZmZlcmVuY2Ugb2YgdHdvIG9iamVjdHNcbiAgICogSGludDogZnVuY3Rpb25zIHdpbGwgYmUgaWdub3JlZCBhbmQgd2hlbiBhbiBhcnJheSBvciBhbiBvYmplY3QgaXMgZGlmZmVyZW50IHRoZSBob2xlIGFycmF5IG9yIG9iamVjdCB3aWxsIHVzZWQgYXMgcHJvcGVydHkgdmFsdWVcbiAgICpcbiAgICogQHJldHVybnMgUmVjb3JkPHN0cmluZywgYW55PiBPYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGZyb20gZmlyc3Qgb2JqZWN0XG4gICAqL1xuICBzdGF0aWMgZ2V0RGlmZihhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBiOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjbG9uZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBsZXQgZmlyc3RPYmplY3QgPSBhO1xuICAgIGlmIChjbG9uZSkge1xuICAgICAgZmlyc3RPYmplY3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlyc3RPYmplY3QpKSB7XG4gICAgICBpZiAoIUhlbHBlci5pc1N1YnNldCh2YWx1ZSwgYltrZXldKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvY2xhc3Nlcy9oZWxwZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sTUFBTTtJQUNqQjs7T0FFRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQTZCLE9BQVksRUFBRSxNQUE4QjtRQUNwRixPQUFPLENBQUMsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2pELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDL0IsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUNoQyxPQUFPLEtBQUssQ0FBQzt5QkFDZDtxQkFDRjtpQkFDRjtxQkFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEVBQUU7b0JBQ2pDLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxLQUFJLEVBQUUsQ0FBVSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBUSxFQUFFLFVBQWtDLEVBQUU7UUFDN0QsU0FBUztRQUNULE1BQU0sTUFBTSxtQkFDVixRQUFRLEVBQUUsS0FBSyxJQUNaLE9BQU8sQ0FDWCxD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RyxDQUFDLENBQUMsQ0FBQyxDQUNoRixDQUFDO1NBQ0g7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFuZGFyZCB9IGZyb20gJy4vc3RhbmRhcmQuY2xhc3MnO1xuXG4vKipcbiAqIEhlbHBlciBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgSGVscGVyIHtcbiAgLyoqXG4gICAqIFNpbXBsZSBmaWx0ZXIgZnVuY3Rpb24gZm9yIHBsYWluIG9iamVjdHNcbiAgICovXG4gIHN0YXRpYyBmaWx0ZXI8VCA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KG9iamVjdHM6IFRbXSwgZmlsdGVyOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogVFtdIHtcbiAgICByZXR1cm4gKG9iamVjdHM/LmZpbHRlcigoZWxlbWVudCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyKSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50W2tleV0pKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGVsZW1lbnRba2V5XSkge1xuICAgICAgICAgICAgaWYgKCFlbGVtZW50W2tleV0uaW5jbHVkcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50W2tleV0gIT09IHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KSB8fCBbXSkgYXMgYW55W107XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0byBhIHVybC91cmkgY29uZm9ybSBzdHJpbmdcbiAgICogT25seTpcbiAgICogLSBsb3dlciBjYXNlXG4gICAqIC0gY2hhcnMsIG51bWJlcnMgYW5kIGh5cGhlbnNcbiAgICovXG4gIHN0YXRpYyB1cmxTdHJpbmcoc3RyOiBhbnksIG9wdGlvbnM6IHsgYWxsb3dBbGw/OiBib29sZWFuIH0gPSB7fSk6IHN0cmluZyB7XG4gICAgLy8gQ29uZmlnXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgYWxsb3dBbGw6IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8gVG8gc3RyaW5nXG4gICAgc3RyID0gc3RyICsgJyc7XG5cbiAgICAvLyBUcmltXG4gICAgc3RyID0gc3RyLnRyaW0oKTtcblxuICAgIC8vIExvd2VyIGNhc2VcbiAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghY29uZmlnLmFsbG93QWxsKSB7XG4gICAgICAvLyBSZXBsYWNlIHNwYWNlc1xuICAgICAgc3RyID0gc3RyLnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICctJyk7XG5cbiAgICAgIC8vIFJlcGxhY2Ugc29tZSBzcGVjaWFsIGNoYXJzXG4gICAgICBzdHIgPSBzdHIucmVwbGFjZSgnw6QnLCAnYWUnKTtcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKCfDticsICdvZScpO1xuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoJ8O8JywgJ3VlJyk7XG4gICAgICBzdHIgPSBzdHIucmVwbGFjZSgnw58nLCAnc3MnKTtcblxuICAgICAgLy8gUmVtb3ZlIG90aGVyIHNwZWNpYWwgY2hhcnNcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9bXmEtekEtWjAtOS1dL2csICcnKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdXJsIGNvbmZvcm0gc3RyaW5nXG4gICAgcmV0dXJuIGVuY29kZVVSSShzdHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbXBsZSBtYXAgZnVuY3Rpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFwPFQgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBzb3VyY2U6IFBhcnRpYWw8VD4gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIHRhcmdldDogVCxcbiAgICBvcHRpb25zOiB7IGZ1bmNBbGxvd2VkPzogYm9vbGVhbjsgZGF0ZVN0cmluZ1RvRGF0ZT86IGJvb2xlYW4gfCBzdHJpbmdbXSB9ID0ge31cbiAgKTogVCB7XG4gICAgLy8gU2V0IGNvbmZpZ1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGZ1bmNBbGxvd2VkOiBmYWxzZSxcbiAgICAgIGRhdGVTdHJpbmdUb0RhdGU6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBDaGVjayBzb3VyY2VcbiAgICBpZiAoIXNvdXJjZSB8fCB0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHByb3BlcnRpZXNcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0YXJnZXQpKSB7XG4gICAgICBpZiAoc291cmNlW2tleV0gIT09IHVuZGVmaW5lZCAmJiAoY29uZmlnLmZ1bmNBbGxvd2VkIHx8IHR5cGVvZiAoc291cmNlW2tleV0gIT09ICdmdW5jdGlvbicpKSkge1xuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVtrZXldID09PSAnc3RyaW5nJyAmJiBjb25maWcuZGF0ZVN0cmluZ1RvRGF0ZSkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5kYXRlU3RyaW5nVG9EYXRlKSkge1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5kYXRlU3RyaW5nVG9EYXRlLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBIZWxwZXIucGFyc2VEYXRlKHNvdXJjZVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBIZWxwZXIucGFyc2VEYXRlKHNvdXJjZVtrZXldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiB0YXJnZXRcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBPYmplY3Qgb3IgT2JqZWN0cyBvZiBzcGVjaWZpZWQgdHlwZSB3aXRoIHNwZWNpZmllZCBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hcHM8VCBleHRlbmRzIFN0YW5kYXJkPihcbiAgICBkYXRhOiBQYXJ0aWFsPFQ+IHwgUGFydGlhbDxUPltdIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSxcbiAgICB0YXJnZXRDbGFzczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVFxuICApOiBUW10ge1xuICAgIC8vIENoZWNrIGRhdGFcbiAgICBpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGFycmF5XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICBkYXRhID0gW2RhdGFdO1xuICAgIH1cblxuICAgIC8vIE1hcFxuICAgIHJldHVybiAoZGF0YSBhcyBhbnkpLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICByZXR1cm4gKHRhcmdldENsYXNzIGFzIGFueSkubWFwKGl0ZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBwbGFpbiBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UGxhaW5QYXJhbWV0ZXIocGFyYW1ldGVyOiBzdHJpbmcpIHtcbiAgICBpZiAoIXBhcmFtZXRlcikge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtZXRlcj8uc3BsaXQoJz8nKT8uc2hpZnQoKT8uc3BsaXQoJyMnKT8uc2hpZnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgSUQgb2YgYW4gdXJsIHBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRQYXJhbWV0ZXJJZChwYXJhbWV0ZXI6IHN0cmluZykge1xuICAgIGlmICghcGFyYW1ldGVyKSB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgIH1cbiAgICByZXR1cm4gSGVscGVyLmdldFBsYWluUGFyYW1ldGVyKHBhcmFtZXRlcik/LnNwbGl0KCctJykucG9wKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVsYXkobXM6IG51bWJlcikge1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZXAgZnJlZXplXG4gICAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvZnJlZXplI1doYXRfaXNfc2hhbGxvd19mcmVlemVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVlcEZyZWV6ZShvYmplY3Q6IGFueSwgcHJlcGFyZWRPYmplY3RzID0gW10pIHtcbiAgICAvLyBQcmV2ZW50IGluZmluaXQgcmVncmVzc1xuICAgIGlmIChwcmVwYXJlZE9iamVjdHMuaW5jbHVkZXMob2JqZWN0IGFzIG5ldmVyKSkge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gICAgcHJlcGFyZWRPYmplY3RzLnB1c2gob2JqZWN0IGFzIG5ldmVyKTtcblxuICAgIC8vIFJldHJpZXZlIHRoZSBwcm9wZXJ0eSBuYW1lcyBkZWZpbmVkIG9uIG9iamVjdFxuICAgIGNvbnN0IHByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7XG5cbiAgICAvLyBGcmVlemUgcHJvcGVydGllcyBiZWZvcmUgZnJlZXppbmcgc2VsZlxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBwcm9wTmFtZXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBIZWxwZXIuZGVlcEZyZWV6ZSh2YWx1ZSwgcHJlcGFyZWRPYmplY3RzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShvYmplY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhbiB1bmlxdWUgaWRlbnRpZmllciB3aXRoIDI0IGNoYXJhY3RlcnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VUlEKCk6IHN0cmluZyB7XG4gICAgbGV0IGR0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdXVpZCA9ICd4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgKGMpID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgICBjb25zdCByID0gKGR0ICsgTWF0aC5yYW5kb20oKSAqIDE2KSAlIDE2IHwgMDtcbiAgICAgIGR0ID0gTWF0aC5mbG9vcihkdCAvIDE2KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgICByZXR1cm4gKGMgPT09ICd4JyA/IHIgOiAociAmIDB4MykgfCAweDgpLnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdXVpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBkYXRlIHN0cmluZyB0byBkYXRlIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwYXJzZURhdGUoZGF0ZVN0cmluZzogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVJU08gPSAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0oPzpcXC5cXGQqKSkoPzpafChcXCt8LSkoW1xcZHw6XSopKT8kLztcbiAgICBjb25zdCByZU1zQWpheCA9IC9eXFwvRGF0ZVxcKChkfC18LiopXFwpW1xcL3xcXFxcXSQvO1xuICAgIGlmICh0eXBlb2YgZGF0ZVN0cmluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGlzb0V4ZWMgPSByZUlTTy5leGVjKGRhdGVTdHJpbmcpO1xuICAgICAgaWYgKGlzb0V4ZWMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgICAgY29uc3QgbXNBamF4RXhlYyA9IHJlTXNBamF4LmV4ZWMoZGF0ZVN0cmluZyk7XG4gICAgICBpZiAobXNBamF4RXhlYykge1xuICAgICAgICBjb25zdCBjbGVhbmVkID0gbXNBamF4RXhlY1sxXS5zcGxpdCgvWy0rLC5dLyk7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShjbGVhbmVkWzBdID8gK2NsZWFuZWRbMF0gOiAwIC0gK2NsZWFuZWRbMV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0ZVN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYnJvd3NlciBuYW1lIGFuZCB2ZXJzaW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEJyb3dzZXIoKSB7XG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBsZXQgZGF0YSA9IHVzZXJBZ2VudC5tYXRjaCgvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cXC8pKVxcLz9cXHMqKFxcZCspL2kpIHx8IFtdO1xuICAgIGxldCB2ZXJzaW9uO1xuICAgIGlmICgvdHJpZGVudC9pLnRlc3QoZGF0YVsxXSkpIHtcbiAgICAgIHZlcnNpb24gPSAvXFxicnZbIDpdKyhcXGQrKS9nLmV4ZWModXNlckFnZW50KSB8fCBbXTtcbiAgICAgIHJldHVybiB7IG5hbWU6ICdJRScsIHZlcnNpb246IHZlcnNpb25bMV0gfHwgJycgfTtcbiAgICB9XG4gICAgaWYgKGRhdGFbMV0gPT09ICdDaHJvbWUnKSB7XG4gICAgICB2ZXJzaW9uID0gdXNlckFnZW50Lm1hdGNoKC9cXGJPUFJ8RWRnZVxcLyhcXGQrKS8pO1xuICAgICAgaWYgKHZlcnNpb24gIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyBuYW1lOiAnT3BlcmEnLCB2ZXJzaW9uOiB2ZXJzaW9uWzFdIH07XG4gICAgICB9XG4gICAgfVxuICAgIGRhdGEgPSBkYXRhWzJdID8gW2RhdGFbMV0sIGRhdGFbMl1dIDogW25hdmlnYXRvci5hcHBOYW1lLCBuYXZpZ2F0b3IuYXBwVmVyc2lvbiwgJy0/J107XG4gICAgdmVyc2lvbiA9IHVzZXJBZ2VudC5tYXRjaCgvdmVyc2lvblxcLyhcXGQrKS9pKTtcbiAgICBpZiAodmVyc2lvbiAhPT0gbnVsbCkge1xuICAgICAgZGF0YS5zcGxpY2UoMSwgMSwgdmVyc2lvblsxXSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBkYXRhWzBdLFxuICAgICAgdmVyc2lvbjogZGF0YVsxXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZmlyc3QgcGFyYW1ldGVyIGlzIGEgZGVlcCBzdWJzZXQgb2Ygc2Vjb25kIHBhcmFtZXRlclxuICAgKiBIaW50OiBmdW5jdGlvbnMgd2lsbCBiZSBpZ25vcmVkXG4gICAqL1xuICBzdGF0aWMgaXNTdWJzZXQoYTogYW55LCBiOiBhbnkpIHtcbiAgICAvLyBFcXVhbFxuICAgIGlmIChhID09PSBiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBEaWZmZXJlbnQgdHlwZVxuICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGFycmF5XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGEpKSB7XG4gICAgICAgIGlmIChIZWxwZXIuaXNTdWJzZXQodmFsdWUsIGJba2V5XSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3Mgb2JqZWN0XG4gICAgaWYgKHR5cGVvZiBhID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgcGxhaW4gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBsYWluKSkge1xuICAgICAgICBpZiAoSGVscGVyLmlzU3Vic2V0KHZhbHVlLCBiW2tleV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBFbHNlXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAoaGF2ZSBlcXVhbCBwcm9wZXJ0aWVzKVxuICAgKiBIaW50OiBmdW5jdGlvbnMgd2lsbCBiZSBpZ25vcmVkXG4gICAqL1xuICBzdGF0aWMgaXNFcXVhbChhOiBhbnksIGI6IGFueSkge1xuICAgIHJldHVybiBIZWxwZXIuaXNTdWJzZXQoYSwgYikgJiYgSGVscGVyLmlzU3Vic2V0KGIsIGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcnN0IGxldmVsIGRpZmZlcmVuY2Ugb2YgdHdvIG9iamVjdHNcbiAgICogSGludDogZnVuY3Rpb25zIHdpbGwgYmUgaWdub3JlZCBhbmQgd2hlbiBhbiBhcnJheSBvciBhbiBvYmplY3QgaXMgZGlmZmVyZW50IHRoZSBob2xlIGFycmF5IG9yIG9iamVjdCB3aWxsIHVzZWQgYXMgcHJvcGVydHkgdmFsdWVcbiAgICpcbiAgICogQHJldHVybnMgUmVjb3JkPHN0cmluZywgYW55PiBPYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGZyb20gZmlyc3Qgb2JqZWN0XG4gICAqL1xuICBzdGF0aWMgZ2V0RGlmZihhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBiOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjbG9uZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBsZXQgZmlyc3RPYmplY3QgPSBhO1xuICAgIGlmIChjbG9uZSkge1xuICAgICAgZmlyc3RPYmplY3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlyc3RPYmplY3QpKSB7XG4gICAgICBpZiAoIUhlbHBlci5pc1N1YnNldCh2YWx1ZSwgYltrZXldKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHByb3BlcnRpZSBpcyB0eXBlIG9mIEhUTUxDb2xsZWN0aW9uIG9yIE5vZGVMaXN0XG4gICAqIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNzIzODM0NFxuICAgKlxuICAgKiBAcGFyYW0gbm9kZXNcbiAgICovXG4gIHN0YXRpYyBpc05vZGVMaXN0KG5vZGVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0cmluZ1JlcHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobm9kZXMpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdHlwZW9mIG5vZGVzID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAvXlxcW29iamVjdCAoSFRNTENvbGxlY3Rpb258Tm9kZUxpc3R8T2JqZWN0KVxcXSQvLnRlc3Qoc3RyaW5nUmVwcikgJiZcbiAgICAgICAgdHlwZW9mIG5vZGVzLmxlbmd0aCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgKG5vZGVzLmxlbmd0aCA9PT0gMCB8fCAodHlwZW9mIG5vZGVzWzBdID09PSAnb2JqZWN0JyAmJiBub2Rlc1swXS5ub2RlVHlwZSA+IDApKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,44 +1,62 @@
1
- import { Directive, ElementRef, HostListener, Input } from '@angular/core';
1
+ import { __awaiter } from "tslib";
2
+ import { Directive, ElementRef, HostListener, Inject, Input, PLATFORM_ID } from '@angular/core';
3
+ import { ImageService } from '../services/image.service';
4
+ import { isPlatformBrowser } from '@angular/common';
2
5
  /**
3
6
  * Set same height (maximum) to different elements
4
7
  */
5
8
  export class MatchHeightDirective {
6
- constructor(el) {
9
+ constructor(el, imageService, platformId) {
7
10
  this.el = el;
11
+ this.imageService = imageService;
12
+ // Replace lazy loading images with immediate loading images
13
+ this.loadImages = true;
14
+ this.isBrowser = isPlatformBrowser(platformId);
8
15
  }
9
16
  onResize() {
10
17
  this.matchHeight(this.el.nativeElement, this.ltMatchHeight);
11
18
  }
12
- ngAfterViewChecked() {
19
+ ngOnInit() {
13
20
  this.matchHeight(this.el.nativeElement, this.ltMatchHeight);
14
21
  }
15
22
  matchHeight(parent, target) {
16
- if (!parent) {
17
- return;
18
- }
19
- let classNames;
20
- if (!Array.isArray(target)) {
21
- classNames = [target];
22
- }
23
- else {
24
- classNames = target;
25
- }
26
- classNames.forEach((className) => {
27
- // find all child structureElements with the selected class name
28
- const children = parent.getElementsByClassName(className);
29
- if (!children) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ if (!parent) {
30
25
  return;
31
26
  }
32
- // reset all children height
33
- Array.from(children).forEach((x) => {
34
- x.style.height = 'initial';
35
- });
36
- // get all the child structureElements heights
37
- const itemHeights = Array.from(children).map((x) => x.getBoundingClientRect().height);
38
- // find out the tallest one
39
- const maxHeight = itemHeights.reduce((prev, curr) => (curr > prev ? curr : prev), 0);
40
- // update the child structureElements height to the tallest one
41
- Array.from(children).forEach((x) => (x.style.height = `${maxHeight}px`));
27
+ let classNames;
28
+ if (!Array.isArray(target)) {
29
+ classNames = [target];
30
+ }
31
+ else {
32
+ classNames = target;
33
+ }
34
+ for (const className of classNames) {
35
+ // find all child structureElements with the selected class name
36
+ const children = parent.getElementsByClassName(className);
37
+ if (!children || children.length < 2) {
38
+ continue;
39
+ }
40
+ // Load images of children
41
+ if (this.loadImages) {
42
+ yield this.imageService.preLoadImages({ elements: children });
43
+ }
44
+ // reset all children height
45
+ Array.from(children).forEach((element) => {
46
+ element.style.height = 'initial';
47
+ });
48
+ // get all the child structureElements heights
49
+ const itemHeights = Array.from(children).map((element) => {
50
+ if (element.getBoundingClientRect) {
51
+ return element.getBoundingClientRect().height;
52
+ }
53
+ return 0;
54
+ });
55
+ // find out the tallest one
56
+ const maxHeight = itemHeights.reduce((prev, curr) => (curr > prev ? curr : prev), 0);
57
+ // update the child structureElements height to the tallest one
58
+ Array.from(children).forEach((element) => (element.style.height = `${maxHeight}px`));
59
+ }
42
60
  });
43
61
  }
44
62
  }
@@ -48,10 +66,13 @@ MatchHeightDirective.decorators = [
48
66
  },] }
49
67
  ];
50
68
  MatchHeightDirective.ctorParameters = () => [
51
- { type: ElementRef }
69
+ { type: ElementRef },
70
+ { type: ImageService },
71
+ { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
52
72
  ];
53
73
  MatchHeightDirective.propDecorators = {
54
74
  ltMatchHeight: [{ type: Input }],
75
+ loadImages: [{ type: Input }],
55
76
  onResize: [{ type: HostListener, args: ['window:resize',] }]
56
77
  };
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvbWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3Rjs7R0FFRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFBRyxDQUFDO0lBR3RDLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxXQUFXLENBQUMsTUFBbUIsRUFBRSxNQUF5QjtRQUN4RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTztTQUNSO1FBRUQsSUFBSSxVQUFVLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQixVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2QjthQUFNO1lBQ0wsVUFBVSxHQUFHLE1BQU0sQ0FBQztTQUNyQjtRQUVELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMvQixnRUFBZ0U7WUFDaEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRTFELElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsT0FBTzthQUNSO1lBRUQsNEJBQTRCO1lBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUU7Z0JBQzlDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUVILDhDQUE4QztZQUM5QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFdEYsMkJBQTJCO1lBQzNCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFckYsK0RBQStEO1lBQy9ELEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBckRGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCOzs7WUFQcUMsVUFBVTs7OzRCQVU3QyxLQUFLO3VCQUtMLFlBQVksU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU2V0IHNhbWUgaGVpZ2h0IChtYXhpbXVtKSB0byBkaWZmZXJlbnQgZWxlbWVudHNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2x0TWF0Y2hIZWlnaHRdJyxcbn0pXG5leHBvcnQgY2xhc3MgTWF0Y2hIZWlnaHREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkIHtcbiAgLy8gY2xhc3MgbmFtZSB0byBtYXRjaCBoZWlnaHRcbiAgQElucHV0KClcbiAgbHRNYXRjaEhlaWdodDogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25SZXNpemUoKSB7XG4gICAgdGhpcy5tYXRjaEhlaWdodCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMubHRNYXRjaEhlaWdodCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgdGhpcy5tYXRjaEhlaWdodCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMubHRNYXRjaEhlaWdodCk7XG4gIH1cblxuICBtYXRjaEhlaWdodChwYXJlbnQ6IEhUTUxFbGVtZW50LCB0YXJnZXQ6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2xhc3NOYW1lcztcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgY2xhc3NOYW1lcyA9IFt0YXJnZXRdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc05hbWVzID0gdGFyZ2V0O1xuICAgIH1cblxuICAgIGNsYXNzTmFtZXMuZm9yRWFjaCgoY2xhc3NOYW1lKSA9PiB7XG4gICAgICAvLyBmaW5kIGFsbCBjaGlsZCBzdHJ1Y3R1cmVFbGVtZW50cyB3aXRoIHRoZSBzZWxlY3RlZCBjbGFzcyBuYW1lXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZSk7XG5cbiAgICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyByZXNldCBhbGwgY2hpbGRyZW4gaGVpZ2h0XG4gICAgICBBcnJheS5mcm9tKGNoaWxkcmVuKS5mb3JFYWNoKCh4OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICB4LnN0eWxlLmhlaWdodCA9ICdpbml0aWFsJztcbiAgICAgIH0pO1xuXG4gICAgICAvLyBnZXQgYWxsIHRoZSBjaGlsZCBzdHJ1Y3R1cmVFbGVtZW50cyBoZWlnaHRzXG4gICAgICBjb25zdCBpdGVtSGVpZ2h0cyA9IEFycmF5LmZyb20oY2hpbGRyZW4pLm1hcCgoeCkgPT4geC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpO1xuXG4gICAgICAvLyBmaW5kIG91dCB0aGUgdGFsbGVzdCBvbmVcbiAgICAgIGNvbnN0IG1heEhlaWdodCA9IGl0ZW1IZWlnaHRzLnJlZHVjZSgocHJldiwgY3VycikgPT4gKGN1cnIgPiBwcmV2ID8gY3VyciA6IHByZXYpLCAwKTtcblxuICAgICAgLy8gdXBkYXRlIHRoZSBjaGlsZCBzdHJ1Y3R1cmVFbGVtZW50cyBoZWlnaHQgdG8gdGhlIHRhbGxlc3Qgb25lXG4gICAgICBBcnJheS5mcm9tKGNoaWxkcmVuKS5mb3JFYWNoKCh4OiBIVE1MRWxlbWVudCkgPT4gKHguc3R5bGUuaGVpZ2h0ID0gYCR7bWF4SGVpZ2h0fXB4YCkpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvbWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRDs7R0FFRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFZL0IsWUFBc0IsRUFBYyxFQUFZLFlBQTBCLEVBQXVCLFVBQWtCO1FBQTdGLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBWSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVAxRSw0REFBNEQ7UUFFNUQsZUFBVSxHQUFHLElBQUksQ0FBQztRQU1oQixJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUssV0FBVyxDQUFDLE1BQW1CLEVBQUUsTUFBeUI7O1lBQzlELElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsT0FBTzthQUNSO1lBRUQsSUFBSSxVQUFVLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDMUIsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsVUFBVSxHQUFHLE1BQU0sQ0FBQzthQUNyQjtZQUVELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUNsQyxnRUFBZ0U7Z0JBQ2hFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFMUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDcEMsU0FBUztpQkFDVjtnQkFFRCwwQkFBMEI7Z0JBQzFCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDbkIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2lCQUMvRDtnQkFFRCw0QkFBNEI7Z0JBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBb0IsRUFBRSxFQUFFO29CQUNwRCxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDO2dCQUVILDhDQUE4QztnQkFDOUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDdkQsSUFBSSxPQUFPLENBQUMscUJBQXFCLEVBQUU7d0JBQ2pDLE9BQU8sT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO3FCQUMvQztvQkFDRCxPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDLENBQUMsQ0FBQztnQkFFSCwyQkFBMkI7Z0JBQzNCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXJGLCtEQUErRDtnQkFDL0QsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ25HO1FBQ0gsQ0FBQztLQUFBOzs7WUF4RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7YUFDNUI7OztZQVRtQixVQUFVO1lBQ3JCLFlBQVk7eUNBcUIwRCxNQUFNLFNBQUMsV0FBVzs7OzRCQVY5RixLQUFLO3lCQUlMLEtBQUs7dUJBVUwsWUFBWSxTQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW1hZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogU2V0IHNhbWUgaGVpZ2h0IChtYXhpbXVtKSB0byBkaWZmZXJlbnQgZWxlbWVudHNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2x0TWF0Y2hIZWlnaHRdJyxcbn0pXG5leHBvcnQgY2xhc3MgTWF0Y2hIZWlnaHREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBjbGFzcyBuYW1lIHRvIG1hdGNoIGhlaWdodFxuICBASW5wdXQoKVxuICBsdE1hdGNoSGVpZ2h0OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAvLyBSZXBsYWNlIGxhenkgbG9hZGluZyBpbWFnZXMgd2l0aCBpbW1lZGlhdGUgbG9hZGluZyBpbWFnZXNcbiAgQElucHV0KClcbiAgbG9hZEltYWdlcyA9IHRydWU7XG5cbiAgLy8gV2V0aGVyIGN1cnJlbnQgcGxhdGZvcm0gaXMgYSBicm93c2VyXG4gIHJlYWRvbmx5IGlzQnJvd3NlcjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCBpbWFnZVNlcnZpY2U6IEltYWdlU2VydmljZSwgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5pc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBvblJlc2l6ZSgpIHtcbiAgICB0aGlzLm1hdGNoSGVpZ2h0KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5sdE1hdGNoSGVpZ2h0KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWF0Y2hIZWlnaHQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmx0TWF0Y2hIZWlnaHQpO1xuICB9XG5cbiAgYXN5bmMgbWF0Y2hIZWlnaHQocGFyZW50OiBIVE1MRWxlbWVudCwgdGFyZ2V0OiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNsYXNzTmFtZXM7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcbiAgICAgIGNsYXNzTmFtZXMgPSBbdGFyZ2V0XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3NOYW1lcyA9IHRhcmdldDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNsYXNzTmFtZSBvZiBjbGFzc05hbWVzKSB7XG4gICAgICAvLyBmaW5kIGFsbCBjaGlsZCBzdHJ1Y3R1cmVFbGVtZW50cyB3aXRoIHRoZSBzZWxlY3RlZCBjbGFzcyBuYW1lXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZSk7XG5cbiAgICAgIGlmICghY2hpbGRyZW4gfHwgY2hpbGRyZW4ubGVuZ3RoIDwgMikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gTG9hZCBpbWFnZXMgb2YgY2hpbGRyZW5cbiAgICAgIGlmICh0aGlzLmxvYWRJbWFnZXMpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2UucHJlTG9hZEltYWdlcyh7IGVsZW1lbnRzOiBjaGlsZHJlbiB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzZXQgYWxsIGNoaWxkcmVuIGhlaWdodFxuICAgICAgQXJyYXkuZnJvbShjaGlsZHJlbikuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnaW5pdGlhbCc7XG4gICAgICB9KTtcblxuICAgICAgLy8gZ2V0IGFsbCB0aGUgY2hpbGQgc3RydWN0dXJlRWxlbWVudHMgaGVpZ2h0c1xuICAgICAgY29uc3QgaXRlbUhlaWdodHMgPSBBcnJheS5mcm9tKGNoaWxkcmVuKS5tYXAoKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGZpbmQgb3V0IHRoZSB0YWxsZXN0IG9uZVxuICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gaXRlbUhlaWdodHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldiksIDApO1xuXG4gICAgICAvLyB1cGRhdGUgdGhlIGNoaWxkIHN0cnVjdHVyZUVsZW1lbnRzIGhlaWdodCB0byB0aGUgdGFsbGVzdCBvbmVcbiAgICAgIEFycmF5LmZyb20oY2hpbGRyZW4pLmZvckVhY2goKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiAoZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHttYXhIZWlnaHR9cHhgKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -7,8 +7,9 @@ import { getMainDefinition } from '@apollo/client/utilities';
7
7
  */
8
8
  export function apolloOptionsFactory(baseModuleConfig, httpLink, authService) {
9
9
  const links = [];
10
+ const defaultUrl = 'api.' + window.location.href + '/graphql';
10
11
  const http = httpLink.create({
11
- uri: baseModuleConfig.apiUrl,
12
+ uri: baseModuleConfig.apiUrl ? baseModuleConfig.apiUrl : 'https://' + defaultUrl,
12
13
  });
13
14
  const authMiddleware = new ApolloLink((operation, forward) => {
14
15
  const headers = {};
@@ -67,4 +68,4 @@ export function apolloOptionsFactory(baseModuleConfig, httpLink, authService) {
67
68
  },
68
69
  };
69
70
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBvbGxvLW9wdGlvbnMuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2ZhY3Rvcmllcy9hcG9sbG8tb3B0aW9ucy5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsZ0JBQWtDLEVBQUUsUUFBa0IsRUFBRSxXQUF3QjtJQUNuSCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFFakIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMzQixHQUFHLEVBQUUsZ0JBQWdCLENBQUMsTUFBTTtLQUM3QixDQUFDLENBQUM7SUFFSCxNQUFNLGNBQWMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUMzRCxNQUFNLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDeEIsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7WUFDeEMsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsT0FBTyxDQUFDLGFBQWEsR0FBRyxTQUFTLEdBQUcsS0FBSyxDQUFDO2FBQzNDO1lBQ0QsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRTtRQUMxQixJQUFJLFFBQVEsQ0FBQztRQUViLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1lBQ3hDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQztnQkFDM0IsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7Z0JBQzNCLE9BQU8sRUFBRTtvQkFDUCxTQUFTLEVBQUUsSUFBSTtvQkFDZixnQkFBZ0IsRUFBRTt3QkFDaEIsU0FBUyxFQUFFLEtBQUs7cUJBQ2pCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQztnQkFDM0IsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7Z0JBQzNCLE9BQU8sRUFBRTtvQkFDUCxTQUFTLEVBQUUsSUFBSTtpQkFDaEI7YUFDRixDQUFDLENBQUM7U0FDSjtRQUVELG1FQUFtRTtRQUNuRSxvREFBb0Q7UUFDcEQsS0FBSyxDQUFDLElBQUksQ0FDUixLQUFLO1FBQ0gsZ0NBQWdDO1FBQ2hDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ1osYUFBYTtZQUNiLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsT0FBTyxJQUFJLEtBQUsscUJBQXFCLElBQUksU0FBUyxLQUFLLGNBQWMsQ0FBQztRQUN4RSxDQUFDLEVBQ0QsUUFBUSxFQUNSLE1BQU0sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQzdCLENBQ0YsQ0FBQztLQUNIO1NBQU07UUFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDNUI7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVCLEtBQUssRUFBRSxJQUFJLGFBQWEsRUFBRTtRQUMxQixjQUFjLEVBQUU7WUFDZCxLQUFLLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFLGNBQWM7YUFDNUI7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cExpbmsgfSBmcm9tICdhcG9sbG8tYW5ndWxhci9odHRwJztcbmltcG9ydCB7IEJhc2VNb2R1bGVDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Jhc2UtbW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBvbGxvTGluaywgY29uY2F0LCBzcGxpdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgSW5NZW1vcnlDYWNoZSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NhY2hlJztcbmltcG9ydCB7IFdlYlNvY2tldExpbmsgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9saW5rL3dzJztcbmltcG9ydCB7IGdldE1haW5EZWZpbml0aW9uIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzJztcblxuLyoqXG4gKiBGYWN0b3J5IGZvciBhcG9sbG8tYW5ndWxhciBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcG9sbG9PcHRpb25zRmFjdG9yeShiYXNlTW9kdWxlQ29uZmlnOiBCYXNlTW9kdWxlQ29uZmlnLCBodHRwTGluazogSHR0cExpbmssIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkge1xuICBjb25zdCBsaW5rcyA9IFtdO1xuXG4gIGNvbnN0IGh0dHAgPSBodHRwTGluay5jcmVhdGUoe1xuICAgIHVyaTogYmFzZU1vZHVsZUNvbmZpZy5hcGlVcmwsXG4gIH0pO1xuXG4gIGNvbnN0IGF1dGhNaWRkbGV3YXJlID0gbmV3IEFwb2xsb0xpbmsoKG9wZXJhdGlvbiwgZm9yd2FyZCkgPT4ge1xuICAgIGNvbnN0IGhlYWRlcnM6IGFueSA9IHt9O1xuICAgIGlmIChsb2NhbFN0b3JhZ2UpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gYXV0aFNlcnZpY2UudG9rZW4gfHwgbnVsbDtcbiAgICAgIGlmICh0b2tlbikge1xuICAgICAgICBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSAnQmVhcmVyICcgKyB0b2tlbjtcbiAgICAgIH1cbiAgICAgIG9wZXJhdGlvbi5zZXRDb250ZXh0KCgpID0+ICh7IGhlYWRlcnMgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gZm9yd2FyZChvcGVyYXRpb24pO1xuICB9KTtcblxuICBpZiAoYmFzZU1vZHVsZUNvbmZpZy53c1VybCkge1xuICAgIGxldCB3c0NsaWVudDtcblxuICAgIGlmIChsb2NhbFN0b3JhZ2UpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gYXV0aFNlcnZpY2UudG9rZW4gfHwgbnVsbDtcbiAgICAgIHdzQ2xpZW50ID0gbmV3IFdlYlNvY2tldExpbmsoe1xuICAgICAgICB1cmk6IGJhc2VNb2R1bGVDb25maWcud3NVcmwsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICByZWNvbm5lY3Q6IHRydWUsXG4gICAgICAgICAgY29ubmVjdGlvblBhcmFtczoge1xuICAgICAgICAgICAgYXV0aFRva2VuOiB0b2tlbixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdzQ2xpZW50ID0gbmV3IFdlYlNvY2tldExpbmsoe1xuICAgICAgICB1cmk6IGJhc2VNb2R1bGVDb25maWcud3NVcmwsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICByZWNvbm5lY3Q6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyB1c2luZyB0aGUgYWJpbGl0eSB0byBzcGxpdCBsaW5rcywgeW91IGNhbiBzZW5kIGRhdGEgdG8gZWFjaCBsaW5rXG4gICAgLy8gZGVwZW5kaW5nIG9uIHdoYXQga2luZCBvZiBvcGVyYXRpb24gaXMgYmVpbmcgc2VudFxuICAgIGxpbmtzLnB1c2goXG4gICAgICBzcGxpdChcbiAgICAgICAgLy8gc3BsaXQgYmFzZWQgb24gb3BlcmF0aW9uIHR5cGVcbiAgICAgICAgKHsgcXVlcnkgfSkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBjb25zdCB7IGtpbmQsIG9wZXJhdGlvbiB9ID0gZ2V0TWFpbkRlZmluaXRpb24ocXVlcnkpO1xuICAgICAgICAgIHJldHVybiBraW5kID09PSAnT3BlcmF0aW9uRGVmaW5pdGlvbicgJiYgb3BlcmF0aW9uID09PSAnc3Vic2NyaXB0aW9uJztcbiAgICAgICAgfSxcbiAgICAgICAgd3NDbGllbnQsXG4gICAgICAgIGNvbmNhdChhdXRoTWlkZGxld2FyZSwgaHR0cClcbiAgICAgIClcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGxpbmtzLnB1c2goaHR0cCk7XG4gICAgbGlua3MucHVzaChhdXRoTWlkZGxld2FyZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxpbms6IEFwb2xsb0xpbmsuZnJvbShsaW5rcyksXG4gICAgY2FjaGU6IG5ldyBJbk1lbW9yeUNhY2hlKCksXG4gICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgIHF1ZXJ5OiB7XG4gICAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBvbGxvLW9wdGlvbnMuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2ZhY3Rvcmllcy9hcG9sbG8tb3B0aW9ucy5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsZ0JBQWtDLEVBQUUsUUFBa0IsRUFBRSxXQUF3QjtJQUNuSCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxVQUFVLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztJQUU5RCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzNCLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLFVBQVU7S0FDakYsQ0FBQyxDQUFDO0lBRUgsTUFBTSxjQUFjLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDM0QsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1lBQ3hDLElBQUksS0FBSyxFQUFFO2dCQUNULE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxHQUFHLEtBQUssQ0FBQzthQUMzQztZQUNELFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzQztRQUNELE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7UUFDMUIsSUFBSSxRQUFRLENBQUM7UUFFYixJQUFJLFlBQVksRUFBRTtZQUNoQixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQztZQUN4QyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUM7Z0JBQzNCLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO2dCQUMzQixPQUFPLEVBQUU7b0JBQ1AsU0FBUyxFQUFFLElBQUk7b0JBQ2YsZ0JBQWdCLEVBQUU7d0JBQ2hCLFNBQVMsRUFBRSxLQUFLO3FCQUNqQjtpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUM7Z0JBQzNCLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO2dCQUMzQixPQUFPLEVBQUU7b0JBQ1AsU0FBUyxFQUFFLElBQUk7aUJBQ2hCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxtRUFBbUU7UUFDbkUsb0RBQW9EO1FBQ3BELEtBQUssQ0FBQyxJQUFJLENBQ1IsS0FBSztRQUNILGdDQUFnQztRQUNoQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNaLGFBQWE7WUFDYixNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JELE9BQU8sSUFBSSxLQUFLLHFCQUFxQixJQUFJLFNBQVMsS0FBSyxjQUFjLENBQUM7UUFDeEUsQ0FBQyxFQUNELFFBQVEsRUFDUixNQUFNLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUM3QixDQUNGLENBQUM7S0FDSDtTQUFNO1FBQ0wsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQzVCO0lBRUQsT0FBTztRQUNMLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM1QixLQUFLLEVBQUUsSUFBSSxhQUFhLEVBQUU7UUFDMUIsY0FBYyxFQUFFO1lBQ2QsS0FBSyxFQUFFO2dCQUNMLFdBQVcsRUFBRSxjQUFjO2FBQzVCO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBMaW5rIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXIvaHR0cCc7XG5pbXBvcnQgeyBCYXNlTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9iYXNlLW1vZHVsZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwb2xsb0xpbmssIGNvbmNhdCwgc3BsaXQgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IEluTWVtb3J5Q2FjaGUgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jYWNoZSc7XG5pbXBvcnQgeyBXZWJTb2NrZXRMaW5rIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvbGluay93cyc7XG5pbXBvcnQgeyBnZXRNYWluRGVmaW5pdGlvbiB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcyc7XG5cbi8qKlxuICogRmFjdG9yeSBmb3IgYXBvbGxvLWFuZ3VsYXIgb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXBvbGxvT3B0aW9uc0ZhY3RvcnkoYmFzZU1vZHVsZUNvbmZpZzogQmFzZU1vZHVsZUNvbmZpZywgaHR0cExpbms6IEh0dHBMaW5rLCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UpIHtcbiAgY29uc3QgbGlua3MgPSBbXTtcbiAgY29uc3QgZGVmYXVsdFVybCA9ICdhcGkuJyArIHdpbmRvdy5sb2NhdGlvbi5ocmVmICsgJy9ncmFwaHFsJztcblxuICBjb25zdCBodHRwID0gaHR0cExpbmsuY3JlYXRlKHtcbiAgICB1cmk6IGJhc2VNb2R1bGVDb25maWcuYXBpVXJsID8gYmFzZU1vZHVsZUNvbmZpZy5hcGlVcmwgOiAnaHR0cHM6Ly8nICsgZGVmYXVsdFVybCxcbiAgfSk7XG5cbiAgY29uc3QgYXV0aE1pZGRsZXdhcmUgPSBuZXcgQXBvbGxvTGluaygob3BlcmF0aW9uLCBmb3J3YXJkKSA9PiB7XG4gICAgY29uc3QgaGVhZGVyczogYW55ID0ge307XG4gICAgaWYgKGxvY2FsU3RvcmFnZSkge1xuICAgICAgY29uc3QgdG9rZW4gPSBhdXRoU2VydmljZS50b2tlbiB8fCBudWxsO1xuICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCZWFyZXIgJyArIHRva2VuO1xuICAgICAgfVxuICAgICAgb3BlcmF0aW9uLnNldENvbnRleHQoKCkgPT4gKHsgaGVhZGVycyB9KSk7XG4gICAgfVxuICAgIHJldHVybiBmb3J3YXJkKG9wZXJhdGlvbik7XG4gIH0pO1xuXG4gIGlmIChiYXNlTW9kdWxlQ29uZmlnLndzVXJsKSB7XG4gICAgbGV0IHdzQ2xpZW50O1xuXG4gICAgaWYgKGxvY2FsU3RvcmFnZSkge1xuICAgICAgY29uc3QgdG9rZW4gPSBhdXRoU2VydmljZS50b2tlbiB8fCBudWxsO1xuICAgICAgd3NDbGllbnQgPSBuZXcgV2ViU29ja2V0TGluayh7XG4gICAgICAgIHVyaTogYmFzZU1vZHVsZUNvbmZpZy53c1VybCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHJlY29ubmVjdDogdHJ1ZSxcbiAgICAgICAgICBjb25uZWN0aW9uUGFyYW1zOiB7XG4gICAgICAgICAgICBhdXRoVG9rZW46IHRva2VuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgd3NDbGllbnQgPSBuZXcgV2ViU29ja2V0TGluayh7XG4gICAgICAgIHVyaTogYmFzZU1vZHVsZUNvbmZpZy53c1VybCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHJlY29ubmVjdDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHVzaW5nIHRoZSBhYmlsaXR5IHRvIHNwbGl0IGxpbmtzLCB5b3UgY2FuIHNlbmQgZGF0YSB0byBlYWNoIGxpbmtcbiAgICAvLyBkZXBlbmRpbmcgb24gd2hhdCBraW5kIG9mIG9wZXJhdGlvbiBpcyBiZWluZyBzZW50XG4gICAgbGlua3MucHVzaChcbiAgICAgIHNwbGl0KFxuICAgICAgICAvLyBzcGxpdCBiYXNlZCBvbiBvcGVyYXRpb24gdHlwZVxuICAgICAgICAoeyBxdWVyeSB9KSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvbnN0IHsga2luZCwgb3BlcmF0aW9uIH0gPSBnZXRNYWluRGVmaW5pdGlvbihxdWVyeSk7XG4gICAgICAgICAgcmV0dXJuIGtpbmQgPT09ICdPcGVyYXRpb25EZWZpbml0aW9uJyAmJiBvcGVyYXRpb24gPT09ICdzdWJzY3JpcHRpb24nO1xuICAgICAgICB9LFxuICAgICAgICB3c0NsaWVudCxcbiAgICAgICAgY29uY2F0KGF1dGhNaWRkbGV3YXJlLCBodHRwKVxuICAgICAgKVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbGlua3MucHVzaChodHRwKTtcbiAgICBsaW5rcy5wdXNoKGF1dGhNaWRkbGV3YXJlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbGluazogQXBvbGxvTGluay5mcm9tKGxpbmtzKSxcbiAgICBjYWNoZTogbmV3IEluTWVtb3J5Q2FjaGUoKSxcbiAgICBkZWZhdWx0T3B0aW9uczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuIl19
@@ -48,6 +48,7 @@ export * from './services/fullscreen.service';
48
48
  export * from './services/graphql.service';
49
49
  export * from './services/graphql-meta.service';
50
50
  export * from './services/graphql-plus.service';
51
+ export * from './services/image.service';
51
52
  export * from './services/loader.service';
52
53
  export * from './services/scroll.service';
53
54
  export * from './services/seo.service';
@@ -56,4 +57,4 @@ export * from './services/storage.service';
56
57
  export * from './types/storage.type';
57
58
  // Validators
58
59
  export * from './validators/must-match.validator';
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxTQUFTO0FBQ1QsY0FBYyxlQUFlLENBQUM7QUFFOUIsVUFBVTtBQUNWLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLGFBQWE7QUFDYixjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELFlBQVk7QUFDWixjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELFNBQVM7QUFDVCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxRQUFRO0FBQ1IsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxhQUFhO0FBQ2IsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsa0NBQWtDLENBQUM7QUFFakQsUUFBUTtBQUNSLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxXQUFXO0FBQ1gsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsUUFBUTtBQUNSLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsYUFBYTtBQUNiLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV4cG9ydHMgZm9yIHB1YmxpYyBBUElcbiAqL1xuXG4vLyBNb2R1bGVcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS5tb2R1bGUnO1xuXG4vLyBDbGFzc2VzXG5leHBvcnQgKiBmcm9tICcuL2NsYXNzZXMvYmFzaWMtdXNlci5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL2NsYXNzZXMvZ3JhcGhxbC1lbnVtLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xhc3Nlcy9ncmFwaHFsLW1ldGEuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFzc2VzL2dyYXBocWwtdHlwZS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL2NsYXNzZXMvaGVscGVyLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xhc3Nlcy9zdGFuZGFyZC5jbGFzcyc7XG5cbi8vIERpcmVjdGl2ZXNcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9jb250ZXh0LW1lbnUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9sYXp5LWxvYWQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9tYXRjaC1oZWlnaHQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9yZXNpemFibGUuZGlyZWN0aXZlJztcblxuLy8gRmFjdG9yaWVzXG5leHBvcnQgKiBmcm9tICcuL2ZhY3Rvcmllcy9hcG9sbG8tb3B0aW9ucy5mYWN0b3J5JztcblxuLy8gR3VhcmRzXG5leHBvcnQgKiBmcm9tICcuL2d1YXJkcy9hdXRoLmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vZ3VhcmRzL2Nhbi1kZWFjdGl2YXRlLmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vZ3VhcmRzL2xvZ291dC5ndWFyZCc7XG5cbi8vIEVudW1zXG5leHBvcnQgKiBmcm9tICcuL2VudW1zL2NvbXBhcmlzb24tb3BlcmF0b3IuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2VudW1zL2dyYXBocWwtcmVxdWVzdC10eXBlLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtcy9sb2dpY2FsLW9wZXJhdG9yLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtcy9zb3J0LW9yZGVyLmVudW0nO1xuXG4vLyBJbnRlcmZhY2VzXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvYmFzZS1tb2R1bGUtY29uZmlnLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvY2FuLWNvbXBvbmVudC1kZWFjdGl2YXRlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvY29tYmluZWQtZmlsdGVyLWlucHV0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvZmllbGQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9maWVsZC1vYmplY3QuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXItaW5wdXQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9ncmFwaHFsLW9wdGlvbnMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9ncmFwaHFsLXBsdXMtb3B0aW9ucy5pbnRlcmZhY2VuJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9ncmFwaHFsLXR5cGUtY29sbGVjdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL3NpbmdsZS1maWx0ZXItaW5wdXQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9zb3J0LWlucHV0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvZmluZC1hcmdzLmludGVyZmFjZSc7XG5cbi8vIFBpcGVzXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2VsbGlwc2VzLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9zYWZlLWh0bWwucGlwZSc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2Z1bGxzY3JlZW4uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2dyYXBocWwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2dyYXBocWwtbWV0YS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZ3JhcGhxbC1wbHVzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3Njcm9sbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc2VvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuXG4vLyBUeXBlc1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9zdG9yYWdlLnR5cGUnO1xuXG4vLyBWYWxpZGF0b3JzXG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRvcnMvbXVzdC1tYXRjaC52YWxpZGF0b3InO1xuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxTQUFTO0FBQ1QsY0FBYyxlQUFlLENBQUM7QUFFOUIsVUFBVTtBQUNWLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLGFBQWE7QUFDYixjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELFlBQVk7QUFDWixjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELFNBQVM7QUFDVCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxRQUFRO0FBQ1IsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxhQUFhO0FBQ2IsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsa0NBQWtDLENBQUM7QUFFakQsUUFBUTtBQUNSLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxXQUFXO0FBQ1gsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxRQUFRO0FBQ1IsY0FBYyxzQkFBc0IsQ0FBQztBQUVyQyxhQUFhO0FBQ2IsY0FBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXhwb3J0cyBmb3IgcHVibGljIEFQSVxuICovXG5cbi8vIE1vZHVsZVxuZXhwb3J0ICogZnJvbSAnLi9iYXNlLm1vZHVsZSc7XG5cbi8vIENsYXNzZXNcbmV4cG9ydCAqIGZyb20gJy4vY2xhc3Nlcy9iYXNpYy11c2VyLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xhc3Nlcy9ncmFwaHFsLWVudW0uY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFzc2VzL2dyYXBocWwtbWV0YS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL2NsYXNzZXMvZ3JhcGhxbC10eXBlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xhc3Nlcy9oZWxwZXIuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFzc2VzL3N0YW5kYXJkLmNsYXNzJztcblxuLy8gRGlyZWN0aXZlc1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2NvbnRleHQtbWVudS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2xhenktbG9hZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL21hdGNoLWhlaWdodC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3Jlc2l6YWJsZS5kaXJlY3RpdmUnO1xuXG4vLyBGYWN0b3JpZXNcbmV4cG9ydCAqIGZyb20gJy4vZmFjdG9yaWVzL2Fwb2xsby1vcHRpb25zLmZhY3RvcnknO1xuXG4vLyBHdWFyZHNcbmV4cG9ydCAqIGZyb20gJy4vZ3VhcmRzL2F1dGguZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9ndWFyZHMvY2FuLWRlYWN0aXZhdGUuZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9ndWFyZHMvbG9nb3V0Lmd1YXJkJztcblxuLy8gRW51bXNcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvY29tcGFyaXNvbi1vcGVyYXRvci5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvZ3JhcGhxbC1yZXF1ZXN0LXR5cGUuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2VudW1zL2xvZ2ljYWwtb3BlcmF0b3IuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2VudW1zL3NvcnQtb3JkZXIuZW51bSc7XG5cbi8vIEludGVyZmFjZXNcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9iYXNlLW1vZHVsZS1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9jYW4tY29tcG9uZW50LWRlYWN0aXZhdGUuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9jb21iaW5lZC1maWx0ZXItaW5wdXQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9maWVsZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2ZpZWxkLW9iamVjdC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci1pbnB1dC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2dyYXBocWwtb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2dyYXBocWwtcGx1cy1vcHRpb25zLmludGVyZmFjZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2dyYXBocWwtdHlwZS1jb2xsZWN0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvc2luZ2xlLWZpbHRlci1pbnB1dC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL3NvcnQtaW5wdXQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9maW5kLWFyZ3MuaW50ZXJmYWNlJztcblxuLy8gUGlwZXNcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvZWxsaXBzZXMucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3NhZmUtaHRtbC5waXBlJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZnVsbHNjcmVlbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZ3JhcGhxbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZ3JhcGhxbC1tZXRhLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9ncmFwaHFsLXBsdXMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ltYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3Njcm9sbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc2VvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuXG4vLyBUeXBlc1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9zdG9yYWdlLnR5cGUnO1xuXG4vLyBWYWxpZGF0b3JzXG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRvcnMvbXVzdC1tYXRjaC52YWxpZGF0b3InO1xuIl19
@@ -0,0 +1,99 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { Helper } from '../classes/helper.class';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Image service
7
+ */
8
+ export class ImageService {
9
+ /**
10
+ * Preaload images (for lazy handling)
11
+ *
12
+ * @param options
13
+ * @protected
14
+ */
15
+ preLoadImages(options) {
16
+ // Init configuration
17
+ const config = Object.assign({ doneFunnction: undefined, elements: document, regExp: undefined }, options);
18
+ return new Promise((resolve) => {
19
+ var _a;
20
+ // Convert element(s) into array
21
+ if (!Array.isArray(config.elements)) {
22
+ // NodeList or HTMLCollection
23
+ if (Helper.isNodeList(config.elements)) {
24
+ config.elements = Array.from(config.elements);
25
+ }
26
+ // Single element
27
+ else {
28
+ config.elements = [config.elements];
29
+ }
30
+ }
31
+ // Init loading
32
+ const promises = [];
33
+ // Get all images
34
+ let images = [];
35
+ config.elements.forEach((element) => {
36
+ images = images.concat(Array.from(element.getElementsByTagName('img')));
37
+ });
38
+ // Prepare images
39
+ for (let image of images) {
40
+ const src = image.getAttribute('src');
41
+ // Check if changes are necessary and possible
42
+ if ((image.complete && image.naturalHeight !== 0) || // already laoded
43
+ !src || // Image has no src
44
+ ((_a = config.regExp) === null || _a === void 0 ? void 0 : _a.test(src)) // Test if src matches regular expression
45
+ ) {
46
+ continue;
47
+ }
48
+ // Replace lazy loading image with immediately loading image
49
+ if (image.getAttribute('loading') === 'lazy') {
50
+ const newImage = document.createElement('img');
51
+ Array.from(image.attributes).forEach((attr) => {
52
+ if (attr.name !== 'loading' && attr.name !== 'src') {
53
+ newImage.setAttribute(attr.name, attr.value);
54
+ }
55
+ });
56
+ image.replaceWith(newImage);
57
+ image = newImage;
58
+ }
59
+ // Wait for laoding
60
+ promises.push(this.loadImage(image, src));
61
+ }
62
+ // Wait until all images loaded
63
+ Promise.all(promises)
64
+ .catch((e) => console.error('Error during image loading', e))
65
+ .finally(() => __awaiter(this, void 0, void 0, function* () {
66
+ // Return result
67
+ let result;
68
+ if (config.doneFunnction) {
69
+ result = yield config.doneFunction();
70
+ }
71
+ resolve(result);
72
+ }));
73
+ });
74
+ }
75
+ /**
76
+ * Load image for image element
77
+ *
78
+ * @param imageElement
79
+ * @param src
80
+ * @protected
81
+ */
82
+ loadImage(imageElement, src) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ src = src || imageElement.src;
85
+ return new Promise((resolve, reject) => {
86
+ imageElement.onload = () => resolve(imageElement);
87
+ imageElement.onerror = reject;
88
+ imageElement.src = src;
89
+ });
90
+ });
91
+ }
92
+ }
93
+ ImageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ImageService_Factory() { return new ImageService(); }, token: ImageService, providedIn: "root" });
94
+ ImageService.decorators = [
95
+ { type: Injectable, args: [{
96
+ providedIn: 'root',
97
+ },] }
98
+ ];
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL3NlcnZpY2VzL2ltYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUVqRDs7R0FFRztBQUlILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLE9BWXBCO1FBQ0MscUJBQXFCO1FBQ3JCLE1BQU0sTUFBTSxtQkFDVixhQUFhLEVBQUUsU0FBUyxFQUN4QixRQUFRLEVBQUUsUUFBUSxFQUNsQixNQUFNLEVBQUUsU0FBUyxJQUNkLE9BQU8sQ0FDWCxDQUFDO1FBRUYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFOztZQUM3QixnQ0FBZ0M7WUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNuQyw2QkFBNkI7Z0JBQzdCLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ3RDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBcUMsQ0FBYyxDQUFDO2lCQUN6RjtnQkFFRCxpQkFBaUI7cUJBQ1o7b0JBQ0gsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQWMsQ0FBQztpQkFDbEQ7YUFDRjtZQUVELGVBQWU7WUFDZixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFFcEIsaUJBQWlCO1lBQ2pCLElBQUksTUFBTSxHQUF1QixFQUFFLENBQUM7WUFDcEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxP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SW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9oZWxwZXIuY2xhc3MnO1xuXG4vKipcbiAqIEltYWdlIHNlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEltYWdlU2VydmljZSB7XG4gIC8qKlxuICAgKiBQcmVhbG9hZCBpbWFnZXMgKGZvciBsYXp5IGhhbmRsaW5nKVxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwdWJsaWMgcHJlTG9hZEltYWdlcyhvcHRpb25zPzoge1xuICAgIGRvbmVGdW5jdGlvbj86ICgpID0+IFByb21pc2U8YW55PiB8IGFueSB8IHZvaWQ7XG4gICAgZWxlbWVudHM/OlxuICAgICAgfCBFbGVtZW50XG4gICAgICB8IEVsZW1lbnRbXVxuICAgICAgfCBIVE1MQ29sbGVjdGlvbk9mPEVsZW1lbnQ+XG4gICAgICB8IE5vZGVcbiAgICAgIHwgTm9kZUxpc3RcbiAgICAgIHwgRG9jdW1lbnRcbiAgICAgIHwgSFRNTEVsZW1lbnRcbiAgICAgIHwgSFRNTEVsZW1lbnRbXTtcbiAgICByZWdFeHA/OiBSZWdFeHA7XG4gIH0pOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIEluaXQgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGRvbmVGdW5uY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgIGVsZW1lbnRzOiBkb2N1bWVudCxcbiAgICAgIHJlZ0V4cDogdW5kZWZpbmVkLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAvLyBDb252ZXJ0IGVsZW1lbnQocykgaW50byBhcnJheVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy5lbGVtZW50cykpIHtcbiAgICAgICAgLy8gTm9kZUxpc3Qgb3IgSFRNTENvbGxlY3Rpb25cbiAgICAgICAgaWYgKEhlbHBlci5pc05vZGVMaXN0KGNvbmZpZy5lbGVtZW50cykpIHtcbiAgICAgICAgICBjb25maWcuZWxlbWVudHMgPSBBcnJheS5mcm9tKGNvbmZpZy5lbGVtZW50cyBhcyBIVE1MQ29sbGVjdGlvbiB8IE5vZGVMaXN0KSBhcyBFbGVtZW50W107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaW5nbGUgZWxlbWVudFxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25maWcuZWxlbWVudHMgPSBbY29uZmlnLmVsZW1lbnRzXSBhcyBFbGVtZW50W107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSW5pdCBsb2FkaW5nXG4gICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgICAvLyBHZXQgYWxsIGltYWdlc1xuICAgICAgbGV0IGltYWdlczogSFRNTEltYWdlRWxlbWVudFtdID0gW107XG4gICAgICBjb25maWcuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpbWFnZXMgPSBpbWFnZXMuY29uY2F0KEFycmF5LmZyb20oZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJykpKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBQcmVwYXJlIGltYWdlc1xuICAgICAgZm9yIChsZXQgaW1hZ2Ugb2YgaW1hZ2VzKSB7XG4gICAgICAgIGNvbnN0IHNyYyA9IGltYWdlLmdldEF0dHJpYnV0ZSgnc3JjJyk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgY2hhbmdlcyBhcmUgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGltYWdlLmNvbXBsZXRlICYmIGltYWdlLm5hdHVyYWxIZWlnaHQgIT09IDApIHx8IC8vIGFscmVhZHkgbGFvZGVkXG4gICAgICAgICAgIXNyYyB8fCAvLyBJbWFnZSBoYXMgbm8gc3JjXG4gICAgICAgICAgY29uZmlnLnJlZ0V4cD8udGVzdChzcmMpIC8vIFRlc3QgaWYgc3JjIG1hdGNoZXMgcmVndWxhciBleHByZXNzaW9uXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVwbGFjZSBsYXp5IGxvYWRpbmcgaW1hZ2Ugd2l0aCBpbW1lZGlhdGVseSBsb2FkaW5nIGltYWdlXG4gICAgICAgIGlmIChpbWFnZS5nZXRBdHRyaWJ1dGUoJ2xvYWRpbmcnKSA9PT0gJ2xhenknKSB7XG4gICAgICAgICAgY29uc3QgbmV3SW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICAgICAgICBBcnJheS5mcm9tKGltYWdlLmF0dHJpYnV0ZXMpLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICAgIGlmIChhdHRyLm5hbWUgIT09ICdsb2FkaW5nJyAmJiBhdHRyLm5hbWUgIT09ICdzcmMnKSB7XG4gICAgICAgICAgICAgIG5ld0ltYWdlLnNldEF0dHJpYnV0ZShhdHRyLm5hbWUsIGF0dHIudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGltYWdlLnJlcGxhY2VXaXRoKG5ld0ltYWdlKTtcbiAgICAgICAgICBpbWFnZSA9IG5ld0ltYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2FpdCBmb3IgbGFvZGluZ1xuICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMubG9hZEltYWdlKGltYWdlLCBzcmMpKTtcbiAgICAgIH1cblxuICAgICAgLy8gV2FpdCB1bnRpbCBhbGwgaW1hZ2VzIGxvYWRlZFxuICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICAgIC5jYXRjaCgoZSkgPT4gY29uc29sZS5lcnJvcignRXJyb3IgZHVyaW5nIGltYWdlIGxvYWRpbmcnLCBlKSlcbiAgICAgICAgLmZpbmFsbHkoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIFJldHVybiByZXN1bHRcbiAgICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICAgIGlmIChjb25maWcuZG9uZUZ1bm5jdGlvbikge1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgY29uZmlnLmRvbmVGdW5jdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgaW1hZ2UgZm9yIGltYWdlIGVsZW1lbnRcbiAgICpcbiAgICogQHBhcmFtIGltYWdlRWxlbWVudFxuICAgKiBAcGFyYW0gc3JjXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2FkSW1hZ2UoaW1hZ2VFbGVtZW50OiBIVE1MSW1hZ2VFbGVtZW50LCBzcmM/OiBzdHJpbmcpIHtcbiAgICBzcmMgPSBzcmMgfHwgaW1hZ2VFbGVtZW50LnNyYztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaW1hZ2VFbGVtZW50Lm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1hZ2VFbGVtZW50KTtcbiAgICAgIGltYWdlRWxlbWVudC5vbmVycm9yID0gcmVqZWN0O1xuICAgICAgaW1hZ2VFbGVtZW50LnNyYyA9IHNyYztcbiAgICB9KTtcbiAgfVxufVxuIl19