@datagrok-libraries/utils 4.1.14 → 4.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "email": "amuzychyna@datagrok.ai"
9
9
  },
10
10
  "fullName": "Utils",
11
- "version": "4.1.14",
11
+ "version": "4.1.16",
12
12
  "description": "Common utilities",
13
13
  "dependencies": {
14
14
  "cash-dom": "^8.1.1",
package/src/items-grid.js CHANGED
@@ -31,7 +31,7 @@ export class ItemsGrid {
31
31
  this._root = ui.divV([], { style: {
32
32
  display: 'grid', gridTemplateColumns: `repeat(${this.properties.length}, 1fr)`,
33
33
  alignItems: 'center', gap: '12px'
34
- } });
34
+ }, classes: 'ui-items-grid' });
35
35
  this._items = items;
36
36
  this.render();
37
37
  }
@@ -42,7 +42,7 @@ export class ItemsGrid {
42
42
  return this._items;
43
43
  }
44
44
  render() {
45
- var _a;
45
+ var _a, _b, _c, _d;
46
46
  ui.empty(this._root);
47
47
  if (!this.options.horizontalInputNames) {
48
48
  for (const prop of this.properties) {
@@ -59,7 +59,7 @@ export class ItemsGrid {
59
59
  this._root.appendChild(editor);
60
60
  }
61
61
  if (this.options.allowAdd) {
62
- const newEditor = this.getItemDiv(undefined, true);
62
+ const newEditor = this.getItemDiv((_d = (_c = (_b = this.options).newItemFunction) === null || _c === void 0 ? void 0 : _c.call(_b)) !== null && _d !== void 0 ? _d : undefined, true);
63
63
  for (const editor of newEditor)
64
64
  this._root.appendChild(editor);
65
65
  }
@@ -75,7 +75,7 @@ export class ItemsGrid {
75
75
  const input = ((_a = this.options.customInputs) === null || _a === void 0 ? void 0 : _a[prop.name]) ? this.options.customInputs[prop.name](item) :
76
76
  ui.input.forProperty(prop, item);
77
77
  editors.push(this.options.horizontalInputNames ? input.root : this.hideLabel(input.root));
78
- if (prop.propertyType !== DG.TYPE.BOOL)
78
+ if (prop.propertyType !== DG.TYPE.BOOL && prop.name.toLowerCase() !== 'color')
79
79
  input.input && (input.input.style.width = '100%');
80
80
  inputsMap[prop.name] = input;
81
81
  input.onChanged(() => {
@@ -130,4 +130,4 @@ export class ItemsGrid {
130
130
  ui.dialog('dialog').add(itemsGrid.root).show();
131
131
  at any point, filled fields can be accessed via itemsGrid.items
132
132
  */
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIml0ZW1zLWdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFxQjdCLHVHQUF1RztBQUN2RyxNQUFNLE9BQU8sU0FBUztJQWdCbEI7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0wsWUFBWSxVQUF5QixFQUFFLFFBQW9CLEVBQUUsRUFBRSxVQUE0QixFQUFFO1FBekI3RixtREFBbUQ7UUFDNUMsa0JBQWEsR0FBZ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNsRixvREFBb0Q7UUFDN0Msd0JBQW1CLEdBQWdELElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEYsNENBQTRDO1FBQ3JDLGdCQUFXLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDdEQsOENBQThDO1FBQ3ZDLGtCQUFhLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHeEQsWUFBTyxHQUNMLEVBQUMsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQWV0RyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxtQ0FBTyxJQUFJLENBQUMsT0FBTyxHQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ3JCLEVBQUMsS0FBSyxFQUFFO2dCQUNOLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sUUFBUTtnQkFDOUUsVUFBVSxFQUFF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QUMvQixFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRjtBQUVEOzs7Ozs7OztHQVFHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBJdGVtVHlwZSA9IHtbXzpzdHJpbmddOiBhbnl9O1xuZXhwb3J0IHR5cGUgSXRlbXNHcmlkT3B0aW9ucyA9IHtcbiAgICByZW1vdmVCdXR0b25Ub29sdGlwPzogc3RyaW5nLFxuICAgIGFkZEJ1dHRvblRvb2x0aXA/OiBzdHJpbmcsXG4gICAgYWxsb3dSZW1vdmU/OiBib29sZWFuLFxuICAgIGFsbG93QWRkPzogYm9vbGVhbixcbiAgICBob3Jpem9udGFsSW5wdXROYW1lcz86IGJvb2xlYW4sXG4gICAgbmV3SXRlbUZ1bmN0aW9uPzogKCkgPT4gSXRlbVR5cGUsXG4gICAgY3VzdG9tSW5wdXRzPzoge1trZXk6IHN0cmluZ106IChpdGVtOiBJdGVtVHlwZSkgPT4gSW5wdXRUeXBlfVxufTtcblxuZXhwb3J0IHR5cGUgSW5wdXRUeXBlID0ge1xuICAgIGlucHV0PzogSFRNTEVsZW1lbnQsXG4gICAgcm9vdDogSFRNTEVsZW1lbnQsXG4gICAgdmFsdWU6IGFueSxcbiAgICBvbkNoYW5nZWQ6IChhY3Rpb246ICgpID0+IHZvaWQpID0+IHZvaWQsXG4gICAgYWRkT3B0aW9ucz86IChlbDogSFRNTEVsZW1lbnQpID0+IHZvaWRcbn1cblxuLyoqIEVkaXRvciBmb3IgcHJlZGVmaW5lZCBwcm9wZXJ0aWVzIGluIGEgZ3JpZCBmb3JtLiBTdXBwb3J0cyBhZGRpbmcsIHJlbW92aW5nIGFuZCBlZGl0aW5nIG9mIHByb3BzLiAqL1xuZXhwb3J0IGNsYXNzIEl0ZW1zR3JpZCB7XG4gIHByaXZhdGUgX3Jvb3Q6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9pdGVtczoge1trZXk6IHN0cmluZ106IGFueX1bXTtcblxuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgYWRkZWQgaXRlbSBpcyBjaGFuZ2UgKi9cbiAgcHVibGljIG9uSXRlbUNoYW5nZWQ6IFN1YmplY3Q8e2l0ZW06SXRlbVR5cGUsIGZpZWxkTmFtZTogc3RyaW5nfT4gPSBuZXcgU3ViamVjdCgpO1xuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgYWRkaW5nIGl0ZW0gaXMgY2hhbmdlICovXG4gIHB1YmxpYyBvbkFkZGluZ0l0ZW1DaGFuZ2VkOiBTdWJqZWN0PHtpdGVtOkl0ZW1UeXBlLCBmaWVsZE5hbWU6IHN0cmluZ30+ID0gbmV3IFN1YmplY3QoKTtcbiAgLyoqIE9ic2VydmFibGUgZm9yIHdoZW4gdGhlIGl0ZW0gaXMgYWRkZWQgKi9cbiAgcHVibGljIG9uSXRlbUFkZGVkOiBTdWJqZWN0PEl0ZW1UeXBlPiA9IG5ldyBTdWJqZWN0KCk7XG4gIC8qKiBPYnNlcnZhYmxlIGZvciB3aGVuIHRoZSBpdGVtIGlzIHJlbW92ZWQgKi9cbiAgcHVibGljIG9uSXRlbVJlbW92ZWQ6IFN1YmplY3Q8SXRlbVR5cGU+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdO1xuICBvcHRpb25zOiBJdGVtc0dyaWRPcHRpb25zID1cbiAgICB7cmVtb3ZlQnV0dG9uVG9vbHRpcDogJ1JlbW92ZSBpdGVtJywgYWRkQnV0dG9uVG9vbHRpcDogJ0FkZCBpdGVtJywgYWxsb3dBZGQ6IHRydWUsIGFsbG93UmVtb3ZlOiB0cnVlfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEl0ZW1zR3JpZCB3aGljaCBpcyBhIGdyaWQgZm9ybSBmb3IgZWRpdGluZyBwcm9wZXJ0aWVzLlxuICAgICAqIEBwYXJhbSB7REcuUHJvcGVydHlbXX1wcm9wZXJ0aWVzIC0gcHJvcGVydGllcyB0byBiZSBlZGl0ZWRcbiAgICAgKiBAcGFyYW0ge0l0ZW1UeXBlcFtdfWl0ZW1zIC0gaXRlbXMgdG8gYmUgZWRpdGVkXG4gICAgICogQHBhcmFtIHtJdGVtc0dyaWRPcHRpb25zfW9wdGlvbnMgLSBvcHRpb25zIGZvciB0aGUgZ3JpZFxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTpcbiAgICAgKiByZW1vdmVCdXR0b25Ub29sdGlwIC0gdG9vbHRpcCBmb3IgdGhlIHJlbW92ZSBidXR0b24gLSBkZWZhdWx0IGlzICdSZW1vdmUgaXRlbSdcbiAgICAgKiBhZGRCdXR0b25Ub29sdGlwIC0gdG9vbHRpcCBmb3IgdGhlIGFkZCBidXR0b24gLSBkZWZhdWx0IGlzICdBZGQgaXRlbSdcbiAgICAgKiBhbGxvd1JlbW92ZSAtIHdoZXRoZXIgdG8gYWxsb3cgcmVtb3ZpbmcgaXRlbXMgLSBkZWZhdWx0IGlzIHRydWVcbiAgICAgKiBhbGxvd0FkZCAtIHdoZXRoZXIgdG8gYWxsb3cgYWRkaW5nIGl0ZW1zIC0gZGVmYXVsdCBpcyB0cnVlXG4gICAgICogaG9yaXpvbnRhbElucHV0TmFtZXMgLSBTaG93IHRoZSBpbnB1dCBuYW1lcyBuZXh0IHRvIGludHB1dCAtIGRlZmF1bHQgaXMgZmFsc2UsIG5hbWVzIGFyZSBzaG93biBhYm92ZSB0aGUgZ3JpZC5cbiAgICAgKiBuZXdJdGVtRnVuY3Rpb24gLSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbmV3IGl0ZW0gLSBkZWZhdWx0IGlzIHVuZGVmaW5kLCBpbiB3aGljaCBjYXNlIGFuIGVtcHR5IG9iamVjdCBpcyBjcmVhdGVkLlxuICAgICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdLCBpdGVtczogSXRlbVR5cGVbXSA9IFtdLCBvcHRpb25zOiBJdGVtc0dyaWRPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIHRoaXMub3B0aW9ucyA9IHsuLi50aGlzLm9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHRoaXMuX3Jvb3QgPSB1aS5kaXZWKFtdLFxuICAgICAge3N0eWxlOiB7XG4gICAgICAgIGRpc3BsYXk6ICdncmlkJywgZ3JpZFRlbXBsYXRlQ29sdW1uczogYHJlcGVhdCgke3RoaXMucHJvcGVydGllcy5sZW5ndGh9LCAxZnIpYCxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzEycHgnfX0pO1xuICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGdldCByb290KCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fcm9vdDtcbiAgfVxuXG4gIGdldCBpdGVtcygpOiB7W2tleTogc3RyaW5nXTogYW55fVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcigpOiB2b2lkIHtcbiAgICB1aS5lbXB0eSh0aGlzLl9yb290KTtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5ob3Jpem9udGFsSW5wdXROYW1lcykge1xuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucHJvcGVydGllcykge1xuICAgICAgICBjb25zdCBoZWFkZXIgPSB1aS5kaXZUZXh0KHByb3AuY2FwdGlvbiA/PyBwcm9wLm5hbWUpO1xuICAgICAgICBoZWFkZXIuc3R5bGUuZm9udFdlaWdodCA9ICdib2xkJztcbiAgICAgICAgdGhpcy5fcm9vdC5hcHBlbmRDaGlsZChoZWFkZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5faXRlbXMpIHtcbiAgICAgIGNvbnN0IGVkaXRvcnMgPSB0aGlzLmdldEl0ZW1EaXYoaXRlbSk7XG4gICAgICAvLyBpZiAoZWRpdG9ycy5sZW5ndGggIT09IHRoaXMucHJvcGVydGllcy5sZW5ndGggKyAxKVxuICAgICAgLy8gICBlZGl0b3JzLnB1c2godWkuZGl2KCkpO1xuICAgICAgZm9yIChjb25zdCBlZGl0b3Igb2YgZWRpdG9ycylcbiAgICAgICAgdGhpcy5fcm9vdC5hcHBlbmRDaGlsZChlZGl0b3IpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuYWxsb3dBZGQpIHtcbiAgICAgIGNvbnN0IG5ld0VkaXRvciA9IHRoaXMuZ2V0SXRlbURpdih1bmRlZmluZWQsIHRydWUpO1xuICAgICAgZm9yIChjb25zdCBlZGl0b3Igb2YgbmV3RWRpdG9yKVxuICAgICAgICB0aGlzLl9yb290LmFwcGVuZENoaWxkKGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJdGVtRGl2KGl0ZW06IEl0ZW1UeXBlID0ge30sIGlzQWRkaW5nPzogYm9vbGVhbik6IEhUTUxFbGVtZW50W10ge1xuICAgIGNvbnN0IGVkaXRvcnM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAgIGNvbnN0IGlucHV0c01hcDoge1tfOiBzdHJpbmddOiBJbnB1dFR5cGV9ID0ge307XG4gICAgbGV0IGxhc3RJbnB1dDogSW5wdXRUeXBlIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucHJvcGVydGllcykge1xuICAgICAgaWYgKGl0ZW1bcHJvcC5uYW1lXSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICBpdGVtW3Byb3AubmFtZV0gPSBudWxsOyAvLyBuZWVkZWQgZm9yIGRhdGUgZWRpdG9yLCBpdCBjYW4gbm90IGhhbmRsZSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5vcHRpb25zLmN1c3RvbUlucHV0cz8uW3Byb3AubmFtZV0gPyB0aGlzLm9wdGlvbnMuY3VzdG9tSW5wdXRzW3Byb3AubmFtZV0oaXRlbSkgOlxuICAgICAgICB1aS5pbnB1dC5mb3JQcm9wZXJ0eShwcm9wLCBpdGVtKTtcbiAgICAgIGVkaXRvcnMucHVzaCh0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbElucHV0TmFtZXMgPyBpbnB1dC5yb290IDogdGhpcy5oaWRlTGFiZWwoaW5wdXQucm9vdCkpO1xuICAgICAgaWYgKHByb3AucHJvcGVydHlUeXBlICE9PSBERy5UWVBFLkJPT0wpXG4gICAgICAgIGlucHV0LmlucHV0ICYmIChpbnB1dC5pbnB1dC5zdHlsZS53aWR0aCA9ICcxMDAlJyk7XG4gICAgICBpbnB1dHNNYXBbcHJvcC5uYW1lXSA9IGlucHV0O1xuICAgICAgaW5wdXQub25DaGFuZ2VkKCgpID0+IHtcbiAgICAgICAgaXRlbVtwcm9wLm5hbWVdID0gaW5wdXQudmFsdWU7XG4gICAgICAgIGlzQWRkaW5nID8gdGhpcy5vbkFkZGluZ0l0ZW1DaGFuZ2VkLm5leHQoe2l0ZW0sIGZpZWxkTmFtZTogcHJvcC5uYW1lfSkgOlxuICAgICAgICAgIHRoaXMub25JdGVtQ2hhbmdlZC5uZXh0KHtpdGVtLCBmaWVsZE5hbWU6IHByb3AubmFtZX0pO1xuICAgICAgfSk7XG4gICAgICBpbnB1dC5yb290LnN0eWxlLmFsaWduSXRlbXMgPSAnY2VudGVyJzsgLy8gbmVlZGVkIGZvciBtb2xlY3VsZSBlZGl0b3JcbiAgICAgIGxhc3RJbnB1dCA9IGlucHV0O1xuICAgIH1cblxuICAgIGxldCBjb21wYW5pb25CdXR0b246IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKGlzQWRkaW5nKSB7XG4gICAgICBjb25zdCBhZGRCdXR0b24gPSB1aS5pY29ucy5hZGQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdJdGVtOiBJdGVtVHlwZSA9IHRoaXMub3B0aW9ucy5uZXdJdGVtRnVuY3Rpb24gPyB0aGlzLm9wdGlvbnMubmV3SXRlbUZ1bmN0aW9uKCkgOiB7fTtcbiAgICAgICAgT2JqZWN0LmtleXMoaW5wdXRzTWFwKS5mb3JFYWNoKChwTmFtZSkgPT4ge1xuICAgICAgICAgIG5ld0l0ZW1bcE5hbWVdID0gaW5wdXRzTWFwW3BOYW1lXS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2l0ZW1zLnB1c2gobmV3SXRlbSk7XG4gICAgICAgIHRoaXMub25JdGVtQWRkZWQubmV4dChuZXdJdGVtKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0sIHRoaXMub3B0aW9ucy5hZGRCdXR0b25Ub29sdGlwKTtcbiAgICAgIGNvbXBhbmlvbkJ1dHRvbiA9IGFkZEJ1dHRvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYWxsb3dSZW1vdmUpIHJldHVybiBlZGl0b3JzO1xuICAgICAgY29uc3QgcmVtb3ZlQnV0dG9uID0gdWkuaWNvbnMuZGVsZXRlKCgpID0+IHtcbiAgICAgICAgdGhpcy5faXRlbXMuc3BsaWNlKHRoaXMuX2l0ZW1zLmluZGV4T2YoaXRlbSksIDEpO1xuICAgICAgICB0aGlzLm9uSXRlbVJlbW92ZWQubmV4dChpdGVtKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0sIHRoaXMub3B0aW9ucy5yZW1vdmVCdXR0b25Ub29sdGlwKTtcbiAgICAgIGNvbXBhbmlvbkJ1dHRvbiA9IHJlbW92ZUJ1dHRvbjtcbiAgICB9XG5cbiAgICAvL2VkaXRvcnMucHVzaChjb21wYW5pb25CdXR0b24pO1xuICAgIGxhc3RJbnB1dCAmJiBsYXN0SW5wdXQuYWRkT3B0aW9ucyA/IGxhc3RJbnB1dC5hZGRPcHRpb25zKGNvbXBhbmlvbkJ1dHRvbikgOlxuICAgICAgbGFzdElucHV0Py5yb290LmFwcGVuZENoaWxkKGNvbXBhbmlvbkJ1dHRvbik7XG4gICAgY29tcGFuaW9uQnV0dG9uLnN0eWxlLmNvbG9yID0gJyMyMDgzZDUnO1xuICAgIHJldHVybiBlZGl0b3JzO1xuICB9XG4gIC8vbmVlZGVkIGZvciBjb2xvciBpbnB1dFxuICBwcml2YXRlIGhpZGVMYWJlbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xhYmVsJylbMF0gJiYgZWwucmVtb3ZlQ2hpbGQoZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xhYmVsJylbMF0pO1xuICAgIHJldHVybiBlbDtcbiAgfVxufVxuXG4vKiogVXNhZ2UgZXhhbXBsZTpcbiAqIGNvbnN0IHByb3BzID0gW0RHLlByb3BlcnR5LmpzKCduYW1lMicsIERHLlRZUEUuU1RSSU5HKSxcbiAgICAgIERHLlByb3BlcnR5LmpzKCduYW1lMycsIERHLlRZUEUuTlVNKSxcbiAgICAgIERHLlByb3BlcnR5LmZyb21PcHRpb25zKHtuYW1lOiAnbmFtZTQnLCB0eXBlOiBERy5UWVBFLkRBVEVfVElNRSwgbnVsbGFibGU6IHRydWV9KV07XG4gICAgY29uc3QgaXRlbXNHcmlkID0gbmV3IEl0ZW1zR3JpZChwcm9wcyk7XG4gKiB0aGUgY29tcG9uZW50IGhhcyBhIHJvb3QgcHJvcGVydHkgdGhhdCBjYW4gYmUgYWRkZWQgdG8gdGhlIHBhZ2VcbiAgICB1aS5kaWFsb2coJ2RpYWxvZycpLmFkZChpdGVtc0dyaWQucm9vdCkuc2hvdygpO1xuICAgIGF0IGFueSBwb2ludCwgZmlsbGVkIGZpZWxkcyBjYW4gYmUgYWNjZXNzZWQgdmlhIGl0ZW1zR3JpZC5pdGVtc1xuICovXG4iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIml0ZW1zLWdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFxQjdCLHVHQUF1RztBQUN2RyxNQUFNLE9BQU8sU0FBUztJQWdCbEI7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0wsWUFBWSxVQUF5QixFQUFFLFFBQW9CLEVBQUUsRUFBRSxVQUE0QixFQUFFO1FBekI3RixtREFBbUQ7UUFDNUMsa0JBQWEsR0FBZ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNsRixvREFBb0Q7UUFDN0Msd0JBQW1CLEdBQWdELElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEYsNENBQTRDO1FBQ3JDLGdCQUFXLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDdEQsOENBQThDO1FBQ3ZDLGtCQUFhLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHeEQsWUFBTyxHQUNMLEVBQUMsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQWV0RyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxtQ0FBTyxJQUFJLENBQUMsT0FBTyxHQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ3JCLEVBQUMsS0FBSyxFQUFFO2dCQUNOLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sUUFBUTtnQkFDOUUsVUFBVSxFQUFF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Q0FBQztRQUMvQyxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDeEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUNELHdCQUF3QjtJQUNoQixTQUFTLENBQUMsRUFBZTtRQUMvQixFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRjtBQUVEOzs7Ozs7OztHQVFHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBJdGVtVHlwZSA9IHtbXzpzdHJpbmddOiBhbnl9O1xuZXhwb3J0IHR5cGUgSXRlbXNHcmlkT3B0aW9ucyA9IHtcbiAgICByZW1vdmVCdXR0b25Ub29sdGlwPzogc3RyaW5nLFxuICAgIGFkZEJ1dHRvblRvb2x0aXA/OiBzdHJpbmcsXG4gICAgYWxsb3dSZW1vdmU/OiBib29sZWFuLFxuICAgIGFsbG93QWRkPzogYm9vbGVhbixcbiAgICBob3Jpem9udGFsSW5wdXROYW1lcz86IGJvb2xlYW4sXG4gICAgbmV3SXRlbUZ1bmN0aW9uPzogKCkgPT4gSXRlbVR5cGUsXG4gICAgY3VzdG9tSW5wdXRzPzoge1trZXk6IHN0cmluZ106IChpdGVtOiBJdGVtVHlwZSkgPT4gSW5wdXRUeXBlfVxufTtcblxuZXhwb3J0IHR5cGUgSW5wdXRUeXBlID0ge1xuICAgIGlucHV0PzogSFRNTEVsZW1lbnQsXG4gICAgcm9vdDogSFRNTEVsZW1lbnQsXG4gICAgdmFsdWU6IGFueSxcbiAgICBvbkNoYW5nZWQ6IChhY3Rpb246ICgpID0+IHZvaWQpID0+IHZvaWQsXG4gICAgYWRkT3B0aW9ucz86IChlbDogSFRNTEVsZW1lbnQpID0+IHZvaWRcbn1cblxuLyoqIEVkaXRvciBmb3IgcHJlZGVmaW5lZCBwcm9wZXJ0aWVzIGluIGEgZ3JpZCBmb3JtLiBTdXBwb3J0cyBhZGRpbmcsIHJlbW92aW5nIGFuZCBlZGl0aW5nIG9mIHByb3BzLiAqL1xuZXhwb3J0IGNsYXNzIEl0ZW1zR3JpZCB7XG4gIHByaXZhdGUgX3Jvb3Q6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9pdGVtczoge1trZXk6IHN0cmluZ106IGFueX1bXTtcblxuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgYWRkZWQgaXRlbSBpcyBjaGFuZ2UgKi9cbiAgcHVibGljIG9uSXRlbUNoYW5nZWQ6IFN1YmplY3Q8e2l0ZW06SXRlbVR5cGUsIGZpZWxkTmFtZTogc3RyaW5nfT4gPSBuZXcgU3ViamVjdCgpO1xuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgYWRkaW5nIGl0ZW0gaXMgY2hhbmdlICovXG4gIHB1YmxpYyBvbkFkZGluZ0l0ZW1DaGFuZ2VkOiBTdWJqZWN0PHtpdGVtOkl0ZW1UeXBlLCBmaWVsZE5hbWU6IHN0cmluZ30+ID0gbmV3IFN1YmplY3QoKTtcbiAgLyoqIE9ic2VydmFibGUgZm9yIHdoZW4gdGhlIGl0ZW0gaXMgYWRkZWQgKi9cbiAgcHVibGljIG9uSXRlbUFkZGVkOiBTdWJqZWN0PEl0ZW1UeXBlPiA9IG5ldyBTdWJqZWN0KCk7XG4gIC8qKiBPYnNlcnZhYmxlIGZvciB3aGVuIHRoZSBpdGVtIGlzIHJlbW92ZWQgKi9cbiAgcHVibGljIG9uSXRlbVJlbW92ZWQ6IFN1YmplY3Q8SXRlbVR5cGU+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdO1xuICBvcHRpb25zOiBJdGVtc0dyaWRPcHRpb25zID1cbiAgICB7cmVtb3ZlQnV0dG9uVG9vbHRpcDogJ1JlbW92ZSBpdGVtJywgYWRkQnV0dG9uVG9vbHRpcDogJ0FkZCBpdGVtJywgYWxsb3dBZGQ6IHRydWUsIGFsbG93UmVtb3ZlOiB0cnVlfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEl0ZW1zR3JpZCB3aGljaCBpcyBhIGdyaWQgZm9ybSBmb3IgZWRpdGluZyBwcm9wZXJ0aWVzLlxuICAgICAqIEBwYXJhbSB7REcuUHJvcGVydHlbXX1wcm9wZXJ0aWVzIC0gcHJvcGVydGllcyB0byBiZSBlZGl0ZWRcbiAgICAgKiBAcGFyYW0ge0l0ZW1UeXBlcFtdfWl0ZW1zIC0gaXRlbXMgdG8gYmUgZWRpdGVkXG4gICAgICogQHBhcmFtIHtJdGVtc0dyaWRPcHRpb25zfW9wdGlvbnMgLSBvcHRpb25zIGZvciB0aGUgZ3JpZFxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTpcbiAgICAgKiByZW1vdmVCdXR0b25Ub29sdGlwIC0gdG9vbHRpcCBmb3IgdGhlIHJlbW92ZSBidXR0b24gLSBkZWZhdWx0IGlzICdSZW1vdmUgaXRlbSdcbiAgICAgKiBhZGRCdXR0b25Ub29sdGlwIC0gdG9vbHRpcCBmb3IgdGhlIGFkZCBidXR0b24gLSBkZWZhdWx0IGlzICdBZGQgaXRlbSdcbiAgICAgKiBhbGxvd1JlbW92ZSAtIHdoZXRoZXIgdG8gYWxsb3cgcmVtb3ZpbmcgaXRlbXMgLSBkZWZhdWx0IGlzIHRydWVcbiAgICAgKiBhbGxvd0FkZCAtIHdoZXRoZXIgdG8gYWxsb3cgYWRkaW5nIGl0ZW1zIC0gZGVmYXVsdCBpcyB0cnVlXG4gICAgICogaG9yaXpvbnRhbElucHV0TmFtZXMgLSBTaG93IHRoZSBpbnB1dCBuYW1lcyBuZXh0IHRvIGludHB1dCAtIGRlZmF1bHQgaXMgZmFsc2UsIG5hbWVzIGFyZSBzaG93biBhYm92ZSB0aGUgZ3JpZC5cbiAgICAgKiBuZXdJdGVtRnVuY3Rpb24gLSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbmV3IGl0ZW0gLSBkZWZhdWx0IGlzIHVuZGVmaW5kLCBpbiB3aGljaCBjYXNlIGFuIGVtcHR5IG9iamVjdCBpcyBjcmVhdGVkLlxuICAgICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdLCBpdGVtczogSXRlbVR5cGVbXSA9IFtdLCBvcHRpb25zOiBJdGVtc0dyaWRPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIHRoaXMub3B0aW9ucyA9IHsuLi50aGlzLm9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHRoaXMuX3Jvb3QgPSB1aS5kaXZWKFtdLFxuICAgICAge3N0eWxlOiB7XG4gICAgICAgIGRpc3BsYXk6ICdncmlkJywgZ3JpZFRlbXBsYXRlQ29sdW1uczogYHJlcGVhdCgke3RoaXMucHJvcGVydGllcy5sZW5ndGh9LCAxZnIpYCxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzEycHgnfSwgY2xhc3NlczogJ3VpLWl0ZW1zLWdyaWQnfSk7XG4gICAgdGhpcy5faXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZ2V0IHJvb3QoKTogSFRNTERpdkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9yb290O1xuICB9XG5cbiAgZ2V0IGl0ZW1zKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9W10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKCk6IHZvaWQge1xuICAgIHVpLmVtcHR5KHRoaXMuX3Jvb3QpO1xuICAgIGlmICghdGhpcy5vcHRpb25zLmhvcml6b250YWxJbnB1dE5hbWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHVpLmRpdlRleHQocHJvcC5jYXB0aW9uID8/IHByb3AubmFtZSk7XG4gICAgICAgIGhlYWRlci5zdHlsZS5mb250V2VpZ2h0ID0gJ2JvbGQnO1xuICAgICAgICB0aGlzLl9yb290LmFwcGVuZENoaWxkKGhlYWRlcik7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9pdGVtcykge1xuICAgICAgY29uc3QgZWRpdG9ycyA9IHRoaXMuZ2V0SXRlbURpdihpdGVtKTtcbiAgICAgIC8vIGlmIChlZGl0b3JzLmxlbmd0aCAhPT0gdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aCArIDEpXG4gICAgICAvLyAgIGVkaXRvcnMucHVzaCh1aS5kaXYoKSk7XG4gICAgICBmb3IgKGNvbnN0IGVkaXRvciBvZiBlZGl0b3JzKVxuICAgICAgICB0aGlzLl9yb290LmFwcGVuZENoaWxkKGVkaXRvcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0FkZCkge1xuICAgICAgY29uc3QgbmV3RWRpdG9yID0gdGhpcy5nZXRJdGVtRGl2KHRoaXMub3B0aW9ucy5uZXdJdGVtRnVuY3Rpb24/LigpID8/IHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICBmb3IgKGNvbnN0IGVkaXRvciBvZiBuZXdFZGl0b3IpXG4gICAgICAgIHRoaXMuX3Jvb3QuYXBwZW5kQ2hpbGQoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEl0ZW1EaXYoaXRlbTogSXRlbVR5cGUgPSB7fSwgaXNBZGRpbmc/OiBib29sZWFuKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgY29uc3QgZWRpdG9yczogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgaW5wdXRzTWFwOiB7W186IHN0cmluZ106IElucHV0VHlwZX0gPSB7fTtcbiAgICBsZXQgbGFzdElucHV0OiBJbnB1dFR5cGUgfCBudWxsID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5wcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAoaXRlbVtwcm9wLm5hbWVdID09PSB1bmRlZmluZWQpXG4gICAgICAgIGl0ZW1bcHJvcC5uYW1lXSA9IG51bGw7IC8vIG5lZWRlZCBmb3IgZGF0ZSBlZGl0b3IsIGl0IGNhbiBub3QgaGFuZGxlIHVuZGVmaW5lZFxuICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tSW5wdXRzPy5bcHJvcC5uYW1lXSA/IHRoaXMub3B0aW9ucy5jdXN0b21JbnB1dHNbcHJvcC5uYW1lXShpdGVtKSA6XG4gICAgICAgIHVpLmlucHV0LmZvclByb3BlcnR5KHByb3AsIGl0ZW0pO1xuICAgICAgZWRpdG9ycy5wdXNoKHRoaXMub3B0aW9ucy5ob3Jpem9udGFsSW5wdXROYW1lcyA/IGlucHV0LnJvb3QgOiB0aGlzLmhpZGVMYWJlbChpbnB1dC5yb290KSk7XG4gICAgICBpZiAocHJvcC5wcm9wZXJ0eVR5cGUgIT09IERHLlRZUEUuQk9PTCAmJiBwcm9wLm5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ2NvbG9yJylcbiAgICAgICAgaW5wdXQuaW5wdXQgJiYgKGlucHV0LmlucHV0LnN0eWxlLndpZHRoID0gJzEwMCUnKTtcbiAgICAgIGlucHV0c01hcFtwcm9wLm5hbWVdID0gaW5wdXQ7XG4gICAgICBpbnB1dC5vbkNoYW5nZWQoKCkgPT4ge1xuICAgICAgICBpdGVtW3Byb3AubmFtZV0gPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgaXNBZGRpbmcgPyB0aGlzLm9uQWRkaW5nSXRlbUNoYW5nZWQubmV4dCh7aXRlbSwgZmllbGROYW1lOiBwcm9wLm5hbWV9KSA6XG4gICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLm5leHQoe2l0ZW0sIGZpZWxkTmFtZTogcHJvcC5uYW1lfSk7XG4gICAgICB9KTtcbiAgICAgIGlucHV0LnJvb3Quc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInOyAvLyBuZWVkZWQgZm9yIG1vbGVjdWxlIGVkaXRvclxuICAgICAgbGFzdElucHV0ID0gaW5wdXQ7XG4gICAgfVxuXG4gICAgbGV0IGNvbXBhbmlvbkJ1dHRvbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBpZiAoaXNBZGRpbmcpIHtcbiAgICAgIGNvbnN0IGFkZEJ1dHRvbiA9IHVpLmljb25zLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0l0ZW06IEl0ZW1UeXBlID0gdGhpcy5vcHRpb25zLm5ld0l0ZW1GdW5jdGlvbiA/IHRoaXMub3B0aW9ucy5uZXdJdGVtRnVuY3Rpb24oKSA6IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhpbnB1dHNNYXApLmZvckVhY2goKHBOYW1lKSA9PiB7XG4gICAgICAgICAgbmV3SXRlbVtwTmFtZV0gPSBpbnB1dHNNYXBbcE5hbWVdLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faXRlbXMucHVzaChuZXdJdGVtKTtcbiAgICAgICAgdGhpcy5vbkl0ZW1BZGRlZC5uZXh0KG5ld0l0ZW0pO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfSwgdGhpcy5vcHRpb25zLmFkZEJ1dHRvblRvb2x0aXApO1xuICAgICAgY29tcGFuaW9uQnV0dG9uID0gYWRkQnV0dG9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5hbGxvd1JlbW92ZSkgcmV0dXJuIGVkaXRvcnM7XG4gICAgICBjb25zdCByZW1vdmVCdXR0b24gPSB1aS5pY29ucy5kZWxldGUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9pdGVtcy5zcGxpY2UodGhpcy5faXRlbXMuaW5kZXhPZihpdGVtKSwgMSk7XG4gICAgICAgIHRoaXMub25JdGVtUmVtb3ZlZC5uZXh0KGl0ZW0pO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfSwgdGhpcy5vcHRpb25zLnJlbW92ZUJ1dHRvblRvb2x0aXApO1xuICAgICAgY29tcGFuaW9uQnV0dG9uID0gcmVtb3ZlQnV0dG9uO1xuICAgIH1cblxuICAgIC8vZWRpdG9ycy5wdXNoKGNvbXBhbmlvbkJ1dHRvbik7XG4gICAgbGFzdElucHV0ICYmIGxhc3RJbnB1dC5hZGRPcHRpb25zID8gbGFzdElucHV0LmFkZE9wdGlvbnMoY29tcGFuaW9uQnV0dG9uKSA6XG4gICAgICBsYXN0SW5wdXQ/LnJvb3QuYXBwZW5kQ2hpbGQoY29tcGFuaW9uQnV0dG9uKTtcbiAgICBjb21wYW5pb25CdXR0b24uc3R5bGUuY29sb3IgPSAnIzIwODNkNSc7XG4gICAgcmV0dXJuIGVkaXRvcnM7XG4gIH1cbiAgLy9uZWVkZWQgZm9yIGNvbG9yIGlucHV0XG4gIHByaXZhdGUgaGlkZUxhYmVsKGVsOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICBlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGFiZWwnKVswXSAmJiBlbC5yZW1vdmVDaGlsZChlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGFiZWwnKVswXSk7XG4gICAgcmV0dXJuIGVsO1xuICB9XG59XG5cbi8qKiBVc2FnZSBleGFtcGxlOlxuICogY29uc3QgcHJvcHMgPSBbREcuUHJvcGVydHkuanMoJ25hbWUyJywgREcuVFlQRS5TVFJJTkcpLFxuICAgICAgREcuUHJvcGVydHkuanMoJ25hbWUzJywgREcuVFlQRS5OVU0pLFxuICAgICAgREcuUHJvcGVydHkuZnJvbU9wdGlvbnMoe25hbWU6ICduYW1lNCcsIHR5cGU6IERHLlRZUEUuREFURV9USU1FLCBudWxsYWJsZTogdHJ1ZX0pXTtcbiAgICBjb25zdCBpdGVtc0dyaWQgPSBuZXcgSXRlbXNHcmlkKHByb3BzKTtcbiAqIHRoZSBjb21wb25lbnQgaGFzIGEgcm9vdCBwcm9wZXJ0eSB0aGF0IGNhbiBiZSBhZGRlZCB0byB0aGUgcGFnZVxuICAgIHVpLmRpYWxvZygnZGlhbG9nJykuYWRkKGl0ZW1zR3JpZC5yb290KS5zaG93KCk7XG4gICAgYXQgYW55IHBvaW50LCBmaWxsZWQgZmllbGRzIGNhbiBiZSBhY2Nlc3NlZCB2aWEgaXRlbXNHcmlkLml0ZW1zXG4gKi9cbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import * as DG from 'datagrok-api/dg';
2
+ import { Subject } from 'rxjs';
3
+ export declare enum LineDirection {
4
+ lower = "lower",
5
+ higher = "higher"
6
+ }
7
+ export type ILineOpts = {
8
+ id: number;
9
+ color?: string;
10
+ directionCol?: string;
11
+ direction?: LineDirection;
12
+ opacity?: number;
13
+ width?: number;
14
+ };
15
+ export type IConnectedPoints = {
16
+ [key: number]: ILineOpts[];
17
+ };
18
+ export type ILines = {
19
+ [key: number]: IConnectedPoints;
20
+ };
21
+ export declare class ScatterPlotLinesRenderer {
22
+ sp: DG.ScatterPlotViewer;
23
+ xAxis: string;
24
+ yAxis: string;
25
+ currentLineIdx: number;
26
+ lines: ILines;
27
+ lineClicked: Subject<number>;
28
+ lineHover: Subject<number>;
29
+ canvas: any;
30
+ paths: {
31
+ [key: number]: Path2D;
32
+ };
33
+ mouseOverLineId: number | null;
34
+ get currentLineId(): number;
35
+ set currentLineId(id: number);
36
+ constructor(sp: DG.ScatterPlotViewer, xAxis: string, yAxis: string, lines: ILines);
37
+ renderLines(): void;
38
+ checkCursorOnLine(x: number, y: number): number | null;
39
+ midPointBtw(p1: DG.Point, p2: DG.Point): DG.Point;
40
+ findPerpendicularPointOnCurve(idx: number, x1: number, y1: number, x2: number, y2: number): DG.Point;
41
+ canvasArrow(path: Path2D, arrowEndX: number, arrowEndY: number, quadX: number, quadY: number): void;
42
+ getArrowPoint(lineOpts: ILineOpts, p1: number, p2: number, pointFrom: DG.Point, pointTo: DG.Point): DG.Point | null;
43
+ }
44
+ //# sourceMappingURL=render-lines-on-sp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-lines-on-sp.d.ts","sourceRoot":"","sources":["render-lines-on-sp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,oBAAY,aAAa;IACrB,KAAK,UAAU;IACf,MAAM,WAAW;CACpB;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAAA;CAAE,CAAA;AAE7D,MAAM,MAAM,MAAM,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAA;AAExD,qBAAa,wBAAwB;IACjC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,SAAM;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,kBAAyB;IACpC,SAAS,kBAAyB;IAClC,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAM;IACtC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEtC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,aAAa,CAAC,EAAE,EAAE,MAAM,EAG3B;gBAEW,EAAE,EAAE,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAyBjF,WAAW,IAAI,IAAI;IAgDnB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWtD,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK;IAIjD,6BAA6B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAYzF,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAU5F,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI;CAgBtH"}
@@ -0,0 +1,135 @@
1
+ import * as DG from 'datagrok-api/dg';
2
+ import { Subject } from 'rxjs';
3
+ export var LineDirection;
4
+ (function (LineDirection) {
5
+ LineDirection["lower"] = "lower";
6
+ LineDirection["higher"] = "higher";
7
+ })(LineDirection || (LineDirection = {}));
8
+ export class ScatterPlotLinesRenderer {
9
+ get currentLineId() {
10
+ return this.currentLineIdx;
11
+ }
12
+ set currentLineId(id) {
13
+ this.currentLineIdx = id;
14
+ this.sp.render(this.canvas.getContext('2d'));
15
+ }
16
+ constructor(sp, xAxis, yAxis, lines) {
17
+ this.currentLineIdx = -1;
18
+ this.lineClicked = new Subject();
19
+ this.lineHover = new Subject();
20
+ this.paths = {};
21
+ this.mouseOverLineId = null;
22
+ this.sp = sp;
23
+ this.xAxis = xAxis;
24
+ this.yAxis = yAxis;
25
+ this.lines = lines;
26
+ this.canvas = this.sp.getInfo()['canvas'];
27
+ this.canvas.addEventListener('mousedown', (event) => {
28
+ if (this.mouseOverLineId !== null)
29
+ this.lineClicked.next(this.mouseOverLineId);
30
+ });
31
+ this.canvas.addEventListener('mousemove', (event) => {
32
+ this.mouseOverLineId = this.checkCursorOnLine(event.offsetX, event.offsetY);
33
+ if (this.mouseOverLineId !== null)
34
+ this.lineHover.next(this.mouseOverLineId);
35
+ });
36
+ sp.onEvent('d4-before-draw-scene')
37
+ .subscribe((_) => {
38
+ this.renderLines();
39
+ });
40
+ }
41
+ renderLines() {
42
+ var _a, _b;
43
+ const ctx = this.canvas.getContext('2d');
44
+ const x = this.sp.dataFrame.columns.byName(this.xAxis);
45
+ const y = this.sp.dataFrame.columns.byName(this.yAxis);
46
+ for (let p1 of Object.keys(this.lines).map(Number)) {
47
+ if (this.sp.dataFrame.filter.get(p1)) {
48
+ const pointFrom = this.sp.worldToScreen(x.get(p1), y.get(p1));
49
+ const aX = pointFrom === null || pointFrom === void 0 ? void 0 : pointFrom.x;
50
+ const aY = pointFrom === null || pointFrom === void 0 ? void 0 : pointFrom.y;
51
+ for (let p2 of Object.keys(this.lines[p1]).map(Number)) {
52
+ if (this.sp.dataFrame.filter.get(p2)) {
53
+ const pointTo = this.sp.worldToScreen(x.get(p2), y.get(p2));
54
+ const bX = pointTo === null || pointTo === void 0 ? void 0 : pointTo.x;
55
+ const bY = pointTo === null || pointTo === void 0 ? void 0 : pointTo.y;
56
+ if (aX && aY && bX && bY) {
57
+ for (let lineIdx = 0; lineIdx < this.lines[p1][p2].length; lineIdx++) {
58
+ const lineOpts = this.lines[p1][p2][lineIdx];
59
+ const line = new Path2D();
60
+ this.paths[lineOpts.id] = line;
61
+ line.moveTo(aX, aY);
62
+ const color = (_a = lineOpts.color) !== null && _a !== void 0 ? _a : '0,128,0';
63
+ const opacity = (_b = lineOpts.opacity) !== null && _b !== void 0 ? _b : 1;
64
+ ctx.strokeStyle = `rgba(${color},${opacity})`;
65
+ ctx.lineWidth = lineOpts.width ? lineOpts.id === this.currentLineIdx ? lineOpts.width + 2 : lineOpts.width :
66
+ lineOpts.id === this.currentLineIdx ? 3 : 1;
67
+ let midPoint = this.midPointBtw(pointFrom, pointTo);
68
+ if (lineIdx > 0 || this.lines[p1][p2].length > 1) {
69
+ midPoint = this.findPerpendicularPointOnCurve(lineIdx, pointFrom.x, pointFrom.y, midPoint.x, midPoint.y);
70
+ }
71
+ line.quadraticCurveTo(midPoint.x, midPoint.y, bX, bY);
72
+ if (lineOpts.directionCol) {
73
+ const arrowPoint = this.getArrowPoint(lineOpts, p1, p2, pointFrom, pointTo);
74
+ if (arrowPoint)
75
+ this.canvasArrow(line, arrowPoint.x, arrowPoint.y, midPoint.x, midPoint.y);
76
+ }
77
+ ctx.beginPath();
78
+ ctx.stroke(line);
79
+ ctx.closePath();
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ checkCursorOnLine(x, y) {
88
+ const ctx = this.canvas.getContext('2d');
89
+ for (let id of Object.keys(this.paths).map(Number)) {
90
+ ctx.lineWidth = 5;
91
+ const inStroke = ctx.isPointInStroke(this.paths[id], x * window.devicePixelRatio, y * window.devicePixelRatio);
92
+ if (inStroke)
93
+ return id;
94
+ }
95
+ return null;
96
+ }
97
+ midPointBtw(p1, p2) {
98
+ return new DG.Point(p1.x + (p2.x - p1.x) / 2, p1.y + (p2.y - p1.y) / 2);
99
+ }
100
+ findPerpendicularPointOnCurve(idx, x1, y1, x2, y2) {
101
+ let dx = x2 - x1;
102
+ let dy = y2 - y1;
103
+ const dist = Math.sqrt(dx * dx + dy * dy);
104
+ dx /= dist;
105
+ dy /= dist;
106
+ const perpendicularLen = 50 * Math.floor(idx / 2) + 50;
107
+ return idx % 2 === 0 ?
108
+ new DG.Point(x2 + (perpendicularLen / 2) * dy, y2 - (perpendicularLen / 2) * dx) :
109
+ new DG.Point(x2 - (perpendicularLen / 2) * dy, y2 + (perpendicularLen / 2) * dx);
110
+ }
111
+ canvasArrow(path, arrowEndX, arrowEndY, quadX, quadY) {
112
+ const arrowAngle = Math.atan2(quadX - arrowEndX, quadY - arrowEndY) + Math.PI;
113
+ const arrowWidth = 15;
114
+ path.moveTo(arrowEndX - (arrowWidth * Math.sin(arrowAngle - Math.PI / 10)), arrowEndY - (arrowWidth * Math.cos(arrowAngle - Math.PI / 10)));
115
+ path.lineTo(arrowEndX, arrowEndY);
116
+ path.lineTo(arrowEndX - (arrowWidth * Math.sin(arrowAngle + Math.PI / 10)), arrowEndY - (arrowWidth * Math.cos(arrowAngle + Math.PI / 10)));
117
+ }
118
+ getArrowPoint(lineOpts, p1, p2, pointFrom, pointTo) {
119
+ var _a;
120
+ const compareCol = this.sp.dataFrame.col(lineOpts.directionCol);
121
+ if (compareCol) {
122
+ const direction = (_a = lineOpts.direction) !== null && _a !== void 0 ? _a : LineDirection.higher;
123
+ switch (direction) {
124
+ case LineDirection.higher:
125
+ return compareCol.get(p1) > compareCol.get(p2) ? pointFrom : pointTo;
126
+ case LineDirection.lower:
127
+ return compareCol.get(p1) > compareCol.get(p2) ? pointTo : pointFrom;
128
+ default:
129
+ return null;
130
+ }
131
+ }
132
+ return null;
133
+ }
134
+ }
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWxpbmVzLW9uLXNwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVuZGVyLWxpbmVzLW9uLXNwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3JCLGdDQUFlLENBQUE7SUFDZixrQ0FBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsYUFBYSxLQUFiLGFBQWEsUUFHeEI7QUFlRCxNQUFNLE9BQU8sd0JBQXdCO0lBWWpDLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsRUFBVTtRQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQTZCLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsWUFBWSxFQUF3QixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsS0FBYTtRQWpCakYsbUJBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVwQixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDcEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFFbEMsVUFBSyxHQUE4QixFQUFFLENBQUM7UUFDdEMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBWWxDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFD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Q0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUN0RSxTQUFTLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFtQixFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsU0FBbUIsRUFBRSxPQUFpQjs7UUFDN0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFhLENBQUMsQ0FBQztRQUNsRSxJQUFJLFVBQVUsRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLE1BQUEsUUFBUSxDQUFDLFNBQVMsbUNBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUM3RCxRQUFRLFNBQVMsRUFBRTtnQkFDZixLQUFLLGFBQWEsQ0FBQyxNQUFNO29CQUNyQixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pFLEtBQUssYUFBYSxDQUFDLEtBQUs7b0JBQ3BCLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDekU7b0JBQ0ksT0FBTyxJQUFJLENBQUM7YUFDbkI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBlbnVtIExpbmVEaXJlY3Rpb24ge1xuICAgIGxvd2VyID0gJ2xvd2VyJyxcbiAgICBoaWdoZXIgPSAnaGlnaGVyJyxcbn1cblxuZXhwb3J0IHR5cGUgSUxpbmVPcHRzID0ge1xuICAgIGlkOiBudW1iZXI7XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgZGlyZWN0aW9uQ29sPzogc3RyaW5nXG4gICAgZGlyZWN0aW9uPzogTGluZURpcmVjdGlvbjtcbiAgICBvcGFjaXR5PzogbnVtYmVyO1xuICAgIHdpZHRoPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBJQ29ubmVjdGVkUG9pbnRzID0geyBba2V5OiBudW1iZXJdOiBJTGluZU9wdHNbXSB9XG5cbmV4cG9ydCB0eXBlIElMaW5lcyA9IHsgW2tleTogbnVtYmVyXTogSUNvbm5lY3RlZFBvaW50cyB9XG5cbmV4cG9ydCBjbGFzcyBTY2F0dGVyUGxvdExpbmVzUmVuZGVyZXIge1xuICAgIHNwOiBERy5TY2F0dGVyUGxvdFZpZXdlcjtcbiAgICB4QXhpczogc3RyaW5nO1xuICAgIHlBeGlzOiBzdHJpbmc7XG4gICAgY3VycmVudExpbmVJZHggPSAtMTtcbiAgICBsaW5lczogSUxpbmVzO1xuICAgIGxpbmVDbGlja2VkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgIGxpbmVIb3ZlciA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgICBjYW52YXM6IGFueTtcbiAgICBwYXRoczogeyBba2V5OiBudW1iZXJdOiBQYXRoMkQgfSA9IHt9O1xuICAgIG1vdXNlT3ZlckxpbmVJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBnZXQgY3VycmVudExpbmVJZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGluZUlkeDtcbiAgICB9XG5cbiAgICBzZXQgY3VycmVudExpbmVJZChpZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudExpbmVJZHggPSBpZDtcbiAgICAgICAgdGhpcy5zcC5yZW5kZXIodGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHNwOiBERy5TY2F0dGVyUGxvdFZpZXdlciwgeEF4aXM6IHN0cmluZywgeUF4aXM6IHN0cmluZywgbGluZXM6IElMaW5lcykge1xuICAgICAgICB0aGlzLnNwID0gc3A7XG4gICAgICAgIHRoaXMueEF4aXMgPSB4QXhpcztcbiAgICAgICAgdGhpcy55QXhpcyA9IHlBeGlzO1xuICAgICAgICB0aGlzLmxpbmVzID0gbGluZXM7XG4gICAgICAgIHRoaXMuY2FudmFzID0gKHRoaXMuc3AuZ2V0SW5mbygpIGFzIHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSlbJ2NhbnZhcyddO1xuXG4gICAgICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VPdmVyTGluZUlkICE9PSBudWxsKVxuICAgICAgICAgICAgICAgIHRoaXMubGluZUNsaWNrZWQubmV4dCh0aGlzLm1vdXNlT3ZlckxpbmVJZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3VzZU92ZXJMaW5lSWQgPSB0aGlzLmNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50Lm9mZnNldFgsIGV2ZW50Lm9mZnNldFkpO1xuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VPdmVyTGluZUlkICE9PSBudWxsKVxuICAgICAgICAgICAgICAgIHRoaXMubGluZUhvdmVyLm5leHQodGhpcy5tb3VzZU92ZXJMaW5lSWQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzcC5vbkV2ZW50KCdkNC1iZWZvcmUtZHJhdy1zY2VuZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChfOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckxpbmVzKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHJlbmRlckxpbmVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdHggPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuc3AuZGF0YUZyYW1lIS5jb2x1bW5zLmJ5TmFtZSh0aGlzLnhBeGlzKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuc3AuZGF0YUZyYW1lIS5jb2x1bW5zLmJ5TmFtZSh0aGlzLnlBeGlzKTtcbiAgICAgICAgZm9yIChsZXQgcDEgb2YgT2JqZWN0LmtleXModGhpcy5saW5lcykubWFwKE51bWJlcikpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc3AuZGF0YUZyYW1lLmZpbHRlci5nZXQocDEpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRGcm9tID0gdGhpcy5zcC53b3JsZFRvU2NyZWVuKHguZ2V0KHAxKSwgeS5nZXQocDEpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhWCA9IHBvaW50RnJvbT8ueDtcbiAgICAgICAgICAgICAgICBjb25zdCBhWSA9IHBvaW50RnJvbT8ueTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBwMiBvZiBPYmplY3Qua2V5cyh0aGlzLmxpbmVzW3AxXSkubWFwKE51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3AuZGF0YUZyYW1lLmZpbHRlci5nZXQocDIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2ludFRvID0gdGhpcy5zcC53b3JsZFRvU2NyZWVuKHguZ2V0KHAyKSwgeS5nZXQocDIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJYID0gcG9pbnRUbz8ueDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJZID0gcG9pbnRUbz8ueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhWCAmJiBhWSAmJiBiWCAmJiBiWSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGxpbmVJZHggPSAwOyBsaW5lSWR4IDwgdGhpcy5saW5lc1twMV1bcDJdLmxlbmd0aDsgbGluZUlkeCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVPcHRzID0gdGhpcy5saW5lc1twMV1bcDJdW2xpbmVJZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gbmV3IFBhdGgyRCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdGhzW2xpbmVPcHRzLmlkXSA9IGxpbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUubW92ZVRvKGFYISwgYVkhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBsaW5lT3B0cy5jb2xvciA/PyAnMCwxMjgsMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wYWNpdHkgPSBsaW5lT3B0cy5vcGFjaXR5ID8/IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGByZ2JhKCR7Y29sb3J9LCR7b3BhY2l0eX0pYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IGxpbmVPcHRzLndpZHRoID8gbGluZU9wdHMuaWQgPT09IHRoaXMuY3VycmVudExpbmVJZHggPyBsaW5lT3B0cy53aWR0aCArIDIgOiBsaW5lT3B0cy53aWR0aCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lT3B0cy5pZCA9PT0gdGhpcy5jdXJyZW50TGluZUlkeCA/IDMgOiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWlkUG9pbnQ6IERHLlBvaW50ID0gdGhpcy5taWRQb2ludEJ0dyhwb2ludEZyb20sIHBvaW50VG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZUlkeCA+IDAgfHwgdGhpcy5saW5lc1twMV1bcDJdLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZFBvaW50ID0gdGhpcy5maW5kUGVycGVuZGljdWxhclBvaW50T25DdXJ2ZShsaW5lSWR4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50RnJvbS54LCBwb2ludEZyb20ueSwgbWlkUG9pbnQueCwgbWlkUG9pbnQueSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLnF1YWRyYXRpY0N1cnZlVG8obWlkUG9pbnQueCwgbWlkUG9pbnQueSwgYlgsIGJZKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVPcHRzLmRpcmVjdGlvbkNvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJyb3dQb2ludCA9IHRoaXMuZ2V0QXJyb3dQb2ludChsaW5lT3B0cywgcDEsIHAyLCBwb2ludEZyb20sIHBvaW50VG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFycm93UG9pbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW52YXNBcnJvdyhsaW5lLCBhcnJvd1BvaW50LngsIGFycm93UG9pbnQueSwgbWlkUG9pbnQueCwgbWlkUG9pbnQueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKGxpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tDdXJzb3JPbkxpbmUoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gICAgICAgIGZvciAobGV0IGlkIG9mIE9iamVjdC5rZXlzKHRoaXMucGF0aHMpLm1hcChOdW1iZXIpKSB7XG4gICAgICAgICAgICBjdHgubGluZVdpZHRoID0gNTtcbiAgICAgICAgICAgIGNvbnN0IGluU3Ryb2tlID0gY3R4LmlzUG9pbnRJblN0cm9rZSh0aGlzLnBhdGhzW2lkXSwgeCAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCB5ICogd2luZG93LmRldmljZVBpeGVsUmF0aW8pO1xuICAgICAgICAgICAgaWYgKGluU3Ryb2tlKVxuICAgICAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBtaWRQb2ludEJ0dyhwMTogREcuUG9pbnQsIHAyOiBERy5Qb2ludCk6IERHLlBvaW50IHtcbiAgICAgICAgcmV0dXJuIG5ldyBERy5Qb2ludChwMS54ICsgKHAyLnggLSBwMS54KSAvIDIsIHAxLnkgKyAocDIueSAtIHAxLnkpIC8gMik7XG4gICAgfVxuXG4gICAgZmluZFBlcnBlbmRpY3VsYXJQb2ludE9uQ3VydmUoaWR4OiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGR4ID0geDIgLSB4MVxuICAgICAgICBsZXQgZHkgPSB5MiAtIHkxXG4gICAgICAgIGNvbnN0IGRpc3QgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpXG4gICAgICAgIGR4IC89IGRpc3RcbiAgICAgICAgZHkgLz0gZGlzdFxuICAgICAgICBjb25zdCBwZXJwZW5kaWN1bGFyTGVuID0gNTAgKiBNYXRoLmZsb29yKGlkeCAvIDIpICsgNTA7XG4gICAgICAgIHJldHVybiBpZHggJSAyID09PSAwID9cbiAgICAgICAgICAgIG5ldyBERy5Qb2ludCh4MiArIChwZXJwZW5kaWN1bGFyTGVuIC8gMikgKiBkeSwgeTIgLSAocGVycGVuZGljdWxhckxlbiAvIDIpICogZHgpIDpcbiAgICAgICAgICAgIG5ldyBERy5Qb2ludCh4MiAtIChwZXJwZW5kaWN1bGFyTGVuIC8gMikgKiBkeSwgeTIgKyAocGVycGVuZGljdWxhckxlbiAvIDIpICogZHgpO1xuICAgIH1cblxuICAgIGNhbnZhc0Fycm93KHBhdGg6IFBhdGgyRCwgYXJyb3dFbmRYOiBudW1iZXIsIGFycm93RW5kWTogbnVtYmVyLCBxdWFkWDogbnVtYmVyLCBxdWFkWTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFycm93QW5nbGUgPSBNYXRoLmF0YW4yKHF1YWRYIC0gYXJyb3dFbmRYLCBxdWFkWSAtIGFycm93RW5kWSkgKyBNYXRoLlBJO1xuICAgICAgICBjb25zdCBhcnJvd1dpZHRoID0gMTU7XG4gICAgICAgIHBhdGgubW92ZVRvKGFycm93RW5kWCAtIChhcnJvd1dpZHRoICogTWF0aC5zaW4oYXJyb3dBbmdsZSAtIE1hdGguUEkgLyAxMCkpLFxuICAgICAgICAgICAgYXJyb3dFbmRZIC0gKGFycm93V2lkdGggKiBNYXRoLmNvcyhhcnJvd0FuZ2xlIC0gTWF0aC5QSSAvIDEwKSkpO1xuICAgICAgICBwYXRoLmxpbmVUbyhhcnJvd0VuZFgsIGFycm93RW5kWSk7XG4gICAgICAgIHBhdGgubGluZVRvKGFycm93RW5kWCAtIChhcnJvd1dpZHRoICogTWF0aC5zaW4oYXJyb3dBbmdsZSArIE1hdGguUEkgLyAxMCkpLFxuICAgICAgICAgICAgYXJyb3dFbmRZIC0gKGFycm93V2lkdGggKiBNYXRoLmNvcyhhcnJvd0FuZ2xlICsgTWF0aC5QSSAvIDEwKSkpO1xuICAgIH1cblxuICAgIGdldEFycm93UG9pbnQobGluZU9wdHM6IElMaW5lT3B0cywgcDE6IG51bWJlciwgcDI6IG51bWJlciwgcG9pbnRGcm9tOiBERy5Qb2ludCwgcG9pbnRUbzogREcuUG9pbnQpOiBERy5Qb2ludCB8IG51bGwge1xuICAgICAgICBjb25zdCBjb21wYXJlQ29sID0gdGhpcy5zcC5kYXRhRnJhbWUhLmNvbChsaW5lT3B0cy5kaXJlY3Rpb25Db2whKTtcbiAgICAgICAgaWYgKGNvbXBhcmVDb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGxpbmVPcHRzLmRpcmVjdGlvbiA/PyBMaW5lRGlyZWN0aW9uLmhpZ2hlcjtcbiAgICAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBMaW5lRGlyZWN0aW9uLmhpZ2hlcjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDb2wuZ2V0KHAxKSA+IGNvbXBhcmVDb2wuZ2V0KHAyKSA/IHBvaW50RnJvbSA6IHBvaW50VG87XG4gICAgICAgICAgICAgICAgY2FzZSBMaW5lRGlyZWN0aW9uLmxvd2VyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNvbC5nZXQocDEpID4gY29tcGFyZUNvbC5nZXQocDIpID8gcG9pbnRUbyA6IHBvaW50RnJvbTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbn0iXX0=
package/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import { after, before, category, test, expect, expectArray, expectObject } from './src/test';
2
- import { errorToConsole, rectToConsole } from './src/to-console';
3
- export { errorToConsole, rectToConsole, after, before, category, test, expect, expectArray, expectObject, };
4
- //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAC,cAAc,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,cAAc,EACd,aAAa,EAEb,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAC7B,MAAM,EAAE,WAAW,EAAE,YAAY,GAClC,CAAC"}
package/index.js DELETED
@@ -1,4 +0,0 @@
1
- import { after, before, category, test, expect, expectArray, expectObject } from './src/test';
2
- import { errorToConsole, rectToConsole } from './src/to-console';
3
- export { errorToConsole, rectToConsole, after, before, category, test, expect, expectArray, expectObject, };
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQzVGLE9BQU8sRUFBQyxjQUFjLEVBQUUsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFL0QsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBRWIsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUM3QixNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksR0FDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWZ0ZXIsIGJlZm9yZSwgY2F0ZWdvcnksIHRlc3QsIGV4cGVjdCwgZXhwZWN0QXJyYXksIGV4cGVjdE9iamVjdH0gZnJvbSAnLi9zcmMvdGVzdCc7XG5pbXBvcnQge2Vycm9yVG9Db25zb2xlLCByZWN0VG9Db25zb2xlfSBmcm9tICcuL3NyYy90by1jb25zb2xlJztcblxuZXhwb3J0IHtcbiAgZXJyb3JUb0NvbnNvbGUsXG4gIHJlY3RUb0NvbnNvbGUsXG5cbiAgYWZ0ZXIsIGJlZm9yZSwgY2F0ZWdvcnksIHRlc3QsXG4gIGV4cGVjdCwgZXhwZWN0QXJyYXksIGV4cGVjdE9iamVjdCxcbn07Il19